不睡觉的猫头鹰
不睡觉的猫头鹰
主页
文章
分类
标签
项目
Java 基准测试框架(JMH)
在对不同工具做性能对比测试时,由于jvm的运行期优化可能导致结果的偏差。 所以,为了在大程度上避免这种偏差问题,则会用到OpenJDK的性能基准测试项目[JMH](http://openjdk.java.net/projects/code ...
2018-10-13
1 分钟阅读时长
376 字
Java
Git 历史记录清洗
当在公网环境下使用 git 仓库不小心把敏感信息提交上去时,则可以使用 `filter-branch` 对代码仓库进行清洗。 ## 1. 先对本地历史进行清洗 ``` git filter-branch --force --index- ...
2018-09-25
1 分钟阅读时长
315 字
Git
Git 文件忽略
## 删除仓库文件 当不小心提交了不应提交的文件后,可以用此方法处理。 1. git rm \-r \-\-cached <file_path> 2. 更新 `.gitignore` 添加忽略文件。 3. 提交修改 这样本地文件不 ...
2018-09-25
1 分钟阅读时长
202 字
Git
HashMap 在并发环境下的死循环问题
因为 HashMap 是非线程安全的,在并发环境下应避免使用,改为 ConcurrentHashMap。 > 虽然在 jdk8 修复了该问题,但仍然还存在其他并发问题。 其产生的主要原因是扩容时元素的`循环引用`,在这里简单描述下。 ...
2018-08-16
2 分钟阅读时长
534 字
Java
java8 default method 的使用见解
oracle 在 jdk8 中引入了接口的默认方法,用 `default` 关键字标识。 ``` public inteface Listener { default void start() { ... } } ``` 该原 ...
2018-08-09
1 分钟阅读时长
184 字
Java
Java GC过程
由于JVM分代设计,GC也根据原因不同而产生不同效果的GC,并且在Java的发展过程中根据不同的GC策略也有不同的过程实现。 ## Stop-the-World 在 HotSpot 虚拟机中,Stop-the-World 也被称之为 s ...
2018-07-15
3 分钟阅读时长
1387 字
Java
volatile 浅析
## 概念 volatile原语保障了多线程下变量的原子性、可见性、有序性。 ## 原子性 在32位虚拟机下对`long`、`double`类型的赋值操作会拆分位高位、低位两步完成修改,而volatile可使用内存屏障来达到原子性,保证 ...
2018-07-14
2 分钟阅读时长
910 字
Java
Java 锁机制
## synchronized 在 jdk1.6 之后,`synchronized` 原语通过引入偏向锁、轻量锁进行了优化。 synchronized 是通过 `monitor_enter` 和 `monitor_exit` 来控制的 ...
jdk
2018-06-12
1 分钟阅读时长
485 字
Java
在 jdk9 下使用 Lombok
由于jdk9中对lombok所依赖的类进行了迁移,所以使用lombok的程序无法直接升级。需按照如下方式升级: 1. 升级lombok依赖 ``` <properties> <lombok.version>1.18.0</lom ...
2018-06-06
1 分钟阅读时长
136 字
Java
ConcurrentHashMap 原理分析
`ConcurrentHashMap` 是 jdk 提供的针对并发环境下的集合类容器,是为了解决 `HashMap` 在并发环境下的线程安全问题。 ## JDK7 * 利用分段锁(Segment)和 `ReentrantLock` ...
2018-05-26
1 分钟阅读时长
477 字
Java
«
»
引用
×