闪亮菜鸟

导航

2017年12月11日 #

CountDownLatch原理及使用场景

摘要: CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁 上等待的线程就可以恢复执行任务。 构造器中的计数值(count)实际上就是闭锁需要等待的线程数量。这个 阅读全文

posted @ 2017-12-11 14:50 闪亮菜鸟 阅读(2393) 评论(0) 推荐(0) 编辑

2017年12月9日 #

Redis广播

摘要: 参见:http://blog.csdn.net/u011734144/article/details/51782085 阅读全文

posted @ 2017-12-09 17:13 闪亮菜鸟 阅读(229) 评论(0) 推荐(0) 编辑

2017年12月5日 #

手写注解实现SpringMVC

摘要: 参考:https://www.cnblogs.com/Shock-W/p/6617068.html 阅读全文

posted @ 2017-12-05 10:43 闪亮菜鸟 阅读(128) 评论(0) 推荐(0) 编辑

实现安全的缓存更新方法

摘要: 将要更新的缓存,比如为一个Map:oldMap,声明一个代理proxy来代理oldMap的新增和删除方法(Proxy.newProxyInstance),当业务修改oldMap时,定义一个锁reentrantlock,在invoke方法中判断修改oldMap的时候,new一个新的Map:newMap 阅读全文

posted @ 2017-12-05 10:28 闪亮菜鸟 阅读(138) 评论(0) 推荐(0) 编辑

synchronized 和reentrantlock的优缺点

摘要: reentrantlock的优点 可以添加多个检控条件, 如果使用synchronized,则只能使用一个. 使用 reentrant locks 可以有多个wait()/notify() 队列. [译注:直接多new 几个ReentrantLock就可以了,不同的场景/条件用不同的Reentran 阅读全文

posted @ 2017-12-05 10:06 闪亮菜鸟 阅读(435) 评论(0) 推荐(0) 编辑

2017年12月2日 #

JUC详解

摘要: 一、Java多线程 -- JUC包源码分析1 -- CAS/乐观锁 乐观锁其实就是不加锁,用CAS + 循环重试,实现多个线程/多个客户端,并发修改数据的问题 使用AtomicStampedReference类下的 public boolean compareAndSet(V expectedRef 阅读全文

posted @ 2017-12-02 15:37 闪亮菜鸟 阅读(1213) 评论(0) 推荐(0) 编辑

java 线程池

摘要: 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2(即启动和销毁需要耗费的时间远大于线程执行的时间,生活的例子如:热水器开启时间要很长,反而让它一会运行耗费的电量很少),则可以采用线程池,以提高服务器性能 阅读全文

posted @ 2017-12-02 15:29 闪亮菜鸟 阅读(101) 评论(0) 推荐(0) 编辑

java IO流

摘要: 1.PrintStream、BufferedWriter、PrintWriter的比较? PrintStream类的输出功能非常强大,通常如果需要输出文本内容,都应该将输出流包装成PrintStream后进行输出。它还提供其他两项功能。与其他输出流不同,PrintStream 永远不会抛出 IOEx 阅读全文

posted @ 2017-12-02 14:22 闪亮菜鸟 阅读(150) 评论(0) 推荐(0) 编辑

2017年12月1日 #

线程创建的3种方式及优缺点

摘要: 一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来启动该线程。 二、通过Runnabl 阅读全文

posted @ 2017-12-01 16:11 闪亮菜鸟 阅读(6372) 评论(0) 推荐(0) 编辑

触发full gc的条件

摘要: 1.调用System.gc 2.老年代空间不足 3、永生区空间不足 4、CMS GC时出现promotion failed和concurrent mode failure 5、统计得到的Minor GC晋升到旧生代的平均大小大于老年代的剩余空间 6、堆中分配很大的对象 参考:http://blog. 阅读全文

posted @ 2017-12-01 16:08 闪亮菜鸟 阅读(938) 评论(0) 推荐(0) 编辑

http建立连接过程

摘要: 参考:http://blog.csdn.net/wangjun5159/article/details/51510594 阅读全文

posted @ 2017-12-01 13:45 闪亮菜鸟 阅读(213) 评论(0) 推荐(0) 编辑

java 集合是否有序

摘要: 参考:https://www.cnblogs.com/hoobey/p/5914226.html 阅读全文

posted @ 2017-12-01 11:29 闪亮菜鸟 阅读(1981) 评论(0) 推荐(0) 编辑

ArrayList实现动态数组原理

摘要: addAll方法和申请数组大小函数 照例来看一下addAll方法,ensureCapacityInternal判断当前的数字是否大于了申请的长度,如果空间不够了,在申请 1.5倍的空间+1,如果还是不够,直接让最新的长度等于需要的长度,然后将旧的数组给新的数组。 参考:http://blog.csd 阅读全文

posted @ 2017-12-01 11:24 闪亮菜鸟 阅读(243) 评论(0) 推荐(0) 编辑

2017年11月30日 #

HashMap理解

摘要: HashMap中Capacity为数组长度,默认大小为16,size为元素个数,loadFactor为size/capacity,默认为0.75,当存储的元素个数size大于等于capacity乘以0.75(即threshold)时,再增加下个元素的时候,会同时判断增加的这个元素是否会放到数组的已经 阅读全文

posted @ 2017-11-30 16:24 闪亮菜鸟 阅读(198) 评论(0) 推荐(0) 编辑