文章
corePoolSize:核心池的大小,这个参数跟后面讲述的线程池的实现原理有非常大的关系。在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法,从这2个方法的名字就可以看出,是预创建线程的意思,即在没有任务到来之前就创建corePoolSize个线程
  • arick
  • 2020-03-26 17:41:58
  • 64
索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在 MySQL 数据库中分三类:B+ 树索引Hash 索引全文索引我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的
  • arick
  • 2020-03-19 00:25:03
  • 141
RocketMQ是阿里开源的分布式消息中间件,在阿里云上有它的商业版本ONS,类似的开源消息中间件还有Kafka, ActiveMQ等。跟其它中间件相比,rocketMQ的特点是纯JAVA实现;集群和HA实现相对简单;跟kafka相比吞吐率稍低,但是在保持一定的吞吐情况下,在发生宕机和其它故障时消息丢失率更低。后面几篇文章会对照源码来讲RocketMQ的实现原理。基本概念核心概念Message代表
  • arick
  • 2020-03-16 18:09:42
  • 154
rocketmq netty底层设计rocketmq底层网络使用的netty框架,类图如下 RecketMQ通信模块的顶层结构是RemotingServer和RemotingClient,分别对应通信的服务端和客户端首先看看RemotingServer 1 public interface RemotingServer extends RemotingService { 2 3 vo
  • arick
  • 2020-03-16 18:07:15
  • 139
1. 背景1.1. Java 线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的 CPU 都还是单核(除了商用高性能的小机),CPU 的核心频率是机器最重要的指标之一。在 Java 领域当时比较流行的是单线程编程,对于 CPU 密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1.1.2. 多线程随着硬件性能的提升,CPU 的核数越来越越多,很多服务器标配已经达
  • arick
  • 2020-03-16 17:59:03
  • 154
最近在做一个Map数据结构转换为指定Class类型实例的工具,涉及了大量反射相关的操作。借这个机会,整理下这方面的知识。Java JDK从1.5开始引入泛型这个概念,在这之前只有原始类型而没有泛型。泛型实现了参数化类型的概念,使代码可以应用于多种类型。泛型这个术语的意思是指:“适用于许多许多类型“。但是Java这种泛型仅仅存在于编译阶段,在JVM运行的过程中,泛型相关信息将会被擦除。所以泛型只是J
  • arick
  • 2020-01-20 04:58:03
  • 563
Java中CAS原理详解前言在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制,但是vo
  • arick
  • 2019-11-16 23:56:01
  • 1124
Tomcat线程池的优化1. 简介Tomcat继承并重写了JAVA原生的java.util.concurrent.ThreadPoolExecutor,增加了一些更有效率的方法,并且定义了默认拒绝策略。2. 原理分析2.1 实例化与阿里巴巴JAVA规范中定义的线程池创建规范类似,Tomcat实例化线程池时,同样限制了任务队列的长度,maxQueueSize默认为Integer.MAX_VALUE,
  • arick
  • 2019-11-16 23:42:00
  • 1085
前言说起Guava Cache,很多人都不会陌生,它是Google Guava工具包中的一个非常方便易用的本地化缓存实现,基于LRU算法实现,支持多种缓存过期策略。由于Guava的大量使用,Guava Cache也得到了大量的应用。但是,Guava Cache的性能一定是最好的吗?也许,曾经,它的性能是非常不错的。但所谓长江后浪推前浪,总会有更加优秀的技术出现。今天,我就来介绍一个比Guava C
  • arick
  • 2019-10-15 15:47:06
  • 1318
 Mac 操作命令:⌘+w是关闭标签刷新,网页是Command+R插销:command+z 反向撤回:shift+command+z 文件返回的上一级:Command + 方向上mac电脑窗口最大化默认的快捷键为:Command + control + F,但是这个窗口最大化快捷键也不是通用的,对于某些应用程序无效。 IntelliJ IDEA 操作命令:command + shift + / 注
  • arick
  • 2019-09-30 14:52:32
  • 1380
  • 1
  • 2
  • 3
  • 跳至
Rick ©2018