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

低级计算机网络知识总结

1 应用层

1.1 HTTP(TCP)

浏览器访问WWW服务器过程:首先进行域名解析,然后通过TCP向服务器发送连接请求

HTTP本身是无连接,无状态的。无状态特性使服务器能够支持大量的并发HTTP请求。实际应用中,通常使用Cookie加数据库跟踪用户活动。

Cookie原理:用户访问使用Cookie的网站,服务器生成一个唯一识别码,在响应报文中添加Set-cookie首部行,用户收到后,在本机特定文件中记录主机名和cookie。当用户再次浏览时,用户会取出对应cookie放入请求报文的首部行。

持续连接:分为流水线方式和非流水线方式,默认采用流水线方式,共经历1个RTT延迟

非持续连接:每个网页对象都需要建立一个TCP连接

HTTP面向文本的,报文中每个字段都是ASCII字符串

1.2 SMTP/POP3(TCP)

推协议:SMTP(端口号25,TCP连接)、HTTP

拉协议:POP3(TCP)、IMAP、HTTP

1.3 DNS(UDP)

根域名服务器-顶级域名服务器-权限域名服务器-本地域名服务器

域名解析方式:

  • 递归解析

  • 迭代解析

本地域名服务器一般会保存查询结果的缓存,待下次再次查询时,可直接返回查询结果。

1.4 FTP(TCP)

工作方式:客户机/服务器,TCP可靠传输服务

服务器进程组成:(主进程和从属进程并发执行)

  • 主进程:负责接受新的请求
  • 若干从进程:负责处理单个请求

使用两个并行的TCP连接:控制连接(21端口号)和数据连接(20端口号)

控制连接:用来传输控制信息(连接请求、传送请求等)

数据连接:客户端和服务端的数据传输

1.5 网络应用模型

客户机/服务器模型:

  • 服务器可以通过权限访问控制客户机的活动

  • 客户机之间不直接通信

  • 可扩展性不强,服务器支持的客户机数量有限

P2P模型:

  • 减轻计算压力
  • 可扩展性好
  • 网络健壮性强

但是影响本机的速度,占用本机的内存

2 运输层

套接字:唯一标识网络中的一台主机和其中的一个应用,相当于IP+端口号

TCP:面向连接的可靠传输服务

UDP:无连接非可靠传输协议,仅提供两个服务(多路复用和对数据的错误检查)

2.1 UDP

分组首部8B ,UDP支持一对一,一对多,多对多的通信

地址标识:(目的主机IP + 进程端口号)

特点:

  1. 无连接
  2. 无拥塞控制
  3. 不可靠,数据可靠通过应用层实现

但有校验和,检测出错后,报告应用层(或者丢弃),运输层不改动

2.2 TCP

首部为20B

地址标识:(源主机IP + 源端口号 + 目的主机IP + 目的端口号)

面向连接的可靠传输协议:

  • 面向连接:三握四挥
  • 可靠传输:差错检测,确认重传,定时器管理
  • 流量控制:滑动窗口
  • 拥塞控制:慢开始,拥塞避免,快重传,快恢复

三次握手:

  1. TCP请求报文段
  2. TCP连接响应报文段
  3. TCP连接确认(附带应用层请求报文)
  4. 应用层响应报文进行响应

为什么不是两次握手:在某些情况下(网络延迟,数据丢失),服务器连接响应报文可能无法到达客户端,导致连接无法建立

四次挥手:

  1. 客户(客户端和服务端都可以主动提出)主动提出释放连接请求
  2. 服务端进行响应确认,通知应用进程关闭服务线程
  3. 服务端关闭线程后,发送关闭连接的确认响应
  4. 客户端接受到关闭通知后,发送确认响应

三次挥手可能出现的问题:

  • 出现半开连接,客户端发送关闭连接请求,并且收到服务器的ack确认响应,于是关闭连接,但是服务器没有检测到连接已经关闭,导致服务器资源一直被占用
  • 客户端和服务端都以为连接已经关闭,实际上没有关闭,这种情况称为死链接,占用网络资源

可靠传输:

TCP头部包含:校验和,序号和确认号,超时计数器

序号:占 4B ,每个字节都要编一个号,序号字段的值为本报文段发送数据的第一个字节的序号。

确认号:期望对方下一个报文段接受到的字节序号,若确认号为N,代表序号到N-1为止的数据全部收到。

每发送一个报文段,就对这个报文段设置一次定时器,TCP超时重发定时器的值是自适应变化的。

停等协议:发送方等待接收方确认才能发,不能流水线发送,信道利用率低

流水线协议:发送方在等待确认时可以继续发送报文,信道利用率提高

回退N步协议:报文段错误后,将重发此报文段后续所有报文段,提高信道利用率,浪费带宽(重发所有无序的报文段)

选择重传协议:缓冲其他后续接受到的报文段,发送方仅仅重发错误的报文段


流量控制:

滑动窗口协议:

  1. 收发主机设置各自的TCP数据缓冲区
  2. 在缓冲区设置发送窗口和接收窗口
  3. 发送方窗口等于接收方窗口

如果接收方处理数据的速度大于接受数据的速度,接受方窗口大小就会扩展,并且之后会把窗口大小传给发送方,引起发送方窗口增大。反之,接收方窗口减小,引起发送方窗口减小。


拥塞控制:

传送数据过多,数据重传。拥塞窗口随拥塞情况动态变化

接受窗口表示接收方缓冲区的接受容量(运输层)

拥塞窗口表示网络的吞吐量(网络层)

发送方窗口大小=min(接收窗口,拥塞窗口)

慢开始算法:拥塞窗口小于慢开始门限,新拥塞窗口 = 原拥塞窗口 * 2

拥塞避免算法:当前拥塞窗口大于慢开始门限,新拥塞窗口 = 原拥塞窗口 + 1MSS

在定时器超时前,未受到确认,认定网络拥塞发生。此时重设门限值为当前拥塞窗口的一半。重新慢开始算法,拥塞窗口从1MSS开始

MSS:最大报文长度

快重传算法:发送方发送 M 1 , M 2 , M 3 , M 4 , M 5 , M 6 M_1, M_2, M_3, M_4, M_5, M_6 M1,M2,M3,M4,M5,M6 M 3 M_3 M3 丢失,接收方收到无序报文段,对于 M 4 , M 5 , M 6 M_4, M_5, M_6 M4,M5,M6 的回复重复确认 M 3 M_3 M3 ,发送方立即重传 M 3 M_3 M3 ,此时并没有超时,网络没有拥塞,防止误判重新慢开始,防止网络传输率下降

快恢复算法:发送方收到三个连续重复确认,直接执行拥塞避免算法

此时的操作为:慢开始门限等于当前拥塞窗口的一半,当前拥塞窗口等于慢开始门限。也就是当前拥塞窗口直接等于新的慢开始门限,就要执行拥塞控制算法

3 网络层

3.1 网络层服务

通信网络:

  • 电路交换网络:独占预先分配链路资源
  • 分组交换网络:按需分配链路资源
    • 虚电路网络:发送数据报前确定了线路
    • 数据报网络:发送数据报前不确定线路(采用)

数据报统一地址寻址:最长前缀匹配原则来确定数据转发的网络接口(二叉树查找路由表)

路由选择与分组转发:

路由:软件实现,确定从发送主机到接受主机之间的传输数据报的路径,主要应用于整个网络

转发:硬件实现,从路由器一个网络接口接受,另一个网络接口转发出去。(检索转发表,比对首部参数值,确定出口)

转发表由路由协议中的路由算法决定

数据报的拆分和重组:MTU(最大传送单元,链路层的装载载荷,包括网络层及以上的数据)和MSS(最大报文长度,传输层报文载荷,不包括头部,包括应用层信息)

只在目的主机进行数据报分片的重组,路由器只转发,不组合

3.2 IPv4

数据报组成:首部(20B)+数据部分

IP首部部分重要字段:

分片标识号:同一数据报的分片具有相同的标识号

分片标志位:DF = 0 允许分片,MF = 0 代表是最后一片

分片偏移量:拆分数据报中数据首字节的序号,以8 Byte为单位计算,第1400个字节,片偏移为 1400 / 8 = 175 1400 / 8 = 175 1400/8=175

分片是因为不同的网络MTU不一样,需要对数据进行拆分

IPv4地址:IP地址 = 网络ID + 主机ID(网络ID和主机ID都是既不能全0又不能全1)

A:网络位8位,主机位24位(127为特殊地址不分配)

B:网络位16位,主机位16位

C:网络位24位,主机位8位

私有地址:内部网络使用,公网不被承认

  • A:10.0.0.0
  • B:172.16.0.0 - 172.31.0.0
  • C:192.168.0.0 - 192.168.255.0

三层网络划分:

IP地址 = 网络ID + 子网ID + 主机ID(主机高位进行子网划分)

同一子网的主机具有相同的子网地址,可以直接互通数据报,路由器的不同接口连接不同的子网

子网掩码 & IP地址 = 子网地址(网络ID+子网ID+主机ID(主机ID全0))

子网掩码作用:求得子网地址,划分子网

划分子网的数量由掩码的主机地址中1的数量n决定,为 2 n − 2 2 ^ n - 2 2n2

路由选择根据网络ID和子网ID进行,局域网之外根据网络ID,局域网之内根据子网ID

网关:路由器某一网络接口的IP地址,与主机在同一子网中

同一子网判断:主机A子网掩码与B的IP地址得到A认为B的子网地址,然后将A的子网地址和B的子网地址比较

地址分配:

  • 静态配置:手动配置
  • 动态配置:DHCP(发现,提供,选择,确认)

CIDR无类域间路由:使用不属于任何类的网络地址块

地址格式: a.b.c.d/x 这里的 x 表示地址中网络部分的位数。

好处:提高IP地址分配效率,提高路由效率(可以进行路由聚合,多个子网汇聚成一个大子网)

CIDR查找路由表的方法:最长前缀匹配原则,将路由表存放在层次数据结构中,自上而下进行层次查找。常用的是二叉搜索。

使用CIDR时,路由表由网络前缀和下一条网络地址组成。查找路由表时可能得到不止一个匹配结果,应该选择具有最长前缀的路由。因为网络前缀越长,地址块越小,路由越具体。

最小的子网:主机位最小为2位

3.3 NAT

私有IP地址转化为公有IP地址

路由器IP地址,一个配置私有IP地址,一个配置公有IP地址

使用NAT的局域网运行一个对外的服务器,需要解决穿透NAT问题

NAT中有一张转换表(源私有IP,源端口号,公有地址,新端口号)

转发数据报到外网添加新记录,从外网接受数据时,查找相应记录,转发至内网

IP数据报承载的如果不是TCP(TCP才有IP+端口号),则NAT无法工作

3.4 IPv6

128位,头部固定长度40字节,IPv6只允许在发送端进行数据报拆分,分为8部分

单播地址:一个单播地址对应一个唯一的网络接口(010标识该地址为单播地址)

多播地址:一个多播地址对应一组网络接口,数据报送到该地址对应的一组接口上(数据报送到该组的每一个接口)

任播地址:一个任播地址对应一组网络接口(数据报转发到该组对应的最近的一个接口)

IPv4路由也可分片,IPv6只在发送主机分片(路由器发现大于MTU的数据报直接丢弃,并发送ICMP差错报告)

过渡技术:

  • 隧道技术
  • 双协议栈技术

3.5 ICMP

ICMP被封装在IP数据报中进行传输

  • 差错报文

传输数据出错,ICMP向发送主机汇报情况,不进行纠错。

  • 网络探询报文

确定网络层是否联通(ping命令):发送主机,发送ICMP回送请求报文;目的主机返回ICMP回送应答报文

确定往返时间:发送主机,发送ICMP时间戳请求报文;目的主机返回ICMP时间戳应答报文

3.6 ARP地址解析协议

把IP地址映射到MAC地址,网络接口之间传递数据看的是MAC地址

应用范围:同一子网中

ARP是即插即用的,自动创建ARP地址解析表(IP地址,MAC地址,TTL),无需管理

同一子网中,主机A的ARP表中没有主机B的MAC地址,解析过程:

  • 主机A发送ARP请求数据报,发送广播帧到子网中
  • 子网中所有网络接口收到广播帧,看目的IP地址与自己IP地址是否匹配,匹配的话返回ARP响应数据报
  • 主机A接受到相应数据报,保存在ARP表中

不同子网中

  • 主机A查找ARP表,获得默认网关的MAC接口,发送数据报封装成帧给默认网关
  • 默认网关提取IP数据报,查找路由表,转发至对应接口
  • 接口查找ARP表得到B的MAC地址,封装成帧发给B

3.7 路由选择算法

路由器的两个功能:路由选择和数据转发

路由器中有路由表:记录目的网络地址和下一跳的节点地址

路由表:

  • 静态路由:记录目标地址的下一跳的网络地址
  • 动态路由:通过运行的RIP, OSPF,BGP协议动态更新

路由选择算法:


  • 距离向量算法

动态的分布式算法,在RIP协议中使用,应用于较小的网络

路由器只了解自己与邻居节点的链路成本,然后通过迭代计算,与邻居路由器交换路由信息。

距离矢量算法(DV)他会把自己的路由表分享给自己的所有相邻节点,那么这些节点如果发现通过新的路由表自己到其他节点的距离改变了,那么再把自己的更新的路由表发送给自己的周围节点,所以这个过程是迭代的,异步的。

本节点 S S S 的距离更新相当于 m i n ( D S Y , D S X + D X Y ) min(D_{SY}, D_{SX} + D_{XY}) min(DSY,DSX+DXY) ,XY的距离发生了更新,将信息发送给了S

缺点:不适合大型网络,适合小型网络


  • 链路状态算法(典型的链路状态算法OSPF)

三个步骤:

(1)路由器探测所有邻居节点,计算链路成本,组装成数据报

  • 向每个端口发送hello数据报,获得邻居节点地址
  • 向邻居节点发送echo数据报,等待响应,获得往返时间(链路成本)

(2)路由器发送自己链路数据报,通过洪泛法发送至网络中所有路由器

洪泛法:不计算路径,有路就走

存在问题:数据报重复到达某一节点,可以通过设置已收过的数据不再接受,对数据报设置标记,数据更新则标记更新,标记用来标识是否是同一个数据报

(3)每台路由器将获得整个网络拓扑结构信息,使用dijkstra算法更新路由表

优点:适用于大型网络,收敛性好

缺点:计算量和存储量大

3.8 路由选择协议

自治系统:具有单一管理权限的网络

内部网关协议:AS之内的路由选择

  • RIP(路由选择协议,距离向量算法),在应用层,使用UDP

距离度量:每个链路一跳,最大15跳(16跳表示无穷大)

每隔30秒:邻居交换一次距离度量

  • OSPF(开放最短路优先协议,链路状态算法),在网络层,链路状态数据报封装在IP数据报进行传输

适用于大型网络,每条链路可设置不同的成本度量(吞吐量,时延,带宽)

外部网关协议:AS之间的路由选择,不同AS之间的路由器需要运行同一种路由选择协议,边界路由器同时运行内部网关和外部网关路由协议

BGP:边界网关协议,路径向量算法,找出一条较好的路径,并非找出最佳路径,故是路径向量算法

单播路由选择:一个发送主机和一个接收主机,协议选择:RIP,OSPF,BGP

多播路由选择:一个发送主机和一组接收主机

4 链路层

4.1 功能

核心部件:网卡

转发数据报:封装网络层数据报形成一帧,发送帧到物理层

封装成帧:添加帧首部和帧尾部,和帧数据部分(MTU最大传送单元)进行组装

物理寻址:网卡地址,检测帧中的目的地址和自身网卡地址是否匹配

物理地址=网卡地址=MAC地址=LAN地址=以太网地址

发送接口和接受接口的网卡必须在同一子网中

可靠传输:以太网(无确认无连接),无线通信(有确认无连接)

差错控制:循环冗余校验码(检错,具有纠错能力,但没用到),海明码(可纠正一位错误)

流量控制:相邻两节点之间的流量,滑动窗口大小固定不变

窗口中存的是帧的序号,故接受窗口大小 + 发送窗口大小 ≤ 2 n \le 2 ^ n 2n

流量控制采用的协议:停等协议,后退N帧协议(累计确认),选择重传协议

4.2 介质访问控制MAC

  1. 随机访问MAC协议:在任意时刻,各点可以随时发送信号,产生冲突再恢复

ALOHA协议:不监听,随机发,容易冲突,吞吐量低

时隙ALOHA协议:按时隙发,减少冲突概率

CSMA载波监听多路访问:各点发送数据帧之前,监听信道,减小冲突概率,不能消除冲突(冲突由节点距离和延迟引起的)

CSMA/CD载波多路监听访问/冲突检测:检测到冲突停止发送,减少资源浪费

CSMA/CA载波多路访问/冲突避免:发送时先广播通知其他节点,不要发送,尽量避免冲突,有确认重传机制

  1. 信道划分MAC协议:将共享链路分给各点,不冲突

时分多路复用,频分多路复用,码分多路复用

  1. 轮询访问MAC协议:任意一个时刻,只允许一个点发送信号,不冲突

4.3 以太网

拓扑结构:总线型,星型

集线器:物理层设备,转发比特,需要介质访问控制,不能分割冲突域

网桥:链路层设备,可以扩展局域网,分割冲突域

交换机:具有n个接口的网桥,隔离冲突域,内部有交换表,具有自我学习功能,无需配置,形成广播域

网络层设备:阻隔广播风暴

相关文章:

低级计算机网络知识总结

1 应用层 1.1 HTTP(TCP) 浏览器访问WWW服务器过程:首先进行域名解析,然后通过TCP向服务器发送连接请求 HTTP本身是无连接,无状态的。无状态特性使服务器能够支持大量的并发HTTP请求。实际应用中,通常使用Cookie加数据库跟踪用户…...

linux sysrq的使用举例

在menuconfig中选择m和 *的区别: *: 模块驱动编译到内核中,启动时自动加载 M:标识作为内核模块编译 空格:表示该功能不编译到内核中,即新的内核将不支持该功能。 m:模块会被编译,但是不会被编译到内核中,只…...

数字IC后端设计实现篇之TSMC 12nm TCD cell(Dummy TCD Cell)应该怎么加?

TSMC 12nm A72项目我们需要按照foundary的要求提前在floorplan阶段加好TCD Cell。这个cell是用来做工艺校准的。这个dummy TCD Cell也可以等后续Calibre 插dummy自动插。但咱们项目要求提前在floorplan阶段就先预先规划好位置。 TSCM12nm 1P9M的metal stack结构图如下图所示。…...

Oracle 适配 OpenGauss 数据库差异语法汇总

背景 国产化进程中,需要将某项目的数据库从 Oracle 转为 OpenGauss ,项目初期也是规划了适配不同数据库的,MyBatis 配置加载路径设计的是根据数据库类型加载指定文件夹的 xml 文件。 后面由于固定了数据库类型为 Oracle 后,只写…...

【记录】Django解决与VUE跨域问题

1 梗概 这里记录Django与VUE的跨域问题解决方法,主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…...

Yolov10本地部署,torch找不到GPU问题解决

在本地部署跑Yolov10的模型.具体分为以下几步,也是踩了一些坑: 1.YoloV10 代码拉取 2.安装CUDA 1.查看CUDA支持版本 2.下载安装CUDA 3.下载CUDNN 3.创建python虚拟环境 Anaconda下载安装 虚拟环境安装配置 4.运行 1.yoloV10代码拉取 源码地址: GitHub - THU-MIG/yolov10: YOLO…...

el-upload 上传文件 入参格式为form-data格式,入参字段为code、name、type、file(文件)的形式,如何实现?

el-upload 是 Element UI 中用于文件上传的组件。如果你需要上传文件并将其封装为 form-data 格式,并且包含字段如 code、name、type 和 file,你可以通过自定义 before-upload 或 action 进行处理。 1. el-upload 的基本用法 Element UI 的 el-upload …...

VUE组件插槽使用示例,弹窗样式

在Vue.js中,插槽(slots)是一种非常强大的功能,它允许你在父组件中向子组件传递内容。插槽主要有三种类型:默认插槽、具名插槽和作用域插槽。下面是一些示例来展示如何使用这些插槽。 默认插槽 默认插槽是最简单的插槽…...

ARM嵌入式学习--第八天(PWM)

PWM -PWM介绍 PWM(pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量,通信,工控等方面 PWM的频率 是指在1秒钟内,信号从…...

新能源汽车大屏可视化第三次数据存储

任务: 将数据存放到temp.csv 链接: 1.排行页面 https://www.dongchedi.com/sales 2.参数页面 https://www.dongchedi.com/auto/params-carIds-x-9824 完善打印: 1. [{‘series_id’: 5952, ‘series_name’: ‘海鸥’, ‘image’: ‘https://…...

linux 替换yum源镜像

1. 备份源镜像 sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2. 下载国内镜像阿里云 如果没有wget可以用curl 代替 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 清华大学 sudo wget -…...

SAP:如何修改已释放的请求

SAP:如何修改已释放的请求 QQ出了一个新功能,把10年前的旧日志推给自己。这个10年前的日志,是用户反映在SE10中把请求释放后发现漏了内容,想修改已释放的请求。经调查写了一个小程序,实现用户的需求。 *&-------------------…...

js的?. 和??和||有什么区别

let a 0; let b null; let c Hello;console.log(a ?? default); // 0 console.log(b ?? default); // "default" console.log(c ?? default); // "Hello"console.log(a || default); // "default" (因为 0 是假值) console.log(b |…...

clickhouse 分布式表创建、增加、更新、删除、查询

创建分布式表 --先创建本地表 设置自动过期时间3天 CREATE TABLE IF NOT EXISTS ck_database.ck_databaseon cluster default(cluster name) (table_id String COMMENT id,item_id String COMMENT 业务id,desc Int64 COMMENT 描述,time DateTime DEFAULT now() COMMENT 数据…...

推送本地仓库到远程git仓库

目录 推送本地仓库到远程git仓库1.1修改本地仓库用户名1.2 push 命令1.3远程分支查看 推送本地仓库到远程git仓库 删除之前的仓库中的所有内容,从新建库,同时创建一个 A.txt 文件 清空原有的远程仓库内容,重新创建一个新的仓库,…...

LSTM长短期记忆网络

LSTM(长短期记忆网络)数学原理 LSTM(Long Short-Term Memory)是一种特殊的递归神经网络(RNN),解决了标准RNN中存在的梯度消失(Vanishing Gradient) 和**梯度爆炸&#x…...

ABAP SQL 取日期+时间最新的一条数据

我们在系统对接的时候,外部系统可能会推送多个数据给到我们。 我们 SAP 系统的表数据中日期和时间是作为主键的,那么如果通过 ABAP SQL 取到最新日期的最新时间呢。 解决方案: 方式 1:SELECT MAX 可以通过两个 SELECT MAX 来取…...

SAST静态应用安全测试常见的编码规则

行业优先级难易度标准标准名称数量 军工12易GJB 5369:2005GJB_5369(国家军用标准航天型号软件C语言可靠性编程规范)138军工行业最早的C语言编码标准,强制性4易GJB 8114:2013GJB_8114(国家军用标准C/C语言可靠性编程规范&#xff…...

AI相关专业名词汇总解释

1.SFT Supervised fine-tuning,“有监督微调”意味着使用有标签的数据来调整一个已预训练好的语言模型(LLM),使其更适应某一特定任务。通常LLM的预训练是无监督的,但微调过程往往是有监督的。 详解:https:/…...

【C语言】指针数组和数组指针

前言 指针数组和数组指针是C语言中经常混淆的两个概念,虽然他们的名字相似,但其含义却完全不同。 指针数组 指针数组本质是一个数组,特点是数组中的元素均为指针,其定义形式为: 数据类型 *指针名[长度] 例如 int *…...

联邦学习中:公共物品属性的一般定义

在经济学和相关领域中,公共物品属性具有特定的含义,在论文中与联邦学习数据交易等情境相关联时,其意义如下: 公共物品属性的一般定义 非排他性 公共物品一旦被提供,很难或不可能排除其他人使用。例如,路灯照亮了街道,一个人使用路灯照明并不会阻止其他人同时使用,无法…...

前端的Python应用指南(一):快速构建 Web 服务器 - Flask vs Node.js 对比

随着前端开发技术的不断发展,前端开发者的技术栈也在不断扩展。如今,前端开发者不仅要掌握 HTML、CSS、JavaScript,还要掌握后端技术,成为全栈开发者。而在后端技术的选择上,Python 和 Node.js 是两种非常流行的选择。…...

典型案例 | 旧PC新蜕变!东北师范大学依托麒麟信安云“旧物焕新生”

东北师范大学始建于1946年,坐落于吉林省长春市,是中国共产党在东北地区创建的第一所综合性大学。作为国家“双一流”建设高校,学校高度重视教学改革和科技创新,校园信息化建设工作始终走在前列。基于麒麟信安云,东北师…...

【UE5】pmx导入UE5,套动作。(防止“气球人”现象。

参考视频:UE5Animation 16: MMD模型與動作導入 (繁中自動字幕) 问题所在: 做法记录(自用) 1.导入pmx,删除这两个。 2.转换给blender,清理节点。 3.导出时,内嵌贴图,选“复制”。 …...

ROS+PX4+Gazebo仿真环境配置全流程解析

上一期文章介绍了我们即将发布的仿真平台,并提到后续需要在Ubuntu系统上进行PX4软件在环仿真。本期文章将为大家详细介绍如何配置Ubuntu环境以及安装ROS和PX4仿真环境。具体配置包括:Ubuntu 20.04 ROS Noetic PX4 Python3。 需要注意的是&#xff0c…...

STM32F103单片机HAL库串口通信卡死问题解决方法

在上篇文章 STM32F103单片机使用STM32CubeMX创建IAR串口工程 中分享了使用cubeMX直接生成串口代码的方法,在测试的过程中无意间发现,串口会出现卡死的问题。 当串口一次性发送十几个数据的时候,串口感觉像卡死了一样,不再接收数据…...

基于微信小程序的电影院订票选座系统ssm+论文源码调试讲解

第2章 开发环境与技术 本章节对开发基于微信小程序的电影院订票选座系统需要搭建的开发环境,还有基于微信小程序的电影院订票选座系统开发中使用的编程技术等进行阐述。 2.1 Java语言 Java语言是当今为止依然在编程语言行业具有生命力的常青树之一。Java语言最原始…...

解决新安装CentOS 7系统mirrorlist.centos.org can‘t resolve问题

原因 mirrorlist.centos.org yum源用不了 解决办法就是 # cd /etc/yum.repos.d/ # mv CentOS-Base.repo CentOS-Base.repo_bak # vim CentOS-Base.repoCentOS系统操作 # mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/*.repo_bak # curl -o /etc/yum.repos.d/CentOS-Linux-Ba…...

分布式系统架构3:服务容错

这是小卷对分布式系统架构学习的第3篇文章,虽然知道大家都不喜欢看纯技术文章,写了也没多少阅读量,但是个人要成长的话,还是需要往深一点的技术上去探索的 1.为什么需要容错 分布式系统的本质是不可靠的,一个大的服务…...

鸿蒙项目云捐助第十四讲云函数的初步使用

鸿蒙项目云捐助第十四讲云函数的初步使用 在开发项目的过程中,云端充分利用已成为一种驱势。云监控,云运维,云开发,云办公等等软件层出不穷,本地软件云端化也成为一种潮流。在这股大潮中,华为云也是独树一…...

【5G】5G的主要架构选项

最初,在3GPP讨论中考虑了所有可能的聚合和核心网络组合,共有八个架构选项。以下重点介绍option2、3、4和7。 1. 独立组网 (Standalone, SA) 架构选项 2 :Standalone architecture with 5G-core 特点: 5G核心网(5GC, …...

【Laravel】端口问题导致菜单打不开

以下是修改 Laravel 应用程序的端口配置&#xff0c; 修改环境变量 APP_URL 来实现 app/Providers/AppServiceProvider.php <?phpnamespace App\Providers;use Illuminate\Events\Dispatcher; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\URL…...

网络安全等级保护系统定级流程与示例

一、定级流程 安全保护等级初步确定为第二级及以上的等级保护对象&#xff0c;其运营使用单位应当依据《网络安全等级保护定级指南》进行初步定级、专家评审、主管部门审批、公安机关备案审查&#xff0c;最终确定其安全保护等级。 二、定级方法 等级保护对象的级别由两个定级…...

项目练习:若依-ruoyi系统的部署与运行(前后端分离版)

文章目录 一、我的环境二、代码下载三、数据库配置四、项目配置文件修改五、启动运行六、验证 一、我的环境 jdk&#xff1a;8 MySQL&#xff1a;5.7 Redis&#xff1a; nodejs&#xff1a;v16.13.2 npm&#xff1a;8.1.2 vue&#xff1a;5.0.8 开发工具 idea Navicat for MyS…...

【UE5 C++课程系列笔记】10——动态单播/多播的基本使用

目录 概念 申明动态委托 一、DECLARE_DYNAMIC_DELEGATE 二、DECLARE_DYNAMIC_MULTICAST_DELEGATE 绑定动态委托 一、BindDynamic 二、AddDynamic 三、RemoveDynamic 执行动态委托 ​一、Execute 二、ExecuteIfBound 三、IsBound 四、Broadcast 动态单播使用示…...

Netcat:网络中的瑞士军刀

免责声明&#xff1a;使用本教程或工具&#xff0c;用户必须遵守所有适用的法律和法规&#xff0c;并且用户应自行承担所有风险和责任。 文章目录 一、引言二、简述三、Netcat功能&#xff1f;四、参数选项五、Netcat 的常见功能六、高级用法多连接处理创建简单的代理 七、Netc…...

清理C盘小记

突然C盘就爆满了&#xff0c;想当初还是给他预留了120G的空间&#xff0c;感觉到现在也不够用了&#xff0c;担心出现死机的情况就赶紧进行了清理。有一说一&#xff0c;清理回收站是真的有用。 参考&#xff1a;C盘清理指南&#xff0c;清理出30G起&#xff0c;超详细总结&am…...

Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)

关于QT Widget 其它文章请点击这里: QT Widget 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 姊妹篇: Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF&#xff08;二…...

软件工程 设计的复杂性

复杂性代表事件或事物的状态&#xff0c;它们具有多个相互关联的链接和高度复杂的结构。在软件编程中&#xff0c;随着软件设计的实现&#xff0c;元素的数量以及它们之间的相互联系逐渐变得庞大&#xff0c;一下子变得难以理解。 如果不使用复杂性指标和度量&#xff0c;软件…...

《解决两道有趣的编程问题:交替数字和与简单回文》

在编程的世界里&#xff0c;算法和逻辑的挑战无处不在。今天&#xff0c;我们将用 Python 来解决两道有趣的编程问题&#xff0c;分别是计算交替数字和以及生成简单回文。 一、交替数字和&#xff08;Alternating Sum of Numbers&#xff09; 1. 问题描述 给定一系列整数&am…...

C语言(结构体练习)

设计一个结构体,存放一个学员信息并显示&#xff0c;存放两个学员信息&#xff0c;算他们的平均分。 #include <stdio.h> #include <string.h>// 定义结构体 typedef struct {char name[50];float score; } Student;// 函数声明 void display(Student student); f…...

Lumoz主网启航:为ETH3.0、ZK和AI提供无穷算力

一个成熟的区块链主网是技术落地的体现&#xff0c;更是项目战略布局的开端&#xff0c;预示着全球化扩展和技术创新的全面启动。12 月9日&#xff0c;Lumoz主网的正式上线为生态系统注入了强大的潜力&#xff0c;并为未来的技术发展、市场拓展和社区建设提供了坚实的基础&…...

MySQL技术:事务处理与锁机制

在现代数据库系统中&#xff0c;事务处理和锁机制是确保数据一致性和完整性的关键技术。MySQL作为一个强大的关系型数据库管理系统&#xff0c;提供了完善的事务支持和多种锁机制来处理并发数据访问。本文将深入探讨MySQL中的事务处理和锁机制&#xff0c;以及如何有效使用它们…...

uniapp炫酷导航按钮及轮播指示器组件

一个拥有炫酷动效的导航按钮和指示器uniapp组件&#xff0c;帮你构建更炫酷的官网、宣传页、产品介绍等页面。 目前测试了vue2语法在h5和微信小程序的适配&#xff0c;其他平台理论上也能用。 下载及使用方法地址&#xff1a;iliya-desgin 展示&#xff1a; 目标页面出现在可视…...

gdb调试常用指令及案例讲解

一、常用指令 运行 -g&#xff1a;使用该参数编译可以执行文件&#xff0c;得到调试表。 编译 # 运行 gdb ./a.out# 设置参数 set args -s ./data/uvd.tcl 控制参数 断点 list/l &#xff1a;list 1 列出源码。根据源码指定 行号设置断点。 b …...

LeetCode 刷题笔记

LeetCode 刷题笔记 1. 20241218 &#xff08;1&#xff09;2447 std::gcd是C17引入的一个函数&#xff0c;用于计算两个整数的最大公因数。位于<numeric>头文件中。 #include <iostream> #include <numeric> // std::gcdint main() {int a 36;int b 60…...

重新定义页签!Choerodon UI Tabs让管理更高效

01 引言 Tabs 组件通过提供平级区域&#xff0c;将大块内容进行有效的收纳和展现&#xff0c;从而保持界面整洁。但在企业应用的快速发展中&#xff0c;这样传统的页签组件已无法满足我们对界面布局和个性化展示的追求。Choerodon UI Tabs 组件通过支持多级分组、个性化配置、…...

OnlyOffice出现JWT问题和文档下载失败问题解决

一、文档安全令牌未正确形成&#xff1a; 解决方案&#xff1a;禁用jwt&#xff0c;并且重启服务 文件位置&#xff1a;C:\Program Files\ONLYOFFICE\DocumentServer\config\local.json "token": {"enable": {"request": {"inbox":fa…...

Python面试常见问题及答案3

一、基础语法相关 问题&#xff1a;Python中如何实现多态&#xff1f; 答案&#xff1a;在Python中&#xff0c;多态是一种动态类型机制的体现。比如&#xff0c;通过定义一个具有相同方法名的类&#xff0c;不同的类可以根据自身的定义实现这个方法的不同行为。例如&#xff…...

【Java学习笔记】多线程基础

并行&#xff1a;同一时刻&#xff0c;多任务同时进行 多任务分别进行 一、线程相关概念 1.程序 是为完成特定任务、用某种语言编写的一组指令的集合。 简单的说:就是我们写的代码 2.进程 &#xff08;1&#xff09;进程指的就是运行中的程序&#xff0c;比如我们使用QQ,就…...