JavaGuide
文章平均质量分 59
转载GitHub平台JavaGuide项目文章内容
不想当程序汪的第N天
我没秃,我还不够强
展开
-
布隆过滤器
布隆过滤器布隆过滤器(Bloom Filter)是一个由二进制向量(位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。原理当一个元素加入布隆过滤器中的时候,会进行如下操作:使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值(有几个哈希函数得到几个原创 2021-03-04 14:03:57 · 149 阅读 · 1 评论 -
JVM 垃圾收集器
JVM 垃圾收集器Serial 收集器ParNew 收集器Parallel Scavenge 收集器CMS 收集器G1 收集器Serial 收集器Serial 收集器称为串行收集器,是历史最久远的垃圾收集器,它是一个单线程收集器,并不是只使用一个线程进行垃圾收集,最主要的是它在进行垃圾收集时必须暂停其他所有工作线程直到收集结束。新生代采用标记-复制算法,老年代采用标记-整理算法。ParNew 收集器ParNew 收集器其实就是多线程版的 Serial 收集器,使用多线程进行垃圾收原创 2021-02-27 20:04:48 · 112 阅读 · 0 评论 -
谈谈 ThreadLocal
ThreadLocalThreadLocal 类主要是解决在多线程情况下让每个线程都拥有属于自己的本地变量,线程之间互不影响,各自拥有各自的 ThreadLocal,从而避免了线程安全的问题。/* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */ThreadLocal.ThreadLocalMap threadLocals = null;/* *原创 2021-02-23 10:13:04 · 226 阅读 · 0 评论 -
谈谈 synchronized
1. synchronizedsynchronized 关键字解决的是多个线程之间访问资源的同步性,synchronized 关键字能够保证被它修饰的房吗或者代码块在任意时刻只能有一个线程执行,synchronized 是可重入锁。“可重入锁” 指的是自己可以再次获取自己的内部锁。比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。同一个线程每次获取锁,锁的计数器都自增 1,所以要等到锁的计数器下降为 0 时才能原创 2021-02-22 20:32:18 · 128 阅读 · 0 评论 -
ConCurrentHashMap--分段锁机制
HashMapHashMap 是线程不安全的,在多线程的环境下进行 put 操作可能会导致死循环。HashTableHashTable 是线程安全的,原因是其源代码中,大部分方法都采用了 synchronized 关键字修饰,但是在多线程情况下,多个线程抢占一把锁,会导致效率低下。 HashTable 现在已经淘汰,基本不使用。ConcurrentHashMapConcurrentHashMap 是 Java 并发编程包(JUC)中提供的,JDK1.7 的 ConcurrentHashMap 底层原创 2020-12-31 10:51:51 · 972 阅读 · 0 评论