首页 > 编程语言 >网络编程

网络编程

时间:2024-05-10 14:13:36浏览次数:28  
标签:编程 网络 Selector 阻塞 线程 IO 连接 Channel

1. IO模型

2. 网络编程

IO调用分2个阶段:数据准备、数据copy.

  • BIO:同步阻塞,一个连接一个线程,第一阶段等待,直到有数据了,该线程copy并返回,等到的过程一直浪费资源,优化:用连接池多线程,不用新建、销毁线程,直接拿池子里现成的。
  • NIO: 同步非阻塞,多个连接注册到多路复用器Selector上通过一个线程管理,Selector轮询还有没有别的请求,有的创建新的线程处理
  • AIO: 异步非阻塞,read调用直接返回,通知回调

·NIO:将多个Channel事件注册到Selector中,通过Selector去监听Channel中的事件状态,就不需要阻塞等待客户端的连接,从主动等待客户端的连接,变成了通过事件驱动。
缓冲区Buffer:存储数据 read/write 数据类型ByteBuffer
通道Channel:传输数据
选择器Selector:多路复用 网络IO需要 文件IO不需要

·Netty应用场景
1.即时通讯系统
2.RPC框架的网络通信工具
3.http服务器

内存零拷贝
TCP长连接、心跳
TCP粘包/拆包

标签:编程,网络,Selector,阻塞,线程,IO,连接,Channel
From: https://www.cnblogs.com/xiao-hua-sheng/p/18184182

相关文章

  • 一种基于光电容积波的血压测量神经网络算法,开源、低功耗、低成本的人工智能软硬件提
    具体的软硬件实现点击http://mcu-ai.com/MCU-AI技术网页_MCU-AI人工智能心血管疾病是最严重的死亡原因之一,每年在全世界造成严重的生命损失。持续监测血压似乎是最可行的选择,但这需要一个侵入性的过程,带来了几层复杂性。这促使我们开发一种方法,通过使用光体积描记图(PPG)信号的非......
  • 软件测评笔记01--网络相关
     IP地址与子网划分主动关闭的Socket端会进入TIME_WAIT状态,一般维持在1-4分钟ESTABLISHED:表示连接已经建立DMZ俗称:隔离区,非军事化区,非安全系统与安全系统之间的缓冲区可以放置一些必须公开的服务器设置,如web服务器、FTP服务器、论坛拒绝服务的实现方式不断发送请求,迫......
  • 网络策略_NetworkPolicy
    网络策略NetworkPolicy前端通过访问后端的API接口来获取数据库中的数据前端、API接口、数据库在k8s中都为podk8s要求所有pod可以互相访问,但生产中,不能让前端直接访问后端数据库目标是保护数据库,使其不允许从除了API以外的任何pod访问apiVersion:networking.k8s.io/v1kind:......
  • Docker07-docker网络
    docker网络模式1、bridge模式,--net=bridge(默认,可省略)2、host模式,--net=host3、container模式使用--net=container:指定容器名4、none模式,--net=none5、overlayoverlayDocker原生的跨主机多子网模型底层需要etcd这样的KV存储系统进行消息同步,核心是通过linux网桥与vxla......
  • 面向对象编程(basic)
    面向对象内容的三条主线:Java类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类面向对象的特征:封装、继承、多态、(抽象)其他关键字的使用:this、super、package、import、static、final、interface、abstract等1.面向对象VS面向过程面向过程思想线性思维步......
  • Python进阶之面向对象编程
    【一】人狗大战小游戏【1】游戏前提分析人可以打狗,狗掉血,狗可以咬人,人掉血人的属性有名字、年龄、伤害、血量、类型狗的属性有名字、年龄、伤害、血量、类型【2】游戏实现(1)定义人和狗的属性#【1】用字典定义,代码较冗余dog1={'name':'狗蛋','d_type':'中......
  • 实验六 通用接口数据库编程
    1关:JDBC查询数据packagestep1;importjava.sql.*;publicclassQuery{ publicstaticvoidqueryDB(){ //声明变量 Connectionconn=null; Statementstat=null; ResultSetrs=null;//"root"和"123123"是针对MySQL设置了用户名(roo......
  • 内网渗透测试是一种测试组织内部网络安全的方法,旨在发现和利用网络中的漏洞以及获取未
    内网渗透测试是一种测试组织内部网络安全的方法,旨在发现和利用网络中的漏洞以及获取未授权访问内部资源的能力。以下是内网渗透测试基础的一些主题:理解内网环境:理解目标组织的网络拓扑、子网划分、主机和服务。收集有关内部网络设备、操作系统、应用程序和安全配置的信......
  • BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究
    BOSHIDAAC/DC电源模块在通信与网络设备中的应用研究随着通信与网络技术的不断发展,通信与网络设备的使用不断增加。电源作为通信与网络设备的重要组成部分之一,在其稳定工作中起到至关重要的作用。AC/DC电源模块作为一种常用的电源转换器,广泛应用于通信与网络设备中。 一,AC/DC......
  • socket UDP 网络编程 笔记
    1.介绍服务器和客户端1和客户端2通信。2.server.c/**socket*bind*send/recv*/#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<string.h>#include<netinet/in.h>#include<arpa/inet.h>#include&......