- 博客(8)
- 收藏
- 关注
原创 Java 多线程三大核心
原子性Java 的原子性就和数据库事物的原子性差不多,一个操作中要么全部执行成功或者失败。JMM 只是保证了基本的原子性,但类似于 i++ 之类的操作,看似是原子操作,其实里面涉及到:获取 i 的值。 自增。 再赋值给 i。这三步操作,所以想要实现 i++ 这样的原子操作就需要用到 synchronize 或者是 lock 进行加锁处理。如果是基础类的自增操作可以使用 Ato...
2018-07-18 16:06:07
705
原创 Synchronize 关键字原理
众所周知 Synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式:同步普通方法,锁的是当前对象。 同步静态方法,锁的是当前 Class 对象。 同步块,锁的是 {} 中的对象。实现原理: JVM 是通过进入、退出对象监视器( Monitor )来实现对方法、同步块的同步的。具体实现是在编译之后在同步方法调用前加入一个 monitor.enter 指令,在退出方法...
2018-07-18 13:54:06
165
原创 HashMap 底层分析
以下基于 JDK1.7 分析。如图所示,HashMap 底层是基于数组和链表实现的。其中有两个重要的参数:容量 负载因子容量的默认大小是 16,负载因子是 0.75,当 HashMap 的 size > 16*0.75 时就会发生扩容(容量和负载因子都可以自由调整)。put 方法首先会将传入的 Key 做 hash 运算计算出 hashcode,然后根据数组...
2018-07-18 11:05:25
192
原创 LinkedList 底层分析
LinkedList 底层分析如图所示 LinkedList 底层是基于双向链表实现的,也是实现了 List 接口,所以也拥有 List 的一些特点(JDK1.7/8 之后取消了循环,修改为双向链表)。新增方法 public boolean add(E e) { linkLast(e); return true; } /** ...
2018-07-18 10:46:33
195
原创 ArrayList/Vector 的底层分析
ArrayListArrayList 实现于 List、RandomAccess 接口。可以插入空数据,也支持随机访问。ArrayList相当于动态数据,其中最重要的两个属性分别是: elementData 数组,以及 size 大小。 在调用 add() 方法的时候: public boolean add(E e) { ensureCapacityInterna...
2018-07-18 10:24:02
281
原创 springmvc对session的操作
在项目中很多时候需要临时存储一些数据,这时候首先想到的是session,当然也有别的方式,比如缓存或是临时文件,此处只说session的一种用法,学习使用。ServletRequestAttributes attrs =(ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest
2017-07-20 17:02:52
703
原创 欢迎使用优快云-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-07-20 16:58:46
155
原创 springmvc对session的操作
在项目中很多时候需要临时存储一些数据,这时候首先想到的是session,当然也有别的方式,比如缓存或是临时文件,此处只说session的一种用法,学习使用。ServletRequestAttributes attrs =(ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServlet
2017-07-20 16:41:03
678
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人