- 浏览: 34148 次
- 性别:
- 来自: 北京
最新评论
文章列表
排序算法java实现插入排序
- 博客分类:
- 算法
public class InsertSort {
//插入排序
//基本思想:
//在要排序的一组数中,假定前n-1个数已经排好序,
//现在将第n个数插到前面的有序数列中,使得这n个数也是排好序的。
//如此反复循环,直到全部排好序。
过程:
//平均时间复杂度:O(n^2)
public static void main(String[] args) {
int[] arr = new int[]{6,2,4,1,9,3,6,7,0};
System.out.println("排序前=====");
print(arr);
Sy ...
排序算法java实现选择排序
- 博客分类:
- 算法
public class SelectionSort {
//选择排序
//基本思想:
//在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换
//第二次遍历n-2个数,找到最小的数值与第二个元素交换,
//...
//第n-1次遍历,找到最小的数值与第n-1个元素交换,排序完成。
//平均时间复杂度为:O(n^2)
public static void main(String[] args) {
int[] arr = new int[]{6,2,4,1,9,3,6,7,0};
System.out.println(" ...
排序算法java实现冒泡排序
- 博客分类:
- 算法
public class BubbleSort {
//冒泡排序
//基本思想:两个数比较大小,较大的数下沉,较小的数冒起来
//过程:1.比较相邻的两个数,如果第二个数小就交换位置
//2.从后向前两两比较,一直到比较最前面的两个数据。最终最小数被交换到起始的位置,
//这样第一个最小数的位置就排好了
//继续重复上述过程,依次将第2,3,...n-1个最小数排好位置
//平均时间复杂度为:O(n^2)
public static void main(String[] args) {
int[] arr = new int[]{6,2,4,1,9,3,6,7,0};
...
在java中使用协程
- 博客分类:
- java
1. 背景知识
现在的操作系统都是支持多任务的,多任务可通过多进程或多线程的方式去实现,进程和线程的对比就不在这里说了,在多任务的调度上操作系统采取抢占式和协作式两种方式,抢占式是指操作系统给每个任务 ...
MongoDB学习总结二
- 博客分类:
- 大数据
MongoDB的一些操作:
创建数据库:
use test
注意此时数据库并没有创建,只是在mongo的预处理缓存中存在,只有为mongo加入相应的list,才真正创建。如果什么都不干就离开的话,这个空数据库就会被删除。
show dbs 查看所有的集合
show collections 查看集合中所有的文档
db.help() 查看帮助
db.students.help() 查看集合的帮助
db.system.indexes.find() 查看索引
db.students.drop() 删除文档中的数据
插入数据:
db.[docu ...
MongoDB中的_id和ObjectId
- 博客分类:
- 大数据
MongoDB中存储的文档必须要有一个_id键,这个键的值可以是任何类型的,默认为ObjectId。
在每个文档里面,_id值是唯一的,这样可以确保在一个集合里每个文档可以被唯一标识。如果是两个集合的话,在不同的集合里文档的_id是可以相同的。
MongoDB为什么要使用ObjectId,而不使用自动增加的主键等其他的常规的方式?
MongoDB从一开始就设计用来做分布式数据库,处理多个节点是核心的要求。ObjectId被设计成轻量型的,不同的机器都能够用全局的唯一的方法生成ObjectId。
ObjectId采用12个字节的存储空间,每个字节2位16进制的数字,组成一个2 ...
事务的特性:
原子性:事务是不可分割的最小单元,事务里的操作要么都做要么都不做
隔离性:在并发程序中,并发事务之间互不影响,在对一个事务的操作不会对其他事务产生影响,事务的隔离性需要事务的隔离级别来完成。
一致性:在事务执行前后数据库的数据都处于正确的状态,
持久性:事务一旦执行成功,那么对数据库数据的改变是永久的,不会因为因为断点或者系统故障而发生数据丢失。
在实际项目开发中,事务一般都是并发执行的,事务并发执行一般会遇到以下问题:
丢失更新:两个事务先后更新同一行数据,后执行的事务的更新覆盖掉了前一个事务的更新,这样会导致前一个事务更新的数据丢失,这是由于没有加锁造成的 ...
MongoDB学习总结
- 博客分类:
- 大数据
MongoDB是一种nosql数据库,其与关系型数据库有很大的不同
关系型数据库中的表在MongoDB中被称为集合,关系型数据库中每行记录在MongoDB中被称为文档,关系型数据库中的表的字段在MongoDB中被称为key。MongoDB中没有主外建的概念。
基本概念:
1.文档
文档是MongoDB的最基本的单元,也是MongoDB的核心概念。
文档的键值对是有序的、区分大小写的、不能重复的,而且键应该是字符串。文档中对键的要求:
键不能含有\0(空字符),这个字符用来表示键的结尾。
.和$是有特殊意义的字符。
以下划线开头的键是保 ...
git的配置
git config --global user.name "xxx@xx.com"
git config --global user.email "xxx@xx.com"
从github上克隆git项目
git clone git@xx.xx.xx.xx:yuluoqianmu/test.git
cd test
添加README.md文件并推到github上
touch README.md
git add README.md
git commit -m "add README"
git ...
ConcurrentHashMap内部数据结构是hashTable,但是与hashTable不同的是CurrentHashMap使用了锁分离技术,即:使用多个不同的锁来控制对HashTable的不同部分进行修改,其内部的不同部分使用Segment来表示。这样一个大的HashTable就会被分为多个小的HahTable,每个锁作用在不同的小HashTable上。当多个操作发生在不同的Segment上,就可以进行并发操作了。
但是有些操作例如:size(),需要将整个表锁定,先按顺序锁定每个段的,然后进行操作,操作完后再按顺序释放所有段的锁。
ConcurrentHashMap实际上就是将一个 ...
Shell中$$,$#,$?等分别代表什么意思
- 博客分类:
- Linux
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执
GPFS安装搭建(二)
- 博客分类:
- 大数据
gpfs集群配置:
集群搭建的准备:为了方便我们进行操作,首先设置ssh免密码登录。
在192.168.1.17机器上连接192.168.1.140机器:
ssh-kengen
scp .ssh/id_rsa.pub root@192.168.1.140:/home/id_rsa.pub
cat /home/id_ rsa.pub >> ~.ssh/authorized_keys
chmod 700 .ssh
chmod 600 authorized_keys
ssh 192.168.1.140
192.168 ...
GPFS安装搭建(一)
- 博客分类:
- 大数据
安装gpfs,需要先安装的软件:
kshell
gcc
g++
kernel-devel
rpm-build
首先检查软件是否安装:
which ksh、
which gcc或者gcc -v、
which g++或者 g++ --version、
rpm -q kernel-devel、
which rpmbuild
安装以上软件可以使用rpm方式和yum方式安装,rpm方式比较麻烦,我装了很长时间,这里推荐使用yum安装。由于我们使用的是RedHat6.5的系统,需要先修改 ...
假设HDFS客户端为node11,用户A想要将文件apache.log写到HDFS上,该文件大小为100MB,假设用户配置的文件block大小为64MB,请结合你的理解,描述该文件写入HDFS的整个流程(请用步骤1,步骤2,……,描述)
使用HDFS提供的客户端(client),向远程的namenode发起RPC请求;
namenode会检查要创建的文件apache.log是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常;
默认block大小为64MB,因此100MB被切分为两个block,客户端会依次写入每个block,c ...