12 2019 档案

摘要:一、重排序场景 class ResortDemo { int a = 0; boolean flag = false; public void writer() { a = 1; //1 flag = true; //2 } Public void reader() { if (flag) { // 阅读全文
posted @ 2019-12-31 11:48 朱子威 阅读(361) 评论(0) 推荐(0)
摘要:二、ObjectMonitor 结构 前面讲到 java.lang.Object 类定义了 wait(),notify(),notifyAll() 方法。 这些都是 native方法,底层是C++来实现的。 这些方法的具体实现,依赖一个叫做ObjectMonitor模式实现,这是JVM内部C++实现 阅读全文
posted @ 2019-12-31 10:20 朱子威 阅读(6311) 评论(2) 推荐(1)
摘要:实现原理 synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性 Java中每一个对象都可以作为锁,这是synchronized实现同步的基础: 普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步 阅读全文
posted @ 2019-12-31 09:55 朱子威 阅读(1404) 评论(0) 推荐(0)
摘要:参考: https://blog.csdn.net/java666668888/article/details/102855253 阅读全文
posted @ 2019-12-30 19:01 朱子威 阅读(157) 评论(0) 推荐(0)
摘要:参考: http://www.tianshouzhi.com/api/tutorials/netty/343 阅读全文
posted @ 2019-12-30 18:21 朱子威 阅读(128) 评论(0) 推荐(0)
摘要:摘要: I/O复用模型,是同步非阻塞,这里的非阻塞是指I/O读写,对应的是recvfrom操作,因为数据报文已经准备好,无需阻塞。 说它是同步,是因为,这个执行是在一个线程里面执行的。有时候,还会说它又是阻塞的,实际上是指阻塞在select上面,必须等到读就绪、写就绪等网络事件。 一、I/O复用模型 阅读全文
posted @ 2019-12-30 17:55 朱子威 阅读(823) 评论(0) 推荐(0)
摘要:前言 零拷贝(Zero-copy)技术指在计算机执行操作时,CPU 不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及 CPU 的拷贝时间。它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现 CPU 的零参与,彻底消除 CPU 在这 阅读全文
posted @ 2019-12-30 15:20 朱子威 阅读(710) 评论(0) 推荐(0)
摘要:来自如下网站 https://www.cnblogs.com/sparkdev/p/8410350.html 内核空间和用户空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kerne 阅读全文
posted @ 2019-12-30 14:08 朱子威 阅读(1904) 评论(0) 推荐(0)
摘要:AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. 阅读全文
posted @ 2019-12-27 10:39 朱子威 阅读(291) 评论(0) 推荐(0)
摘要:红黑树是一种很经典的数据结构,它可以在O(log n)时间内做查找,插入和删除。所以倍受关注。但是一直以来很多Java程序员对他都不是很重视,直到在JDK 1.8中,HashMap会将其链表转换成红黑树,此后,很多人就开始重新学习红黑树的有关知识。 作者在学习红黑树时,查阅了很多资料都没有找到解释的 阅读全文
posted @ 2019-12-27 10:29 朱子威 阅读(2757) 评论(1) 推荐(1)
摘要:AVL树: https://mp.weixin.qq.com/s?__biz=Mzg2NzA4MTkxNQ==&mid=2247485220&idx=1&sn=7bca40ca5a3e703f6c9f89eb0f9f2be4&scene=21#wechat_redirect 红黑树: https:/ 阅读全文
posted @ 2019-12-26 14:11 朱子威 阅读(155) 评论(0) 推荐(0)
摘要:深入理解HashMap+ConcurrentHashMap的扩容策略 前言 理解HashMap和ConcurrentHashMap的重点在于: (1)理解HashMap的数据结构的设计和实现思路 (2)在(1)的基础上,理解ConcurrentHashMap的并发安全的设计和实现思路 前面的文章已经 阅读全文
posted @ 2019-12-25 16:11 朱子威 阅读(946) 评论(0) 推荐(0)
摘要:Java7 中实现的 ConcurrentHashMap 说实话还是比较复杂的,Java8 对 ConcurrentHashMap 进行了比较大的改动。建议读者可以参考 Java8 中 HashMap 相对于 Java7 HashMap 的改动,对于 ConcurrentHashMap,Java8 阅读全文
posted @ 2019-12-25 14:48 朱子威 阅读(469) 评论(0) 推荐(0)
摘要:Java8 HashMap Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。 根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才 阅读全文
posted @ 2019-12-25 14:09 朱子威 阅读(226) 评论(0) 推荐(0)
摘要:1、默认容量? HashTable默认容量为11,计算hash的方式为如下: int hash = key.hashCode();int index = (hash & 0x7FFFFFFF) % tab.length; 根据证明,对素数或奇数直接取模,分布的会更均匀。其它Map的默认容量都为16, 阅读全文
posted @ 2019-12-25 11:23 朱子威 阅读(439) 评论(0) 推荐(0)
摘要:哈希 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长 阅读全文
posted @ 2019-12-25 10:47 朱子威 阅读(850) 评论(0) 推荐(0)
摘要:什么是容量 在Java中,保存数据有两种比较简单的数据结构:数组和链表。数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。HashMap就是将数组和链表组合在一起,发挥了两者的优势,我们可以将其理解为链表的数组。在HashMap中,有两个比较容易混淆的关键字段:siz 阅读全文
posted @ 2019-12-25 10:29 朱子威 阅读(4275) 评论(3) 推荐(0)
摘要:一、重排序场景 class ResortDemo { int a = 0; boolean flag = false; public void writer() { a = 1; //1 flag = true; //2 } Public void reader() { if (flag) { // 阅读全文
posted @ 2019-12-24 16:34 朱子威 阅读(472) 评论(0) 推荐(0)
摘要:1.并发编程领域的关键问题 1.1 线程之间的通信 线程的通信是指线程之间以何种机制来交换信息。在编程中,线程之间的通信机制有两种,共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信,典型的共享内存通信方式就是通过共享对象进行通 阅读全文
posted @ 2019-12-24 16:32 朱子威 阅读(604) 评论(0) 推荐(0)
摘要:转载: https://blog.csdn.net/javazejian/article/details/73413292 阅读全文
posted @ 2019-12-19 18:41 朱子威 阅读(244) 评论(0) 推荐(0)
摘要:https://mp.weixin.qq.com/s?__biz=MzAxMzM0NDA0Nw==&mid=2451677316&idx=1&sn=2d5150fb36b7d2e93902f281e2e0e9f8&chksm=8c710cc4bb0685d2c988b663d3bbf0e69cadc 阅读全文
posted @ 2019-12-19 18:03 朱子威 阅读(162) 评论(0) 推荐(0)
摘要:一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱; 3. 发送消息,也应该只 阅读全文
posted @ 2019-12-19 18:01 朱子威 阅读(551) 评论(0) 推荐(0)
摘要:https://my.oschina.net/mengyuankan/blog/2966516 https://my.oschina.net/mengyuankan/blog/2985827 阅读全文
posted @ 2019-12-18 16:13 朱子威 阅读(113) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/luluyo/article/details/92403240 https://blog.csdn.net/luluyo/article/details/95517610 https://blog.csdn.net/anhenzhufeng/article 阅读全文
posted @ 2019-12-15 19:58 朱子威 阅读(135) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-12-13 14:04 朱子威 阅读(233) 评论(0) 推荐(0)