Java
1. JVM
- JVM http://2013.java2days.com/wp-...
- 锁、synchronized、JVM https://pdfs.semanticscholar....
- https://www.cs.purdue.edu/hom...
- JVM编译器 JIT AOT https://metebalci.com/blog/de...
- JIT处理字节码的过程 https://www.ibm.com/support/k...
- JVM解释器 https://metebalci.com/blog/de...
- JIT Watch、hsdis https://krystalics.github.io/... https://jakubstransky.com/tag...
2. 并发
- JMM https://abailly.github.io/pos...
- A practical approach to Java Memory Model with Andrzej Czarny JCStress https://www.youtube.com/watch...
- JMM JCStress https://shipilev.net/blog/201...
- JCStress官方示例 http://hg.openjdk.java.net/co...
- IDEA使用JCStress https://juejin.im/post/5ece49...
- 深入底层观察JIT的指令重排序、不安全发布 https://stackoverflow.com/que...
操作系统/Linux/系统编程
- 操作系统、线程、线程切换及其开销https://eli.thegreenplace.net...
- Linux线程切的细节 https://www.maizure.org/proje...
- 进程和线程、
clone()
系统调用 https://eli.thegreenplace.net... glibc
是什么 https://stackoverflow.com/que...fork()
和clone()
系统调用的关系:fork()
系统调用一般不被使用了,进程和线程的创建底层都使用clone()
系统调用,保留它是为了后向兼容 https://unix.stackexchange.co...- POSIX
fork()
API 底层调用的其实是clone()
系统调用。注意区分glibc提供的fork()/clone()
和系统调用中的fork()/clone()
,glibc只提供系统调用的wrapper
,系统调用的实现封装在操作系统内核之中:https://stackoverflow.com/que... - 如何在C语言中进行系统调用? https://jameshfisher.com/2018...
strace/ltrace
跟踪c程序的系统调用、库调用
设计模式
1. 单例
为何double-check不安全,而double-checked + volatile就安全了?
因为instance = new XXX()
分为3步:(1) 给对象分配内存 (2) 初始化对象(往对象里写) (3) 赋值给instance
其中(2)(3)可能重排序,导致其他线程看到未完全初始化的对象。
博客
(更新中...)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。