自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ScorpC的博客

人生是坚持理想的朝圣之路

  • 博客(10)
  • 收藏
  • 关注

原创 java并发编程汇总15:线程池中多余的线程如何回收

以1.8为例。1.runWorker(Worker w)工作线程启动后,就进入runWorker(Worker w)方法。里面是一个while循环,循环判断任务是否为空:若不为空,执行任务; 若取不到任务,或发生异常,退出循环,执行processWorkerExit(w, completedAbruptly); 在这个方法里把工作线程移除掉。取任务的来源有两个,一个是firstTask,这个是工作线程第一次跑的时候执行的任务,最多只能执行一次,后面得从getTask()方法里取任..

2021-03-15 11:55:46 550

原创 java并发编程汇总14:线程池实现原理

原以为自己很了解线程池,结果差点酿成大祸。一句话总结来说就是,没有领悟到线程池的精髓!还好问题本身发现了,也算是一笔极宝贵的经验!戒骄戒躁,发现存在的问题,持续前行!一、线程池简介1.1、线程池是什么线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做..

2021-03-15 11:21:50 341

原创 GC原理、调优,CMS原理、调优,G1原理、调优,GC问题排查和解决思路

主要介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,了解如何对生产系统出现的GC问题进行排查解决目录:GC基础原理:涉及调优目标,GC事件分类、JVM内存分配策略、GC日志分析等 CMS原理及调优 G1原理及调优 GC问题排查和解决思路一、GC基础原理1、GC调优目标大多数情况下对 Java 程序进行GC调优, 主要关注两个目标:响应速度、吞吐量 响应速度(Responsiveness) 响应速度指程序或系统对一个请求的响应有多迅速。比如,

2021-03-10 10:40:03 1187

原创 CMS产生的问题:promotion failed和concurrent mode failure,及解决方案

JVM垃圾收集器方面还是需要进一步的研究,只深入掌握一个最新的是不够的(比如g1);其他的垃圾收集器也不要只掌握皮毛,要深挖原理及产生的问题、调优;以此为戒,不要只满足于已掌握的所有底层原理,还远远不够的,知识是无穷无尽的,戒骄戒躁,调整好心态,持续学习!正文:CMS并行GC是大多数应用的最佳选择,然而, CMS并不是完美的,在使用CMS的过程中会产生2个最让人头痛的问题:promotion failed concurrent mode failure第一个问题promotio.

2021-03-10 09:59:40 3416

原创 Raft算法

Raft 也是一个一致性算法,和 Paxos 目标相同。是更易于理解的一致性算法。也就是说,他的目标就是成为一个易于理解的一致性算法。以替代 Paxos 的晦涩难懂。一、Raft算法介绍首先说什么是 Raft 算法:Raft 是一种为了管理复制日志的一致性算法。什么是一致性呢?Raft 的论文这么说的:一致性算法允许一组机器像一个整体一样工作,即使其中一些机器出现故障也能够继续工作下去。这里的一致性针对分布式系统。什么是管理日志呢?一致性算法是从复制状态机的背景下提出的,

2021-03-05 10:34:05 544 1

原创 kafka的协调服务Zookeeper

RocketMQ 的 NameServer 虽然设计非常简洁,但很好地解决了路由寻址的问题。而 Kafka 却采用了完全不同的设计思路,它选择使用 ZooKeeper 这样一个分布式协调服 务来实现和 RocketMQ 的 NameServer 差不多的功能。先简单了解一下 ZooKeeper,然后再来一起学习一下 Kafka 是如何借助 ZooKeeper 来构建集群,实现路由寻址的。一、Zookeeper的作用Apache ZooKeeper 它是一个非常特殊的中间件,为什么这么说呢?一

2021-03-01 15:16:08 324

原创 RocketMQ:NameServer源码分析

本篇主要讲解:RocketMQ客户端如何在集群中找到正确的节点?也就是深入分析NameServer。RocketMQ 的生产者启动流程中,生产者只要配置一个接入地址,就可以访问整个 集群,并不需要客户端配置每个 Broker 的地址。RocketMQ 会自动根据要访问的主题名 称和队列序号,找到对应的 Broker 地址。如果 Broker 发生宕机,客户端还会自动切换到 新的 Broker 节点上,这些对于用户代码来说都是透明的。这些功能都是由 NameServer 协调 Broker 和客.

2021-03-01 14:46:19 222

原创 Kafka和RocketMQ的消息复制(服务端)实现的差异点

消息队列在收发两端,主要是依靠业务代码,配合请求确认的机制,来保证消息不会丢失的。而在服务端,一般采用持久化和复制的方式来保证不丢消息。把消息复制到多个节点上,不仅可以解决丢消息的问题,还可以保证消息服务的高可用。即使某一个节点宕机了,还可以继续使用其他节点来收发消息。所以大部分生产系统,都会把消息队列配置成集群模式,并开启消息复制,来保证系统的高可用和数据可靠性。接下来主要分析一下:消息复制需要解决的一些问题,以及 RocketMQ 和 Kafka 都是如何 应对这些问题来实现复制的。目录:

2021-03-01 11:14:30 230

原创 kafka:Consumer源码分析

上传一篇,之前看kafka Consumer源码做的笔记。正文如下:kafka版本:2.2首先,kafka消费模型的要点:Kafka 的每个 Consumer(消费者)实例属于一个 ConsumerGroup(消费组); 在消费时,ConsumerGroup 中的每个 Consumer 独占一个或多个 Partition(分 区); 对于每个 ConsumerGroup,在任意时刻,每个 Partition 至多有 1 个 Consumer 在消费; 每个 ConsumerG.

2021-03-01 10:25:19 667

原创 RocketMQ:Producer源码分析

上传一篇之前看Producer源码做的笔记。正文如下:客户端是一个单独的 Module,在 rocketmq/client 目录中。一、建议:从单元测试看Produce API的使用一般单元测试中,每一个用例就是测试代码中的一个局部或者说是一个小流程。那对于一些比较完善的开源软件,它们的单元测试覆盖率都非常高,很容易找到我们关心的那个流程所对应的测试用例。我们的源码分析,就可以从这些测试用例入手,一步一步跟踪其方法调用链路,理清实现过程。首先我们先分析一下 RocketMQ .

2021-03-01 09:46:36 256

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除