摘要: 本节解析要点如下: 1、线程池的执行原理 2、线程是如何复用的 3、核心线程数如何一直保持、最大线程数如何释放 4、线上环境线程池应该定义多大 一 线程池初始化原理 可参考博客:https://www.jianshu.com/p/23cb8b903d2c 1 public void execute( 阅读全文
posted @ 2020-06-08 23:49 《船长》 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 本章重点讲解内容如下: 1、什么是CLH同步队列 2、为什么需要CLH同步队列 3、CLH同步队列原理(即队列如何入队、出队) 一 什么是CLH队列 AbstractQueuedSynchronizer类文件开头,作者Doug Lea一大篇幅来介绍CLH队列,大意如下: CLH队列是一个FIFO的双 阅读全文
posted @ 2020-06-05 00:21 《船长》 阅读(1698) 评论(0) 推荐(0) 编辑
摘要: 一 什么是Semaphore、Semaphore用来做什么 semaphore是计数信号量,可用于多线程并发执行时,限制获取资源的线程数量。常用场景为:限流。 二 Semaphore用法 1 public class SemaphoreTest { 2 3 public static void ma 阅读全文
posted @ 2020-06-02 23:42 《船长》 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 本章要点详细介绍以下几个问题: 1、为什么需要内存模型 2、什么是内存模型 3、内存模型解决什么问题 1、为什么需要内存模型 说道内存模型不得不首先说下目前的计算机组成原理,目前主流的计算机都是冯诺依曼机。他的cpu缓存存原理如下图: 当有了多级缓存后,CPU要读取一个数据时,首先从一级缓存中查找, 阅读全文
posted @ 2020-05-14 00:01 《船长》 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 1、现象: 今天下午公司客户群里突然报警,说订单没有推送服务商,经排查发现是rabbitmq堵住了,查询elk和监控没有发现业务异常或超时日志。 通过rabbitmq后面发现一个队列有异常,队列不ack,未消费数量一直增长,怀疑服务假死,只能保留现场,重启服务,下面是服务重启前后队列截图 2、分析 阅读全文
posted @ 2020-04-30 22:07 《船长》 阅读(1737) 评论(1) 推荐(0) 编辑
摘要: 这一次我们就来说说消息队列的高可用的原理。这里主要讲的是现在使用比较多的RabbitMQ和大数据相关的Kafka两种消息中间件的高可用。这里只是讲解他们的实现原理,不会实战。 1、RabbitMQ的高可用 RabbitMQ是基于主从复制来实现高可用的,不支持分布式。既然是主从复制,那么肯定就不是单台 阅读全文
posted @ 2020-03-17 19:18 《船长》 阅读(1180) 评论(0) 推荐(0) 编辑
摘要: 1、为什么使用消息队列啊? 三点:解耦、异步、削峰 1)解耦: 2)异步 3)削峰 2、消息队列都有什么优点和缺点? 优点: 上面已经说了,就是在特殊场景下有其对应的好处,解耦、异步、削峰 缺点: 系统可用性降低:系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用BCD三个系统的接口就好了,人 阅读全文
posted @ 2020-03-16 23:42 《船长》 阅读(434) 评论(0) 推荐(0) 编辑
摘要: gitbook html 发布 api 文档 阅读全文
posted @ 2016-12-14 11:13 《船长》 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 多次连接Redis,常常取不到值,错误如下: 1.Timeout performing HGET 2.No connection is available to service this operation 通过Github Issues查到解决方案: 1.https://github.com/St 阅读全文
posted @ 2016-09-22 12:48 《船长》 阅读(2412) 评论(0) 推荐(0) 编辑
摘要: //[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)] namespace LogNet { /// <summary> /// Author :TonyKit /// Date :2 阅读全文
posted @ 2016-09-05 22:38 《船长》 阅读(353) 评论(0) 推荐(0) 编辑