2016年11月21日
摘要:
本教程目录: 自定义线程池 配置spring默认的线程池 1. 自定义线程池 1.1 修改application.properties task.pool.corePoolSize=20 task.pool.maxPoolSize=40 task.pool.keepAliveSeconds=300
阅读全文
posted @ 2016-11-21 10:18
duanxz
阅读(32086)
推荐(5)
2016年11月18日
摘要:
一、为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,
阅读全文
posted @ 2016-11-18 10:29
duanxz
阅读(5741)
推荐(7)
2016年11月16日
摘要:
最近查看JDK源码时,无意间发现几个类在陌生包里:com.sun.*、sun.*、org.*,google了一把总结了下以备他人搜索,如内容有误欢迎指正! Jre库包含的jar文件(jdk1.6):resources.jar、rt.jar、jsse.jar、jce.jar、charsets.jar、
阅读全文
posted @ 2016-11-16 10:37
duanxz
阅读(817)
推荐(0)
2016年11月15日
摘要:
一、javac命令 1 javac –verbose查看运行类是加载了那些jar文件 HelloWorld演示: public class Test { public static void main(String[] args) { Object lock = new Object(); sync
阅读全文
posted @ 2016-11-15 17:48
duanxz
阅读(1441)
推荐(0)
2016年11月14日
摘要:
一、Semaphore简介 Semaphore是一个计数信号量,它的本质是一个"共享锁",是基于AQS实现的,通过state变量来实现共享。通过调用acquire方法,对state值减去一,当调用release的时候,对state值加一。当state变量小于0的时候,在AQS队列中阻塞等待。 信号量
阅读全文
posted @ 2016-11-14 22:15
duanxz
阅读(1104)
推荐(0)
摘要:
CyclicBarrier简介 CyclicBarrier是一个同步辅助类,CyclicBarrier,就是一个计数器栅栏,也就是一个计数器开关。允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。因为该 barrier 在释放等待线程后可以重用,所以称它为循
阅读全文
posted @ 2016-11-14 22:14
duanxz
阅读(605)
推荐(0)
摘要:
概要 前面对"独占锁"和"共享锁"有了个大致的了解;和ReadWriteLock.ReadLock一样,CountDownLatch的本质也是一个"共享锁"。 CountDownLatch简介 CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程
阅读全文
posted @ 2016-11-14 22:13
duanxz
阅读(565)
推荐(1)
摘要:
ReadWriteLock 和 ReentrantReadWriteLock介绍 ReadWriteLock,顾名思义,是读写锁。它维护了一对相关的锁 — — “读取锁”和“写入锁”,一个用于读取操作,另一个用于写入操作。“读取锁”用于只读操作,它是“共享锁”,能同时被多个线程获取。“写入锁”用于写
阅读全文
posted @ 2016-11-14 22:13
duanxz
阅读(598)
推荐(0)
摘要:
concurrent包是基于AQS (AbstractQueuedSynchronizer)框架的,AQS(JAVA CAS原理、unsafe、AQS)框架借助于两个类: Unsafe(提供CAS操作) 《AQS之:Unsafe(java可直接操作内存(),挂起与恢复,CAS操作)》 LockSup
阅读全文
posted @ 2016-11-14 22:12
duanxz
阅读(1411)
推荐(0)
摘要:
概要 前面两章分析了"公平锁的获取和释放机制",这一章开始对“非公平锁”的获取锁/释放锁的过程进行分析。内容包括:参考代码获取非公平锁(基于JDK1.7.0_40)释放非公平锁(基于JDK1.7.0_40)关于锁的数据结构请参考"Java多线程系列--“JUC锁”03之 公平锁(一) ",锁的使用示
阅读全文
posted @ 2016-11-14 22:11
duanxz
阅读(475)
推荐(0)
摘要:
Condition介绍 Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的n
阅读全文
posted @ 2016-11-14 22:11
duanxz
阅读(473)
推荐(1)
摘要:
概要 前面一章,我们学习了“公平锁”获取锁的详细流程;这里,我们再来看看“公平锁”释放锁的过程。内容包括:参考代码释放公平锁(基于JDK1.7.0_40) “公平锁”的获取过程请参考“Java多线程系列--“JUC锁”03之 公平锁(一)”,锁的使用示例请参考“Java多线程系列--“JUC锁”02
阅读全文
posted @ 2016-11-14 22:09
duanxz
阅读(498)
推荐(0)
摘要:
概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40) 一. tryAcquire() 二. addWaiter() 三. acquireQueued() 四. selfIn
阅读全文
posted @ 2016-11-14 22:08
duanxz
阅读(557)
推荐(0)
摘要:
ReentrantLock介绍 ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。 顾名思义,ReentrantLock锁在同一个时间点只能被一个线程锁持有;而可重入的意思是,ReentrantLock锁,可以被单个线程多次获取。ReentrantLock分为“公平锁”和“非公平锁
阅读全文
posted @ 2016-11-14 22:07
duanxz
阅读(709)
推荐(2)
2016年11月11日
摘要:
本章,我们介绍锁的架构;后面的章节将会对它们逐个进行分析介绍。目录如下:01. Java多线程系列--“JUC锁”01之 框架02. Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock03. Java多线程系列--“JUC锁”03之 公平锁(一)04. Java多线程系列--
阅读全文
posted @ 2016-11-11 17:35
duanxz
阅读(715)
推荐(1)
摘要:
分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了三个问题: RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的? 关键特性以及其实
阅读全文
posted @ 2016-11-11 11:21
duanxz
阅读(4870)
推荐(1)
摘要:
Redis 通过 PUBLISH 、 SUBSCRIBE 和 PSUBSCRIBE 等命令实现发布和订阅功能。 这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播、实时提醒等。 本文通过分析 Redis 源码里的 pubsub.c 文件,了解发布和订阅机制的底层实现,籍
阅读全文
posted @ 2016-11-11 11:07
duanxz
阅读(6172)
推荐(0)
2016年11月10日
摘要:
范例 为什么使用Guava Math Guava Math针对各种不常见的溢出情况都有充分的测试;对溢出语义,Guava文档也有相应的说明;如果运算的溢出检查不能通过,将导致快速失败; Guava Math的性能经过了精心的设计和调优;虽然性能不可避免地依据具体硬件细节而有所差异,但Guava Ma
阅读全文
posted @ 2016-11-10 23:34
duanxz
阅读(1231)
推荐(0)
posted @ 2016-11-10 23:33
duanxz
阅读(171)
推荐(0)
摘要:
概述 Java内建的散列码[hash code]概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换。此外,使用Java内建方法实现的散列码通常是劣质的,部分是因为它们最终都依赖于JDK类中已有的劣质散列码。 Object.hashCode往往很快,但是在预防碰撞上
阅读全文
posted @ 2016-11-10 23:32
duanxz
阅读(861)
推荐(0)
摘要:
范例 简介 区间,有时也称为范围,是特定域中的凸性(非正式说法为连续的或不中断的)部分。在形式上,凸性表示对a<=b<=c, range.contains(a)且range.contains(c)意味着range.contains(b)。 区间可以延伸至无限——例如,范围”x>3″包括任意大于3的值
阅读全文
posted @ 2016-11-10 23:31
duanxz
阅读(856)
推荐(0)
摘要:
字节流和字符流 Guava使用术语”流” 来表示可关闭的,并且在底层资源中有位置状态的I/O数据流。术语”字节流”指的是InputStream或OutputStream,”字符流”指的是Reader 或Writer(虽然他们的接口Readable 和Appendable被更多地用于方法参数)。相应的
阅读全文
posted @ 2016-11-10 23:31
duanxz
阅读(1207)
推荐(0)
2016年11月9日
摘要:
在工作中可能会遇到内存溢出这种灾难性的问题,那么程序肯定是存在问题,找出问题至关重要,上一篇文章讲了jmap命令的使用方法,当然用jmap导出的文件我们也看不懂啊,那就交给memory analyzer(mat)这个工具,让他帮助我们来观察程序的内存分布情况吧。 MAT 不是一个万能工具,它并不能处
阅读全文
posted @ 2016-11-09 10:42
duanxz
阅读(10579)
推荐(2)
2016年11月8日
摘要:
人们常说人生就是一个不断做选择题的过程:有的人没得选,只有一条路能走;有的人好一点,可以二选一;有些能力好或者家境好的人,可以有更多的选择;还有一些人在人生的迷茫期会在原地打转,找不到方向。对于相信有上帝的人来讲,这就好像是上帝事先为我们制定好了人生路线,也好像是那些神仙为唐曾师徒的取经之路提前设置
阅读全文
posted @ 2016-11-08 22:14
duanxz
阅读(673)
推荐(0)
2016年11月7日
摘要:
了解Cassandra集群的性能特点有助于诊断和维护Cassandra。由于Cassandra使用JAVA开发的,所以它就提供了JMX环境下的一些管理工具来管理Cassandra,它们包括:Cassandra nodetool工具、DataStax OpsCenter管理控制台和JConsole。
阅读全文
posted @ 2016-11-07 18:26
duanxz
阅读(7650)
推荐(0)