- 博客(12)
- 资源 (30)
- 收藏
- 关注
转载 深入理解 Java 内存模型
本文转自前提《深入理解 Java 内存模型》程晓明著,该书在以前看过一遍,现在学的东西越多,感觉那块越重要,于是又再细看一遍,于是便有了下面的读书笔记总结。全书页数虽不多,内容讲得挺深的。细看的话,也是挺花时间的,看完收获绝对挺大的。也建议 Java 开发者都去看看。里面主要有 Java 内存模型的基础、重排序、顺序一致性、Volatile 关键字、锁、final。本文参考书中内容。基...
2019-07-27 13:49:47 202
原创 Guava RateLimiter源码解析以及分布式限流总结
在一个抽奖项目中为了应对流量洪峰使用了这个RateLimiter组件,在最近一项目中为了控制对下游服务的流量使用了分布式限流组件,这篇文章就是总结这两种,首先看一些基础的东西,以下内容来源于:这里在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流缓存缓存的目的是提升系统访问速度和增大系统处理容量 降级降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决...
2019-07-27 12:39:12 2779
原创 二次线上JVM调优(上线GC次数过多和promotion failed)
先说明一下环境:外网20台机器:4核8G JDK8内网1台机器:32核128G JDK8上线GC次数超大线上的机器每次在上线的时候都会爆出来大量的GC,这按说是一个正常的现象,但是GC的次数明显超过了报警的阈值,所以找了一下原因,在这里记录一下这次解决问题的步骤1、首先根据以下两个方式找到相应的进程号top | grep javaps -ef |grep java2...
2019-07-27 10:13:03 1434
转载 必知必会JVM垃圾回收——对象搜索算法与回收算法
本文转自这篇文章垃圾回收(GC)是JVM的一大杀器,它使程序员可以更高效地专注于程序的开发设计,而不用过多地考虑对象的创建销毁等操作。但是这并不是说程序员不需要了解GC。GC只是Java编程中一项自动化工具,任何一个工具都有它适用的范围,当超出它的范围的时候,可能它将不是那么自动,而是需要人工去了解与适应地适用。拥有一定工作年限的程序员,在工作期间肯定会经常碰到像内存溢出、内存泄露、高并发...
2019-07-25 23:40:38 161
转载 一文了解JVM全部垃圾回收器,从Serial到ZGC
本文转自这篇文章《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。上文提到过现代的商用虚拟机的都是采用分代收集的,不同的区域用不同的收集器。常用的7种收集器,其适用的范围如图所示Serial、ParNew、Parallel Scavenge用于新生代;CMS、Serial Old、Paralled Old用...
2019-07-25 23:26:18 249
原创 源码分析:CopyOnWriteArrayList读写分离原理源码
CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略。使用这种策略的还有CopyOnWriteSet,另外还有mysql的MVVC也是使用的这种原理。这篇文章的重点就是了解读写分离实现的底层原理。首先了解一下实现的原理:主要参考这里 我们都知道,集合框架...
2019-07-24 22:58:18 309
原创 源码:BlockingQueue实现类的源码分析
ThreadPoolExecutor在实现中使用了BlockingQueue作为工作队列,今天我们学一下相关的源码,重点看一下ArrayBlockingQueue、LinkedBlockingQueue这两个队列的实现。这篇文章大部分来源于这两篇文章,有兴趣的可以直接看原文:LinkedBlockingQueue源码分析和ArrayBlockingQueue源码分析。首先看一下BlockingQu...
2019-07-24 22:30:25 235
原创 源码:ThreadPoolExecutor原理和源码分析
我们使用线程池一般是按照下边的规则进行的 private static ThreadPoolExecutor executors = new ThreadPoolExecutor(10, 20, 5, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(100), new ThreadPoolExecutor.Ca...
2019-07-20 12:03:10 278
原创 源码分析:ReentrantLock、Semaphore以及CountDownLatch源码以及对应的设计模式
最近懵懵懂懂的看完了AQS的源码(源码分析:AQS源码),还是有很多不懂的地方,感觉还是要多来几遍的,为了更深入的理解AQS框架,看一下使用AQS的ReentrantLock、Semaphore以及CountDownLatch,直接上代码吧,解释都在注释里/** * 这里是重入锁,我们需要关注一下重入锁是怎么实现的,两个条件: * 1. 在线程获取锁的时候,如果已经获取锁的线程是当前线程...
2019-07-18 23:48:31 259
原创 ConditionObject源码分析
先看一下其实现的接口:public interface Condition { /** * 暂停此线程直至一下四种情况发生 * 1.此Condition被signal() * 2.此Condition被signalAll() * 3.Thread.interrupt() * 4.伪wakeup * 以上情...
2019-07-14 15:49:43 606 1
原创 源码分析:AQS源码
在开始这篇源码之前,最好先看下转载整理的这篇文章,有很多值得学习的地方。AQS是用来构建锁或者其他同步组件的基础框架。总体来说,它使用一个 int 成员变量来表示同步状态,通过 CAS 操作对同步状态进行修改,确保状态的改变是安全的。通过内置的 FIFO (First In First Out)队列来完成资源获取线程的排队工作。1、AQS 同步和 synchronized 关键字同步在介绍...
2019-07-14 12:02:43 777
转载 JUC同步器框架(AQS框架)原文翻译
这是李老头写的一篇论文,这篇文章来自,这里,在看之前最好先把下边的知识了解透彻。克雷格.兰丁&hagersten (CLH Lock) CLH、MCS锁的原理及实现Java并发框架——AQS阻塞队列管理(二)JAVA多线程之——自旋锁、CLH、MCS简单的非公平自旋锁以及基于排队的公平自旋锁的实现MCS锁的原理和实现CLH锁的原理和实现我的Java设计模式-模板方法模式下边是正文...
2019-07-09 23:42:42 961 3
Springboot consul 服务提供端和服务发现端
2017-08-17
springboot中的 动态代理的选择测试代码
2017-08-01
springboot mybatis 集成多数据源 两种实现方式
2017-06-30
springMVC+Ehcache+MySQL
2016-11-15
spring aop 自定义缓存实现
2015-12-11
spring简单的缓存
2015-12-09
java装饰模式实例
2015-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人