Java基础
烟酒店老板
这个作者很懒,什么都没留下…
展开
-
小谈HashMap与ConcurrentHashMap
HashMapJDK7:在JDK7中,HashMap通过数组加链表的形式存储,当元素个数达到阈值,并且数组下标已经存在元素,则会进行扩容,如果数组下标不存在元素,则直接添加,不会扩容。JDK7中添加元素使用的是头插法,在高并发的环境下可能会导致死链。新增对象丢失原因:并发赋值时被覆盖。扩容中的数据迁移,新增的数据落在了原来的HashMap中,并且所在的哈希槽已经被遍历过。多个线程同时执行resize方法,每个线程都会创建Entry,最后的赋值中会覆盖其他线程的数据。迁移丢失。在并发迁移过原创 2020-10-24 14:56:32 · 159 阅读 · 0 评论 -
BIO/NIO/AIO
IO模型BIO BIO全称为 Blocking I/O,是一种同步阻塞IO。最开始的网络通信就是BIO模型,服务端创建一个ServerSocket,客户端创建一个 Socket 去连接服务端,这样客户端与服务端便可以进行通信了。产生的问题: 这个过程是阻塞的,因为服务端需要一直等待客户端的连接请求,当客户端连接之后,服务器在处理客户端请求时,客户端只能进行等待,如果客户端暂时没有请...原创 2020-03-30 19:49:50 · 410 阅读 · 1 评论 -
String、StringBuffer和StringBuilder的区别
StringString是字符串常量,使用final修饰的字符数组来保存字符串(private final char value[]),创建后便不可以在修改。虽然平时使用"+"算符看似可以拼接两个字符串从而实现对字符串的修改,可实际上并不是这样的。String str = "123";System.out.println(str.hashCode());str = "123" + "456...原创 2020-03-09 17:30:04 · 170 阅读 · 0 评论