摘要: JDK7提供了7个阻塞队列,如下: ArrayBlockingQueue : 一个数组结构组成的有界阻塞队列。 LinkedBlockingQueue : 一个由链表结构组成的有界阻塞队列 。 PriorityBlockingQueue : 一个支持优先级排序的无界阻塞队列 。 DelayQueue 阅读全文
posted @ 2017-06-24 22:53 dquery 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 排他锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻允许多个读线程访问,但是在写线程访问时,所有的读线程和其他的写线程均被阻塞。读写锁内部维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大的提升。 读写锁除了保证写操作对读操作的可见性和提高并发的性能之外, 阅读全文
posted @ 2017-06-22 16:29 dquery 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 1.定义 策略模式定义了一族算法,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2.适用性 1.许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 2.需要使用一个算法的不同变体。 3.算法使用客户不应该知道的数据。可使用策略模 阅读全文
posted @ 2017-06-21 22:51 dquery 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 对于服务端而言,经常面对的是客户端传入的短小任务,需要服务端快速处理并返回结果。如果服务端每次接受一个客户端请求都创建一个线程然后处理请求返回数据,这在请求客户端数量少的阶段看起来是一个不错的选择,但是面对成千上万的请求在某一时段同时到达服务器时,如果还是采用这种方式,那么将会创建数以万计的线程,暂 阅读全文
posted @ 2017-06-19 23:21 dquery 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 分布式环境下,多台机器上多个进程对一个数据进行操作,如果不做互斥,就有可能出现“余额扣成负数”,或者“商品超卖”的情况,如何实现简易分布式锁,对分布式环境下的临界资源做互斥,是今天将要讨论的话题。 阅读全文
posted @ 2017-06-18 23:42 dquery 阅读(140) 评论(0) 推荐(0) 编辑
摘要: Protobuf是一个灵活、高效、结构化的数据序列化框架,相比于XML等传统的序列化工具, 它更小、更快、更简单。Protobuf支持数据结构化一次就可以到处使用,甚至是跨语言使用,通过代码生成工具可以自动生成不同语言版本的源代码,甚至可以在使用不同版本数据结构进程间进行数据传递,实现数据结构的前向 阅读全文
posted @ 2017-06-18 23:20 dquery 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 1.下载maven安装包,解压,解压目录如下: 2.配置M2_HOME变量为上一步的路径: 3.配置PATH变量,添加%M2_HOME%\bin; 查看是否配置成功 mvn -v : 4.安装jar包到本地仓库 : mvn install:install-file -Dfile=G:\downloa 阅读全文
posted @ 2017-06-16 23:42 dquery 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 多撒大所多 阅读全文
posted @ 2017-06-16 18:26 dquery 阅读(166) 评论(0) 推荐(0) 编辑
摘要: happens-before是JMM中最核心的概念,对于Java程序员来说,理解happens-before是理解JMM的关键 。 1.JMM的设计 首先,来看看JMM的设计意图。从JMM的设计者的角度,在设计JMM时,需要考虑两个关键因素。 (1)程序员对内存模型的使用。程序员希望内存模型易于理解 阅读全文
posted @ 2017-06-13 23:26 dquery 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,Java中的锁可以让临界区互斥执行。锁是Java并发编程中最重要的同步机制,锁除了可以让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁的释放-获取的代码: 假设线程A执行writer()方法,随后线程B执行reader()方法。根据happens-befor 阅读全文
posted @ 2017-06-13 17:13 dquery 阅读(427) 评论(0) 推荐(1) 编辑