AlstonWilliams's Blog

Thinking will not overcome fear but action will.

Java-NIO-SelectorProvider与IO多路复用

最近在学习Netty,看了好多资料,也看了一部分«Netty in action»这本书,发现完全不能理解它的设计,它的组件. 联想到Netty主要是一个NIO框架,于是觉得是因为对NIO的了解不够而导致的.然后就查阅NIO的相关资料,发现还是不能理解其原理. 不得不说,Google了很多资料,包括英文的和中文的,大多数都是NIO的具体用法,而对于其核心组件,比如selector,他们的...

Java-LinkedBlockingQueue

本章介绍JUC包中的LinkedBlockingQueue。 目录 LinkedBlockingQueue介绍 LinkedBlockingQueue原理和数据结构 LinkedBlockingQueue函数列表 LinkedBlockingQueue源码分析(JDK1.7.0_40版本)]  - 创建  - 添加  - 取出 遍历 LinkedBlockingQu...

Java-DelayQueue(转)

DelayQueue是BlockingQueue的一个实现.它没有容量大小限制. DelayQueue中的元素,必须实现java.util.concurrent.Delayed接口.实现了它之后,所有放进DelayQueue中的元素,都会在一段时间之后才可用. 其中java.util.concurrent.Delayed接口,又implements了Comparable接口.所以我们需要...

Java-BlockingQueue(译)

在java.util.concurrent包中的BlockingQueue接口,其存取操作,是线程安全的.在这篇文章中,我会告诉你,如何来使用这个接口. 这篇文章中,不会告诉你如何实现一个BlockingQueue.如果你对此感兴趣,那请参考文末的资料. BlockingQueue的用法 BlockingQueue的典型使用场景是有一个生产者生产产品,然后有一个消费者消费产品.如下图所...

Java-ArrayBlockingQueue(译)

ArrayBlockingQueue是BlockingQueue接口的一个实现. ArrayBlockingQueue是一个有大小的BlockingQueue实现.也就是说,你不可以在里面存储无限多的元素.在实例化它的时候,你指定了它的大小,之后就不可以更改了. ArrayBlockingQueue内部使用FIFO算法来存储元素. 我们可以使用下面的代码,来实例化一个ArrayBloc...

JDK线程池源码研读-Java线程池的分析和使用(转)

这篇文章是转载InfoQ上方腾飞老师的一篇文章,这篇文章已经写的非常详细了,阅读原文请点击这里. 1. 引言 合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统...

Intellij-IDEA中,调试时显示对象中字段的信息

今天在阅读ConcurrentHashMap的源码时,由于实在是看不懂其中的各个字段的作用,不知道到底是干什么用的,于是就想调试一下看看. 而在调试时,默认情况下,只显示ConcurrentHashMap的Map视图的表示,也就是说,默认情况下,ConcurrentHashMap是这样显示的: 这显然不能满足我们的要求啊. 经过一番折腾之后,发现可以通过下面的方法显示Concurr...

Intellij-IDEA-`Run`提示缺失类

有时,我们明明在maven中明确写明了,有那么一个依赖,但是,在Run的时候,却会提示那个依赖中的Jar包找不到。比如: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11<...

Intellij-IDEA-Tomcat集成

最近在做一个Web项目,由于Linux上的Eclipse丑的不能直视,操作又各种不方便,终于受够了Eclipse,重新用起了Intellij IDEA. 其实好久之前,就想过放弃Eclipse,用Intellij IDEA进行开发,但是由于Intellij IDEA不支持Tomcat自动重新部署,就没有转到Intellij IDEA,而是一直用Eclipse. 今天,又捣鼓了一番,虽然还...

Intellij-IDEA-Golang插件让vendor-src目录生效

Docker 1.12.5版本的源码中,很多源码都是放在vendor/src目录下的,在Intellij IDEA中打开,就提示找不着路径. 在环境变量中,给GOPATH加上了vendor的路径,但是还是不生效. 最终,还是在Intellij IDEA中解决的. 解决方法如下: 打开‘Setting’页面,并在其中找到Language &Frameworks中的Go,打开其下...