- 博客(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关注的人