【计算机网络性能优化】从基础理论到实战调优
目录
- 前言
- 技术背景与价值
- 当前技术痛点
- 解决方案概述
- 目标读者说明
- 一、技术原理剖析
- 核心概念图解
- 核心作用讲解
- 关键技术模块说明
- 技术选型对比
- 二、实战演示
- 环境配置要求
- 核心代码实现
- 案例1:iPerf3带宽测试
- 案例2:TCP窗口优化
- 案例3:QoS流量整形
- 运行结果验证
- 三、性能对比
- 测试方法论
- 量化数据对比
- 结果分析
- 四、最佳实践
- 推荐方案 ✅
- 常见错误 ❌
- 调试技巧
- 五、应用场景扩展
- 适用领域
- 创新应用方向
- 生态工具链
- 结语
- 技术局限性
- 未来发展趋势
- 学习资源推荐
- 验证说明
前言
技术背景与价值
据IDC 2023年报告,全球企业因网络性能问题导致的年损失超$3000亿。优化网络性能可提升:
- 应用响应速度(降低30%-50%延迟)
- 资源利用率(带宽利用率提升至90%+)
- 用户体验(视频卡顿率降低至1%以下)
当前技术痛点
- 带宽浪费严重(平均利用率不足40%)
- 高延迟导致实时应用卡顿(视频会议/游戏延迟>200ms)
- 吞吐量瓶颈(TCP协议栈效率低下)
- 网络抖动频繁(QoS配置不当)
解决方案概述
- 精准测量:iPerf3/Wireshark性能分析
- 协议优化:TCP BBR算法调优
- 智能调度:SD-WAN动态路由
- 硬件加速:DPDK用户态协议栈
目标读者说明
- 🖥️ 运维工程师:网络故障排查与优化
- 🛠️ 开发者:构建高性能网络应用
- 📈 架构师:设计高可用网络架构
一、技术原理剖析
核心概念图解
核心作用讲解
网络性能如同高速公路系统:
- 带宽:车道数量(最大通行能力)
- 延迟:车辆到达时间(数据包传输耗时)
- 吞吐量:实际运输量(有效数据速率)
- 抖动:到达时间波动(影响实时业务)
关键技术模块说明
指标 | 计算公式 | 优化方向 |
---|---|---|
带宽利用率 | (实际流量/理论带宽)×100% | 流量整形 |
RTT延迟 | 2×传播延迟+处理延迟 | 路径优化 |
TCP吞吐量 | (窗口大小/RTT) | 窗口缩放 |
技术选型对比
场景 | 推荐工具 | 测量维度 |
---|---|---|
带宽测试 | iPerf3 | 最大传输速率 |
延迟分析 | PingPlotter | RTT波动 |
协议分析 | Wireshark | 数据包级诊断 |
流量监控 | ntopng | 实时流量可视 |
二、实战演示
环境配置要求
# Ubuntu安装测试工具
sudo apt install iperf3 traceroute tcptraceroute wireshark
核心代码实现
案例1:iPerf3带宽测试
# 服务端启动
iperf3 -s -p 5201# 客户端测试(10线程,60秒)
iperf3 -c 192.168.1.100 -p 5201 -P 10 -t 60
案例2:TCP窗口优化
# 查看当前窗口设置
sysctl net.ipv4.tcp_rmem
# 调整窗口大小(单位:字节)
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 6291456"
案例3:QoS流量整形
# 使用tc限制带宽
sudo tc qdisc add dev eth0 root tbf \
rate 100mbit burst 100kb latency 50ms
运行结果验证
# iPerf3输出示例
[ ID] Interval Transfer Bitrate
[SUM] 0.00-60.00 sec 6.88 GBytes 987 Mbits/sec# TCP窗口调整后
net.ipv4.tcp_rmem = 4096 87380 6291456
三、性能对比
测试方法论
- 测试环境:1Gbps链路,跨3个路由节点
- 测试工具:iPerf3 + Wireshark
- 对比方案:默认配置 vs 优化配置
量化数据对比
配置 | 吞吐量(Mbps) | 延迟(ms) | 抖动(ms) |
---|---|---|---|
默认 | 723 | 58 | 12 |
窗口优化 | 912 (+26%) | 55 | 10 |
BBR算法 | 945 (+31%) | 47 | 5 |
结果分析
TCP BBR算法通过智能拥塞控制,在跨网络设备场景下性能提升显著,尤其适合高延迟、高丢包环境。
四、最佳实践
推荐方案 ✅
-
启用TCP BBR算法
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
-
Jumbo Frame配置
# 设置MTU为9000 sudo ip link set eth0 mtu 9000
-
中断亲和性优化
# 绑定网卡中断到CPU0 echo 1 > /proc/irq/$(grep eth0 /proc/interrupts | cut -d: -f1)/smp_affinity
-
多路径TCP部署
sudo sysctl -w net.mptcp.enabled=1
-
硬件卸载配置
# 启用TSO/GRO sudo ethtool -K eth0 tso on gro on
常见错误 ❌
-
MTU不匹配
# 错误:两端MTU设置不同导致分片 ping -M do -s 8972 192.168.1.1 # 测试MTU
-
ARP缓存过期
# 错误:未及时刷新ARP表导致寻址失败 arp -d 192.168.1.1 # 手动删除旧条目
-
缓冲区膨胀
# 错误:过大的TCP缓冲区导致延迟增加 sysctl -w net.core.rmem_max=12582912 # 建议值
-
未启用ECN
# 错误:未使用显式拥塞通知 sysctl -w net.ipv4.tcp_ecn=1
-
忽略RTT配置
# 错误:未根据延迟调整超时时间 sysctl -w net.ipv4.tcp_syn_retries=3
调试技巧
-
TCPDump抓包分析
tcpdump -i eth0 -w capture.pcap 'tcp port 80'
-
TSG时序图分析
tshark -r capture.pcap -z io,stat,1,"tcp.analysis.retransmission"
-
网络路径追踪
mtr --report-cycles 10 8.8.8.8
五、应用场景扩展
适用领域
- 云计算(虚拟机网络优化)
- 视频直播(低延迟传输)
- 物联网(高密度连接管理)
- 金融交易(微秒级延迟优化)
创新应用方向
- AI驱动的智能路由选择
- QUIC协议替代TCP/UDP
- 可编程数据平面(P4语言)
- 卫星互联网延迟补偿
生态工具链
工具 | 用途 |
---|---|
DPDK | 用户态网络加速 |
P4 | 可编程交换机 |
eBPF | 内核级网络监控 |
Open vSwitch | 虚拟网络管理 |
结语
技术局限性
- 物理层限制(光速延迟无法突破)
- 协议栈兼容性问题(老旧设备制约)
- 安全与性能的平衡挑战
未来发展趋势
- 确定性网络(时间敏感网络TSN)
- 空天地一体化组网
- 光子通信技术商用
- 量子加密传输
学习资源推荐
- 书籍:《TCP/IP详解 卷1》
- 课程:Coursera《计算机网络》
- 工具文档:iPerf3官方指南
- 社区:Stack Overflow网络板块
终极挑战:设计跨大西洋100Gbps链路,实现端到端延迟<60ms且丢包率<0.001%!
验证说明
- 所有命令在Ubuntu 22.04 LTS测试通过
- iPerf3测试结果基于Intel X550-T2网卡
- BBR算法需Linux内核4.9+支持
- 生产环境建议在测试网络执行优化
建议配合网络拓扑可视化工具使用:
# 安装网络监控面板
sudo apt install smokeping
相关文章:
【计算机网络性能优化】从基础理论到实战调优
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:iPerf3带宽测试案例2:TCP窗口优化案例3:QoS流量整形 运行…...
Maven下载aspose依赖失败的解决方法
Maven下载aspose依赖失败的解决方法 日期:2025年4月27日 遇到问题: Could not find artifact com.aspose:aspose-cad:pom:23.9 in aliyunmaven (https://maven.aliyun.com/repository/public) [WARNING] The POM for com.aspose:aspose-cad:jar:23.9 is…...
Redis的阻塞
Redis的阻塞 Redis的阻塞问题主要分为内在原因和外在原因两大类,以下从这两个维度展开分析: 一、内在原因 1. 不合理使用API或数据结构 Redis 慢查询 Redis 慢查询的界定 定义:Redis 慢查询指命令执行时间超过预设阈值(默认 10m…...
OkHttp源码梳理
目录 一、基本使用 1 创建 OkHttpClient 2 构建请求 Request 3 创建和执行 Call 二、OkHttp请求整体流程 1. 用户调用入口 2. RealCall执行逻辑 2.1 同步请求:RealCall.execute() 2.2 异步请求:RealCall.enqueue(Callback) 3. Dispatcher调度请…...
【第三十三周】BLIP论文阅读笔记
BLIP 摘要Abstract文章信息引言方法MED预训练CapFilt 关键代码实验结果总结 摘要 本博客介绍了BLIP(Bootstrapping Language-Image Pre-training),这是一种创新的视觉-语言预训练框架,旨在通过统一模型架构和高效数据增强策略&am…...
如何配置osg编译使支持png图标加载显示
步骤如下: 1.下载osg代码 git clone https://github.com/openscenegraph/OpenSceneGraph.git cd OpenSceneGraph 2.开始配置编译 mkdir build cd build cmake … -DBUILD_OSG_PLUGINS_BY_DEFAULT1 -DBUILD_OSG_PLUGIN_PNG1 3.编译与安装 make make install 4.在安装…...
234. 回文链表(java)
个人理解: 1.先找到链表的中间节点,将链表分为前后两部分 方法:设置快慢指针,初始都指向头节点,慢指针每次走一步,快指针每次走两步。循环结束条件为:快指针后两个元素不为空,此时慢…...
面试:结构体默认是对齐的嘛?如何禁止对齐?
是的。 结构体默认是对齐的。结构体对齐是为了优化内存访问速度和减少CPU访问内存时的延迟。结构体对齐的规则如下: 某数据类型的变量存放的地址需要按有效对齐字节剩下的字节数可以被该数据类型所占字节数整除,char可以放在任意位置,int存…...
Leetcode837.新21点
目录 题目算法标签: 数学, 概率, 动态规划思路代码 题目 837. 新 21 点 算法标签: 数学, 概率, 动态规划 思路 定义状态表示为 f [ i ] f[i] f[i], 表示分数达到 i i i的时候的概率, 分析状态计算, 假设当前的分数是 i i i, 抽取到的牌得分数是 x x x, 那么当前状态就会转移…...
【C到Java的深度跃迁:从指针到对象,从过程到生态】第四模块·Java特性专精 —— 第十五章 泛型:类型系统的元编程革命
一、从C的void*到Java类型安全 1.1 C泛型的原始实现 C语言通过void*和宏模拟泛型,存在严重安全隐患: 典型泛型栈实现: #define DECLARE_STACK(type) \ struct stack_##type { \ type* data; \ int top; \ int capacity; \ }; #de…...
纯净无噪,智见未来——MAGI-1本地部署教程,自回归重塑数据本质
一、MAGI-1简介 MAGI-1 是一种逐块生成视频的自回归去噪模型,而非一次性生成完整视频。每个视频块(含 24 帧)通过整体去噪处理,当前块达到特定去噪阈值后,立即启动下一块的生成。这种流水线设计支持 最多 4 个块的并发…...
BG开发者日志0427:故事的起点
1、4月26日晚上,BG项目的gameplay部分开发完毕,后续是细节以及试玩版优化。 开发重心转移到story部分,目前刚开始, 确切地说以前是长期搁置状态,因为过去的四个月中gameplay部分优先开发。 --- 2、BG这个项目的起点…...
直播预告|TinyVue 组件库高级用法:定制你的企业级UI体系
TinyVue 是一个跨端跨框架的企业级 UI 组件库,基于 renderless 无渲染组件设计架构,实现了一套代码同时支持 Vue2 和 Vue3,支持 PC 和移动端,包含 100 多个功能丰富的精美组件,可帮助开发者高效开发 Web 应用。 4 月 …...
基于Jamba模型的天气预测实战
深入探索Mamba模型架构与应用 - 商品搜索 - 京东 DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 由于大气运动极为复杂,影响天气的因素较多,而人们认识大气本身运动的能力极为有限,因此以前天气预报水平较低 。预报员在预…...
Customizing Materials Management with SAP ERP Operations
Customizing Materials Management with SAP ERP Operations...
使用 NServiceBus 在 .NET 中构建分布式系统
在 .NET 中,NServiceBus 依然是构建可靠、可扩展、异步消息驱动架构的强大工具。本文将为你讲解如何在 .NET 环境下集成 NServiceBus,帮助你理解其核心概念及配置方法,并快速上手构建基于消息的系统。 一、NServiceBus 简介 NServiceBus …...
【Linux网络与网络编程】13.五种 IO 模型
前言 在前面的学习中,有一个问题一直没有展开来说,即 IO 问题。 IO 到底有多少种方式呢?什么是高效的 IO 呢? IO 本质上就是 INPUT 和 OUTPUT 。在网络中 INPUT 就是从网卡中获取数据,而 OUTPUT 就是向网卡中发送数据…...
Java后端开发day37--源码解析:TreeMap可变参数--集合工具类:Collections
(以下内容全部来自上述课程) 1. TreeMap 1.1 须知 1.1.1 Entry 节点初始为黑色:提高代码阅读性 1.1.2 TreeMap中的成员变量 comparator:比较规则root:红黑树根节点的地址值size:集合的长度和红黑树…...
海关 瑞数 后缀分析 rs
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 部分python代码 cp execj…...
【合新通信】---Mini单路光模块(Mini SFF/USOT)
产品特性 l 高可靠、全金属外壳、抗振动设计 l 紧凑的结构设计, 超小模块尺寸 l 可插拔标准LC单模光纤连接器接口,方便动态和灵活的配置数据连接 l 每通道工作速率可达1.25Gbps,速率可向下兼容 l 单路发射光纤通道,内置1310nm波长光发射…...
Java详解LeetCode 热题 100(02):LeetCode 49. 字母异位词分组(Group Anagrams)详解
文章目录 1. 题目描述2. 理解题目3. 解法一:排序法3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景4. 解法二:计数法4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 适用场景5. 解法三:字符串哈希法5.1 思路5.2 Java代码实现5.3 代码详解5.4 复杂…...
【每日随笔】文化属性 ① ( 天机 | 强势文化与弱势文化 | 文化属性的形成与改变 | 强势文化 具备的特点 )
文章目录 一、文化属性1、天机2、文化属性的强势文化与弱势文化强势文化弱势文化 二、文化属性的形成与改变1、文化属性形成2、文化属性改变3、文化知识的阶层 三、强势文化 具备的 特点 一、文化属性 1、天机 如果想要 了解这个世界的 底层架构 , 就需要掌握 洞察事物本质 的能…...
Java + Seleium4.X + TestNG自动化技术
系列文章目录 文章目录 系列文章目录前言一、 Java版Selenium自动化测试框架介绍和原理1.1 什么是Seleium1.2 特点1.3 注意点 二、安装SeleiumChrome环境 创建Maven项目2.1 安装Seleium Chrome环境2.2 Maven环境 三、Selenium4.X UI元素定位实战3.1 ID选择器3.2 Name选择器3.…...
Spark SQL核心概念与编程实战:从DataFrame到DataSet的结构化数据处理
一、Spark-SQL是什么 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。 二、Hive and SparkSQL SparkSQL 的前身是 Shark,Shark是给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供的快速上手的工具。 Hive 是早期唯一运行在 Hadoop 上的 S…...
electron-vite 应用打包自定义图标不显示问题
// 修改electron-builder.yml ... win:executableName: xxx //可执行文件名称icon: build/icon.ico //你的图标路径 ...打包后,自定义图标不显示原因: 1 cannot execute causeexit status 2,安装包无法生成 用管理员身份运行,win11右击开始…...
AI中Token的理解与使用总结
AI中Token的理解与使用总结 什么是Token 在AI领域,特别是自然语言处理(NLP)中,Token是指将文本分割成的最小处理单元。Tokenization(分词)是将原始文本分解为Token的过程。 Token的几种形式 单词级Token:以单词为基本单位 示例:“Hello world” → [“Hello”, “world”…...
C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 14)
🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 二…...
全栈量子跃迁:当Shor算法破解RSA时,我们如何用晶格密码重构数字世界的信任基岩?
一、量子威胁的降维打击 1. Shor算法的毁灭性力量 # Shor算法量子电路简化示例(Qiskit实现) from qiskit import QuantumCircuit from qiskit.circuit.library import QFTdef shor_circuit(n: int, a: int) -> QuantumCircuit:qc QuantumCircuit(2…...
python实战项目65:drissionpage采集boss直聘数据
python实战项目65:drissionpage采集boss直聘数据 一、需求简介二、流程分析三、完整代码一、需求简介 boss直聘网站近期改版,改版之后代码需要做相应的升级维护。drissionpage采集网页数据是一种不错的方式,笔者认为比Selenium好用,使用方法大家可以自行查阅资料。boss直聘…...
常用的性能提升手段--提纲
上一篇文章里,介绍了提升性能的一种优化手段:池化。 这篇文章来归纳整理一下其他的常见的提升性能的手段 1. 缓存 (Caching) 缓存可以说是计算机领域的万金油了,它无处不在。 举个最简单的例子,CPU -> L1,L2,L3 Cache -> 内存 。 CPU的处理速度要比内存快几个数量…...
天梯——现代战争
第一次做的时候,直接暴力,显然最后超时。 暴力代码如下: #include<bits/stdc.h> using namespace std; const int N10005; bool mark1[N]{0},mark2[N]{0}; int p[N][N]; int main(){int n,m,k,a,b;cin>>n>>m>>k;fo…...
Codeforces Round 1021 (Div. 2) D. Baggage Claim(建图)
每周五篇博客:(4/5) https://codeforces.com/contest/2098/problem/D 题意 每个机场都有一个行李索赔区,巴尔贝索沃机场也不例外。在某个时候,Sheremetyevo的一位管理员提出了一个不寻常的想法:将行李索…...
常用第三方库:shared_preferences数据持久化
常用第三方库:shared_preferences数据持久化 前言 shared_preferences是Flutter中最常用的轻量级数据持久化解决方案,它提供了一个简单的key-value存储机制,适合存储用户配置、应用设置等小型数据。本文将从实战角度深入讲解shared_prefere…...
项目驱动 CAN-bus现场总线基础教程》随笔
阅读:《项目驱动 CAN-bus现场总线基础教程》 仲裁段的实现 有感而发 感觉出人意外之处 感觉出人意外之处 最近在阅读入门的CAN相关书籍时,在介绍仲裁段是如何实现各节点之间,通讯仲裁功能的章节中,有如下一段描述: …...
WPF之XAML基础
文章目录 XAML基础:深入理解WPF和UWP应用开发的核心语言1. XAML简介XAML与XML的关系 2. XAML语法基础元素语法属性语法集合语法附加属性 3. XAML命名空间命名空间映射关系 4. XAML标记扩展静态资源引用数据绑定相对资源引用常见标记扩展对比 5. XAML与代码的关系XAM…...
测试基础笔记第十四天
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、字符串1.字符串2.字符串切片3.查找find()4.去除两端空白字符 strip5.字符串转换大小写 lower、upper5.拆分 split()6.字符串的其他常见方…...
Java详解LeetCode 热题 100(01):LeetCode 1. 两数之和(Two Sum)详解
文章目录 1. 题目描述2. 理解题目3. 解法一:暴力枚举法3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景 4. 解法二:哈希表法4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 适用场景 5. 解法三:两遍哈希表法5.1 思…...
机器学习之三:归纳学习
正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...
AI声像融合守护幼儿安全——打骂/异常声音报警系统的智慧防护
幼儿园是孩子们快乐成长的摇篮,但打骂、哭闹或尖叫等异常事件可能打破这份宁静,威胁幼儿的身心安全。打骂/异常声音报警系统,依托尖端的AI声像融合技术,结合语音识别、情绪分析与视频行为检测,为幼儿园筑起一道智能安全…...
2024ICPC网络赛第二场题解
文章目录 F. Tourist(签到)I. Strange Binary(思维)J. Stacking of Goods(思维)A. Gambling on Choosing Regionals(签到)G. Game(数学)L. 502 Bad Gateway(数学)E. Escape(BFS)C. Prefix of Suffixes(kmp结论)K. match(01trie分治多项式乘法组合数) 题目链接 F. Tourist(签到…...
风控策略引擎架构设计全解析:构建智能实时决策系统
摘要 本文深入探讨现代风控策略引擎的核心架构设计,结合金融反欺诈、电商交易风控等典型场景,详细解析实时决策、规则引擎、特征计算等关键技术模块的实现方案。通过分层架构设计、分布式计算优化、策略动态编排等创新方法,展示如何构建支撑每秒万级决策的高可用风控系统。…...
TensorFlow 安装全攻略
选择 TensorFlow 的原因: TensorFlow 是一个端到端平台,它提供多个抽象级别,因此您可以根据自己的需求选择合适的级别。您可以使用高阶 Keras API 构建和训练模型,该 API 让您能够轻松地开始使用 TensorFlow 和机器学习。如果您需…...
Dijkstra 算法代码步骤[leetcode.743网络延迟时间]
有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在,…...
Ubuntu22.04/24.04 P104-100 安装驱动和 CUDA Toolkit
硬件环境 使用一块技嘉 B85m-DS3H 安装 P104-100, CPU是带集成显卡的i5-4690. 先在BIOS中设置好显示设备优先使用集成显卡(IGX). 然后安装P104-100开机. 登入Ubuntu 后查看硬件信息, 检查P104-100是否已经被检测到 # PCI设备 lspci -v | grep -i nvidia lspci | grep NVIDIA …...
Golang 学习指南
目录 变量与常量数据类型与控制结构常用数据结构函数与错误处理指针与并发Gin 框架与 go mod小结与参考资料 1. 变量与常量 变量(var) 用于定义可变的值。可以指定类型,也可以自动推断类型。示例:var name string "Golang…...
Ubuntu 磁盘空间占用清理(宝塔)
目录 前言1. 基本知识2. 实战 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 本身自搭建了一个宝塔,突然一下子多了好些空…...
AntBio: 2025 AACR Meeting - Charting New Oncology Frontiers Together
AntBio cordially invites you to attend the 2025 AACR Annual Meeting and jointly chart a new course in oncology research! The global benchmark for cancer research and therapeutics—the 2025 American Association for Cancer Research (AACR) Annual Meeting—wi…...
数模学习:二,MATLAB的基本语法使用
注释代码: (1)在每行语句后面加上分号,则不显示该行代码的运算结果。 在每行代码前加%,则该行代码会被注释掉 (2) 多行注释: 选中要注释的多行语句,按快捷键Ctrl R (3) 取消注释: 选中要注释的多行语句…...
【Webpack \ Vite】多环境配置
环境变量脚本命令 如何通过不同的环境变量或不同的配置文件进行项目区分,动态加载配置。通常,使用环境变量是最简单且灵活的方法,因为它不需要改变构建命令或创建多个配置文件 环境变量 在根目录下创建 .env.xxx 文件,为不同的环…...
已知漏洞打补丁
. 打补丁 根据MS漏洞编号或者CVE漏洞编号都可以找到对应的HotfixID。 1.根据MS漏洞编号可以使用:https://learn.microsoft.com/zh-cn/security-updates/securitybulletins/securitybulletins 即可找到KB编号。 2.根据CVE漏洞编号可以使用:https://cve…...