【deekseek】TCP Offload Engine
是的,TOE(TCP Offload Engine)通过专用硬件电路(如ASIC或FPGA)完整实现了TCP/IP协议栈,将原本由CPU软件处理的协议计算任务完全转移到网卡硬件中。其延迟极低的核心原因在于 硬件并行性、零拷贝架构 和 绕过操作系统内核 的优化设计。以下是具体分析:
1. TOE 如何硬件实现 TCP/IP?
TOE 网卡内部集成了 协议处理专用电路,直接替代操作系统的软件协议栈,关键模块包括:
- 协议状态机
硬件电路实现 TCP 连接管理(如三次握手、拥塞控制、重传逻辑),替代内核的协议栈。 - 数据封装/解析引擎
硬件自动生成 IP/TCP 头(包括序列号、窗口大小、校验和等字段),无需CPU参与。 - 内存访问单元
通过 DMA(直接内存访问)直接从应用内存读取数据或写入数据,跳过内核缓冲区拷贝。
示例:当应用发送数据时,TOE 网卡直接从用户态内存抓取数据,由硬件生成TCP/IP头并发送,全程无需CPU参与。
2. 延迟为何如此低?关键因素分析
TOE 的延迟可低至 **15微秒**(传统软件协议栈通常需要50100微秒),其核心优化如下:
(1) 硬件并行流水线
- 协议处理流水线化
TCP/IP 包头封装、分段(TSO)、校验和计算等步骤由硬件并行执行,而非CPU顺序处理。 - 专用电路加速
例如:校验和计算使用硬件加法器,速度比CPU软件循环快10倍以上。
(2) 零拷贝(Zero-Copy)架构
- 绕过内核协议栈
数据直接从应用用户态内存通过DMA传输到网卡(无需经过内核缓冲区)。 - 减少内存拷贝次数
传统软件栈需要2~4次拷贝(用户态→内核→网卡驱动),TOE仅需0次。
(3) 中断与上下文切换消除
- 无CPU中断
TOE 硬件自主处理协议逻辑,仅在必要时通知CPU(如连接异常),而传统方式每个报文均需触发中断。 - 无上下文切换
协议处理全程在硬件中完成,无需CPU从用户态切换到内核态。
(4) 低层级网络优化
- 预分配资源
连接建立时预先分配硬件队列和内存,避免动态分配的开销。 - 物理层协同
与PHY芯片深度集成,减少数据从网卡到线缆的传输延迟。
3. TOE 与软件协议栈的延迟对比
步骤 | 软件协议栈延迟 | TOE硬件处理延迟 |
---|---|---|
内存拷贝 | 10~20μs(多次拷贝) | 0μs(零拷贝) |
TCP头封装与校验和计算 | 5~10μs(CPU计算) | 0.1μs(硬件电路) |
中断处理 | 2~5μs(每个报文) | 0μs(无中断) |
协议状态机处理 | 10~30μs(内核逻辑) | 0.5μs(硬件状态机) |
总延迟(单次发送) | 50~100μs | 1~5μs |
4. 硬件实现的本质优势
- 确定性延迟
硬件电路的时序固定,不受CPU负载或操作系统调度影响。 - 协议栈“固化”
专用电路针对TCP/IP协议优化,无通用CPU的指令解码、分支预测等开销。 - 物理层直通
数据从网卡内存到网络介质的传输路径更短(如直连SerDes接口)。
5. 适用场景与限制
- 优势场景
高频交易、AI训练(参数同步)、分布式存储(NVMe-oF)、5G UPF(用户面功能)。 - 限制
- 部分高级TCP特性(如BBR拥塞控制)可能不支持。
- 需要应用和驱动显式适配(如使用内核旁路库DPDK/SPDK)。
总结:TOE 通过硬件固化协议栈和零拷贝架构,将延迟降低1~2个数量级,成为超低延迟网络的基石技术。但其部署需权衡协议灵活性、硬件成本和生态支持。
以下是 TCP Offload Engine (TOE) 的核心原理详解,涵盖其工作流程、硬件架构及关键设计思想:
1. TOE 的核心目标
将 TCP/IP协议栈的处理 从CPU完全卸载到网卡硬件,实现:
- 零拷贝(Zero-Copy):数据直接从应用内存到网卡,无需内核缓冲。
- 低延迟:硬件并行处理协议,绕过操作系统协议栈。
- CPU卸载:释放CPU资源,提升系统整体吞吐量。
2. TOE 硬件架构模块
典型TOE网卡(如Chelsio T6、Intel I350)包含以下关键硬件单元:
(1) 连接管理引擎
- 硬件状态机
维护TCP连接状态(如SYN、ACK、FIN),替代操作系统的TCP状态机。 - 快速路径(Fast Path)
已建立连接的报文直接由硬件处理,无需CPU中断。 - 并发连接数
高端TOE网卡可支持数百万并发连接(如云计算场景)。
(2) 数据分段与重组
- TSO (TCP Segmentation Offload)
将应用层下发的超大报文(如64KB)自动分割为MTU大小的TCP段。应用数据 (64KB) → 网卡硬件分割 → 发送多个1500B报文(含TCP/IP头)
- LRO (Large Receive Offload)
将多个小TCP段合并为连续的大块数据,减少CPU处理次数。
(3) 校验和与重传
- 硬件校验和计算
自动生成IP/TCP头的校验和,无需CPU参与。 - 重传队列管理
硬件检测丢包并触发快速重传(类似TCP的Fast Retransmit机制)。
(4) 内存直接访问(DMA)
- 分散-聚合(Scatter-Gather)DMA
支持非连续内存区域的直接读写,适配应用层复杂数据结构。 - 内存注册
应用预先注册内存区域,网卡通过物理地址直接访问,绕过内核拷贝。
3. TOE 数据流处理流程
以 发送数据 为例:
1. 应用写入数据 → 用户态内存(已注册)
2. 应用提交发送请求 → 通知网卡SQ(发送队列)
3. 网卡硬件:a. 根据TCP状态机封装报文(IP/TCP头)b. 执行TSO分段(若数据大于MTU)c. 计算校验和d. 通过DMA发送到网络
4. 接收方网卡:a. 重组TCP段并校验b. 通过DMA写入目标内存c. 发送ACK(由硬件生成)
4. TOE 协议栈卸载层级
协议层 | 普通网卡 | TOE网卡 |
---|---|---|
物理层 (L1) | 硬件处理 | 硬件处理 |
数据链路层(L2) | 硬件处理(MAC/VLAN) | 硬件处理 |
网络层 (L3) | 软件处理(IP分片/路由) | 硬件处理(IP分片、TTL递减、路由逻辑) |
传输层 (L4) | 软件处理(TCP状态机/重传) | 硬件处理(完整TCP状态机) |
应用层 (L7) | 依赖CPU | 部分网卡支持HTTP/TLS卸载(如DPU) |
5. TOE 性能优势
- 延迟降低
硬件处理协议头封装/解析,延迟可降至 1-5μs(传统软件栈需50μs以上)。 - 吞吐量提升
单端口支持 100Gbps+ 线速处理(如NVIDIA ConnectX-7)。 - CPU占用率
处理10Gbps流量时,CPU占用从 80% 降至 5% 以下。
6. 挑战与限制
- 协议兼容性
部分TCP扩展(如SACK、MPTCP)可能不被硬件支持。 - 内存管理开销
频繁的内存注册/注销会抵消性能增益,需结合内存池优化。 - 安全与隔离
硬件协议栈可能暴露新攻击面(如TCP状态机绕过内核防御机制)。 - 部署复杂性
需专用驱动、兼容的操作系统(如Linux Kernel ≥5.4)及应用适配。
7. 典型应用场景
- 高性能存储
分布式存储系统(如Ceph、iSCSI)通过TOE降低IO延迟。 - 金融交易系统
微秒级延迟对高频交易至关重要。 - 云计算与虚拟化
虚拟机通过SR-IOV直通TOE网卡,实现网络性能隔离。 - 视频流传输
4K/8K视频流依赖高吞吐和低抖动。
8. 验证TOE是否生效
- Linux系统
ethtool -k eth0 | grep 'tcp-segmentation' # 检查TSO状态 ethtool --show-features eth0 | grep 'tx-tcp' # 确认TCP卸载已启用
- 性能观测
使用perf
或mpstat
监控CPU利用率,对比启用/禁用TOE时的差异。
9. 未来演进:TOE与DPU/IPU融合
新一代DPU(数据处理单元,如NVIDIA BlueField)将TOE与以下功能整合:
- 可编程流水线:通过P4等语言定制协议处理逻辑。
- 存储与安全卸载:融合NVMe-oF、TLS加解密加速。
- 网络遥测:硬件级Telemetry(如延迟、丢包统计)。
总结:TOE通过硬件实现完整TCP协议栈,是超低延迟网络的基石技术,但其部署需权衡兼容性、安全性与成本。在AI、大数据等场景中,TOE与RDMA、DPU的协同将成为下一代数据中心的关键架构。
相关文章:
【deekseek】TCP Offload Engine
是的,TOE(TCP Offload Engine)通过专用硬件电路(如ASIC或FPGA)完整实现了TCP/IP协议栈,将原本由CPU软件处理的协议计算任务完全转移到网卡硬件中。其延迟极低的核心原因在于 硬件并行性、零拷贝架构 和 绕过…...
Flannel Host-gw模式的优缺点
Host-gw 模式的特点、优缺点 优点 高性能:无封装开销,数据包直接通过主机路由表转发,延迟和吞吐量接近原生网络。零额外开销:不使用隧道或封装,无额外字节,带宽利用率最高。配置简单:只需配置…...
SD-HOST Controller design-----SD CLK 设计
hclk的分频电路,得到的分频时钟作为sd卡时钟。 该模块最终输出两个时钟:一个为fifo_sd_clk,另一个为out_sd_clk_dft。当不分频时,fifo_sd_clk等于hclk;当分频时候,div_counter开始计数,记到相应分频的时候…...
zabbix最新版本7.2超级详细安装部署(一)
如果文章对你有用,请留下痕迹在配置过程中有问题请及时留言,本作者可以及时更新文章 目录 1、提前准备环境 2、zabbix7.2安装部署 3、安装并配置数据库 4、为Zabbix server配置数据库 5、为Zabbix前端配置PHP 6、启动Zabbix server和agent进程 7、关闭防…...
BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(上)
文章目录 引言一、拓扑排序的背景二、BFS算法解决拓扑排序三、应用场景四、代码实现五、代码解释六、总结 引言 在这浩瀚如海的算法世界中,有一扇门,开启后通向了有序的领域。它便是拓扑排序,这个问题的解决方法犹如一场深刻的哲学思考&#…...
【Nova UI】十六、打造组件库之滚动条组件(中):探秘滑块的计算逻辑
序言 在上篇文章中,我们完成了滚动条组件开发的前期准备工作,包括理论推导、布局规划和基础设置。现在,我们将把这些准备转化为实际代码,开启滚动条组件的具体开发之旅🌟。我们会详细阐述如何实现各项功能,…...
题海拾贝:P1833 樱花
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞,关注&am…...
集成钉钉消息推送功能
1. 概述 本文档详细描述了在若依框架基础上集成钉钉消息推送功能的开发步骤。该功能允许系统向指定钉钉用户发送文本和富文本消息通知。 2. 环境准备 2.1 钉钉开发者账号配置 登录钉钉开发者平台:https://open.dingtalk.com/创建/选择企业内部应用获取以下关键信…...
texlive 与 Texmaker 安装
一、安装 Texmaker 1、下载Texmaker 链接地址: Texmaker (free cross-platform latex editor) 点击 FREE DOWNLOAD ,点击 Texmaker_6.0.1_Win_x64.msi ,下载即可。 2、安装Texmaker 双击如下文件 若出现如下,点击更多信息 点击仍要运行 …...
Milvus(21):过滤搜索、范围搜索、分组搜索
1 过滤搜索 ANN 搜索能找到与指定向量嵌入最相似的向量嵌入。但是,搜索结果不一定总是正确的。您可以在搜索请求中包含过滤条件,这样 Milvus 就会在进行 ANN 搜索前进行元数据过滤,将搜索范围从整个 Collections 缩小到只搜索符合指定过滤条件…...
AD PCB布局时常用的操作命令
1. 框选 往右下方框选:选中矩形接触到的对象(选中整体才会被选中) 往左上方框选:选中矩形接触到的对象(选中局部,也是选中整体) 线选:快捷键S,弹出界面: …...
[免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩…...
分析Docker容器Jvm 堆栈GC信息
# 打印jvm启动参数 docker exec -ti <容器名> jcmd 1 VM.flags-XX:CICompilerCount3 -XX:InitialHeapSize1073741824 -XX:MaxHeapSize2147483648 -XX:MaxMetaspaceSize157286400 -XX:MaxNewSize715653120 -XX:MinHeapDeltaBytes524288 -XX:NewSize357564416 -XX:OldSize7…...
Java——集合基础
一、集合与数组的特点对比 1.集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 2.集合和数组的区别 共同点:都是存储数据的容器不同点:数组的容量是固定的,集合的容量是可变的 3.如果存储…...
spark MySQL数据库配置
Spark 连接 MySQL 数据库的配置 要让 Spark 与 MySQL 数据库实现连接,需要进行以下配置步骤。下面为你提供详细的操作指南和示例代码: 1. 添加 MySQL JDBC 驱动依赖 你得把 MySQL 的 JDBC 驱动添加到 Spark 的类路径中。可以通过以下两种方式来完成&a…...
http断点续传
🛑 默认的 http.server(Python 的 SimpleHTTPRequestHandler)在某些版本和实现中并不可靠地支持 HTTP Range 请求(即断点续传)。 尤其在 Python 3.7~3.10 之间的某些版本中,这种支持是不完整或不可预测的。…...
# YOLOv3:基于 PyTorch 的目标检测模型实现
YOLOv3:基于 PyTorch 的目标检测模型实现 引言 YOLOv3(You Only Look Once)是一种流行的单阶段目标检测算法,它能够直接在输入图像上预测边界框和类别概率。YOLOv3 的优势在于其高效性和准确性,使其在实时目标检测任…...
Mac修改hosts文件方法
Mac修改hosts文件方法 在 macOS 上修改 hosts 文件需要管理员权限 步骤 1:打开终端 通过 Spotlight 搜索(Command 空格)输入 Terminal,回车打开。或进入 应用程序 > 实用工具 > 终端。 步骤 2:备份 hosts 文件…...
构建你的第一个简单AI助手 - 入门实践
在当今AI迅速发展的时代,构建自己的AI助手不再是高不可攀的技术壁垒。即使对于刚接触AI开发的程序员,也可以利用现代大语言模型(LLM)API构建功能丰富的AI助手。本文将带您完成一个简单但实用的AI助手构建过程,帮助您在日常工作中提高效率。 …...
Qt在统信UOS及银河麒麟Kylin系统中进行软件开发的环境配置,打包发布和注意事项
前述 之前由于项目的产品需要,必须将原本Windows上的产品移植到信创环境,也就是现在的主流国产操作系统统信UOS及银河麒麟Kylin。 先大概讲下信创系统: 信创系统就像是中国自己打造的 “数字基建”,目的是让咱们国家的信息技术不…...
一个完整的项目示例:taro开发微信小程序
前一周完成了一个项目,体测成绩转换的工具,没做记录,。这次计划开发一个地图应用小程序,记录一下。方便给使用的人。 一、申请微信小程序,填写相应的信息,取得开发者ID。这个要给腾讯地图使用的。 二、申…...
二次封装 el-dialog 组件:打造更灵活的对话框解决方案
文章目录 引言为什么需要二次封装?封装思路代码实现1. 基础封装组件 (Dialog.vue)2. Vue中引入使用示例 封装后的优势进阶优化建议 总结 引言 在 Vue 项目中,Element UI 的 el-dialog 是一个非常实用的对话框组件。但在实际开发中,我们经常会…...
3.2 一点一世界
第一步:引入背景与动机 “一点一世界”这个概念来源于泰勒公式的思想,即通过一个点及其导数信息来近似描述整个函数的行为。这种方法在数学分析中非常有用,因为它允许我们将复杂的函数简化为多项式形式,从而更容易进行计算和理解…...
力扣第156场双周赛
1. 找到频率最高的元音和辅音 给你一个由小写英文字母(a 到 z)组成的字符串 s。你的任务是找出出现频率 最高 的元音(a、e、i、o、u 中的一个)和出现频率最高的辅音(除元音以外的所有字母),并返…...
学习日志05 java
1 java里面的类型转换怎么做?int转double为例 在 Java 里,把int转换为double有自动类型转换和强制类型转换两种方式。下面为你详细介绍: 自动类型转换(隐式转换) 由于double的取值范围比int大,Java 能够…...
4.7/Q1,GBD数据库最新文章解读
文章题目:Burden of non-COVID-19 lower respiratory infections in China (1990-2021): a global burden of disease study analysis DOI:10.1186/s12931-025-03197-7 中文标题:中国非 COVID-19 下呼吸道感染负担(1990-2021 年&a…...
do while
先进再查 import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int number in.nextInt();int count 0;do{number number / 10;count count 1;} while( number > 0 );System.out.println(count…...
MySQL 主从复制与读写分离
一、MySQL 主从复制 (0)概述 MySQL 主从复制是一种数据同步机制,允许数据从一个主数据库(Master)复制到一个或多个从数据库(Slave)。其主要用途包括: 数据冗余与灾备:通…...
CSS3 基础知识、原理及与CSS的区别
CSS3 基础知识、原理及与CSS的区别 CSS3 基础知识 CSS3 是 Cascading Style Sheets 的第3个版本,是CSS技术的升级版本,于1999年开始制订,2001年5月23日W3C完成了CSS3的工作草案。 CSS3 主要模块 选择器:更强大的元素选择方式盒…...
第十七章:Llama Factory 深度剖析:易用性背后的微调框架设计
章节引导:在模型定制的实践中,Llama Factory (github.com/hiyouga/LLaMA-Factory) 以其惊人的易用性和对多种开源大模型、多种参数高效微调方法(PEFT)的广泛支持,迅速成为开源社区的热门选择。你可能已经熟练掌握了如何…...
SpringSecurity当中的CSRF防范详解
CSRF防范 什么是CSER 以下是基于 CSRF 攻击过程的 顺序图 及详细解释,结合多个技术文档中的攻击流程: CSRF 攻击顺序图 #mermaid-svg-FqfMBQr8DsGRoY2C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…...
CSRF防范歪招
不保存到Cookie里呗 如果每次请求都强制通过请求头携带Token,并且不将Token存储在Cookie中,这种设计可以有效防御CSRF攻击。以下是具体原因和关键实现要点: 1. 防御原理 CSRF攻击的本质是攻击者伪造用户的请求,利用浏览器自动携…...
MyBatis与MyBatis-Plus深度分析
MyBatis与MyBatis-Plus深度分析 一、MyBatis原理与基础 1. MyBatis核心原理 MyBatis是一个半自动ORM框架,主要原理包括: SQL与代码分离:通过XML或注解配置SQL语句动态SQL:提供if、choose、foreach等标签实现动态SQL结果集映射…...
STM32 变量加载到flash的过程中
在STM32中,BIN文件内需要加载到RAM的数据由链接脚本(Linker Script)和启动代码(Startup Code)共同决定,具体机制如下: 一、BIN文件内容结构 STM32的BIN文件包含三类数据: Co…...
TCP核心机制
1. TCP五大核心机制 1.1. 顺序问题(稳重不乱) 背景:网络传输中数据包可能因路径不同或网络波动导致乱序到达,需保证接收方能按正确顺序处理数据。 原理: 序列号(Sequence Number)࿱…...
6.3对象序列化
在 Java 中,ObjectInputStream 和 ObjectOutputStream 是用于实现对象序列化(Serialization)和反序列化(Deserialization)的核心类。通过这两个类,可以将对象转换为字节流进行存储或传输,并在需…...
Flutter小白入门指南
Flutter小白入门指南 🚀 轻松构建漂亮的跨平台应用 📑 目录 一、Flutter是什么? 为什么选择Flutter?Flutter工作原理 二、环境搭建与命令行 安装Flutter SDK常用Flutter命令创建第一个项目 三、Flutter基础语法 变量与类型函数条…...
Python -将MP4文件转为GIF图片
给大家提供一个工具代码,使用Python,将MP4格式的视频文件,转换为GIF图片 首先先安装必要的包: pip install imageio pip install imageio[ffmpeg] 工具代码: import imageio# 视频文件路径 video_path r""…...
51c嵌入式~电路~合集27
我自己的原文哦~ 一、7805应用电路 简介 如上图,7805 集成稳压电路。 7805是串联式三端稳压器,三个端口分别是电压输入端(IN),地线(GND),稳压输出(OUT)…...
数据结构—(链表,栈,队列,树)
本文章写的比较乱,属于是缝合怪,很多细节没处理,显得粗糙,日后完善,今天赶时间了。 1. 红黑树的修复篇章 2. 红黑树的代码理解(部分写道注释之中了) 3. 队列与栈的代码 4. 重要是理解物理逻辑&a…...
GitHub 趋势日报 (2025年05月12日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1harry0703/MoneyPrinterTurbo利用ai大模型,一键生成高清短视频使用…...
ebook2audiobook开源程序使用动态 AI 模型和语音克隆将电子书转换为带有章节和元数据的有声读物。支持 1,107+ 种语言
一、软件介绍 文末提供程序和源码下载 ebook2audiobook开源程序使用动态 AI 模型和语音克隆将电子书转换为带有章节和元数据的有声读物。支持 1,107 种语言。从电子书到带有章节和元数据的有声读物的 CPU/GPU 转换器,使用 XTTSv2、Bark、Vits、Fairseq、YourTTS …...
《算法导论(第4版)》阅读笔记:p39-p48
《算法导论(第4版)》学习第 13 天,p39-p48 总结,总计 10 页。 一、技术总结 1. recurrence/recurrence equation 书里面 recurrence(递归式) 和 recurrence equation(递归方程) 指的是同一个东西。 二、英语总结(生词:2) 1. squint (1)…...
c语言第一个小游戏:贪吃蛇小游戏07
贪吃蛇吃饭喽 所谓贪吃蛇的食物,也就是创建一个和蛇身一样的结构体,只是这个结构体不是链表,也是将这个结构体设置hang和lie坐标,放进gamepic进行扫描,扫到了就也是做操作将 ## 打出来 #include <curses.h> #i…...
(七)深度学习---神经网络原理与实现
分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机场贝叶斯层次聚类隐马尔可夫模型支持向量机高斯混合聚类LDA主题模型 一.神经网络原理概述 二.神经网络的训练方法 三.基于Ker…...
VSCode中Node.js 使用教程
一、visual studio code下载与安装 二、修改vscode主题颜色 三、汉化 菜单view-->Command Palette...,输入Configure Display Language。 重启之后如下: 四、安装node.js Node.js 是一个基于Chrome V8引擎的JavaScript运行环境,使用了事件驱动、非阻…...
web 自动化之 KDT 关键字驱动详解
一、什么是关键字驱动? 1、什么是关键字驱动?(以关键字函数驱动测试) 关键字驱动又叫动作字驱动,把项目业务封装成关键字函数,再基于关键字函数实现自动化测试 2、关键字驱动测试原理 关键字驱动测试是一…...
web 自动化之 yaml 数据/日志/截图
文章目录 一、yaml 数据获取二、日志获取三、截图 一、yaml 数据获取 需要安装 PyYAML 库 import yaml import os from TestPOM.common import dir_config as Dirdef read_yaml(key,file_name"test_datas.yaml"):file_path os.path.join(Dir.testcases_dir, file_…...
基于javaweb的SpringBoot酒店管理系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
数学复习笔记 6
前言 复习一下行列式的一些基本的题。感觉网课有点没跟上了。今天花点时间跟上网课的进度。要紧跟进度,然后剩下的时间再去复习前面的内容。多复习,提升自己的解题能力。 行列式和矩阵 三年级,我现在是三年级下册。。。马上就要结束大学的…...