嵌入式八股---计算机网络篇
前言
这块主要是结合着LWIP去理解计算机网络中常见的面试题
OSI四层/五层/七层模型
OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层(http)、表示层(加密)、应用层。
TCP/IP分层(4层):网络接口层、网际层、运输层、应用层。
五层协议(5层):物理层、数据链路层、网络层、运输层、应用层。
- 物理层:
传递信息的媒介,比如是以太网还是光纤还是无线电 - 数据链路层:
数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等
-
2.1以太网协议:
以太网协议则是用于实现链路层的数据传输和 MAC 地址封装
-
2.2ARP协议
工作就是建立IP地址与MAC地址的映射
ARP层: ARP广播请求(当我们进入网络的时候) ARP回应(更新自己的ARP缓存表)
当我们的IP层准备发包的时候 首先会通过缓存表查询MAC地址 查询不到的话就会发出ARP请求
-
网络层
网络层负责对子网间的数据包进行路由选择,主要是IP和ICMP协议-
3.1 IP地址的格式
IP地址 = 网络号 + 主机号 IP地址一共四个字节 所以根据所占字节不同分成了四类-
IP地址的分类
A类地址:以0开头,网络号占用一个字节,第一个字节范围:0~127
B类地址:以10开头,网络号占用两个字节,第一个字节范围:128~191
C类地址:以110开头,网络号占用三个字节,第一个字节范围:192~223
D类地址:以1110开头,第一个字节范围为224~239
-
子网掩码
后来又出现了一个子网掩码 实际上就是把IP地址进一步拆分了
此时 IP地址 = 网络号 + 子网号 + 主机号
子网掩码就是表示网络号 + 子网号一共占了多少位
因为网络号根据A B C D类占用的位数固定 就能算出子网号占了多少位
-
-
3.2 特殊IP地址
回环地址:127.0.0.1
网络地址:主机号全为0
广播地址:主机号全为1
私有地址(private address)也叫专用地址,它们不会在全球使用,只具有本地意义
-
3.3 IP层的分包
如果数据包过大 IP层会讲数据包分开发送 这也就设计到了接收端的组装过程 -
3.4 IPV4和 IPV6的区别
IPV4是32位长度 IPv6是128位长度
IPV6提供身份验证和加密 IPV4不提供
包头:IPv4长度为20~40字节;IPv6固定40字节。 -
3.5 ICMP协议
主要用来检测网络通信故障和实现链路追踪
ICMP协议我们用的最多的就是Ping指令
-
-
传输层: TCP 与 UDP
第一个端到端,即主机到主机的层次(所以很有可能俩主机之间通过不同的端口建立很多链接)
但是点对点不一样 点对点是基于 MAC 地址或 IP 地址,那就是一个主机一个的形式-
4.1 TCP报文格式
- 16位源端口 + 16位目标端口
- 32位SEQ + 32 位 ACK
- TCP头部大小 + 标志位 + 窗口大小
- 校验和 与 紧急指针
- 各种的选项
- 数据
-
4.2 TCP的三次握手与四次挥手
-
三次握手
在这个过程启用 SYN 和 ACK两个标志位
第一次: 客户端发送 seq = X ack = 无效 (SYN = 1 ACK = 0)
第二次: 服务器的发送 seq = Y ack = X + 1 (SYN = 1 ACK = 1)
第三次: 客户端回应 seq = x + 1 ack = Y + 1 (SYN = 1 ACK = 1)
-
三次握手的失败重传机制
如果第一次握手消息丢失,那么请求方不会得到 ack 消息,超时后进行重传
如果第二次握手消息丢失,那么请求方不会得到 ack 消息,超时后进行重传
如果第三次握手消息丢失,那么 Server 端该 TCP 连接的状态为 SYN_RECV,并
且会根据 TCP 的超时重传机制,会等待 3 秒、6 秒、12 秒后重新发送 SYN+ACK 包 -
三次握手改成两次行不行
不行 为什么不行 我们来分析三次握手
第二次握手结束的时候,能说明: 客户端有发送的能力 服务器有接收正确信息的能力
不能说明的是: 客户端到底能不能正确收到服务器发送的信息- 那么问题就来了,如果二次握手后服务器就认为建立了连接,客户端也不用回应的话,是不是可以利用这个特点进行服务器攻击呢 大量发送握手报文来占用服务器的资源
- 网络环境很复杂,假设你发送了两个第一次握手报文 结果到达时间差距很大 那第二个报文来的时候服务器又重新建立连接了,可是你的客户端对此一无所知,不知道连接发生改变了
-
四次挥手
- 客户端发送请求关闭 FIN = 1 seq = C ack无效
- 服务器收到之后回应一下 ACK = 1 seq: -; ack = C + 1
- 服务器在处理完后在发送 FIN = 1 seq : D ack:无效
- 客户端发送表明知道服务器断开 ACK = 1 seq:无效 ack: D + 1
-
四次挥手改为三次行不行
在某些状态下时可以的
四次挥手的主要原因在于服务器可能还没处理完客户端发送过来的消息
没有数据要发送并且「开启了 TCP 延迟确认机制」,那么第二和第三次挥手就会合并传输,这样就出现了三次挥手
= -
为什么客户端要等待2MSL?
保证客户端发送的最后一个 ACK 报文能够到达服务器,因为这个报文可能丢失,站在服务器的角度看来,我已经发送了 FIN+ACK 报文请求断开,客户端没有给我回应,应该我的请求报文没有收到,于是服务器就会重新发送一次,客户端就能够在这个 2MSL 时间内收到这个重传的报文,接着回应报文
防止已失效的连接请求报文段出现在本连接中。
-
-
4.3 TCP是如何保证传输的可靠性的?
-
数据校验和
-
确认应答机制(SEQ 和 ACK)
只要收到数据 必须发送ACK(确认报文) -
超时重传机制
超时没有收到ACK发送端就重传 -
快速重传机制
当发送方连续收到3个重复的ACK(冗余ACK)时,认为该ACK对应的数据包已丢失,立即重传该数据包。
-
窗口控制机制
窗口大小就是无需等待确认而可以继续发送数据的最大值,如果不使用窗口控制,每一个没收到应答的数据都要重发
-
-
4.4 TCP的滑动窗口原理(流量控制)
为什么会有?–TCP的分片传输机制 和 ACK确认要求
如果我们的发送端真的是发一个等待确认再发下一个的话 那实在是太慢了 所以我们可以一下子发很多,但这意味着我们要记录好这些包的状态才行
比如说发送端的报文,有以下几种状态:
发送端未发送,同时接收端也未准备接收的
发送端未发送,同时接收端也准备接收的 (窗口内)
发送端已发送,但是还没收到ACK (窗口内)
发送端已发送, 收到了ACK
同样的接收方的报文也会有以下几种状态
-
4.5 TCP的慢启动(拥塞控制)
TCP在最开始的阶段:先将拥塞窗口cwnd设置1个mss长度,然后有一个以指数形式增长的过程称为慢启动
当CWND >= ssthresh(慢启动阈值,默认约64KB)时,转为线性增长:
窗口增长方式:每RTT时间,CWND += 1 MSS。
目的:避免网络拥塞,谨慎增加发送速率。 -
4.6 UDP建立连接
UDP每次通信都需要指定好IP地址和端口号
-
4.7 TCP与UDP的区别
- 可靠性
TCP保证了数据传输的可靠性 但是UDP不保证(不会重传的没收到就GG),UDP的数据是可能乱序的 - 连接方式
TCP属于面向连接(得保证连得上),UDP则不关心直接发送 - 数据传输效率
TCP的效率肯定没有UDP高 - 流量控制与拥塞控制
这些UDP都没有 很有可能一个发送速度快一个接受处理的慢就丢包了 - 应用场景
- 可靠性
-
4.8 粘包现象与问题解决
-
粘包与半包问题
核心就是在应用层:你认为需要接收的A和B数据之前没有联系 但是由于发送的机制 实际上这俩数据是一起接收到的
-
解决
应用层发送和接受缓冲区的大小完全一样:每次只发10个 每次只接受10个
用特殊字符结尾(比如换行符)
自定义包头和包尾
=
-
-
4.9 TCP与UDP通信过程相关的API
-
T4.10 CP的分包和IP层的分包
-
-
应用层: DNS HTTP DHCP SMTP
-
6.1 DNS 从IP地址到网址的映射
浏览器缓存中是否存在—>本地HOST文件是否存在—>去访问DNS服务器了- 在浏览器中输入www.baidu.com后执行的全部过程?
- DNS解析 然后发起一次HTTP对话
- 传输层封包
- 网络层: 查找路由表确定如何到达服务器
- 链路层,包通过链路层发送到路由器
- 在浏览器中输入www.baidu.com后执行的全部过程?
-
6.2 HTTP协议
默认端口:80 HTTPS的端口为443
- 特点
- 明文传输
- 基于 请求–相应模型
- 灵活支持多种数据
- HTTP包括哪些请求?
GET:请求读取由URL所标志的信息。
POST:给服务器添加信息(如注释)。
PUT:在给定的URL下存储一个文档。
DELETE:删除给定的URL所标志的资源 - GET和POST的区别
Get是从服务器上获取数据,Post是向服务器传送数据。
Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。
Get传送的数据量小,不能大于2KB;post传送的数据量较大,一般被默认为不受限制。
根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的
- 特点
-
6.3 DHCP:IP地址的自动分配
-
6.4 SMTP:邮件协议 FTP:文件传输协议 MQTT: TCP上层的一个简单封装
-
路由
相关文章:
嵌入式八股---计算机网络篇
前言 这块主要是结合着LWIP去理解计算机网络中常见的面试题 OSI四层/五层/七层模型 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层(http)、表示层(加密)、应用层。 TCP/IP分层(4层):网络接口层…...
使用 3D Layout 和 Icepak 进行 PCB、DCIR 和热分析
在本教程中,您将学习如何使用 3D Layout 执行 DCIR,然后使用功率损耗数据执行热分析。热分析将使用电子桌面 Icepak 进行。SIwave 及其嵌入式 icepak 可用于执行相同的分析,但有一个例外。电子桌面 Icepak 是一款功能齐全的 3D 工具。用户可以…...
UE5 Windows游戏窗口置顶
参考资料:UE5 UE4 项目设置全局置顶_ue4运行设置置顶-CSDN博客 修改完build.cs后,关掉重新生成解决方案。(不然可能编译报错,在这卡了半个小时) 不知道怎么用C的,可以用这个 Topmost - Keep Editor/Game w…...
【Linux】进程管理
一、程序与进程区别 1.程序: 存放在磁盘文件可执行文件(静态存在) 特点 静态性:程序是静态的,它只是一组指令的集合,在未被执行时,不会占用计算机的运行资源,也不会产生任何实际的…...
Android Studio PNG转SVG方法总结
在 Android Studio 中,将 PNG 位图转换为 SVG 矢量图并非直接内置的功能,但你可以通过以下步骤实现目标: 方法 1:使用在线转换工具 访问在线转换网站 推荐工具: CloudConvert Vector Magic OnlineConvertFree 上传…...
第6篇:Linux程序访问控制FPGA端LEDR<四>
Q:如何设计.c程序代码控制FPGA端外设LEDR动态显示? A:我们来设计程序实现简易计数器:将上一期点亮LEDR的程序代码*LEDR_ptr 0x2aa 改为 *LEDR_ptr *LEDR_ptr 1,读取LEDR端口的data寄存器,将寄存器值递增…...
DP扰码模块verilog仿真
在DisplayPort 1.4协议中,为了减少EMI,在8B/10B编码之前,需进行扰码Scramble。扰码用到了16-bit LFSR,表达式如下。 LFSR每移位8个bit后,用最高有效 8 位以相反的位顺序与一个字节数据进行异或从而实现数据加扰/解扰。…...
协作焊接机器人的应用场景
协作焊接机器人凭借其灵活性、安全性和高效性,在多个领域有着广泛的应用场景,以下是一些主要的方面: 汽车制造 车身焊接:在汽车车身生产线上,协作焊接机器人可与工人协同工作,完成车身各部件的焊接任务。例…...
深入解析计算机操作系统的底层架构与核心模块功能
深入解析计算机操作系统的底层架构与核心模块功能 一、操作系统底层架构总览 操作系统处于计算机系统的核心地位,是计算机硬件与用户之间的关键纽带,承担着资源管理者的重要角色。它负责统筹管理计算机的各类资源,如CPU、内存、存储设备以及…...
Elasticsearch 官网阅读学习笔记01
Elasticsearch 官网阅读学习笔记01 什么是 Elasticsearch? Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Elasticsearch 可为所有类型的数据提供近乎实时的搜索和分析。无论您拥有的是结构化或非结构化文本、数值数据还是地理空间数据 Elastic…...
玩转Docker | 使用Docker搭建Van-Nav导航站
玩转Docker | 使用Docker搭建Van-Nav导航站 前言一、Van-Nav介绍van-nav 简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署Van-Nav服务下载镜像创建容器检查容器状态检查服务端口安全设置四、访问Van-Nav应用访问Van-Nav首页登录后台管理五、添…...
若依 前后端部署
后端:直接把代码从gitee上拉去到本地目录 (https://gitee.com/y_project/RuoYi-Vue ) 注意下redis连接时password改auth 后端启动成功 前端:运行前首先确保安装了node环境,随后执行: !!一定要用管理员权限…...
笔记:头文件与静态库的使用及组织方式
笔记:头文件与静态库的使用及组织方式 1. 头文件的作用 接口声明:提供函数、类、变量等标识符的声明,供其他模块调用。编译依赖:编译器需要头文件来验证函数调用和类型匹配。避免重复定义:通过包含保护(如…...
PostgreSQL-常用命令
PostgreSQL 提供了丰富的命令行工具和 SQL 命令,用于管理和操作数据库。以下是一些常用的命令和操作: 1. 数据库管理 创建数据库 CREATE DATABASE dbname; 删除数据库 DROP DATABASE dbname; 列出所有数据库 \l SELECT datname FROM pg_database;…...
如何在 Postman(测试工具) 中实现 Cookie 持久化并保持同一会话
在开发基于 Spring Boot 的 Web 应用时,使用 Session 存储验证码等敏感信息是常见的做法。然而,在调试接口时,你可能会遇到这样一个问题:第一次请求接口时存入的验证码在第二次请求时无法获取,原因往往是两个请求所使用…...
粘性定位(position:sticky)——微信小程序学习笔记
1. 简介 CSS 中的粘性定位(Sticky positioning)是一种特殊的定位方式,它可以使元素在滚动时保持在视窗的特定位置,类似于相对定位(relative),但当页面滚动到元素的位置时,它会表现得…...
谷歌浏览器极速安装指南
目录 📋 准备工作 步骤一:访问官网 🌐 步骤二:获取安装包 ⬇️ 步骤三:一键安装 🖱️ 步骤四:首次启动设置 ⚙️ 步骤五:开始探索! 🌟 💬 …...
【2024年最新IEEE Trans】模糊斜率熵Fuzzy Slope entropy及5种多尺度,应用于状态识别、故障诊断!
引言 2024年11月,研究者在测量领域国际顶级期刊《IEEE Transactions on Instrumentation and Measurement》(IF 5.6,JCR 1区,中科院二区)上发表科学研究成果,以“Optimized Fuzzy Slope Entropy: A Comple…...
无人机击落技术难点与要点分析!
一、技术难点 1. 目标探测与识别 小型化和低空飞行:现代无人机体积小、飞行高度低(尤其在城市或复杂地形中),雷达和光学传感器难以有效探测。 隐身技术:部分高端无人机采用吸波材料或低可探测设计,进…...
Flink的数据流图中的数据通道 StreamEdge 详解
本文从基础原理到代码层面逐步解释 Flink 的数据通道 StreamEdge,尽量让初学者也能理解。 主要思路:从概念开始,逐步深入到实现细节,并结合伪代码来逐步推导。 第一步:什么是 StreamEdge? StreamEdge 是 F…...
OpenCV 图形API(25)图像滤波-----均值滤波(模糊处理)函数blur()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用归一化的方框滤波器模糊图像。 该函数使用以下核来平滑图像: K 1 k s i z e . w i d t h k s i z e . h e i g h t [ 1 1 ⋯ …...
基于频率约束条件的最小惯量需求评估,包括频率变化率ROCOF约束和频率最低点约束matlab/simulink
基于频率约束条件的最小惯量评估,包括频率变化率ROCOF约束和频率最低点约束matlab/simulink 1建立了含新能源调频的频域仿真传函模型,虚拟惯量下垂控制 2基于构建的模型,考虑了不同调频系数,不同扰动情况下的系统最小惯量需求...
.pdf,.docx,.doc文档在一页纸上显示4页内容(详细步骤)
生活中常见一页纸上显示4页内容,我们熟知的是打印文件时,选择“每页4版”,但如果也是为了方便阅读,想要设置成一张纸上显示4页内容,又该怎么做呢?下面分享.docx和.pdf文档,一张纸上显示4页内容的…...
基于CNN-BiLSTM-GRU的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码
一、深度Q网络(Deep Q-Network,DQN)介绍 1、背景与动机 深度Q网络(DQN)是深度强化学习领域的里程碑算法,由DeepMind于2013年提出。它首次在 Atari 2600 游戏上实现了超越人类的表现,解决了传统…...
高并发场景下的 Java 性能优化
在当今数字化时代,高并发场景已成为众多 Java 应用面临的常态,如电商大促、在线直播等活动期间,系统需承受巨大的访问压力。因此,Java 性能优化在高并发场景下显得尤为重要。传统的人工编写代码优化方式不仅耗时费力,还…...
Java 设计模式:观察者模式详解
Java 设计模式:观察者模式详解 观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会收到通知并自动更新。这种模式广泛…...
Linux vagrant 导入Centos
前言 vagrant 导入centos 虚拟机 前提要求 安装 virtualbox 和vagrant<vagrant-disksize> (Linux 方式 Windows 方式) 创建一键部署centos 虚拟机 /opt/vagrant 安装目录/opt/VirtualBox 安装目录/opt/centos8/Vagrantfile (可配置网络IP,内存…...
linux Ubuntu 如何删除文件,错误删除后怎么办?
一、删除文件的常用方法 命令行删除 普通删除:rm 文件名 (示例:rm old_file.txt) 强制删除(无提示):rm -f 文件名 (示例:rm -f locked_file.txt) 删除目录…...
【前端】事件循环专题
引入 以下情况是为什么呢? //q1 for (var i 0; i < 3; i) {setTimeout(() > {console.log(i);}, 1000); } // console: // 3 // 3 // 3//q2 let name;setTimeout(() > {name name;console.log(name); }, 1000);if (name) {name newname;console.log(n…...
3DMAX笔记-UV知识点和烘焙步骤
1. 在展UV时,如何点击模型,就能选中所有这个模型的uv 2. 分多张UV时,不同的UV的可以设置为不同的颜色,然后可以通过颜色进行筛选。 3. 烘焙步骤 摆放完UV后,要另存为一份文件,留作备份 将模型部件全部分成…...
【深度学习】PyTorch实现VGG16模型及网络层数学原理
一、Demo概述 代码已附在文末 1.1 代码功能 ✅ 实现VGG16网络结构✅ 在CIFAR10数据集上训练分类模型 1.2 环境配置 详见【深度学习】Windows系统Anaconda CUDA cuDNN Pytorch环境配置 二、各网络层概念 2.1 卷积层(nn.Conv2d) nn.Conv2d(in_cha…...
Spring 事务
29.Spring管理事务的方式有几种? Spring中的事务分为编程式事务和声明式事务。 编程式事务是在代码中硬编码,通过 TransactionTemplate或者 TransactionManager 手动管理事务,事务范围过大会出现事务未提交导致超时,比较适合分布…...
GPT - TransformerDecoderBlock
本节代码定义了一个 TransformerDecoderBlock 类,它是 Transformer 架构中解码器的一个基本模块。这个模块包含了多头自注意力(Multi-Head Attention)、前馈网络(Feed-Forward Network, FFN)和层归一化(Lay…...
【C语言】预处理(预编译)(C语言完结篇)
一、预定义符号 前面我们学习了C语言的编译和链接。 在C语言中设置了一些预定义符号,其可以直接使用,预定义符号也是在预处理期间处理的。 如下: 可以看到上面的预定义符号,其都有两个短下划线,要注意的是ÿ…...
【Kubernetes】Kubernetes 如何进行日志管理?Fluentd / Loki / ELK 适用于什么场景?
由于 Kubernetes 运行在容器化的环境中,应用程序和系统日志通常分布在多个容器和节点上,传统的日志管理方法(例如直接访问每个节点的日志文件)在 Kubernetes 中不适用。 因此,Kubernetes 引入了集中式日志管理方案&am…...
从 SaaS 到 MCP:构建 AI Agent 生态的标准化服务升级之路
从 SaaS 到 MCP:构建 AI Agent 生态的标准化服务升级之路 —— 以数据连接器 dslink 的技术改造实践为例 引言:AI Agent 时代的 SaaS 服务范式转型 在生成式 AI 爆发式发展的 2025 年,AI Agent 已从概念验证走向企业级应用落地,…...
Linux 入门五:Makefile—— 从手动编译到工程自动化的蜕变
一、概述:Makefile—— 工程编译的 “智能指挥官” 1. 为什么需要 Makefile? 手动编译的痛点:当工程包含数十个源文件时,每次修改都需重复输入冗长的编译命令(如gcc file1.c file2.c -o app),…...
CST入门教程:如何从SYZ参数提取电容C和电感L --- 双端口
上期解释了单端口计算S参数,然后后处理很容易提取L或C,已经满足基本需求。 这期我们看复杂一点的情况,电路中放两个端口,比如S2P: 或集总电路: 或导入SPICE: 两个端口的Y和Z参数就是四个量了,Y…...
桌面版本及服务器版本怎么查看网络源软件包的url下载路径
服务器版本: ### 利用yumdownloader工具 - 首先安装yum-utils软件包,它包含yumdownloader工具。执行命令: bash yum install yum-utils - 安装完成后,使用yumdownloader --urls <package_name>命令来获取软件包的下载UR…...
汽车零部件产线节能提效,工业网关解锁数据采集 “密码”
在汽车零部件生产领域,高效的生产监控与精准的数据采集至关重要。工业网关作为智能工厂的关键枢纽,正发挥着不可替代的作用,助力产线实现电表等多种仪表数据的采集与高效监控。 背景简析 汽车零部件产线涉及众多设备与环节,各类电…...
量化策略分类、优劣势及对抗风险解析
一、常见量化策略分类及优劣势 1. 趋势跟踪策略(Trend Following) 原理:通过捕捉价格趋势(如均线突破、动量指标)进行交易。 代表模型:海龟交易法则、Dual Thrust。 优势: 在强趋势市场&am…...
Linux调试工具——gdb/cgdb
📝前言: 这篇文章我们来讲讲Linux调试工具——gdb/cgdb: 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏:C学习笔记,C…...
SQLite + Redis = Redka
Redka 是一个基于 SQLite 实现的 Redis 替代产品,实现了 Redis 的核心功能,并且完全兼容 Redis API。它可以用于轻量级缓存、嵌入式系统、快速原型开发以及需要事务 ACID 特性的键值操作等场景。 功能特性 Redka 的主要特点包括: 使用 SQLi…...
使用 Terraform 部署 Azure landing zone
Azure 登陆区是架构完善的环境,遵循 Microsoft 针对 Azure 云架构的最佳实践。它们为团队运行工作负载提供了良好管理的基础,从而提供了可扩展性并促进了云的采用。 如果您有兴趣部署 Azure 登陆区,Terraform 是一个不错的选择。本教程概述的…...
【搭建博客网站】老旧笔记本“零成本逆袭”
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 前言博客网站搭建免费域名本地主机安装虚拟机安装宝塔及配置花生壳内网穿透 磁盘扩容 …...
XHR、FetchAxios详解网络相关大片文件上传下载
以下是 XHR(XMLHttpRequest) 与 Fetch API 的全面对比分析,涵盖语法、功能、兼容性等核心差异: 一、语法与代码风格 XHR(基于事件驱动) 需要手动管理请求状态(如 onreadystatechange 事件)和错误处理,代码冗长且易出现回调地狱。 const xhr = new XMLHttpRequest(); x…...
共享内存(与消息队列相似)
目录 共享内存概述 共享内存函数 (1)shmget函数 功能概述 函数原型 参数解释 返回值 示例 结果 (2)shmat函数 功能概述 函数原型 参数解释 返回值 (3)shmdt函数 功能概述 函数原型 参数解释…...
【3D开发SDK】HOOPS SDKS如何在BIM行业运用?
Tech Soft 3D提供了支持核心功能的软件开发工具,使开发人员可以使用Windows,Linux,OSX和移动平台等广泛的平台来构建巨大而复杂的建筑和BIM应用程序。HOOPS SDK支持多种格式的CAD导入和3D查看技术。这些技术受到了Trimble,RIB&…...
纳米软件矿用电源模块自动化测试方案分享
矿用电源模块主要是用于矿井等危险环境的一种电源系统,它可以为矿井中的仪器提供充足的电力支持。由于矿用电源经常用在危险环境中,因此对于矿用电源的稳定性要求极为严格。 纳米软件矿用电源模块自动化测试方案 测试需求分析 矿用电源模块作为矿井作业…...
pycharm中安装Charm-Crypto
一、安装依赖 1、安装gcc、make、perl sudo apt-get install gcc sudo apt-get install make sudo apt-get install perl #检查版本 gcc -v make -v perl -v 2、安装依赖库m4、flex、bison(如果前面安装过pypbc的话,应该已经装过这些包了) sudo apt-get update sudo apt…...