- 博客(35)
- 资源 (60)
- 收藏
- 关注
原创 JVM_5_垃圾搜集算法
垃圾搜索算法 参考资料:《JVM内存管理------GC简介》《Java虚拟机垃圾回收(二)垃圾回收算法:标记-清除算法 复制算法 标记-整理算法 分代收集算法 火车算法》《Java Platform, StandardEdition HotSpot Virtual Machine Garbage Collection Tuning Guide》 Java虚拟机规范中文
2017-09-17 12:04:22 527
原创 JVM_3.0_垃圾收集器与内存分配策略_哪些内存需要回收_1
目录前言什么是垃圾收集回收(GC)为什么垃圾收集回收(GC)引用计数器算法可达性分析算法再谈引用强引用软引用弱引用虚引用生存还是死亡回收方法区这里将《Java虚拟机规范中文版》上传了,点击下面链接,即可下载:Java虚拟机规范SE7中文版 前言从前面的《运行时内存区域》系列文章中了解到,JVM运行时内存区域主要分为:堆、方法区...
2017-09-17 10:28:01 348
原创 JVM_2.0_OutOfMemoryError异常
OutOfMemoryError异常实战通过前面的内容,了解熟悉了JVM运行时内存区域。接下来尝试一下看看内粗溢出都是什么样子的。在Java虚拟机规范的描述中,除了程序计数器之外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能。我将Java虚拟机规范中文版上传了,点击下面链接,即可下载Java虚拟机规范SE7中文版 堆溢出Ja...
2017-09-17 09:44:44 338
原创 JVM_1.0_运行时内存区域
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...
2017-09-15 22:12:09 762
原创 JVM_0_序
《深入理解Java虚拟机——JVM高级特性与最佳实践》这本书四个月之前匆匆翻过一遍,当时算是粗略的翻了一遍,没有好好看里面的内容。现在空闲下来,好好地将这个本回味下..由于先前粗略的翻阅过,也知道JVM的水很深,翻开JVM的目录,感觉还是有点虚...除去书中第一章,其余的我都根据目录,罗列了大致的内容,还是很多的,每一个点都能扩散出很多的内容这里面还没有经过挑选,暂时先写下来,...
2017-09-15 21:56:25 247
原创 并发技术_4_CyclicBarrier
CyclicBarrier 类CyclicBarrier不仅有CountDownLatch所具备的的功能,还可以实现屏障等待的功能,也就是阶段性同步;它在使用上的意义在于可以循环的实现线程要一起做任务的目标,而不是像类CountDownLatch一样,仅仅支持一次线程与同步阻塞的特点。(原文写的是什么叼玩意,看的这么拗口) CyclicBarrier的字面意思是可循环使用(
2017-09-15 21:29:39 292
原创 并发技术_3_CountDownLatch
CountDownLatch Latch门栓,也就是有"门锁"的功能;当门没有打开时,N个人是不能进入屋内的,也就是N个线程是不能继续往下运行的,支持这样的特性可以控制线程执行任务的时机,使线程以"组团"的方式一起执行任务。 CountDownLatch所提供的功能是判断count计数不为0时,则当前线程呈wait状态,也就是在屏障处等待。CountDownLatch也是一
2017-09-15 21:15:24 708
原创 并发技术_2_Exchanger
Exchanger 类Exchanger的功能可以使2个线程之间传输数据,它比生产者/消费者模式使用的wait/notify要更加方便。 Exchanger(交换者)是一个用于线程间协作的工具类。它用于线程间的数据交换。如果第一个线程先执行了exchanger方法,它会一直等待第二个线程也执行exchanger,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程产生的
2017-09-15 21:00:02 228
原创 并发技术_1_Semaphore
Semaphore semaphore中文含义是信号、信号系统。 此类的主要作用就是限制线程并发的数量,如果不限制线程并发数量,CPU的资源很快会被耗尽,每个线程执行任务非常缓慢。所以限制并发线程的数量是非常有必要的。信号量在操作系统中一般用来管理数量有限的资源。信号量的值表示资源的可用数量。在使用资源时,要先从该信号量中获取一个使用许可,成功获取许可之后,
2017-09-15 20:31:37 320
原创 并发基础_15_并发_线程池(ThreadPoolExecutor)
线程池Java中的线程池是运用场景最多的并发框架。合理使用线程池能带来三个好处:a. 降低资源消耗通过重复利用已创建的线程降低线程创建和销毁造成的消耗b. 提高响应速度当任务到达时,任务可以不需要等到线程创建就能立即执行c. 提高线程的可管理性线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性。使用线程池可
2017-09-14 23:35:53 328
原创 并发基础_14_并发_原子操作类
在多线程场景下,为了保证操作对象的安全性,通常使用synchronized来解决。在JDK1.5开始,提供了java.util.concurrent.atomic包,这个包中的原子操作类提供了一些简单安全高效的更新变量的方式。Atomic包中一共提供了13个类,Atomic包中的类基本都是使用Unsafe实现的包装类。所谓原子操作:一组不可分割的操作;操作者对目标对象进
2017-09-14 23:19:37 278
原创 并发基础_13_并发_框架_Fork/Join
Fork/Join框架Fork/Join框架是Jdk1.7提供的一个用于并发执行任务的框架。它将一个大任务分割为若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork就是将一个大任务切分为若干个子任务并行的执行;Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。(如果你了解过Hadoop的MapReduce的话,会发现,和这个玩意很像
2017-09-13 21:42:01 294
原创 并发基础_12_并发_容器_阻塞队列
阻塞队列接口阻塞队列BlockingQueue接口是一个支持两个附加操作的队列。这两个附加操作支持阻塞的插入和阻塞的移除方法。a. 支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列有空余位置。b. 支持阻塞的移除方法:队列为空时,获取元素的线程会等待队列中有元素。阻塞队列常用于生产者与消费者的场景,生产者是向队列里添加元素的线程,消费者
2017-09-13 21:26:08 269
原创 并发基础_11_并发_容器_ConcurrentLinkedQueue
要实现一个线程安全的队列有两个方式:一种是使用阻塞算法,另一种是使用非阻塞算法。阻塞算法:使用阻塞算法的队列可以用一个锁(入队和出队同一把锁)或两把锁(入队和出队用不同的锁)来实现。非阻塞的实现方式则可以使用循环CAS的方式来实现。ConcurrentLinkedQueue非阻塞线程安全队列ConcurrentLinkedQueue是一个基于链接节点的无
2017-09-13 20:31:17 242
原创 并发基础_10_并发_容器_ConcurrentHashMap
ConcurrentHashMapHashMap多线程死循环Demo在之前HashMap的文章中提到,HashMap是非线程安全的。在多线程环境下使用HashMap的put操作会引发死循环,所以在并发/多线程情况下不能使用HashMap。我们看下面的这个Demopackage com.hashmap.hashmap_1;import java.util.Hash
2017-09-11 22:07:41 369
原创 并发基础_9_并发_锁_读写锁_未详解
读写锁 - ReentrantReadWriteLock读写锁简介之前一篇文章,学习了解了ReentrantLock重入锁,这篇介绍ReentrantReadWriteLock读写锁。从名字上看,这两个锁似乎存在某些联系?现实情况是这两个锁没有半毛钱的关系,就像 Java和JavaScript,socket和webSocket,雷峰塔和雷锋,没有关系..
2017-09-06 19:20:34 537
原创 并发基础_8_并发_锁_重入锁
重入锁重入锁ReentrantLock,是基于AbstractQueuedSynchronizer的,建议最好先将上一篇文章读一下..ReentrantLock,顾名思义,就是支持重进入的锁,它表示该锁能够支持一个线程对资源的重复加锁;此外还支持获取锁时的公平性和非公平性选择。之前在写AbstractQueuedSynchronizer(队列同步器)的时候,
2017-09-06 18:11:32 261
原创 并发基础_7_并发_锁_队列同步器(AQS)
AbstractQueuedSynchronizer队列同步器(AQS)废话几句,看AQS之前,最好先了解下设计模式中的 -- "模板模式"这一节AQS,我花了挺多的时间去看的,看的有些云里雾里的,各位要是暂时看的头晕建议跳过去..这章我是硬着头皮看下来的,后面还得回炉...这个队列同步器啊,是Java并发包下的核心之一;这个基础框架有多重要呢?concurrent包下
2017-09-06 17:17:49 1547 1
原创 ZooKeeper_16_ZAB协议_很重要
ZooKeeper的ZAB一致性协议别被这个"ZAB协议"的名字所迷惑,这玩意的实现作用其实是ZooKeeper的事务,对了解ZooKeeper蛮重要的..本文理论性文字较多,但个人感觉很重要...需要静下心来,好好看看,或者去看原书在《从PAXOS到ZOOKEEPER分布式一致性原理与实践》书中,ZAB协议是放在前面讲的,不过我个人觉得,放在后面看好一些,
2017-09-04 22:00:38 605
原创 ZooKeeper_15_服务器角色/数据同步
ZooKeeper各服务角色介绍在ZooKeeper集群中,分别有Leader、Follower和Observer三种类型的服务器角色。LeaderLeader服务器是整个ZooKeeper集群工作机制中的核心,其主要工作有以下两个:a. 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。b. 集群内部各服务器的调度者Follower从名字上
2017-09-04 21:17:07 388
原创 ZooKeeper_14_Leader选举
leader选举是ZooKeeper中最重要的技术之一,也是保证分布式数据一致性的关键所在。在服务器集群初始化阶段,两台服务器启动之后,互相能进行通信之后,每台机器都试图找到一个Leader,于是便进入了Leader选举流程。
2017-09-04 21:10:55 267
原创 ZooKeeper_13_服务启动
Leader和Follower服务器启动期交互过程挑重点,原书还讲解了单机、集群服务器的启动过程,我这里就跳过了..我们来看下集群服务器启动过程中Leader服务器与Follower服务器之间的交互这里默认集群服务器已经完成了Leader选举,集群中的服务器,角色都已经确定。(图不画了,直接用原书中的图)Leader和Follower服务器启
2017-09-03 21:33:39 281
原创 ZooKeeper_12_会话-重连
会话会话(Session)是ZooKeeper中最重要的概念之一,客户端与服务端之间的任何操作都与会话息息相关,这其中就包括临时节点的生命周期、客户端请求的顺序执行以及Watcher通知机制等。会话状态在ZooKeeper客户端与服务端成功完成连接创建之后,就建立了一个会话。ZooKeeper会话在整个运行期间的生命周期中,会在不同的会话状态之间进行切换。
2017-09-03 21:13:38 1368
原创 ZooKeeper_11_数据模型
ZooKeeper数据模型ZooKeeper的视图结构和标准的Unix文件系统非常类似,使用了其特有的"数据节点"概念。(不是真的文件系统,注意区别)我们称之为"ZNode",ZNode是zookeeper中数据的最小单元,每个ZNode上都可以保存数据,同时还可以挂载子节点,我们称之为"树"。这里不再多说"树"这个概念..事务ID数据库事务具有
2017-09-03 20:46:16 472
原创 ZooKeeper_10_ZooKeeper典型应用场景
ZooKeeper典型应用场景了解就好,了解就好,如果你缺少实际项目经验,有些可能会不是很明白..1. 数据发布/订阅数据发布/订阅系统,即所谓的配置中心,顾名思义就是发布者将数据发布到ZooKeeper的一个或一系列节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和数据的动态更新。推模式:服务端主动将数据更新发送到
2017-09-03 11:28:11 337
原创 ZooKeeper_9_Java操作ZK_检测节点
检测节点是否存在同步接口Stat exists(final String path, Watcher watcher)Stat exists(String path, boolean watch)异步接口void exists(final String path, Watcher watcher, StatCallback cb, Object ctx)vo
2017-09-03 11:03:25 8801
原创 ZooKeeper_8_Java操作ZK_更新数据
更新数据客户端可以通过ZooKeeper来更新一个节点的数据内容。同步Stat setData(final String path, byte data[], int version)异步void setData(final String path, byte data[], int version, StatCallback cb, Object ct
2017-09-03 10:59:48 1470
原创 ZooKeeper_7_Java操作ZK_获取数据
获取数据获取数据,包括节点列表的获取 与 节点数据的获取。getChildrenZooKeeper客户端提供了八个接口,让我们来获取一个节点下的所有子节点:getChildren(String path, boolean watch)getChildren(String path, boolean watch, Children2Callback cb, Obj
2017-09-03 10:37:17 1720
原创 ZooKeeper_6_Java操作ZK_删除节点
删除节点同步删除节点void org.apache.zookeeper.ZooKeeper.delete(String path, int version)异步删除节点void org.apache.zookeeper.ZooKeeper.delete(String path, int version, VoidCallback cb, Object ctx)
2017-09-03 10:28:31 1003
原创 ZooKeeper_5_Java操作ZK_创建节点
创建节点创建节点有两种接口:同步方式创建数据节点String org.apache.zookeeper.ZooKeeper.create(String path, byte[] data, List acl, CreateMode createMode)异步方式创建数据节点void org.apache.zookeeper.ZooKeeper.create(St
2017-09-03 10:22:18 1024
原创 ZooKeeper_4_Java操作ZK_创建会话
Java客户端操作ZooKeeperJava客户端操作ZooKeeper篇幅太长,将其拆分开Java客户端的创建可以通过ZooKeeper对象来创建(org.apache.zookeeper.ZooKeeper)创建会话我们可以通过ZooKeeper类,来构建实例对象,连接ZooKeeper服务端。我们来看下ZooKeeper的构造方法:ZooKee
2017-09-02 23:16:51 430
原创 ZooKeeper_3_客户端脚本
客户端脚本 创建create [-s] [-e] path data acl[-s]:顺序节点---------- (不加默认为永久节点)[-e]:临时节点---------- (不加默认为永久节点)path:创建的节点路径data:路径上znode存储的数据acl:权限控制 ----------(不加则默认不做任何权限控制) 举个栗子
2017-09-02 23:08:31 293
原创 ZooKeeper_2_初识ZooKeeper
ZooKeeper是什么Zookeeper是一个典型的分布式数据一致性的解决方案。分布式应用程序可以基于它实现诸如 数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理等等ZooKeeper有如下特性:a. 顺序一致性从同一个客户端发起的事务请求,最终将会严格的按照其发起顺序被应用到ZooKeeper中。b. 原子性所有事务请求
2017-09-02 22:16:10 309
原创 ZooKeeper_1_分布式
分布式架构这篇了解下就好,系列笔记重要的是ZooKeeper,分布式真要扯开讲,要讲好多╮(╯▽╰)╭随着计算机系统规模越来越大,将所有的业务单元集中部署在一个或若干个大型机上的体系结构,越来越不能满足性能上的要求。随着微型计算机的出现,越来越多廉价的PC机器称为了各大企业IP架构的首选,分布式的处理方式越来越受到业界的青睐。集中式架构所谓的集中
2017-09-02 21:57:15 246
原创 Zookeeper_0_序
之前在工作中很多次用到了ZooKeeper,当时由于时间紧张,只是简单的了解它的使用,没有深入去研究过..最近空闲下来了,买了两本书,花了些时间,翻看了一下..知其然知其所以然ZooKeeper系列笔记是在翻阅《从PAXOS到ZOOKEEPER分布式一致性原理与实践》、《ZooKeeper分布式过程技术详解》上整理的
2017-09-02 21:47:52 237
01-SpringBoot-Demo
2018-07-01
springBoot
2018-03-25
Spring Cloud 服务注册中心-服务提供-服务消费-源码-可运行
2018-03-14
ApacheCamel-JMS-ActiveMQ
2018-02-05
05-ApacheCamel-CXF-WebService
2018-02-02
Java虚拟机规范SE7
2017-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人