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