调试 Emacs 我是如何学会停止焦虑并爱上 DTrace
有一段时间 Elfeed 出现了一个奇怪的、虚假的失败。用户在更新 feed 时经常 看到一个错误(剧透警告)error in process sentinel: Search failed. 如…
对 org-mode 中的表格进行排序
在 org-mode 中,你可以快速地对表格进行排序,方法是将光标定位到表格上,然后按下 C-c ^。再选择排序的类型(例如,a 表示按字母顺序排序,n 表示按…
9.54. Linux 环境下如何查找哪个线程使用CPU最长
这是一个比较偏实践的问题,这种问题我觉得挺有意义的。可以这么做: 获取项目的 pid, jps 或者 ps -ef | grep java ,这个前面有讲过 top -H -p pid…
9.53. FutureTask 是什么
这个其实前面有提到过,FutureTask 表示一个异步运算的任务。FutureTask 里面可以传入一个 Callable 的具体实现类,可以对这个异步运算的任务的结果进…
9.52. ReadWriteLock 是什么
首先明确一下,不是说 ReentrantLock 不好,只是 ReentrantLock 某些时候有局限。如果使用 ReentrantLock,可能本身是为了防止线程A在写数据、线程B在…
9.51. ConcurrentHashMap 的并发度是什么
ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16,这意味着最多同时可以有16条线程操作 ConcurrentHashMap,这也是 ConcurrentHashMap 对 …
9.50. synchronized 和 ReentrantLock 的区别
synchronized 是和 if、else、for、while 一样的关键字,ReentrantLock 是类,这是二者的本质区别。既然 ReentrantLock 是类,那么它就提供了比 synch…
9.49. 怎么检测一个线程是否持有对象监视器
我也是在网上看到一道多线程面试题才知道有方法可以判断某个线程是否持有对象监视器:Thread 类提供了一个 holdsLock(Object obj) 方法,当且仅当对象…
9.48. wait() 方法和 notify()/notifyAll() 在放弃对象监视器时有什么区别?
wait() 方法和 notify()/notifyAll() 方法在放弃对象监视器的时候的区别在于:wait() 方法立即释放对象监视器,notify()/notifyAll() 方法则会等待线…
API 经济与实现之路
API 经济的兴起 在谈 API 经济之前,我们需要先了解 API 的概念。 API 的全称是 Application Programming Interface,即应用编程接口,它是软件系统不…
Archived_LoopBack模型
在本系列的 第 1 部分 中,您快速了解了 LoopBack 服务器端 JavaScript 框架,安装了该框架,创建了一个基本应用程序,并了解了 LoopBack 的一些 API …
AOP 的利器:ASM 3.0 介绍
一种小巧轻便的 Java 字节码操控框架 ASM 引言 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以…