自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 TCP 四次挥手的过程

TIME-WAIT状态指的是第四次挥手后,主动中断连接方所处的状态,这个状态下,主动方尚未完全关闭TCP连接,端口不可复用。

2024-06-18 22:41:30 280

原创 TCP 三次握手详解

假设TCP建立连接是两次握手,当第一次发起的请求响应时,第二次发起的请求也收到了响应,就会建立两次连接,实际上第一次的连接是非预期需要的。第一次发起请求连接时,可能因为网络不佳,超时等导致主动方认为第一次握手报文丢失。第二次:SYN=1、ACK=1,确认对方数据并告诉对方自己的数据序列号。第一次:SYN=1 请求同步并告诉对方自己的数据序列号。通过第三次发送握手确认,正式建立连接,避免多次建立连接。第三次:ACK=1 确认了对方的数据并开始传输数据。所以 TCP 3次握手是非常重要的缺一不可。

2024-06-18 22:39:59 446

原创 高并发容器

在Java 8之前,ConcurrentHashMap使用分段锁(Segment Locking)来实现并发控制,每个Segment包含一个小的哈希表,多个Segment共同组成完整的ConcurrentHashMap。CopyOnWrite容器的主要特点是:在读操作时,不加锁,而在写操作时,通过复制底层数组或数据结构来避免并发修改的问题。在这个过程中,虽然线程A和线程B都进行了写操作,但它们的操作是隔离的,因为它们各自操作的是不同的数组副本。最后,最后一个完成写操作的线程的修改结果会成为容器的最终状态。

2024-06-17 17:59:35 492

原创 Java中保证线程安全的方法总结

使用synchronized关键字创建一个同步代码块,确保一次只有一个线程可以执行该代码块。这可以通过锁定一个对象来实现,任何想要进入该代码块的线程都必须先获取这个对象的锁。

2024-06-17 17:57:40 560

原创 Java集合数据结构

在 JDK1.8 中,HashSet的add()方法只是简单的调用了HashMap的put()方法,并且判断了一下返回值以确保是否有重复元素。也就是说,在 JDK1.8 中,实际上无论HashSet中是否已经存在了某元素,HashSet都会直接插入,只是会在add()方法的返回值处告诉我们插入前是否存在相同元素。因此,当使用迭代器迭代元素时,元素的顺序与它们最初插入的顺序相同。将发生冲突的槽位的key通过链表连接,当冲突非常多的时候会有两种解决方案。TreeMap底层使用红黑树的结构,保证了有序。

2024-06-16 17:41:47 423

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除