UDP和TCP
UDP协议
- 报文中应该包含
- 源IP,源端口号
- 目的IP,目的端口号
- UDP/TCP
- 一个进程是否可以绑定多个端口号? 可以。
- 多个进程是否可以绑定一个端口号? 不可以,因为端口号的主要作用是唯一标识一台计算机上的一个特定服务或应用程序,以便网络通信能够准确无误地发送到正确的接收者。
UDP的格式
- 16位UDP长度:就是数据的大小
- 16位UDP检验和:用于检验报文的完整性
UDP如何解包和分用?
- 解包:前八个字节是固定格式,然后根据UDP长度读取数据就可以了。
- 分用:有目的端口号,知道交付给上层的哪个进程。
UDP的缓冲区
- UDP有接收缓冲区,但没有真正意义上的发送缓冲区–>因为UDP是无连接,不可靠的,面相数据报的,不需要保证发送成功,直接交付给下一层就可以
TCP协议
传输控制协议
- 应用层将数据拷贝给了OS,未来数据的发送都有OS控制
协议格式
- 4位首部长度:表示的是报头+选项的大小;基本单位是4字节,占4比特,能表示的大小为[0,15],表示的意思为4*[0,15] = [0,60];报头是固定的格式,大小为20字节,所以实际表示的大小为[20,60].
如何解包和分用?
- 解包:固定格式,读取出报头,根据4位首部长度得到选项,剩下的就是数据了
- 分用:16位目的端口号
确认应答
- 保证TCP传输可靠性的方式之一。
- 如何保证消息被对方收到?
收到应答 - 如何保证应答被收到呢?
那就需要给对方应答,如何保证自己的应答被收到呢?这就套娃了。 - 长距离的通信没有100%的可靠性,因为总有最新的一条消息没有应答。这句话的意思也就是说老消息是有应答的。
序号和确认序号
- 确认序号 = 序号+1;表示的意义是确认序号之前的内容都已经被全部收到。
- 序号的作用:
- 对报文进行区分,可以对报文进行去重
- 报文可能是乱序的,保证报文的顺序到达
根据上面的信息只需要一个序号就可以了,为什么要有两个序号?
捎带应答机制
- 假设客户端给服务器发送数据,此时服务器接收到请求并且想要给服务器发送数据。此时如果有两个序号就可以用一个报文来完成应答和发送数据,否则就需要发送两次,应答用的是确认序号,发送数据用的是序号。
- TCP报文在很大概率上即是应答,又是数据。
16位窗口大小
- 16位窗口大小表示的是,接受缓冲区剩余空间大小。
- 万一对方来不及接收?
丢弃吗?如果丢弃就需要重新发送一份,浪费时间。并且OS不做浪费时间和空间的事,所以不是丢弃,那么怎么办呢? - 凭什么知道对方来不及接收?
根据报文中的16为窗口大小,也就可以知道对方接收缓冲区剩余空间大小来进行流量控制。 - 流量控制双方都要进行。
- 控制 != 减少;既可以是减少,也可以是增加。
面相字节流
- 缓冲区就是一个char outbuffer[N],也就是一个字符数组。
- 读写文件就是面相字节流的。
- 保证数据的完整性,需要对数据在应用层定协议,比如http。
超时重传机制
- 发送数据,在一定的时间间隔内没有收到应答,那么就认为报文丢失,就需要对数据进行重传。
- 报文丢失分为两类:1.数据丢 2.应答丢
数据丢
应答丢
- OS如何做到超时重传?
在系统方面,有时钟中断等可以来实现。
时间间隔不能太长,不能太短,更不能固定。怎么设置的?
- 以500ms为单位,指数增长。
连接管理
建立连接:三次握手
- 以客户端发起建立连接的请求为例。
客户端向服务器发送建立连接的报文,服务器应答并且服务器向客户端发送建立连接的报文,最后就是客户端应答。 - 三次握手也可以是四次握手,只不过是有捎带应答机制,将应答和数据用了同一个报文。
断开连接:四次挥手
- 断开连接需要双方同意
- 客户端发送断开连接的报文,服务器应答;服务器发送断开连接的报文,客户端应答。
connect 和 accept
- connect只是触发三次握手;accept并不参与三次握手,只是等待三次握手的结束。
为什么要有三次握手和四次挥手?
- 三次握手
- TCP是全双工的,必须保证双方通信的意愿,也就是必须双方同意。
- 以最小的代价来验证双方通信信道是通畅的。—>网络是通畅的。
- 四次挥手
TCP是全双工的,断开连接需要双方同意。
为什么要有标志位?
报文是由类型的,所以标志位用来区分报文的类型。
- ACK:应答报文,需要关心确认序号。
有捎带应答机制,所以大部分的TCP报文的ACK为1 - SYN:同步报文,建立连接
- FIN:断开连接
理解连接
- 一条连接和一个文件对应(也就是一个文件描述符fd)
- 在OS内有多个连接–>OS要对其进行管理(先描述,再组织)–>维护连接是有成本的(时间+空间)
断开连接
- close是直接关闭读写端
- shutdown可以选择性关闭读端,写端或读写端
理解TIME_WAIT
- 主动发送断开连接的一方,发送最后一次挥手后,等待两个MSL(Maximum Segment Lifetime,报文段最大生存时间)时间。
- 为什么等待两个MSL?
1.等待历史的游离报文在网络中消散
2.确保ACK被对方收到
确保所有报文段都被处理:在TIME_WAIT状态下,TCP连接可以确保所有先前发送的报
文段都被对端正确接收和处理,包括最后的ACK报文段。允许延迟的重复报文段被丢弃:如果网络中存在延迟的重复报文段(例如,由于网络拥塞
或路由问题),这些报文段可能会在连接关闭后到达。通过等待两个MSL时间,TIME_WAIT
状态可以确保这些延迟的报文段被丢弃,而不是被错误地处理为新的连接的一部分。
- TIME_WAIT时,bind失败。
为什么? 连接关闭了吗?没关闭,端口正在被使用–>端口冲突
解决办法(这个问题在HTTP时遇到过,现在讲的是原理)
setsockopt(_sockfd, SOL_SOCKET, SO_REUSEADDR,&reuse, sizeof(reuse));
流量控制
- 如何实现?
通过16为窗口大小,告知对方自己接收缓冲区的剩余空间大小(不准确)
- 16 位数字最大表示 65535, 那么 TCP 窗口最大就是 65535 字节么?
实际上, TCP 首部 40 字节选项中还包含了一个窗口扩大因子 M, 实际窗口大小是 窗口字段的值左移 M 位
窗口探测和窗口更新
- 如果接收缓冲区为0,怎么办?
通过窗口探测和窗口更新,来了解对方缓冲区是否有剩余空间
- 窗口探测就是一个裸的TCP报头
- 首次发送如何知道对方的接收能力?
三次握手是做过报文交换和窗口协商的,所以知道对方的接收能力。
滑动窗口
- 进一步理解滑动窗口
滑动窗口只需要用start和end控制就可以了
滑动窗口的大小 = 对方接收窗口的大小 (不准确)
- 串行发送,效率低
- 一次发多条数据(其实是将多个段的等待时间重叠在一起了)
- 为什么不能直接将这些数据当成一个大报文发送呢?而是一段一段呢?
数据链路层不允许发送大的报文。
问题
- 如何滑动?start,end+移动加法
start = 确认序号
end = start + 对方窗口大小
确认序号,对方窗口大小都可以从对方发来的报文的报头中获取。
流量控制是如何实现的? 通过滑动窗口 - 只能向右移动,能向左移动吗?
不能向左移动,因为左面的数据都是已发送的数据。 - 滑动窗口可以变大,变小,不变,为0吗?
可以 - 超过发送缓冲区,会导致越界吗?
可以将发送缓冲区当成一个环形数组。 - 异常丢包问题
-
滑动窗口的最左侧丢包
最左侧丢包滑动窗口不会移动。 -
滑动窗口的中间丢包
滑动窗口右移,就变成了最左侧丢包问题 -
滑动窗口的最右侧丢包
滑动窗口右移,就变成了最左侧丢包问题 -
本质都是最左侧丢包问题。
快重传
- 重传的两种情况:
- 数据到达,但应答丢包,部分 ACK 丢了并不要紧, 因为可以通过后续的 ACK 进行确认;
- 数据丢包
- 收到三次重复的确认应答,就会对数据进行补发。
- 为什么还要有超时重传?
如果发送的报文数少于三个或每次的最后几个报文不能使用快重传,超时重传是用来兜底的,快重传提高了效率。
PSH和RST
- 对方接收缓冲区剩余空间大小为0,并且也迟迟不将缓冲区中的数据交付给上层
PSH(push):告诉对方,请尽量将缓冲区的数据交给层—>侧面告诉OS数据很重要,请尽快交付 - RST(reset):链接重置
这是因为服务器没有与客户端建立连接,服务器知道建立连接错误了,所以就会向客户端发起带有RST为1的报文,重新进行三次握手建立连接。 - URG:紧急报文
情景:TCP是有序的,一些需要紧急处理的信息怎么办?
16位紧急指针:偏移量(紧急数据的位置),那么数据的大小呢?数据就是固定的1字节
- 识别并处理
- 总结以上的话题都是就端对端来讲的,以下的部分是网络方面
拥塞控制
- 大量数据包丢失–>判定当前网络拥塞–>全局层面,不止你网络拥塞,大家都网络拥塞。
- 解决办法:重传?不可以,大家都重传,那么只会加剧网络拥塞。
慢启动
拥塞窗口
- 拥塞窗口也可以控制发送的数据量。
- 发送数据量不是由滑动窗口控制吗?
发送的数据量由对方的接收能力和网络共同决定。
滑动窗口 = min(对端缓冲区剩余空间大小,拥塞窗口大小)
- 为什么是指数增长?
前期慢,但增长快(尽快让网络通信恢复)。 - 慢启动阈值 = 上次拥塞窗口大小/2
- 在阈值之后,拥塞窗口的大小是加法增大。
- 拥塞窗口为什么要一直增大?
评估网络健康情况,网络健康,拥塞等情况是一直变化的,所以需要一直增大,来评估网络的情况。
延迟应答
- 策略:
数量限制: 每隔 N 个包就应答一次;
时间限制: 超过最大延迟时间就应答一次;
- 三次握手,交换双方窗口的起始序号–>支持随机—>这样就可以一定程度上防止游离报文
粘包问题
- TCP是基于字节流的,读取应用层报文时,没有读取到完整的报文。
- 解决办法: 在应用层明确报文的边界
TCP异常
- 进程终止:文件(sockfd)生命周期随进程,会在进程终止前释放文件描述符,双方进行四次挥手
- 机器重启:重启前,关闭所有的启动的进程,之后和进程终止一样。
- 掉电/掉网: 接收端认为连接还在, 一旦接收端有写入操作, 接收端发现连接已
经不在了, 就会进行 reset. 即使没有写入操作, TCP 自己也内置了一个保活定时器, 会定期询问对方是否还在. 如果对方不在, 也会把连接释放.
另外, 应用层的某些协议, 也有一些这样的检测机制. 例如 HTTP 长连接中, 也会定期检测对方的状态. 例如 QQ, 在 QQ 断线之后, 也会定期尝试重新连接.
连接保活
相关文章:
UDP和TCP
UDP协议 报文中应该包含 源IP,源端口号目的IP,目的端口号UDP/TCP 一个进程是否可以绑定多个端口号? 可以。多个进程是否可以绑定一个端口号? 不可以,因为端口号的主要作用是唯一标识一台计算机上的一个特定服务或应…...
2025 年 1 月公链行业研报:比特币主导地位强化
2025 年 1 月公链行业研报 作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics 公链研究页面 2025 年 1 月,加密市场总市值增长 7.2% 至 2.8 万亿美元,主要区块链平台表现分化。在新的监管政策与人工智能基…...
在低功耗MCU上实现人工智能和机器学习
作者:Silicon Labs 人工智能(AI)和机器学习(ML)技术不仅正在快速发展,还逐渐被创新性地应用于低功耗的微控制器(MCU)中,从而实现边缘AI/ML解决方案。这些MCU是许多嵌入式…...
新数据结构(11)——Java类的产生和反射
反射是获取类信息的一种能力 类信息包括属性、方法、构造器、父类、接口等 类信息的来源 来自类的加载器,这是从.class文件到内存中的java虚拟器(JVM)中间的一个阶段(如下图) 类的加载器里,用Field数组存…...
智能网络感知,打造极致流畅的鸿蒙原生版中国移动云盘图文体验
背景 中国移动云盘(原“和彩云网盘”)是中国移动重磅推出的安全、智能、不限速、移动用户免流的智能云盘,致力于成为5G时代用户个人与家庭的数字资产管理中心,是中国移动继语音、短信、流量后的“第四项基础服务”。 照片、音视…...
MySQL查看视图
《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了的博客-CSDN博客 查看视图是查看数据库中已存在的视图的定义。查看视图必须要有SHOW VIE…...
量子计算的基本运算:Hadamard 门、CNOT 门、Pauli 门详解
量子计算是现代计算科学的前沿领域,它与经典计算机在处理信息的方式上有着本质的区别。量子计算机利用量子比特(qubit)的叠加态和量子纠缠等特性来进行计算,从而在某些特定任务上超越传统计算机。量子计算的核心运算单元是量子门,它们通过作用于量子比特来操控量子状态。本…...
java(spring boot)实现向deepseek/GPT等模型的api发送请求/多轮对话(附源码)
我们再启动应用并获取api密钥后就可以对它发送请求了,但是官方文档对于如何进行多轮对话以及怎么自定义参数并没有说的很清楚,给的模板也没有java的,因此我们需要自己实现。 import org.json.JSONArray; import org.json.JSONObject;import j…...
Flask flash() 消息示例
目录 安装 Flask 入门:Flask flash() 基本示例 进阶:使用 Flask-WTF Flash 登录结果消息 详解:get_flashed_messages() 详解:flash() 消息的完整生命周期 Flask 提供 flash() 用于向 用户传递临时消息,通常用于: • 表单提交成功或失败 • 用户登录、注册、退出提…...
ubuntu环境编译ffmepg支持nvidia显卡加速
文章目录 1. 安装NVIDIA驱动2. 安装CUDA&NV-CODEC2.1 安装CUDA2.2 安装NV-CODEC 3. 编译ffmpeg3.1 安装依赖3.2 下载源码安装依赖3.3 验证 4. 使用 1. 安装NVIDIA驱动 安装依赖包 sudo apt install -y ubuntu-drivers-common编辑 /etc/modprobe.d/blacklist-nouveau.conf 文…...
C++类与对象深度解析(一):从引用、内联函数到构造析构的编程实践
目录 一.引用 引用的特征:1.引用必须初始化 2.本质是别名 3.函数参数传递 4.常引用 5.函数返回值 6.权限 放大 缩小 平移 引用 vs 指针 二.内联函数 关键点说明 三.宏函数 四.类 什么是类? 简单的类 五.构造函数与析构函数 1. 构造函数&…...
SpringCloud-使用FFmpeg对视频压缩处理
在现代的视频处理系统中,压缩视频以减小存储空间、加快传输速度是一项非常重要的任务。FFmpeg作为一个强大的开源工具,广泛应用于音视频的处理,包括视频的压缩和格式转换等。本文将通过Java代码示例,向您展示如何使用FFmpeg进行视…...
Pytorch实现之粒子群优化算法在GAN中的应用
简介 简介:主要是采用了粒子群优化(PSO)算法来优化GAN的一个训练。PSO是一种是一种基于种群的随机优化技术。这种优化技术是通过粒子群进行的,粒子群在每次迭代中都会更新自己。对于给定的目标函数,这种方法利用一个搜索空间,在那里粒子群移动,找到所需的全局最小值。这…...
http+nginx
HTTP协议:超文本传输协议,Hyper Text transfer protocol(发明者:蒂姆.伯纳斯.李) 1.超文本 包含超链接(link)和各种多媒体元素的文本,这些超文本文件彼此相连,形成网状(web&…...
网络运维学习笔记 014网工初级(HCIA-Datacom与CCNA-EI)ACL访问控制列表
文章目录 ACL(Access Control List,访问控制列表)思科:实验1(标准ACL):实验2(扩展ACL):实验3(ACL在VTY的使用场景): 华为&…...
002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡
前文地址: 001 SpringCloudAlibaba整合 - Nacos注册配置中心、Sentinel流控、Zipkin链路追踪、Admin监控 文章目录 8.Feign远程调用、loadbalancer负载均衡整合1.OpenFeign整合1.引入依赖2.启动类添加EnableFeignClients注解3.yml配置4.日志配置5.远程调用测试6.服务…...
机器视觉检测中,2D面阵相机和线扫相机的区别
2D面阵相机和线扫相机是工业视觉系统中常用的两种相机类型,各有其特点和应用场景。 2D面阵相机 特点: 成像方式:通过二维传感器一次性捕捉整个场景的图像。 分辨率:分辨率由传感器的像素数决定,常见的有百万像素到几千…...
解锁观察者模式:Java编程中的高效事件管理之道
系列文章目录 后续补充~~~ 文章目录 一、引言:探索观察者模式的奥秘二、观察者模式的核心原理2.1 模式定义与概念2.2 关键角色剖析2.3 工作机制深度解析 三、观察者模式在 Java 中的实现3.1 手动实现观察者模式3.2 使用 JDK 内置的观察者模式3.3 代码示例解析与对比…...
Ubuntu编译ZLMediaKit
下载 git clone https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init安装工具 sudo apt install -y build-essential sudo apt install -y gcc g sudo apt install -y cmakesudo apt install -y build-essential cmake git libssl-dev libsdl1.…...
全面指南:使用JMeter进行性能压测与性能优化(中间件压测、数据库压测、分布式集群压测、调优)
目录 一、性能测试的指标 1、并发量 2、响应时间 3、错误率 4、吞吐量 5、资源使用率 二、压测全流程 三、其他注意点 1、并发和吞吐量的关系 2、并发和线程的关系 四、调优及分布式集群压测(待仔细学习) 1.线程数量超过单机承载能力时的解决…...
鸿蒙初学者学习手册(HarmonyOSNext_API14)_自定义动画API(@ohos.animator (动画) )
前言 在纯血鸿蒙中最具有用户特色的效果就是自定义的动画效果。在纯血鸿蒙中有多种定义方式,但是今天介绍的是ApI中的自定义动画。 注意: 动画本身具有生命周期,但是不支持在UIAbility的文件使用,简单而言就是不允许在UIAbility生命周期中…...
Grok 3.0 Beta 版大语言模型评测
2025年2月17日至18日,全球首富埃隆马斯克(Elon Musk)携手其人工智能公司xAI,在美国重磅发布了Grok 3.0 Beta版。这款被誉为“迄今为止世界上最智能的语言模型”的AI,不仅集成了先进的“DeepSearch”搜索功能࿰…...
IDEA中查询Maven项目的依赖树
在Maven项目中,查看项目的依赖树是一个常见的需求,特别是当你需要了解项目中直接或间接依赖了哪些库及其版本时。你可以通过命令行使用Maven的dependency:tree插件来做到这一点。这个命令会列出项目中所有依赖的树状结构。 打开idea项目的终端ÿ…...
学习aigc
DALLE2 论文 Hierarchical Text-Conditional Image Generation with CLIP Latents [2204.06125] Hierarchical Text-Conditional Image Generation with CLIP LatentsAbstract page for arXiv paper 2204.06125: Hierarchical Text-Conditional Image Generation with CLIP L…...
springboot整合mybatis-plus【详细版】
目录 一,简介 1. 什么是mybatis-plus2.mybatis-plus特点 二,搭建基本环境 1. 导入基本依赖:2. 编写配置文件3. 创建实体类4. 编写controller层5. 编写service接口6. 编写service层7. 编写mapper层 三,基本知识介绍 1. 基本注解 T…...
【2024 CSDN博客之星】大学四年,我如何在CSDN实现学业与事业的“双逆袭”?
前言: Hello大家好,我是Dream。不知不觉2024年已经过去,自己也马上迈入23岁,感慨时间飞快,从19岁刚入大学加入CSDN,到现在大学毕业已经整整四年了。CSDN陪伴我走过了最青涩的四年大学时光,在这里…...
在VS中通过vcpkg包管理器来安装使用qt5
常用指令 .\vcpkg install 库名 .\vcpkg install 库名版本号.\vcpkg install 库名 --trip x86-windows.\vcpkg list.\vcpkg search 库名 .\vcpkg x-all-installed --7zip PS G:\vcpkg> .\vcpkg help usage: vcpkg <command> [--switches] [--optionsvalues] [argume…...
【C++篇】树影摇曳,旋转无声:探寻AVL树的平衡之道
文章目录 从结构到操作:手撕AVL树的实现一、AVL树介绍1.1 什么是AVL树1.2 平衡因子的定义1.3 平衡的意义1.4 AVL树的操作 二、AVL树的节点结构2.1 节点结构的定义: 三、插入操作3.1 插入操作概述3.2 步骤1:按二叉查找树规则插入节点3.3 步骤2…...
CPU、SOC、MPU、MCU--详细分析四者的区别
一、CPU 与SOC的区别 1.CPU 对于电脑,我们经常提到,处理器,内存,显卡,硬盘四大部分可以组成一个基本的电脑。其中的处理器——Central Processing Unit(中央处理器)。CPU是一台计算机的运算核…...
nacos编写瀚高数据库插件
1、下载nacos源码 git clone gitgithub.com:alibaba/nacos.git 2、引入瀚高驱动 <dependency><groupId>com.highgo</groupId><artifactId>jdbc</artifactId><version>${highgo.version}</version></dependency> 3、DataSource…...
使用excel中的VBA合并多个excel文件
需求是这样的: 在Windows下,用excel文件让多个小组填写了统计信息,现在我需要把收集的多个文件汇总到一个文件中,前三行为标题可以忽略,第四行为收集信息的列名,处理每一行数据的时候,发现某一行…...
linux 安装启动zookeeper全过程及遇到的坑
1、下载安装zookeeper 参考文章:https://blog.csdn.net/weixin_48887095/article/details/132397448 2、启动失败 1、启动失败JAVA_HOME is not set and java could not be found in PATH 已安装 JAVA 配置了JAVA_HOME,还是报错解决方法:参考…...
JAVA JUC 并发编程学习笔记(一)
文章目录 JUC进程概述对比 线程创建线程ThreadRunnableCallable 线程方法APIrun startsleep yieldjoininterrupt打断线程打断 park终止模式 daemon不推荐 线程原理运行机制线程调度未来优化 线程状态查看线程 同步临界区syn-ed使用锁同步块同步方法线程八锁 锁原理Monitor字节码…...
内容中台架构下智能推荐系统的算法优化与分发策略
内容概要 在数字化内容生态中,智能推荐系统作为内容中台的核心引擎,承担着用户需求与内容资源精准匹配的关键任务。其算法架构的优化路径围绕动态特征建模与多模态数据融合展开,通过深度强化学习技术实现用户行为特征的实时捕捉与动态更新&a…...
Java 内存区域详解
1 常见面试题 1.1 基本问题 介绍下Java内存区域(运行时数据区)Java对象的创建过程(五步,建议能够默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)…...
jEasyUI 创建学校课程表
jEasyUI 创建学校课程表 引言 随着信息技术的飞速发展,教育行业也迎来了数字化转型的浪潮。学校课程表的创建和管理作为教育信息化的重要组成部分,其效率和准确性直接影响到学校的教学秩序。jEasyUI,作为一款优秀的开源UI框架,凭借其易用性、灵活性和丰富的组件,成为了许…...
利用 OpenCV 进行棋盘检测与透视变换
利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域,棋盘检测与透视变换是一个常见的任务,广泛应用于 摄像机标定、文档扫描、增强现实(AR) 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测,并…...
git-提交时间和作者时间的区别
1.介绍 定义介绍 提交时间(Committer Date):决定了提交在 Git 历史中的位置,通常影响 GitHub 上提交显示的顺序。 作者时间(Author Date):虽然不影响提交的排序,但在每个提交详情页…...
解决双系统开机显示gnu grub version 2.06 Minimal BASH Like Line Editing is Supported
找了好多教程都没有用,终于解决了!!我是因为ubuntu分区的时候出问题了 问题描述: 双系统装好,隔天开机找不到引导项,黑屏显示下列 因为我用的D盘划分出来的部分空闲空间,而不是全部,…...
基于Flask的京东商品信息可视化分析系统的设计与实现
【Flask】基于Flask的京东商品信息可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 系统能够灵活地执行SQL查询,提取出用于分析的关键数据指标。为了将这…...
期权帮|股指期货中的套期保值如何操作?
锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 股指期货中的套期保值如何操作? 一、股指期货中的套期保值准备阶段 确定套保需求,投资者依据市场预判与投资组合分析,决定是否套保。 &…...
用Chrome Recorder轻松完成自动化测试脚本录制
前言 入门自动化测试,录制回放通常是小白测试首先用到的功能。而录制回放工具也一直是各大Web自动化测试必然会着重提供的一块功能。 早期WinRunner、QTP这样的工具,自动化测试可以说是围绕录制回放开展的。近年像Selenium也提供有录制工具 Selenium IDE,Playwright也包含…...
C/C++面试知识点总结
目录 1. 指针1.1 智能指针1.2 指针和引用的区别1.3 数组和指针的区别1.4 数组指针和指针数组的区别1.5 迭代器和指针的区别1.6 strcpy 和 memcpy 的区别 2. 内存管理与分配2.1 内存分配与存储区2.2 malloc / free2.3 volatile和extern的区别2.4 拷贝构造函数2.5 预处理、编译、…...
springboot三层架构详细讲解
目录 springBoot三层架构 0.简介1.各层架构 1.1 Controller层1.2 Service层1.3 ServiceImpl1.4 Mapper1.5 Entity1.6 Mapper.xml 2.各层之间的联系 2.1 Controller 与 Service2.2 Service 与 ServiceImpl2.3 Service 与 Mapper2.4 Mapper 与 Mapper.xml2.5 Service 与 Entity2…...
助力DeepSeek私有化部署服务:让企业AI落地更简单、更安全
在数字化转型的浪潮中,越来越多的企业选择私有化部署AI技术,以保障数据安全、提升业务效率并实现自主可控。DeepSeek作为行业领先的AI开源技术,其技术可以支持企业私有化部署,企业需要一站式服务私有化部署,涵盖硬件采…...
Mac book Air M2 用VMware安装 Ubuntu22.04
安装 VMware Fusion 下载 Ubuntu 安装VMware 完成之后运行新建 将对应Ubuntu 版本拖拽 如图 选择第一个回车 选绿色 回车 为空 相关命令行 sudo apt install net-tools sudo apt install ubuntu-desktop sudo reboot 常用命令行 uname uname -a clear ll ifconfig (查…...
Spring Boot接收参数的19种方式
Spring Boot是一个强大的框架,允许开发人员通过多种方式接收和处理参数。无论是HTTP请求参数、路径变量,还是请求体中的数据,Spring Boot都能提供灵活的处理方式。本文将介绍19种不同的方式来接收参数。 1. 查询参数(Query Param…...
Linux firewalld 常用命令
本文参考RedHat官网文章How to configure a firewall on Linux with firewalld。 Firewalld 是守护进程名,对应命令为firewall-cmd。帮助详见以下命令: $ firewall-cmd --helpUsage: firewall-cmd [OPTIONS...]General Options-h, --help Pr…...
火语言RPA--Excel插入空行
【组件功能】:在Excel内指定的位置插入空行 配置预览 配置说明 在第n行之前 支持T或# 填写添加插入第n行之前行号。 插入n行 支持T或# 插入多少行。 Sheet页名称 支持T或# Excel表格工作簿名称。 示例 Excel插入空行 描述 在第3行之后插入3行。 配置 输…...
纷析云开源版- Vue2-增加字典存储到localStorage
main.js //保存字典数据到LocalStorage Vue.prototype.$api.setting.SystemDictType.all().then(({data}) > {loadDictsToLocalStorage(data) })新增 dictionary.js 放在 Utils文件夹里面 // 获取字典数据 export function getDictByType(dictType) {const dicts JSON.par…...