- 博客(6)
- 收藏
- 关注
原创 2021-09-16
volatile关键字理解1.1 可见性在聊可见性之前先要了解Java内存模型(JMM),原理如下图所示:通俗来说就是各个线程要对同一个属性进行读写时都要先从主内存中拷贝副本到自己的工作内存中,在修改之后要写回主内存中,并且修改后的值对于其他的线程是立马可见的,这时线程t2和t3都知道自己读取到的值是过期的,如下图所示:如上图中,线程t1、t2和t3去访问主内存,都把属性age读取到自己的工作内存中,初始值是25,如果用volatile关键字修饰了age字段,则t1修改age为37之后返回给主内
2021-09-19 11:47:45
87
原创 HashMap中红黑树退化成链表的情况
一.执行resize()方法时调用split()方法部分源码及注释如下/** * 从hashmap桶(一个哈希表数组某个索引下的元素,可以是单个node, * 可以是一个链表,也可以是一颗红黑树,此时为红黑树)中将红黑树分割成两棵树, *一颗为高位树hi,一颗为低位树lo,如果hi或者lo树节点太小,该树将会退化为链表 * 再移动到新哈希表中,该方法仅在resize()方法调用到 * * @param map 需要扩容的map,用于红黑树退化链表时,调用当前map类型的 * repla
2021-08-30 20:53:15
1922
原创 2021-07-09
归并排序归并排序是经典的分治策略,分的阶段将问题不断递归分解为小的问题,治的阶段则是将分的阶段的结果不断合并,过程如下所示:最后可以将temp复制到原数组中再返回或者直接返回temp数组代码如下:public class mergeSort { public static void main(String[] args) { int[] nums = {2,1,5,3,10,4}; int[] sort = sort(nums, 0, nums.leng
2021-07-09 08:15:34
70
原创 2021-07-08
快速排序算法Java实现快速排序分以下几步走:1.选择数组中第一个数作为基数2.将小于基数的值放在数组左侧,大于基数的值放在右侧3.对基数左右两边的数分别重复上面步骤,直到每个子集中只有一个数,即完全有序将数组第一个数23赋给temp变量,指针 i 指向数组第一个元素,指针 j 指向数组最后一个元素从 j 开始遍历(从右往左),遇到13时,因为13<=temp,因此将arr[j]填入arr[i]中,即此时指针 i 指向的数为13;再从 i 遍历(从左往右),遇到45时,因为45>
2021-07-08 21:12:22
139
原创 HadoopIntellijPlugin的编译与安装
HadoopIntellijPlugin的编译与安装HadoopIntellijPlugin的源码下载地址:https://github.com/rison168/HadoopIntellijPlugin源码下载解压之后用idea打开,修改图示中的地方,修改自己的hadoop版本和idea安装路径hadoop版本低了的同学可以直接把图中这个字段删除assembly.xml文件一片红,不用管直接运行maven命令,先执行clean再执行assembly编译完成后可以看到下图所示的Ha
2020-12-24 11:16:21
464
原创 Mapreduce对数据字段格式进行转换
Mapreduce对数据字段格式进行转换对下如图所示的数据进行部分字段处理,第一列和第二列为Unix时间戳格式,下面利用Mapreduce对数据字段格式进行转换,将其转换为正常日期格式。Map阶段import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Ma
2020-12-19 21:27:01
1172
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人