网络编程开发及实战(上)

news2024/11/8 8:47:05

一、什么是互联网

一、什么是互联网

1、计算机网络的定义

2、计算机的分类

1)按照作用范围分类

个人局域网:热点

2)按照网络的使用者分类

公用网:缴费可以使用的网

专用网:军队

3、网络的网络

由节点和链组成

互联网:网络的网络

1)路由器也是计算机,但不是主机,传输数据是从主机到主机,但路由器是转发作用

2)什么是互联网

3)

边缘部分:主机

核心部分:广域网

4)边缘部分:主机-端系统

端系统有很大的区别,小的主机、摄像头,大的可能是昂贵的计算机

端系统的拥有者可以是个人、单位、isp

4、互联网基础结构发展的三个阶段

1)APPAnet

最初是分组交换

一个分组一个分组的发,最后在组装到一起

83年,TCP/IP协议以后,单个分组交换变成网络互联,90年APPnet结束

2)NSFnet

90年后,大型公司入驻,美国政府淡出运营

3)互联网服务提供者ISP

科研-收费公用

主干ISP全球有十几个:电信、移动、联通

地区ISP大概有十几万个

IXP:互联网交换点,方便地区ISP之间的交换

内容提供者:抖音、快手

需要服务器存放大量视频,需要庞大的网络,跟各级ISP相联,ISP越多,效率越高

4)万维网

信息的传递从文字到声音、视频

二、OSI七层体系结构

一、网络体系结构的形成

(一)计算机网络体系结构的形成

1、两个计算机之间通讯要解决很多问题

2、解决上述问题-提出了分层结构

74年,SNA-APPnet出现但是TCP/IP还没有出现

3、83年,ISO/OSI七层体系结构

此时TCP/IP还没有出现,ISO失败了

失败原因:90年代后,互联网的形成,时常被TCP/IP占领等

4、OSI变成了国际标准

(二)协议与划分层次

1、

1)语法:数据与控制信息

1+名字/2+内容

2)语义:何种控制信息

3)同步:发送之前同步发送内容,双方协调

2、协议的两种形式

3、复杂的计算机网络是层次式的

4、透明传输-QQ、微信传输

文件传输模块:文件大小、格式、名字-QQ/vx

通信服务模块:知道文件发给谁-地区信息-系统

网络接入模块:负责网络接口细节,向上层提供接入和通信服务-网络接口

5、各层需要完成的功能

1)差错控制:转发错误、数据错误

2)流量控制:发送和接收速率

3)分段和重装:下载进度条,下载完整合

4)复用与分用:

复用-一个东西被多个人使用

分用-一个人提供多个服务

tcp协议为不同应用服务是分用,不同应用服务使用同一个协议是复用

5)建立链接和释放:交换数据前后

6、计算机网络的体系结构

二、协议与划分层次

网络的体系结构:各层及其协议的构成

实现:遵循体系结构,用硬件和软件实现

三、OSI七层体系结构

1、除了互联网、局域网内部也可能会分层,局域网可能需要OSI模型

2、传输层/运输层

3、高层负责主机之间的数据传输,底层负责网络之间的数据传输

4、文件传输模块对应高层,通信模块和网络接口模块是底层

5、高层是本地,交给下层的数据或者怎样解析交付的数据,低层,交付的数据怎样发送出去,怎样接收数据交给高层。

6、高层

1)应用层:QQ可以聊天,抖音可以刷视频,浏览器可以浏览网页

2)表示层:QQ聊天的文字数据、抖音视频数据,接到数据后的表示

应用层处理数据,将数据变成视频,变成文字,下层数据越小传输效率越高,表示层就负责压缩和表示

3)会话层:本地的不同应用之间的通信

7、低层

1)传输层:负责数据的传输,上层应用把数据交给传输层,面对不同应用,对端口标注,不同应用对应不同端口

差错校验:端口号

2)网络层:标注不同网络的不同主机IP,从北京到上海,目的地和出发地相当于两个主机,可以寻址,如何将数据从一个IP传到另一个IP

差错校验:地址

3)数据链路层:从北京到上海,出门做那趟公交,每一段怎么走,建立数据传输的通道,管理节点之间或节点和路由器之间数据传输

差错校验

4)物理层:比特流,高低电平、频率

但是物理层还是软件层面的工作,物理传输是传输媒体的工作。物理层考虑怎样解释0和1。

三、TCP/IP协议与五层体系结构

一、TCP/IP协议族四层体系结构

1、tcp/ip和osi对等关系

2、

1)实际上TCP/IP实际只有三层,网络接口层没有内容,链路层使用的各种局域网标准由IEEE委员会下属工作组负责

2)路由器只参与数据转发,不参与数据处理

3)TCP/IP协议的改变

例:Ping命令

不需要传输层,只需要网络层协议

4)理念:网络的核心部分越简单越好,IP层只只负责主机到主机之间的地址

把IP封装好,可以支持多个运输层的协议,多个运输层的协议也可以支持多个应用层的协议,IP向下又支持多个网络,有线/无线

IP支持各种异构网络,只要实现IP,就可以介入互联网

二、五层体系结构

1、应用层-应用层之上是应用APP

1)应用完成特定的功能,定义的是应用进程通信和交互的功能

2)交互的是报文

3)协议:DNS,HTTP,SMTP

2、运输层-UDP/TCP

UDP:不可靠

TCP:可靠传输

进程间的通信-用户数据宝

差错:端口号的正确性

3、网络层

IP数据报-主机和主机之间

差错:IP地址的正确性

4、链路层-节点和节点之间

差错:比特差错

0010-0100

1)丢弃出错

2)可靠传输-检查出错

封装成帧

5、物理层

数字信号-模拟信号

6、服务器提供服务

四、IP地址与端口号

一、分类IP
(一)IP地址及其表示方法
1、ip地址
1)32位,4字节
2)点分十进制
3)示例
2、ip两级结构
1)ip是唯一的,但同一个局域网主机的ip可能相同,从同一个局域网发送信息被封装成一个ip
2)发送信息给主机,先发送对应ip到局域网,再从局域网通过其他技术分发到对应主机
 3、ip的分类
1)
A:0~127-网络号占8位
B:128~191:网络号占16位
C:192~224:网络号占24位
D:224~
2)多归属主机:一个主机通过多个两个网卡连接两网络,该主机同时拥有两个ip地址
3)路由器:一个路由器至少有两个ip地址
4、一般不使用的特殊ip
1)0-0:本网络的本主机
2)0-X:本王网络主机号位X的主机,不是完整的ip地址
3)全1-全1:本网络广播,不通过路由器转发
4)Y-全1: 对网络号Y的网络上的所有主机进行广播
5)127-非全0或者全1的任何数:用于本地网络的巡回测试
6)全0或者全1都有特殊意义
5、ip分类的不足:
1)大地址块:
A:2的24次-2--- 1600万
B:2的16次-2---65533
C:2的8次-2---255
6、划分子网-解决地址浪费
(适用于B类)通过子网号,一个B类地址可以划分成多个,分给不同公司
二、无分类编址CIDR
1、斜线标记法
三、子网掩码
1、地址掩码
2、子网掩码的计算
地址掩码和ip地址按位相与
3、点分10进制的子网掩码计算
四、IPV6的表示方式
地球上的沙子都会有ip
1、0压缩
注意在任一地址中,0压缩只能使用1次
五、协议端口号
1、运输层的作用
屏蔽作用:
可靠信道和不可靠信道
2、运输层的两个协议-TCP/UDP
3、TCP/UDP的区别
4、运输层的端口
5、需要考虑的问题
1)进程的创建和撤销都是动态的,因此发送方无法识别其他及其上的进程
2)端口号
在网络传输中还需要ip地址,所以数据传输既需要ip地址,也需要端口号,端口号用于表示不同进程
0不能代表端口
端口号只具有本地意义,不同主机可以有相同的主机号
定位一个进程需要端口号和ip地址
6、协议端口号
常用的熟知端口
服务器的端口比较重要,是分用的
7、BSD端口规则
用户自定义5000以下的端口,有可能会和其他应用程序冲突
自定义范围建议:5000、8888
六、字节序以及IP地址转换
(一)主机字节序和 网络字节序
各个字节的存储顺序
实际运算是小端,符合计算规律
网络通信是大端,符合读字符
判断是大端还是小端的代码:
(二)字节序转换函数
(三)IP地址字节序转换函数
字符串转换成32位的数据
数据转换成字符串,支持IPv6
1.请简要总结网络字节序形成的原因,以及网络编程中对应的处理方法。
计算机的内部处理都是小端字节序。在计算机内部,小端序被广泛应用于现代 CPU 内部存储数据;而在其他场景,比如网络传输和文件存储则使用大端序。为了避免不同类别主机之间在数据交换时由于对于字节序的不同而导致的差错,引入了网络字节序。
主机字节序到网络字节序
        u_long htonl (u_long hostlong);
        u_short htons (u_short short);
网络字节序到主机字节序
        u_long ntohl (u_long hostlong);
        u_short ntohs (u_short short);

五、socket套接字及TCP实现框架

一、socket套接字

(一)socket套接字

1、本阶段的编程基于应用层的编程实现

2、体系结构:各层及其协议

实现:遵循体系结构,硬件或软件完成

3、常见的网络编程接口

4、socket套接字-抽象概念

socket在五层结构中上面是应用层,下面是传输层,由内核负责

socket用于实现各种功能

(二)socket常用API介绍(函数接口)

1、AIP

可以通过以上函数写中继程序代码

1)创建套接字-设置套接字类型-协议0

2)绑定通信结构体-通信结构体是IP地址和端口号-定位进程

3)3-4函数用于服务端

4)向服务端发起连接请求-用户端

2、三元组

这里的协议主要是TCP和UDP协议

和socket所在的层位置相关

3、绑定ip地址和端口号

通用地址族结构体

sa_family:

AF_UNIX:本地通信

需要文件地址

AF_INET:IPv4

AF_INET6:IPv6(基本不用)

因为绑定通信结构体不能区分本地还是网络,所以有一个通用,然后强制转化

addrlen参数:是用来统一不同的通信方式结构体宽度不同的问题(ipv4/ipv6)

3、网络编程的套接字

TCP/UDP/原始套接字

原始套接字可以访问底层协议

用ICMP实现ping命令

流和数据报套接字都不需要设置协议,一对一,原始套接字对网络层有多个协议可以选择

4、套接字也属于一种文件类型

(三)TCP通信的实现过程

(一)服务端

1、创建套接字只能用socket--返回的是大于0的整数,是一个文件描述符

2、bind:绑定函数,定义通信结构体,绑定到fd上(ip,端口号,协议)

3、listen:服务器函数,tcp服务器和客户端的区别,TCP服务器是一对多,需要建立连接,用队列管理元素

listen负责队列的长度

sockfd:套接字

backlock:长度

4、accept:真正实现通信,把客户端出队,生成newfd套接字,和客户端一对一连接,accept之后才能真正和客户端连接

处理客户端发来的信息,出队队列的地址信息

(二)客户端

1、connect

不需要socket

和绑定函数参数相同

函数总结:

1、int socket(int domain,int type,int protocol);

根据指定的地址族、数据类型和协议来分配一个套接字的描述字及其所用的资源的函数

domain:协议族/域:AF_INET(IPv4),AF_INET6(IPv6),AF_UNIX(本地)

type套接口类型:TCP协议、UDP协议、protocol:一般为0。

2、int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);绑定通信结构体,套接字绑定到一个ip,并制定一个端口号。

3、int listen(int sockfd,int backlog);监听套接字,使主动连接套接字变为被动连接套接字,使一个进程可以接收其他进程的请求。

典型的服务器程序可以同时服务于多个客户端,当有客户端发起连接时,服务器调用的accept()返回并接受这个连接,如果有大量的客户端发起连接而服务器来不及处理,尚未accept的客户端就处于连接等待状态,listen()声明sockfd处于监听状态,并且最多允许有backlog个客户端处于连接待状态,如果接收到更多的连接请求就忽略。listen()成功返回0,失败返回-1。

4、int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);处理客户端发起的连接,生成新的套接字,用于服务端,接收客户端的连接请求,成功返回一个sockfd为文件描述符,用于和客户端通信。

5、int connect(int sockfd,const struct sockaddr,socklen_t addrllen);向服务器发起连接请求

二、TCP通信的实现过程

六、TCP服务器的实现

一、TCP服务起的实现(理论)

(一)socket函数与通信域

1、socket函数

1)协议为0,流式对应唯一的TCP

2)通信地址族

(二)bind函数与通信结构体

通用地址族

1、 通信地址族和通信结构体的关系

2、强转

3、IPv4地址族-三元组

示例:

(三)listen函数和accept函数

backlog:任意函数

二、TCP服务器的实现代码

1、本地环回地址

2、服务端代码结果

空格两次因为buf缓冲区自带一次换行符

3、服务器代码

三、TCP服务器客户端代码

1、客户端的实现要在服务端打开的情况下

2、客户端代码

四、代码优化

1、ip,端口号用main传参的方式

2、三个参数分别是./server ip 端口号

3、优化结果

4、优化代码

client.c

server.c:

七、TCP并发实现

一、TCP多进程并发

1、关闭服务端客户端,先关客户端再关服务端,先关服务端再关客户端,会出现服务端仍然再使用,影响下次使用

解决办法:

2、使用父子进程循环创建并发进程

客户端代码不变,服务端代码:

2、accept接收客户端函数

1)定义两个变量

2)设置ip

3、把代码放到网络上运行

将目录下的所有文件上传到申请的服务器中

实现网络通信:

服务器本地测试:

注册端口号1024~49151

动态端口号49151~65535

服务器上的端口是注册端口号

二、僵尸进程处理

当客户端关闭,子进程结束,但服务端没有关闭,父进程没有回收子进程,会产生僵尸进程

解决:

增加信号机制

SIGCHID:子进程结束,通知父进程

sigaction信号函数

替换为signal函数

三、TCP并发多线程

代码:/net/server1.c

八、实现UDP通信

一、函数接口扩展与UDP通信实现流(一)write/read到send/recv

前三个参数:send和read相同,recv和write相同

MSG_PEEK:123读走,下次还是123

(二)sendto与recvfrom

struct sockaddr *arc_addr:

recvfrom:相当于把接收到的客户端的信息放到了结构体内。

sendto:发送到通讯结构体指定的套接字中

(三)UDP通信的实现过程

1、置空函数

bzero();

头文件:#include<strings.h>

2、atoi:将数字字符串转换成整数

‘8888’->8888

3、htons:网络字节序和主机字节序的转化

4、inet_aton:将点分十进制的字符串转换成一个32位的网路字节序的二进制

5、如果需要缓冲区,缓冲区是需要定义的

BUFSIZ:8192

二、UDP服务器代码

三、UDP客户端代码

服务端客户端通信:

关闭客服端重启,服务端依旧可以收到(和tcp不同)

客户端代码:

九、TCP是如何实现可靠传输的

个功能

URG:紧急指针,置1有效,有一个紧急数据/命令

ACK:确认号,ACK为1,确认号有效

PSH:数据传完了,可以交付给应用,再确认信息中,客户端接收到服务端的缓冲区将满,催促服务端刷新缓冲区

RST:TCP通信过程中发生错误,置1中断

SYN:置1,发起一个连接请求,三次握手

FIN:置1,断开连接,四次挥手

8)紧急指针:紧急数据写到最前

面,紧急数据从哪结束,紧急指针是结束位置

9)窗口:窗口的大小,一次性发送数据的大小

10)检验和:检验TCP数据包的数据是否正确,没有问题交给应用,链路层检验的是bit位,网络层只检验包头,运输层检验整个数据包,以2字节进行计算,和链路层双保险,简单检验。

八股文:csdn-TCP协议中可靠传输的原理

十、TCP连接管理与UDP协议

一、三次握手

1、序号:seq

确认号:ack

2、连接建立-三次握手

 三次握手可以避免:A发送一次,由于没有收到ACK,重新发送,导致B收到重复的报文

3、三次握手的过程

1)服务端创建序列打开

2)客户端发送连接请求报文段

SYN:请求连接

SYN置1,不携带数据,弹药消耗一个序号

3)服务器回应

seq:服务器的序号是y

ack=x+1

y也被消耗1

4)客户端发送

下次发送数据从y+1开始

ACK:一个信号

ack:数据序号

建立连接:

避免SYN请求再次发送

二、四次挥手

1、通讯结束后,通讯双方都可以发起释放连接

2、四次挥手过程

1)第一次回收

tcp不携带数据也会消耗一个u

2)二次挥手

3)三次挥手

A处于关闭状态,没有数据要再次发送,C处于半关闭状态,可能有数据还未发送

4)四次挥手

A收到报文后发送一个确认

确认重传

四次挥手,中间的两次有可能会合并,C发送的数据只有几个字节,有可能和二次挥手一起发完

3、定时器

MSL:最大报文生存周期,C的第二次,没有收到第四次确认,可能重传第三次

2MSL:发送第四次后,C没有接收到,2MSL周期内没有冲床,说明第四次没有问题,第四次重传时间也不会超过2MSL

4、保活计时器

2小时内没有发送客户信息,发送探测报文,没有相应,客户端出现故障,终止连接

三、wireshark介绍

1、运行抓包工具wireshark

sudo wireshark

2、设置抓包内容为icmp

3、ping虚拟机抓包

正好四次:

四、wireshark抓包实验

1、虚拟机巡回抓包不会显示,因为数据不过网卡,只有过网卡的数据才会有显示。

2、https的端口号是443,用的是tcp协议,访问自己的端口号小于1024,需要加sudo

3、连接百度,抓包

4、三次握手

5、四挥手

五、UDP协议

1)无连接

2)不保证可靠交付

3)面向报文,UDP一次交付一个完整的报文

4)没有拥塞控制

5)一对一,一对多,多对多

6)首部开销小,只有8个字节

发送和接收都是一个报文

长度:UDP数据报的长度

检验和:检验数据包的正确性

伪首部:UDP长度和长度相同

十一、IP协议与ethernet协议

一、IP包头-IP数据报的首部格式

(一)IP协议作用和意义

1、链路层-IEEE802组织

2、互联网络

1)路由实现的是ip协议,加路由转发协议等

2)无论是有线还是无线传输,都需要用到ip网

3、透明传输/互联网

TCP/ip的一个含义:运输层和网络层

卫星传输数据,路由接收

(二)IP数据包首部格式

1、版本:一般是IPv4

2、首部长度:4字节*5最少20字节

有可选字段

3、区分服务:优先级

一般情况不使用,使用时才起作用

4、总长度:16位,0~65525

5、标识:16位,随机数,相同的标识是一组

标志:3bit,目前只用了2位

MF:MF = 1,后面还有分片

MF = 0,最后一个分片

DF(最低位):DF=0允许分片

片偏移:8个字节为偏移单位

7、生存时间:

有些数据不能到达目的地,会在路由之间游走,生存时间可通过路由器数量,最大255,每跳一次减一

8、协议:交付或者接收是标记TCP/UDP或者其他协议

9、首部检验和:只检验首部

10、协议字段指出将数据部分交给哪一个进程

11、ip协议的子协议:ICMP、IGMP

(三)IP数据报分片

1、为什么要分片:在网络中传输,路由器转化数据,但是路由器没有

主机内存大,CPU高,所以内存要更高效的利用

2、MTU是ip数据报的最大长度-1500

3、ip分片

最大数据段是1400

二、以太网包头-链路层协议

1、广播信道-以太网

2、以太网的MAC帧

链路层数据长度最大是1518,MTU1500+目标、源、类型、FCS

最小是64字节

FCS内有CRC算法,循环冗余校验

3、

帧的长度不是整数个字节:由物理层提交,不能多bit

以太网不负责重传丢弃的帧

十二、UNIX域套接字

一、UNIX域套接字理论

(一)流式套接字

只需要套接字文件的路径,不需要ip和端口

(二)域套接字

二、UNIX域流式套接字实现

man bind:示例代码

server代码:

客户端:

实现代码:

三、UNI域数据报套接字实现

1、写入代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(七)QVTKOpenGLNativeWidget中显示坐标轴

为了方便观察图像的方向&#xff0c;位置以及旋转情况&#xff0c;想在窗口中添加一个坐标轴显示&#xff0c;并且这个坐标轴是随着窗口的旋转变动的&#xff0c;在网上找了很多例子&#xff0c;但是最后就是不显示坐标轴。 在此记录一下。 一、坐标轴相关类简单介绍 1.vtkA…

LabVIEW生成和打印条形码

LabVIEW生成和打印条形码 想在LabVIEW中生成条形码然后打印条形码。但是&#xff0c;当尝试使用任何一个打印VI来从LabVIEW打印条形码字体时&#xff0c;打印机中的字体是扭曲的。该如何解决这个问题&#xff1f; 首先&#xff0c;需要条形码字体。如果没有&#xff0c;可以从…

水质分析仪MQTT应用案例

水质分析仪MQTT应用案例 一、公司介绍 某仪器股份有限公司&#xff0c;集研发&#xff0c;生产&#xff0c;销售于一体的水质分析仪器公司。产品主要包括PH/ORP分析仪&#xff0c;电导度分析仪&#xff0c;溶氧分析仪&#xff0c;离子浓度分析仪&#xff0c;浊度分析仪及重金…

靠做网络安全,工资是同龄人的5倍:赚钱真的不能靠拼命!

最近在知乎看到一个测试&#xff0c;特扎心&#xff1a; 以下三种情况&#xff0c;哪个最让你绝望&#xff1f; ❶ 每月工资去掉开销还存不到3千&#xff1b; ❷ 家人突然急病住院&#xff0c;医药费10万&#xff1b; ❸ 同班的家长都在争先恐后给孩子报名各种辅导班、兴趣…

【python】文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景&#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词&#xff0c;可能需要先科普一下关于文件系统的知识&#xff0c;但是这里我们并不浪费笔墨介绍这个概念&#xff0c;请大…

实用API管理平台推荐:Apipost

在数字化时代&#xff0c;API已成为企业和开发者实现数据互通、应用集成的重要桥梁。然而&#xff0c;随着API数量的不断增加&#xff0c;API设计、调试、文档和测试等工作也变得越来越复杂。为了解决这一痛点&#xff0c;一款名为Apipost的API协同研发工具应运而生&#xff0c…

凝聚生态合力|汉得智慧营销中台O2与燕千云深度集成,助力企业数智化发展!

数字化转型&#xff0c;引领未来。在这个科技快速发展的时代&#xff0c;数字化转型已经成为企业发展的必然选择&#xff0c;通过运用先进的技术和创新的思维&#xff0c;企业可以实现业务流程的优化和效率的提升。 数字化转型不仅仅是一种工具&#xff0c;更是一种战略&#x…

可视化工具Datart踩(避)坑指南(6)——避免多人同时编辑

作为目前国内开源版本最好用的可视化工具&#xff0c;Datart无疑是低成本高效率可供二开的可视化神兵利器。当然&#xff0c;免费的必然要付出一些踩坑的代价。本篇我们来讲一讲可视化工具Datart踩&#xff08;避&#xff09;坑指南&#xff08;6&#xff09;之避免多人同时编辑…

酷克数据发布HD-SQL-LLaMA模型,开启数据分析“人人可及”新时代

随着行业数字化进入深水区&#xff0c;企业的关注点正在不断从“数字”价值转向“数智”价值。然而&#xff0c;传统数据分析的操作门槛与时间成本成为了掣肘数据价值释放的阻力。常规的数据分析流程复杂冗长&#xff0c;需要数据库管理员设计数据模型&#xff0c;数据工程师进…

x86 架构的机载计算机,它来了!

Allspark 2-x86采用Intel酷睿11代或12代CPU&#xff0c;x86架构&#xff0c;适用于无人机等机器人运行SLAM、VIO等复杂逻辑和高精度的机器视觉任务。预装 Ubuntu 22.04或Windows 11&#xff0c;满足多种使用场景。 市面上现有的一些NUC产品&#xff0c;不仅没有针对移动机器人使…

Deepfake!黑客冒充非洲联盟主席与多位欧洲领导人通话

黑客利用人工智能冒充非洲联盟委员会主席穆萨-法基&#xff08;Moussa Faki&#xff09;与多位欧洲领导人通话。 法基的发言人 Ebba Kalondo 在 X&#xff08;前 Twitter&#xff09;上发文称&#xff0c;网络不法分子假冒法基与一些欧洲国家首都城市领导人进行了深度伪造视频通…

OFDM同步--符号定时偏差STO

参考书籍&#xff1a;《MIMO-OFDM无线通信技术及MATLAB实现》 实验图基本都截取自该本书 一、什么是STO OFDM在接收时需要做FFT&#xff0c;需要在OFDM符号周期内获得对发射信号的精确采样&#xff0c;即在去CP之后我们需要找到OFDM的起始位&#xff0c;这样进行FFT运算时才能…

千耘导航助力冬小麦抢种,农户节本增效待丰收

随着秋收工作的结束&#xff0c;冬小麦等作物进入种植期。多地趁着晴好天&#xff0c;抢抓农时&#xff0c;启动冬小麦的耕种。 为了确保粮食增产的目标顺利达成&#xff0c;贯彻落实“藏粮于地、藏粮于技”战略&#xff0c;作为主要粮食作物之一的秋季冬小麦的种植任务随之加重…

使用poco出现Cannot find any visible node by query UIObjectProxy of “xxx“怎么办

在编写脚本的时候&#xff0c;使用poco的控件识别已经是大家非常喜欢的一种方式&#xff0c;准确度很高&#xff0c;而且也很容上手。 但是有时候会出现下面这种报错&#xff0c;提示 Cannot find any visible node by query UIObjectProxy of “xxx“这个时候是不是开始着急…

网络编程开发及实战(下)

一、IO模型 一、基本概念 &#xff08;一&#xff09;I/O基本概念 1、基本概念 1&#xff09;一个完整I/O分为两个阶段&#xff1a; 用户进程空间->内核空间 内核空间->设备空间&#xff08;磁盘、网卡&#xff09; 2&#xff09;内存I/O&#xff08;无名管道&…

YOLOv5算法改进(13)— 如何去更换主干网络(2)(包括代码+添加步骤+网络结构图)

前言:Hello大家好,我是小哥谈。为了给后面YOLOv5算法的进阶改进奠定基础,本篇文章就继续通过案例的方式给大家讲解如何在YOLOv5算法中更换主干网络,本篇文章的特色就是比较浅显易懂,附加了很多的网络结构图,通过结构图的形式向大家娓娓道来,希望大家学习之后能够有所收获…

大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)

自 2006 年以来&#xff0c;在国内 Linux 技术爱好者和行业公司的鼎力支持下&#xff0c;中国 Linux 内核开发者大会已走过 17个年头&#xff0c;是中国 Linux 内核领域最具影响力的峰会之一。今年的中国内核开发者大会依然秉承历届理念&#xff0c;以“自由、协作、创新”为理…

C++学习:类

一、类的概念 类是一种将抽象转换为用户定义类型的C工具&#xff0c;它将数据和数据处理组合成一个整体。 比如股票类&#xff0c;首先要考虑如何表示股票。可以将某人持有的股票当成一个基本单元&#xff0c;数据包括他持有股票的数量&#xff0c;哪个公司的股票&#xff0c…

addEventListener与useeffect相撞的火花

const [a, seta] useState(1) const [loading, setLoading] useState(false) //用于等到某个异步操作返回结果后再允许再次触发fn函数useEffect(() > {document.addEventListener(LazShake.Event.onShakeOnce, () > {fn(listener);});}, []);useEffect(() > {setTim…