- 博客(12)
- 收藏
- 关注
原创 TCP三次握手详解
假如客户端发送了SYN(seq=90)报文,然后宕机了,而且这个报文还被网络阻塞了,服务端没有收到,接着客户端重启后,又重新向服务端建立连接,又重新发送了SYN(seq = 100)报文,此时旧的SYN报文就比最新的SYN报文先到达,服务端就会回一个SYN-ACK报文,而此报文确认号是90+1,客户端收到后发现不是100+1,就会回RST报文,服务端收到RST报文后就释放连接,后续新的报文又发送到后,就可以正常的三次握手了。你:妈,听得到,你听得到我说话吗?你妈:听得到,饭煮好了快来吃饭(三次握手)
2025-03-23 13:52:53
480
原创 OSI七层模型和TCP/IP模型
4.网络接口层:在计算机和网络硬件间传输数据,负责在物理网络上发送和接收数据帧。3.会话层:负责建立,管理和终止表示层实体之间的通信会话。6.数据链路层:负责数据的封帧和差错检测,以及MAC寻址。2.表示层:负责把数据转换成兼容另一个系统能识别的格式。2.传输层:处理主机到主机的通信(TCP,UDP)1.应用层:支持HTTP,SMTP等最终用户进程。1.应用层:负责给应用程序提供统一的接口。5.网络层:负责将数据的路由,转发,分片。4.传输层:负责端到端之间的数据传输。实际上常见的也比较实用的是。
2025-03-23 11:55:45
114
原创 HTTP和HTTPS详解
客户端会生成随机密钥,使用服务端的公钥加密后传给服务端,在非对称加密算法中,公钥加密的消息仅能通过私钥解密,服务端用私钥解密后,双方就得到了相同的密钥,最后再用它加密消息。由于HTTP是基于TCP传输协议实现的,因此客户端与服务端在进行通信前,需要先建立TCP连接,然后客户端发起HTTP请求,服务端收到后就返回响应,这样请求-应答的模式就完成了,随后释放TCP连接。如果我们每次请求都要经历这样的过程,每次请求前都要建立TCP的连接(三次握手),请求后释放连接(四次挥手),这样的过程就是。
2025-03-18 23:45:58
797
1
原创 volatile有什么用
我们熟知的单例模式中的双重检查锁就是为了避免指令重排的问题,在初始化单例对象时,由于编译器或cpu的指令重排,可能会导致另一个线程读取到未初始化完成的对象,这种情况就可以使用volatile关键字来避免。当一个变量被声明为volatile,它会保证对这个变量的写操作立即刷新到主存当中,而对这个变量的读操作会直接从主存中读取,从而确保了多线程环境下对该变量访问的可见性。如果指令重排的话,顺序可能就变为132,接着当正在执行2的时候,另一个线程来读取这个对象,读取到的就是一个未初始化完成的对象。
2025-03-17 17:32:25
266
原创 Integer的缓存池
Java中Integer的缓存池是为了提升性能和节省内存,因为根据实践发现其实大部分的数据操作都在比较小的范围内,因此缓存这些对象可以减少内存分配和垃圾回收的负担,提升性能。Java中换缓存这些值的范围为:-128~127所以对于值在-128~127范围内的int类型,在自动装箱时会直接返回已经缓存的Integer对象,而不是新创建一个Integer对象。
2025-03-17 15:29:23
197
原创 自动装箱和拆箱
在java中我们知道基本数据类型都有对应的包装类,如int的包装类Integer而就是指Java编译器自动将基本数据类型转换它们对应的包装类型,如int转为Integer则是反过来,Java编译器自动将包装类型转换为它们对应的基本数据类型,如Integer转为int。
2025-03-17 14:59:11
298
原创 java基础之序列化和反序列化
这个可以理解为版本号,jvm会把传进来的字节流中的serialVersionUID与本地实体类的serialVersionUID进行对比,如果相同就认为是一致的,就可以进行反序列化,否则就会报序列化版本不一样的异常。如果我们在实现Sericalizable接口的时候没有给定UID,jvm每次编译的时候就会默认生成一个UID,这样的话当反序列化之前程序修改了一些代码,比如增加了一些字段,再次编译时就会再生成另外不同的UID,当反序列话进行比对的时候自然就对不上了,便会报异常。一般情况下我们都写为。
2024-10-08 22:57:04
498
原创 前端传了不同类型的对象数组,后端如何解析到对应实体类上?
从List集合中取第一个为PlantingPlan对象,第二个为Crop对象,由于集合中的类型是JSONObject,需要再转为java对象,并映射到对应的实体类上。首先先利用fastjson库中parseObject方法,将前端传的Json字符串转为json对象。解析 JSON 数组,转为List集合,先映射为JSONObject对象。PlantingPlan类 种植计划。再获取字段为data的数组。这样就完成了,打印看看结果。
2024-09-29 12:35:25
418
原创 spring中,为什么前端明明传了值,后端却接收不到
https://blog.youkuaiyun.com/qq_39327650/article/details/134419523
2024-09-09 13:37:49
143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人