LeetCode有一些数据库的题目,部分免费的题做一下;MySQL有一些最基础的知识,捡重要的mark一下。
学习Java函数式编程(四):使用Lambda重构代码
Lambda真是极好的!使用Lambda先从重构旧代码开始。《Java 8实战》对其进行了讲解,本章将按照此书的脉络进行组织,对相关章节进行复习总结。
收看世界杯并快记常用Vim命令
Intellij Idea上集成有IdeaVim插件,想来,一套Vim操作就可以适应多个编辑环境,确也诱人;那边厢,世界杯如火如荼,激战正酣,本人花费不少时间收看,实在精彩;怎么结合世界杯快速入门Vim命令呢?思索过后有了下文中的小小尝试。
学习Java函数式编程(二):Java 8接口新特性
本文主要介绍Java 8引入的默认方法以及接口静态方法等新特性,涉及了Lambda表达式作为参数参与方法重载、引入了默认方法的接口多重继承以及Optional数据类型等内容。
一次ThreadLocal源码解析之旅
写这篇解析再一次花费了本人整整一天时间,希望通过本篇文章,能将ThreadLocal的原理说清楚,讲明白。全文主要完成了以下四个部分的工作:
- 摸清了ThreadLocal是如何做到在不同线程set()、get()的值不被其它线程访问的;
- 介绍了弱引用在ThreadLocalMap中的应用;
- 探寻了ThreadLocalMap如何实现hash map功能;
- 列举了一个使用ThreadLocal而出现的内存泄漏问题并加以分析;
由几个小例引发的对interrupt()、LockSupport.park()深入解析
在之前解析interrupt()源码的小文最后,曾经列出过一些例子,主要是关于标志位更改对LockSupport.park()的影响,这里我觉得有必要单独花一个篇幅来研究,因为AQS就涉及到了这方面的问题。通过本文,可以对Thread.interrupted()有一个牢固的掌握,对interrupt()有更进一步的理解,对LockSupport.park()、LockSupport.unpark()挂起唤醒机制有一个清晰的认识。本篇应该算是《线程生命周期 & 中断机制》的姊妹篇。