零、时间轮定义 简单说说时间轮吧,它是一个高效的延时队列,或者说定时器。实际上现在网上对于时间轮算法的解释很多,定义也很全,这里引用一下朱小厮博客里出现的定义: 参考下图,Kafka中的时间轮(TimingWheel)是一个存储定时任务的环形队列,底层采用数组实现,数组中的每个元素可以存放一个定时任 ...
分类:
编程语言 时间:
2018-10-26 17:44:10
阅读次数:
175
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于v ...
分类:
编程语言 时间:
2018-10-24 15:35:37
阅读次数:
145
统计C语言关键字出现次数 《C程序设计语言》K&R版本第6章结构6.3结构数组内容 ...
分类:
编程语言 时间:
2018-10-21 10:52:07
阅读次数:
252
ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也是不能保证线程安全的。 ...
分类:
其他好文 时间:
2018-10-19 00:17:25
阅读次数:
130
读内存语义:当读一个 volatile 变量时,JMM 将该线程对应的本地内存置为无效,从主内存中读取共享变量。 写内存语义:当写一个 volatile 变量时,JMM 将该线程对应的本地内存中的共享变量值刷新到主内存。 读写内存语义加起来,就能保证可见性:一个线程修改了 volatile 修饰的共 ...
分类:
其他好文 时间:
2018-10-17 14:50:37
阅读次数:
181
1)jar 2)配置 3)编写 HttpClient 集成相应的配置 4)编写定时回收无效资源的类 5) 工具类 注意) 1.JAVA 使用的证书后缀为JKS , 如果不是需要将证书转换为.jks文件 2.需要在jre中导入证书,而jre(1.8)并不会处理证书链, 必须一个个导入, 如果使用的是中 ...
分类:
编程语言 时间:
2018-10-15 20:42:04
阅读次数:
397
章节介绍 这一章节主要学习java并发机制的底层实现原理。主要学习volatile、synchronized和原子操作的实现原理。Java中的大部分容器和框架都依赖于此。 Java代码 ==经过编译==》Java字节码 ==通过类加载器==》JVM(jvm执行字节码)==转化为汇编指令==》CPU上 ...
分类:
编程语言 时间:
2018-10-14 01:56:11
阅读次数:
197
备注:volatile的确切含义与机器有关,只能通过阅读编译器文档来理解。要想让使用了volatile的程序在移植到新机器或新编译器后仍然有效,通常需要对该程序进行某些改变。 直接处理硬件的程序常常包含这样的数据元素,它们的值由程序直接控制之外的过程控制。例如,程序可能包含一个由系统时钟定时更新的变 ...
分类:
其他好文 时间:
2018-10-14 01:44:47
阅读次数:
162
互斥同步 互斥同步(Mutual Exclusion & Synchronization)是常见的一种并发正确性保证手段。同步是指子啊多个线程并发访问共享数据时,保证共享数据在同一时刻只能被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critial Sectio ...
分类:
编程语言 时间:
2018-10-06 23:41:29
阅读次数:
338
1. 仔细区分 pointers 和 references references和pointers的差别描述如下: pointer:当需要考虑"不指向任何对象"时,或者是考虑"在不同时间指向不同对象"的能力时,应该采用pointer。前一种情况可以将pointer设为null,后一种可以改变poin ...
分类:
编程语言 时间:
2018-10-01 15:32:30
阅读次数:
159