![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
复习
文章平均质量分 52
复习
不想当程序汪的第N天
我没秃,我还不够强
展开
-
HashMap 负载因子为什么默认为 0.75
HashMap 负载因子为什么默认为 0.75负载因子是和扩容机制有关的,意思是如果当前容器的容量,达到了我们设定的最大值,就要开始执行扩容操作。举个例子来解释,避免小白听不懂:比如说当前的容器容量是16,负载因子是0.75,16*0.75=12,也就是说,当容量达到了12的时候就会进行扩容操作。他的作用很简单,相当于是一个扩容机制的阈值。当超过了这个阈值,就会触发扩容机制。HashMap源码已经为我们默认指定了负载因子是0.75。我截取了部分源码,从这里可以看出,系统默认的负载因子值就是0.75,原创 2021-03-30 09:37:34 · 1944 阅读 · 3 评论 -
布隆过滤器
布隆过滤器布隆过滤器(Bloom Filter)是一个由二进制向量(位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比于我们平时常用的的 List、Map 、Set 等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆过滤器的数据不容易删除。原理当一个元素加入布隆过滤器中的时候,会进行如下操作:使用布隆过滤器中的哈希函数对元素值进行计算,得到哈希值(有几个哈希函数得到几个原创 2021-03-04 14:03:57 · 124 阅读 · 1 评论 -
JVM 垃圾收集器
JVM 垃圾收集器Serial 收集器ParNew 收集器Parallel Scavenge 收集器CMS 收集器G1 收集器Serial 收集器Serial 收集器称为串行收集器,是历史最久远的垃圾收集器,它是一个单线程收集器,并不是只使用一个线程进行垃圾收集,最主要的是它在进行垃圾收集时必须暂停其他所有工作线程直到收集结束。新生代采用标记-复制算法,老年代采用标记-整理算法。ParNew 收集器ParNew 收集器其实就是多线程版的 Serial 收集器,使用多线程进行垃圾收原创 2021-02-27 20:04:48 · 103 阅读 · 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 · 216 阅读 · 0 评论 -
谈谈 synchronized
1. synchronizedsynchronized 关键字解决的是多个线程之间访问资源的同步性,synchronized 关键字能够保证被它修饰的房吗或者代码块在任意时刻只能有一个线程执行,synchronized 是可重入锁。“可重入锁” 指的是自己可以再次获取自己的内部锁。比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。同一个线程每次获取锁,锁的计数器都自增 1,所以要等到锁的计数器下降为 0 时才能原创 2021-02-22 20:32:18 · 125 阅读 · 0 评论 -
hashCode() 与 equals()
hashCode()hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个 int 整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()定义在 JDK 的 Object 类中,Java 中的任何类都包含有 hashCode() 函数。Object 的 hashcode 方法是本地方法,是用 c 语言或 c++ 实现的,该方法通常用来将对象的内存地址转换为整数之后返回。public native int hashCode();散列表存储的是键值对(ke原创 2021-01-26 23:27:20 · 66 阅读 · 0 评论 -
面向对象设计原则
面向对象设计原则口诀:开口合里最单依。开: 开闭原则 —— 面向扩展开放,面向修改关闭。口: 接口隔离原则 —— 一个类对另一个类的依赖是建立在最小的接口上。合: 组合、聚合原则 —— 在一个新的对象里面使用一些已有的对象,使之城卫新对象的一部分,新对象通过这些向对象的委派达到复用已有功能的目的。里: 里氏替换原则(迪米特法则) —— 所有引用基类的地方必须透明的使用其子类的对象。最: 最少知识原则 —— 一个对象应当对其他对象有尽可能少的了解。两个类不必彼此直接通信,那么两类之间就不应该发生原创 2021-01-13 09:05:50 · 188 阅读 · 0 评论