当前位置: 首页 > news >正文

TCP/IP ⽹络模型

TCP/IP ⽹络模型

对于同⼀台设备上的进程间通信,有很多种⽅式,⽐如有管道、消息队列、共享内存、信号等⽅式,⽽对于不同设备上的进程间通信,就需要⽹络通信,⽽设备是多样性的,所以要兼容多种多样的设备,就协商出了⼀套通⽤的⽹络协议。

应⽤层

在OSI模型或TCP/IP模型中,应用层位于层次结构的最上层,直接服务于最终用户的应用程序。这一层的重点是如何提供网络服务或数据给用户应用,而不涉及数据传输的底层细节。

应用层协议定义了运行在不同终端设备上的应用程序如何进行通信。这些协议包括但不限于HTTP(超文本传输协议),用于网页浏览;FTP(文件传输协议),用于文件下载和上传;SMTP(简单邮件传输协议),用于电子邮件发送;DNS(域名系统),用于解析域名到IP地址;Telnet,用于远程登录。

当应用层的一个程序需要与另一个程序通信时,它会将应用数据发送给传输层。传输层的主要职责是提供端到端的数据传输服务,确保数据能够从源头安全、准确地传送到目的地。传输层使用的协议包括TCP(传输控制协议)和UDP(用户数据报协议)。

值得注意的是,应用层工作在操作系统的用户态,而传输层及其以下的层次(如网络层、数据链路层、物理层)则工作在内核态。用户态和内核态是操作系统的两种不同的权限模式。用户态允许用户应用程序运行,而内核态则有更高的权限,能够直接访问硬件和执行关键的系统任务。

这种分层的设计使得应用程序开发者可以专注于应用逻辑和用户体验,而无需关心数据如何在网络中传输的复杂细节。这也使网络通信更加模块化,有助于不同层次的技术和协议的独立发展和改进。

传输层

应⽤层的数据包会传给传输层,传输层(Transport Layer)是为应⽤层提供⽹络⽀持的。

image-20240319092525062

在传输层会有两个传输协议,分别是 TCP 和 UDP。

TCP (Transmission Control Protocol)

TCP 是一种面向连接的、可靠的传输层通信协议,设计目的是确保数据包能够可靠地、按顺序地从源传输到目的地。TCP 实现了几个关键特性以保证这种可靠性:

  • 流量控制:通过控制数据传输的速率,防止网络中的任一部分被过量的数据流淹没。
  • 超时重传:如果一个数据包在设定的时间内未被确认收到,则会重新发送该数据包。
  • 拥塞控制:在网络拥堵时减少数据的发送速率。
  • 有序数据传输:确保数据包按照发送顺序到达接收方。
  • 错误检测:通过校验和等方法检测数据在传输过程中的任何错误。

TCP 适用于那些需要高可靠性的应用,如网页浏览、文件传输、电子邮件等。

UDP (User Datagram Protocol)

UDP 是一种无连接的协议,相对于 TCP 来说,它简单得多,提供的是一种不可靠的服务。UDP 只是将应用层数据打包并发送,不保证数据包的可靠到达,也不进行错误检测、流量控制或拥塞控制。UDP 的这种设计使其在实时性要求较高的场景中(如视频会议、实时游戏)更为适用,因为即使丢失一些数据包,也不会像 TCP 那样等待重传,从而避免了延迟。

虽然 UDP 本身不提供可靠性保证,应用层可以在需要的情况下实现类似于 TCP 的可靠传输机制,如通过数据包重传、数据完整性校验等方式来确保数据的可靠到达。但是,实现一个商业级的可靠 UDP 传输协议是复杂的,需要在保持 UDP 高效率和低延迟的特点的同时,增加额外的可靠性机制。

数据分块和TCP段

对于大数据传输,TCP 采用分段的方法来优化传输过程。这意味着大块数据会被切分成更小的段,每个段都有自己的序号和校验和。这样,如果某个段在传输过程中丢失或损坏,只需重新传输那个特定的段,而不是整个数据包。MSS(最大报文段长度)是一个重要的参数,它定义了TCP段的最大数据量,帮助优化网络传输,避免因数据包过大而导致的网络拥堵。

总的来说,TCP和UDP各自服务于不同类型的网络应用需求,前者侧重于可靠性和顺序性,后者则侧重于低延迟和高效率。

image-20240319093310634

端口号的作用

  • 区分服务:在一个网络通信过程中,IP地址用来识别目标设备,而端口号则用来指定该设备上的特定应用。这样,即使多个应用同时使用同一网络协议(例如TCP或UDP)进行通信,它们也可以通过各自的端口号被正确区分和识别。
  • 实现多任务:同一台计算机上可以同时运行多个网络服务(如Web服务、邮件服务等),通过使用不同的端口号,这些服务可以同时监听网络请求,无需相互干扰。

常见端口号

  • 80端口:通常被HTTP服务使用,用于Web服务器。
  • 22端口:常用于SSH服务,用于安全的远程登录和其他安全网络服务。
  • 443端口:用于HTTPS服务,即加密的HTTP通信,提供安全的Web浏览。
  • 21端口:FTP服务使用,用于文件传输。

对于客户端应用程序(如Web浏览器中的标签),操作系统会分配临时端口号(也称为动态端口号)。这些端口号通常从一个特定的范围内选择,不用于标准网络服务。动态端口的使用允许多个网络应用并发运行,而不冲突。

当数据包在网络中传输时,它们的头部信息包括源端口号和目标端口号。这样,当数据包到达目标设备时,传输层可以通过目标端口号确定哪个具体的应用程序应该接收这些数据。同样地,源端口号告诉接收方如何回应消息,确保响应能返回给正确的应用程序。

端口号的这种设计极大地增强了网络通信的灵活性和效率,使得复杂的网络应用和服务得以在同一台设备上协同工作。

传输层的职责

传输层主要负责应用程序之间的数据传输服务,确保数据可以在应用程序之间准确无误地传递。它不直接处理数据的路由选择或跨网络的传输。传输层的职责包括:

  • 确保数据完整性:通过校验和等方法检测传输过程中的错误。
  • 保持数据顺序:确保数据包的顺序与发送时一致。
  • 流量控制和拥塞避免:防止网络过载。
  • 多路复用和分解:允许多个应用程序通过不同的端口同时使用网络。

⽹络层

网络层的职责

网络层负责数据包在网络中的传输和路由选择。这一层涉及到数据包在整个网络中从源头到目的地的传递,包括跨越不同的网络和中间设备(如路由器)。网络层的核心协议是IP(Internet Protocol),它定义了数据包的路由方式和地址格式。网络层的主要职责是:

  • 路由:决定数据包从源到目的地的路径。
  • 分片和重组:根据网络的MTU(最大传输单元),可能需要将大的数据包分成较小的片段进行传输,目的地再将这些片段重组。
  • 寻址:使用IP地址标识发送者和接收者。

传输层可能⼤家刚接触的时候,会认为它负责将数据从⼀个设备传输到另⼀个设备,事实上它并不负责。
实际场景中的⽹络环节是错综复杂的,中间有各种各样的线路和分叉路⼝,如果⼀个设备的数据要传输给另⼀个设备,就需要在各种各样的路径和节点进⾏选择,⽽传输层的设计理念是简单、⾼效、专注,如果传输层还负责这⼀块功能就有点违背设计原则了。也就是说,我们不希望传输层协议处理太多的事情,只需要服务好应⽤即可,让其作为应⽤间数据传输的媒介,帮助实现应⽤到应⽤的通信,⽽实际的传输功能就交给下⼀层,也就是⽹络层(Internet Layer)。

image-20240319101537211

⽹络层最常使⽤的是 IP 协议(Internet Protocol),IP 协议会将传输层的报⽂作为数据部分,再加上 IP 包头组装成 IP 报⽂,如果 IP 报⽂⼤⼩超过 MTU(以太⽹中⼀般为 1500 字节)就会再次进⾏分⽚,得到⼀个即将发送到⽹络的 IP 报⽂。

数据包的封装过程

  • 当数据从应用层下发到传输层,如使用TCP或UDP协议,它会被封装成一个段(TCP)或数据报(UDP),并附加上相应的端口号。
  • 传输层的数据随后下发到网络层,网络层将传输层的数据段或数据报封装在IP包中,加上IP头部信息,这些头部信息包括源IP地址和目标IP地址等。
  • 如果IP包的大小超过网络的MTU,网络层会将包分片。每个片段都能独立路由到目的地,在那里它们会被重新组装成原始的IP包。
image-20240319101929820

⽹络层负责将数据从⼀个设备传输到另⼀个设备,世界上那么多设备,⼜该如何找到对⽅呢?因此,⽹络层需要有区分设备的编号。

我们⼀般⽤ IP 地址给设备进⾏编号,对于 IPv4 协议, IP 地址共 32 位,分成了四段(⽐如,192.168.100.1),每段是 8 位。只有⼀个单纯的 IP 地址虽然做到了区分设备,但是寻址起来就特别麻烦,全世界那么多台设备,难道⼀个⼀个去匹配?这显然不科学。
因此,需要将 IP 地址分成两种意义:
⼀个是⽹络号,负责标识该 IP 地址是属于哪个「⼦⽹」的;
⼀个是主机号,负责标识同⼀「⼦⽹」下的不同主机;
怎么分的呢?这需要配合⼦⽹掩码才能算出 IP 地址 的⽹络号和主机号。

IP地址

IP地址是分配给每个连接到网络的设备的唯一标识符。对于IPv4,它是一个32位的数字,通常表示为四个十进制数(每个范围从0到255),用点分隔,例如192.168.100.1。这种结构允许大约42亿(2^32)的唯一地址。

子网掩码

子网掩码用于确定IP地址中哪一部分表示网络地址,哪一部分表示主机地址。通过将IP地址与子网掩码进行按位与(AND)运算,可以得到网络地址。子网掩码通常也是一个32位的数字,表示为与IP地址相同的点分十进制格式,例如255.255.255.0,或者作为CIDR表示法中的斜杠后数字,例如/24。

网络地址和主机地址的计算

  • 网络地址的计算:将IP地址与子网掩码按位与运算得到。这表示了IP地址所在的子网。
  • 主机地址的计算:将IP地址与子网掩码的反码按位与运算得到。这表示了子网中特定设备的标识。

例子

以IP地址10.100.122.2和子网掩码255.255.255.0(/24)为例:

  • 子网掩码/24表示前24位是网络部分,后8位是主机部分。
  • 网络地址计算:10.100.122.2 AND 255.255.255.0 = 10.100.122.0
  • 主机地址计算:10.100.122.2 AND 0.0.0.255(255.255.255.0的反码)= 0.0.0.2

网络地址10.100.122.0表示所有以此地址开始的设备都位于同一子网内。主机号2指的是该子网内的特定设备。

image-20240319102642394

子网掩码的作用

通过改变子网掩码,可以控制子网的大小。更多的位分配给网络部分意味着更多的子网,但每个子网中可以有的主机数就更少;相反,更多的位分配给主机部分意味着更少的子网,但每个子网可以包含更多的主机。子网掩码的设计使得网络管理员可以根据需要灵活地划分网络,以适应不同的网络规模和需求。

IP寻址

IP寻址的基本过程包括确定目标设备的IP地址,然后利用子网掩码来区分网络地址和主机地址。在数据包的传输过程中,网络地址用于确定目标设备位于哪个子网,而主机地址则用于识别该子网内的具体设备。只有当数据包到达了正确的子网,它才能被送达给正确的主机。

路由

路由是决定数据包从源头到目的地之间传输路径的过程。路由器在这个过程中起着至关重要的作用:

  1. 路径决定:路由器利用路由表来决定数据包的最佳路径。路由表包含了不同目的地的IP地址范围和对应的下一跳地址。下一跳可以是另一个路由器,这样数据包就通过一系列跳跃,最终到达目的地。
  2. 子网间转发:当数据包到达一个网络节点(如路由器)时,路由器检查目标IP地址,确定下一步应该转发到哪个子网或直接到达的主机。
  3. 动态路由协议:在复杂的网络环境中,路由器通过动态路由协议(如OSPF、BGP)自动更新路由表信息,以应对网络变化,确保数据包沿着最佳路径传输。

数据包转发

当路由器接收到一个数据包时,它首先检查数据包的目标IP地址,然后与路由表中的记录进行匹配,找出最合适的下一跳。如果目标地址在直接连接的网络中,数据包将直接发送到目标主机。如果不在,数据包将被转发到下一跳路由器。这一过程会一直重复,直到数据包到达最终目的地。

通过这种方式,即使在一个由数以千计的网络和设备构成的复杂互联网环境中,数据包也能够通过寻址和路由的机制找到一条路径,从而成功地从发送者传输到接收者。

所以,IP 协议的寻址作⽤是告诉我们去往下⼀个⽬的地该朝哪个⽅向⾛,路由则是根据「下⼀个⽬的地」选择路径。寻址更像在导航,路由更像在操作⽅向盘。

image-20240319103412824

⽹络接⼝层(数据链路层)

网络接口层,也称为链路层或数据链路层,是负责网络物理实体间数据传输的网络模型的一部分。它直接与网络的物理连接(如以太网、WiFi)打交道,确保数据能够在物理网络上有效地传输。

MAC地址

  • 定义:MAC(媒体访问控制)地址是链路层地址,用于标识网络上的设备。每个网络接口卡(Network Interface Card, NIC)都有一个全球唯一的MAC地址,确保在局域网中每个设备都可以被唯一识别。
  • 作用:在数据链路层,数据包是通过MAC地址来寻址的,而不是IP地址。这意味着,为了在局域网内部发送数据包,发送方需要知道接收方的MAC地址。

ARP协议

ARP(地址解析协议)是一种网络协议,用于将网络层的地址(如IP地址)解析为链路层的地址(如MAC地址)。当一个设备想要与同一局域网内的另一个设备通信时,但只知道其IP地址,它可以使用ARP协议来查询对应的MAC地址。

数据包的封装过程

  1. 网络层:数据包在网络层被赋予一个IP头部,标识了数据包的源IP地址和目标IP地址。

  2. 链路层:数据包下发到链路层时,链路层会在IP头部的前面加上MAC头部,其中包含了源MAC地址和目标MAC地址。这个过程中,如果不知道目标MAC地址,会先使用ARP协议进行查询。

  3. 发送数据帧:经过MAC头部封装的数据包变成了一个完整的数据帧,然后通过物理介质(如以太网线、WiFi信号)发送出去。

综上所述,TCP/IP ⽹络通常是由上到下分成 4 层,分别是应⽤层,传输层,⽹络层和⽹络接⼝层。

image-20240319104349600

每⼀层的封装格式:

image-20240319104443924

⽹络接⼝层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报⽂(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

相关文章:

TCP/IP ⽹络模型

TCP/IP ⽹络模型 对于同⼀台设备上的进程间通信,有很多种⽅式,⽐如有管道、消息队列、共享内存、信号等⽅式,⽽对于不同设备上的进程间通信,就需要⽹络通信,⽽设备是多样性的,所以要兼容多种多样的设备&am…...

云原生:重塑未来应用的基石

随着数字化时代的不断深入,云原生已经成为了IT领域的热门话题。它代表着一种全新的软件开发和部署范式,旨在充分利用云计算的优势,并为企业带来更大的灵活性、可靠性和效率。今天我们就来聊一聊这个热门的话题:云原生~ &#x1f4…...

蓝桥杯day4刷题日记

P8605 [蓝桥杯 2013 国 AC] 网络寻路 思路来源于https://www.luogu.com.cn/article/iat8irsf #include <iostream> using namespace std; int n,m; int q[10010]; int v[100010],u[100010]; long long res;int main() {cin>>n>>m;for(int i0;i<m;i){cin…...

[Qt学习笔记]Qt下使用Halcon实现采图时自动对焦的功能(Brenner梯度法)

目录 1、介绍2、实现方法2.1 算法实现过程2.2 模拟采集流程 3、总结4、代码展示 1、介绍 在机器视觉的开发中&#xff0c;现在有很多通过电机去做相机的聚焦调节&#xff0c;对比手工调节&#xff0c;自动调节效果更好&#xff0c;而且其也能满足设备自动的需求&#xff0c;尤…...

常州IGM机器人RTE497的日常维修保养方法

一、IGM机器人RTE497日常检查 每日工作前&#xff0c;进行以下检查&#xff1a; 外观检查&#xff1a;确认IGM机器人RTE497本体无明显损伤&#xff0c;各部件连接稳固。 电缆检查&#xff1a;检查所有电缆、气管等是否完好&#xff0c;无磨损、无挤压。 润滑检查&#xff1a;确…...

如何利用机器学习和Python编写预测模型来预测设备故障

预测设备故障是机器学习和数据科学的一个常见问题&#xff0c;通常可以通过以下几个步骤来解决&#xff1a; 1. 数据收集 首先&#xff0c;需要收集与设备运行相关的数据&#xff0c;包括&#xff1a; 设备的历史数据环境数据&#xff08;如温度、湿度等&#xff09;使用时间…...

mysql部署(2)主从复制

在前面的基础上&#xff0c;现有26、41两个mysql8的实例&#xff0c;下面以26为主41为从搭建主从复制&#xff1a; 机器主从端口号root密码主从复制账号密码xxx.xx.xxx.26主3306Mysql#26user1/user1#26xxx.xx.xxx.41从3306Mysql#41 一、master主库配置 1、修改mysql配置文件…...

FX-数组的使用

1一维数组 1.1一维数组的创建和初始化 1.1.1数组的创建 //代码1 int arr1[10]; char arr2[10]; float arr3[1]; double arr4[20]; //代码2 //用宏定义的方式 #define X 3 int arr5[X]; //代码3 //错误使用 int count 10; int arr6[count];//数组时候可以正常创建&#xff1…...

springboot283图书商城管理系统

图书商城管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本图书商城管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理…...

FFmpeg-- c++实现:音频流aac和视频流h264封装

文章目录 流程api核心代码muxer.hmuxer.cpp aac 和 h264 封装为视频流&#xff0c;封装为c的Muxter类 流程 分配视频文件上下文 int Init(const char *url); 创建流&#xff0c;赋值给视频的音频流和视频流 int AddStream(AVCodecContext *codec_ctx); 写视频流的head int Se…...

单片机烧录方式,JTAG,ISP,SWD,

常见的词汇 参考 ISP&#xff1a;In System Programing&#xff0c;在系统编程 IAP&#xff1a;In Application Programing&#xff0c;在应用编程 ICP&#xff1a;In Circuit Programing&#xff0c;在电路编程 ICSP全称是In Circuit Serial Programming JTAG(Joint Test Act…...

【项目管理后台】Vue3+Ts+Sass实战框架搭建一

项目管理后台 建立项目最好是卸载Vetur 新建.env.d.ts文件安装Eslint安装校验忽略文件添加运行脚本 安装prettier新建.prettierrc.json添加规则新建.prettierignore忽略文件 安装配置stylelint新建.stylelintrc.cjs 添加后的运行脚本配置husky配置commitlint配置husky 强制使用…...

基于python 变配电室运行状态评估与预警系统flask-django-nodejs-php

变配电室电气设备运行状态和环境信息缺乏必要的监测评估预警手段&#xff0c;如有一日遭遇突发情况&#xff0c;将危及电气设备安全稳定运行,易造成设备损坏和电力供应中断[2]。 目前&#xff0c;我国变配电室常采用无人管理的室内站设计方案&#xff0c;长期以来变配电室运维工…...

【自记录】VS2022编译OpenSSL1.0.2u

因为突然要编译一个老工程&#xff0c;老工程里面用到了OpenSSL 1.0.x。 于是官网下载了最后一个1.0.x版本1.0.2u。 1 下载安装Perl 去Perl官网下载即可。 使用vcpkg直接安装也可以&#xff0c;比前者更方便 vcpkg install perl #根据实际路径调整 set PATHD:\vcpkg\downloa…...

ES代替品:轻量级搜索引擎MeiliSearch

痛点 虽然Elasticsearch足够灵活强大、扩展性和实时性也较好。但是对于中小型项目来说&#xff0c;Elasticsearch还是显得有些庞大&#xff0c;对硬件设备的要求也较高。那么&#xff0c;在要求不是很高的情况下&#xff0c;我们可以考虑另一种搜索引擎方案&#xff1a;MeiliSe…...

用C语言打造自己的Unix风格ls命令

在Unix或类Unix操作系统中&#xff0c;ls是一个非常基础且实用的命令&#xff0c;它用于列出当前目录或指定目录下的文件和子目录。下面&#xff0c;我们将通过C语言编写一个简化的ls命令&#xff0c;展示如何利用dirent.h头文件提供的函数接口实现这一功能。 #include "…...

git的起源

开篇一张图&#xff1a; 开源项目linux kernel开发&#xff0c;参与开发与维护者众多。1991至2005年期间绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。 在2002 年&#xff0c;整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维…...

软件杯 深度学习 python opencv 火焰检测识别

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…...

C# double类型计算精度问题解决

问题&#xff1a;res 的值0.112450000001&#xff0c;精度不对&#xff0c;预期是0.11245 double force112.45&#xff1b; double res force / Math.Pow(10, index * 3); double force112.45; double res force / Math.Pow(10, index * 3); string str res.ToString(&qu…...

基于Springcloud+Vue校园招聘系统 Eureka分布式微服务

以行动研究为主&#xff0c;辅以文献法、教育实验法和个案研究法等方法相结合的研究方法。在研究方法&#xff0c;遵循软件工程中软件生命周期的规则。概括来讲可以划分成三大步&#xff1a;系统规划、系统开发和系统运行维护。将其上述步骤细分下来&#xff0c;可以分为以下8小…...

【NLP笔记】RNN总结

文章目录 经典RNN单向RNN双向RNNDeep RNNRNN特性总结 变体RNNLSTMGRU 参考及转载内容&#xff1a; 循环神经网络&#xff08;RNN&#xff09;深度学习05-RNN循环神经网络完全理解RNN&#xff08;循环神经网络&#xff09; 传统的CNN&#xff08;Covolutional Neural Network&am…...

[c++]内存管理

1. C/C内存分布 我们先来看下面的一段代码和相关问题 int globalVar 1; static int staticGlobalVar 1; void Test() { static int staticVar 1; int localVar 1; int num1[10] { 1, 2, 3, 4 }; char char2[] "abcd"; const char* pChar3 "abcd"; …...

k8s通过编排文件,实现服务的滚动更新

k8s通过编排文件&#xff0c;实现服务的滚动更新 apiVersion: apps/v1 kind: pod metadata:name: ‘servicename’labels:app: ‘servicename’ spec:replicas: 4 ##pod启动数量最少为2&#xff0c;不然滚动更新无意义strategy:type: RollingUpdate ##设置类型为滚动更新以及…...

安卓面试题多线程 96-100

96. 简述notify()和notifyAll()有什么区别 ?notify可能会导致死锁,而notifyAll则不会任何时候只有一个线程可以获得锁,也就是说只有一个线程可以运行synchronized 中的代码 使用notifyall,可以唤醒 所有处于wait状态的线程,使其重新进入锁的争夺队列中,而notify只能唤醒一…...

第二十六章 配置 Web Gateway 的默认参数

文章目录 第二十六章 配置 Web Gateway 的默认参数网络网关实例主机名最大连接数最大缓存大小网络服务器 ID Cookie 第二十六章 配置 Web Gateway 的默认参数 本页介绍如何通过 Web Gateway 管理页面配置 IRIS Web Gateway 的默认参数。其他文章介绍了如何配置服务器和应用程序…...

npm i安装依赖报错,但是cnpm i 却安装成功

问题描述&#xff1a;在a项目中npm i 安装依赖时发生以上报错&#xff0c;但是cnpm i 却成功&#xff0c;而且在其他项目中npm i 安装其他项目依赖也能成功.... 解决办法&#xff1a;删除项目中package-lock.json文件后再npm i 即可...

C语言经典算法-9

文章目录 其他经典例题跳转链接46.稀疏矩阵47.多维矩阵转一维矩阵48.上三角、下三角、对称矩阵49.奇数魔方阵50.4N 魔方阵51.2(2N1) 魔方阵 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官&#xff08;一&#xff09;6.…...

React 19的变化

并发模式&#xff08;非实验&#xff09;: React 的并发模式终于从实验阶段毕业了。这一改变游戏规则的功能允许 React 应用程序同时准备多个版本的 UI。有着更平滑的过渡和更灵敏的用户体验&#xff0c;因为 React 现在可以处理高优先级更新&#xff0c;同时保持应用程序的交互…...

Kafka整理-Kafka与传统消息队列系统(如RabbitMQ, ActiveMQ)的区别是什么?

Apache Kafka与传统消息队列系统(如RabbitMQ, ActiveMQ)虽然都是处理消息和数据流的中间件,但它们在设计理念、架构、功能和使用场景方面有显著的区别。下面是Kafka与传统消息队列系统的主要区别: 1. 设计目的和使用场景 Kafka: 设计初衷是为处理大量的实时数据流。强调高…...

汽车电子零部件(8):T_Box

前言: 网联汽车(Connected Vehicles ,CV)是一个广泛的概念,四个主要的CV线程已发展起来:互联、自主、共享和电动。这些应用于包括CV在内的垂直领域:汽车、通信、互联网和共享手机服务。中国汽车工程师学会(SAEC)提倡将车载ADAS(高级驾驶员辅助系统)与通信技术相结合…...

揭阳企业网站建设公司/网站平台如何推广

内存重叠:源数据和目标数据存在内存相同的情况.一定要注意复制数据的方向,如果往低地址(往前),先复制前面的数据, 如果往高地址(往后),先复制后面的数据 #include <stdio.h> #include <stdlib.h> //将长度为n的数组arr的最后m个数字移到最前面 void Move(int *arr…...

网站给他人做付刑事责任/百度搜索关键词排行榜

http://www.cnblogs.com/Robotke1/archive/2013/05/25/3099309.html ------------------------------------------------------------------------------------------------------------- Java也提供了一个byte数据类型&#xff0c;并且是基本类型。java byte是做为最小的数字来…...

昆明城乡建设局网站/域名访问网站

Python 高级特性文章目录Python 高级特性切片迭代列表生成式生成器 generator迭代器切片可以对list, tuple, string进行切片[起始位置&#xff1a;终止位置 1: 步长]可以使用负数&#xff0c;-1为倒数第一个数步长为负数时&#xff0c;从后向前分隔&#xff0c;对应的起始终止…...

jsp动态网站开发视频/天津seo渠道代理

今天推荐的图书专注机器学习主题&#xff0c;一共7本&#xff0c;都是经过实践检验的好书——《机器学习》《图解机器学习》《机器学习实战》《机器学习系统设计》《Spark机器学习》《Mahout实战》《机器学习实践&#xff1a;测试驱动的开发方法》。 【活动】呢&#xff0c;依…...

国外网站后台模板/电销名单渠道在哪里找

网页打开与浏览速度受着多方面因素的影响&#xff0c;客户网速是一个方面&#xff0c;另外网站开发的编码方式也将对用户的电脑产生负担&#xff0c;在之前的文章中提过这方面的内容。这篇文章主要写的提高网页在客户端浏览器的渲染速度的CSS部分。 一、*{} #page *{} 尽量避开…...

策划文案的网站/seo推广公司有哪些

MySQL的锁机制比较简单&#xff0c;其最显著的特点是不同的存储引擎支持不同的锁机制。MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking)。BDB 存储引擎采用的是页面锁(page-level locking)&#xff0c;但也支持表级锁。InnoDB存储引擎既支持行级锁(row-level locki…...