240 发简信
IP属地:广东
  • 这个三级缓存还是有用的,它把 createBean 方法包装到 ObjectFactory 里面,虽然不知道后面在什么地方会放到 singletonFactories 里面,但这个 ObjectFactory 我觉得像是一个临时的三级缓存,单例bean是通过它获取的

    Spring源码的生命周期、循环依赖你懂了多少?面试问起来怎么办?

    前言 Spring中的循环依赖一直是Spring中一个很重要的话题,一方面是因为源码中为了解决循环依赖做了很多处理,另外一方面是因为面试的时候,如果问到Spring中比较高阶...

  • 除非用Direct IO,对于磁盘IO的优化主要在读取操作上——在不使用direct IO 的情况下,对磁盘IO的优化就变成了优化磁盘读。

    聊聊BIO,NIO和AIO (2)

    本文从操作系统的角度来解释BIO,NIO,AIO的概念,含义和背后的那些事。本文主要分为3篇。 第一篇 讲解BIO和NIO以及IO多路复用 第二篇 讲解磁盘IO和AIO 第三...

  • 相比“Buffered IO”,Direct IO必然会带来性能上的降低——我的理解是,每次读都是“新的读”,没有缓存了,而块设备的速度没有page cache(内存)快

    聊聊BIO,NIO和AIO (2)

    本文从操作系统的角度来解释BIO,NIO,AIO的概念,含义和背后的那些事。本文主要分为3篇。 第一篇 讲解BIO和NIO以及IO多路复用 第二篇 讲解磁盘IO和AIO 第三...

  • 知乎上15年的回答也是“大宽宽”这个ID哦~

    既然Java反射可以访问和修改私有成员变量,那封装成private还有意义么?

    简单来说,private并不是解决“安全”问题的。 安全是指不让代码被非法看到/访问。但是只要人能拿到代码,总会有办法去查看和改变代码。其他答案提到反射可以用Security...

  • 按周的意思,只有“不可变类”能满足“绝对线程安全”。但是他把“不可变”作为第一个分类,就不好和第二个分类的“绝对线程安全”联系起来了,而且举例只举了“不是绝对线程安全的类”,他要是举例哪一个是“绝对线程安全的类”,估计也只有这些“不可变类”了?

    关于绝对线程安全和相对线程安全的思考

    Brian Goetz的《Java并发编程实战》有对线程安全的定义: 周志明在《深入理解JVM》中认为上述线程安全的定义是一个非常严谨的绝对线程安全的定义,并认为上述定义在大...

  • @萧萧_03c6 对的。应该左移rs。之前评论被吞了...

    并发编程——ConcurrentHashMap#addCount() 分析

    前言 ConcurrentHashMap 精华代码很多,前面分析了 helpTransfer 和 transfer 和 putVal 方法,今天来分析一下 addCount ...

  • @萧萧_03c6 resizeStamp(n)本来就只有16位,实测入参n为int类型 方法返回值在 32xxx 附近,对sc和rs 哪个进行位移都可以把...

    不过恐怕实习生是准备接锅了?

    并发编程——ConcurrentHashMap#addCount() 分析

    前言 ConcurrentHashMap 精华代码很多,前面分析了 helpTransfer 和 transfer 和 putVal 方法,今天来分析一下 addCount ...

  • @萧萧_03c6 很希望看到doug lea回应啊,难不成高手也会写小bug?

    并发编程——ConcurrentHashMap#addCount() 分析

    前言 ConcurrentHashMap 精华代码很多,前面分析了 helpTransfer 和 transfer 和 putVal 方法,今天来分析一下 addCount ...

  • @萧萧_03c6 原来StackOverflow发帖的是你啊... 应该把 sc 都改为 (sc >>> RESIZE_STAMP_SHIFT) 就行。

    并发编程——ConcurrentHashMap#addCount() 分析

    前言 ConcurrentHashMap 精华代码很多,前面分析了 helpTransfer 和 transfer 和 putVal 方法,今天来分析一下 addCount ...

  • 在 putVal 的 else 中判断 if (fh >= 0) 后进入链表操作,因为树节点的hash = -2,查看TreeBin构造函数,第一行就是 super(TREEBIN, null, null, null); TREEBIN 常量为-2,在代码中紧跟着 MOVED常量定义

    深入浅出ConcurrentHashMap1.8

    简书 占小狼转载请注明原创出处,谢谢! 关于文章中的疑问:为什么要构造一个反序链表,放在nextTable的i+n的位置上呢,在《深入分析ConcurrentHashMap1...

  • 原文“在节点f上进行同步,节点插入之前,再次利用tabAt(tab, i) == f判断,防止被其它线程修改。”

    我的一点思考:什么情况下被修改?刚好被其他线程把该桶节点转为红黑树。此时树的根可能不是刚才的桶节点

    深入浅出ConcurrentHashMap1.8

    简书 占小狼转载请注明原创出处,谢谢! 关于文章中的疑问:为什么要构造一个反序链表,放在nextTable的i+n的位置上呢,在《深入分析ConcurrentHashMap1...