会员
周边
捐助
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
爱是用心码不要说话
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
2018年5月15日
JMM和volatile,final,锁的内存语义
摘要: volatile内存语义 + 结果可见性。对于volatile的读写都是看成直接对mem的读写,而不是对本地cache的读写。 volatile语义的实现。 + 禁止编译器的相关重排序 + 禁止CPU指令重排序 这两步需同时保证,否则无法保证volatile语义。对于编译器所禁止的指令重排序: +
阅读全文
posted @ 2018-05-15 10:34 还好可以改名字
阅读(681)
评论(0)
推荐(0)
编辑
2018年5月4日
Java泛型边界问题,super和extends关键字
摘要: 背景 为什么JDK5要引入泛型,泛型保证参数类型一致性。什么叫类型一致? 假设有继承关系,A list; list.add(new C()); list.add(new D()); list.add(new B());//compile ERROR 并没有破坏list的类型一致性,因为list被声明
阅读全文
posted @ 2018-05-04 09:46 还好可以改名字
阅读(4174)
评论(0)
推荐(0)
编辑
2018年5月2日
Java synchronized锁的底层实现概述
摘要: 偏向锁 JVM默认开启偏向锁。在对象头中锁标志前一位用来标记偏向锁是否可用。 锁标记01表示偏向锁。 偏向锁释放 获得偏向锁的线程,在对象头中写有线程id,不会主动释放锁: 没有其他线程竞争,对象头中始终是获得锁的tid。 线程tid2竞争,此时objhead中仍存着tid1。JVM首先安全暂停ti
阅读全文
posted @ 2018-05-02 21:24 还好可以改名字
阅读(1634)
评论(0)
推荐(0)
编辑
2018年4月24日
Linux程序执行前发生了什么——程序员的自我修养
摘要: 程序的加载和链接是内核完成的吗 知道Linux有fork和exec系统调用,可以创建新进程和执行可执行的文件,fork就是内核自己数据结构的维护,可以理解,那么exec指定一个文件之后,怎么加载文件和动态链接? Interpreter 内核在执行ELF文件的时候,把执行文件映射到用户空间内存 在EL
阅读全文
posted @ 2018-04-24 23:22 还好可以改名字
阅读(367)
评论(0)
推荐(0)
编辑
2018年4月12日
指针,引用和传参——程序员的自我修养
摘要: 指针是C语言中就有的,引用在Cpp中才有的特性。 一,指针int* a 这个语句的含义是分配空间。1,分配多大的空间?指针就是为了保存地址的,所以分配的空间大小是一个word(以32bitCPU为例,那么就是4个Byte)。不论指针指向的类型,指针都是保存的一个地址,double* a, Struc
阅读全文
posted @ 2018-04-12 22:08 还好可以改名字
阅读(375)
评论(0)
推荐(0)
编辑
上一页
1
2
3