AVL树的Java实现

2019-05-07
阅读 15 分钟
7.7k
在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 {displaystyle O(log {n})} O(log{n})。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL树得...

ConcurrentHashMap中tabAt、setTabAt方法的意义所在

2019-04-28
阅读 2 分钟
4.9k
源码的作者使用Unsafe直接通过数组内存地址以及索引偏移量去访问和修改数组元素的值,和我们直接使用java代码访问(arr[i])、赋值(arr[i] = x )有什么区别呢?

再次认识ReentrantReadWriteLock读写锁

2019-04-23
阅读 10 分钟
3.7k
最近研究了一下juc包的源码。在研究ReentrantReadWriteLock读写锁的时候,对于其中一些细节的思考和处理以及关于提升效率的设计感到折服,难以遏制想要分享这份心得的念头,因此在这里写一篇小文章作为记录。

[Spring Boot]按日切分spring boot的nohup.out日志文件

2018-08-06
阅读 1 分钟
6.9k
过大的日志文件维护起来存在诸多问题,所以最好是能够按日或按大小切分日志文件,便于查找需要的信息。 网上有各种各样的日志切分方法,有的有用,有的没用,有的还麻烦。 最后搬运最简单易用的切分方法,如下: 安装cronolog 以如下命令启动应用: {代码...} 只是搬运而已,免得挨个方法试过去了 参考文章:[链接] 2018...

[Spring Boot 2]@ResponseBody返回时间类型不再自动序列化为timestamp

2018-07-05
阅读 1 分钟
11.7k
在spring boot 1.x的时候,被@ResponseBody修饰的返回值中如果存在java.util.Date类型,则会默认被序列化为timestamp的形式,如: