在使用网络编程的时候,前提要明白TCP/UDP协议相关内容
TCP协议:计算机网络中传输层的一个面向连接、保证数据可靠性、有序性的一个协议,因为它的可靠性特点(传输过程中保证不丢包),应用层的如FTP、HTTP等协议的下一层都使用的是TCP进行传输。
UDP协议:同样是传输层的一个无连接,不保证可靠性的一个协议,它的特点是在传输过程中无需三次握手,所以,相比TCP协议的话,它的效率更高,在某些应用程序在允许丢包的情况下,都是用的是UDP协议,如视频,音频等应用程序,丢失少量的包并不影响效果。
TCP协议的几个关键点:
- 1.TCP建立连接和释放连接的过程 ,建立连接三次和释放连接四次的原因
- 2.可靠传输的工作原理(数据的有序性)
- 3.流量控制。
- 4.拥塞控制
注意:
- 在网络中,要考虑到丢包的问题。
- 在成功建立连接之后,就没有服务端和客户端之分,两者都可以进行传输和接收数据
- TCP连接是”全双工传输“,即:客户端和服务端可以同时进行接收和发送数据。
- 长连接和短连接的区别就是,长连接在三次握手连接之后,没有释放掉连接,下次传输可以直接传输;而短连接是在三次握手之后,数据传输完成,就关闭连接,典型的HTTP协议采用的就是短连接。
- 建立的每一个连接(linux中称为文件句柄),都会占用一个线程,消耗一些内存资源,所以在使用完毕之后,如果没用,就要及时关闭连接
- 传输的过程都是以字节(byte)流进行传输的。
---------------------------------------------------Netty总结---------------------------------------------------
关键点:NIO 、 BIO 、AIO、buffer(缓冲区) 、 channel(通道)、inhandler/outhandler(处理器)、channlepipline、 编解码、 线程模型、非阻塞、事件驱动模型、
BIO、NIO、AIO参考这里 http://ihenu.iteye.com/blog/2247618
0.NIO核心
channel、Selector、Buffer
1.网络编程中同步和异步的概念
同步:在进行发送或者接受数据的时候,一直等到数据发送或者接受完成的过程
异步:把数据发送到缓冲区立即返回,而发送或者接受成功的消息是通过事件来通知的(事件驱动程序),事件驱动程序利用到了回调的机制
2.一个channel在一个生命周期之内,始终是由一个线程来负责的,所以不会涉及到同步的问题
3.Buffer
比JDK原生的ByteBuffer功能更强大,拥有读写索引,可以随机读写。动态扩容
1.heapBuffer:存储在堆区,实质是数组,如果访问非堆区的数组会报错。
2.directBuffer:性能更好,但是内存分配和释放比heap的复杂,所以使用了内存池来解决这个问题??不支持直接数组访问,可以间接的访问数组
3.compositeBuffer:像一个列表,可以动态的添加和删除其中的ByteBuffer,操作过程中不回导致内存泄露。作用是什么??
复合buffer、heapBuffer、directBuffer、
相关推荐
线程本地使用,JUC线程池和Spring提供的线程池,jdk 1.8中的日期时间API,数据结构中图的实现及操作和广度优先遍历/深度优先遍历(其他待完善),生成XML文件工具类,防止XSS攻击解决方案,mybatis逆向工程,接口...
a面试大全2021是一套最新Java面试必问合集,这本面试手册包含了Java基础、Java集合、JVM、Spring、Spring Boot、Spring Cloud、Mysql、Redis、RabbitMQ、Dubbo、Netty、分布式及架构设计等方面的技术点。...未完待续
内容概要:本文详细介绍了基于STM32单片机的激光雕刻机控制系统的设计。系统包括硬件设计、软件设计和机械结构设计,主要功能有可调节激光功率大小、改变雕刻速率、手动定位、精确雕刻及切割。硬件部分包括STM32最小系统、步进电机驱动模块、激光发生器控制电路、人机交互电路和串口通信电路。软件部分涉及STM32CubeMX配置、G代码解析、步进电机控制、激光功率调节和手动定位功能的实现。 适合人群:对嵌入式系统和激光雕刻机感兴趣的工程师和技术人员。 使用场景及目标:① 适用于需要高精度激光雕刻的应用场合;② 为开发类似的激光雕刻控制系统提供设计参考。 阅读建议:本文提供了详细的硬件和软件设计方案,读者应结合实际应用场景进行理解,重点关注电路设计和代码实现。
白色简洁风格的前端网站模板下载.zip
HarmonyException如何解决.md
sdfsdfdsfsdfs222
html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+js学习代码 html+css+js学习代码html+css+js学习代码html+css+j
usbgps2.apk
白色简洁风格的家居建材网站模板下载.zip
EventEmitError解决办法.md
白色简洁风格的工艺品展览企业网站源码下载.zip
matlab调制解调 OFDM OTFS 16qam qpsk ldpc turbo在高斯白噪声,频率选择性衰落信道下的误比特率性能仿真,matlab代码 OFDM simulink 包括添加保护间隔(cp),信道均衡(ZF MMSE MRC MA LMSEE) 代码每行都有注释,适用于学习,附带仿真说明,完全不用担心看不懂
build(1).gradle
贴标飞达sw16全套技术资料100%好用.zip
其实这就是历年摘出来的
内容概要:本文针对大规模高分辨率遥感图像的处理问题,提出了一种基于图像分块的可扩展区域合并分割框架。传统的图像分块方法会导致分块边界上的伪影,影响最终结果。为解决这一问题,文中定义了稳定性边缘的概念,并给出了其数学表达,以确保分割结果与不分块时相同。此外,文章还介绍了一种高效的框架实现方法,用于在资源受限的设备上处理大型图像。 适合人群:从事遥感图像处理、计算机视觉及地理信息系统相关领域的研究人员和技术人员。 使用场景及目标:适用于需要处理大规模高分辨率遥感图像的应用场景,如环境监测、自然资源管理等。主要目标是提供一种能够高效处理大规模图像同时保持分割质量的方法。 其他说明:实验结果表明,所提出的算法不仅能够避免分块边界的伪影,而且能够在不同尺度下获得与不分块处理相同的分割结果。
白色简洁风格的手机图片展示博客网站模板.rar
白色简洁风格的外科医疗整站网站源码下载.zip