- 博客(8)
- 收藏
- 关注
原创 java位移运算符
首先举个列子:3 首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:在数字没有溢出的前提下,对于正数和
2017-03-29 16:46:13 162
原创 各种数据结构的优缺点
本文说下有关数组,链表,树,队列,栈这几种数据结构的优缺点。1.数组:数组随机访问的时间复杂度为O(1),顺序访问的时间复杂度为O(n).增删时候,最好的情况是在数组的末尾进行增删,时间复杂度是O(1),最坏的情况是O(n)。在数组任意位置插入删除元素的时候,后面的元素还要向后移动,移动的数据和个数有关,时间复杂度是O(n)。2.链表:链表是在非连续的内存单元中保存数据,并且通过指
2017-03-29 16:08:15 1619
原创 hashmap源码分析jdk8
最近看了下jdk8的hashmap源码,相比于7,在存储结构上有了些改变。1.在jdk8之前,hashmap的存储结构是数组+链表的形式,那么这种方式随着链表的长度增加,效率也凸显出来。所以在jdk8中这块做了优化,当链表超过一定长度时转化为红黑树来解决这个问题,下面用流程图画出hashmap的put方法实现逻辑。下面请带着这些问题看源码,为什么树的查找效率比链表高,达到什么样的条
2017-03-29 16:04:32 170
原创 java序列化
我们经常在项目的实体类中会看到实现Serializable接口,实现这个到底有什么用呢?总体来说有两个。1) 把对象的字节序列永久地保存到硬盘上(通常存放在一个文件中);2) 在网络上传送对象的字节序列。序列化之后会生成一个serialVersionUID,它的作用是什么呢?Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行
2017-03-28 18:08:02 138
原创 多线程
本文主要介绍下java多线中常用的关键字和对象。1.volatitle:保证了线程之间变量的可见性,但是并不具有原子性。所谓可变性,就是每个线程读取到的值都是最新的,即使某个线程改变了变量的值,其他的线程也能马上看到修改后的值。所谓原子性,即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。那么为什么这个关键字就能保证了可变性,又为什么不能保证原子
2017-03-28 15:56:27 164
转载 多线程通信
把之前看过的多线程通信记录下。sleep()方法是Thread类的方法,因此它不能改变对象的机锁。所以当在一个Synchronized方法中调用sleep()时,线程虽然休眠了,但是对象的机锁没有被释放,其他线程仍然无法访问这个对象。sleep()方法不需要在同步的代码块中执行。但是sleep()可以通过interrupt()方法打断线程的暂停状态,从而使线程立刻抛出Interrupted
2017-03-28 15:37:03 195
原创 spark集群模式类型
1.local 本地单线程2.local[K] 本地多线程(指定K个内核)3.local[*] 本地多线程(指定所有可用内核)4.spark://HOST:PORT 连接到指定的 Spark standalone cluster master,需要指定端口。5.mesos://HOST:PORT 连接到指定的 Mesos 集群,需要指定端口。6.yarn-client客户端模式
2017-03-28 15:30:21 250
原创 spark简介
本文主要介绍下spark相关进程的一些术语,对spark有个简单的了解。如果你安装了spark集群,那么在master进程中应该有如下进程:1.NameNode2.SecondNameNode3.ResourceManagerslave下应该有如下进程:1.DataNode 2.NodeManager NameNode可以看作是分布式文件系统中的管理者,主要负责
2017-03-28 14:36:05 256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人