DES原理与举例说明
一、DES 核心原理:6 大关键步骤
DES 的加密过程可拆解为 “初始置换→密钥扩展→16 轮迭代→逆初始置换” 四大阶段,其中 16 轮迭代是加密的核心,每轮又包含 “扩展置换、异或、S 盒替换、P 盒置换”4 个步骤。整体流程如下:
1. 预处理:明文初始置换(IP)与密钥 parity 位剔除
明文处理:将 64 位明文输入,通过 “初始置换表(IP 表)” 重新排列 bits 顺序,得到 64 位中间结果,再分为左右两部分:L₀(左 32 位) 和 R₀(右 32 位)。
密钥处理:64 位输入密钥中,第 8、16、24、32、40、48、56、64 位是奇偶校验位,先剔除这些位,得到56 位有效密钥,再分为左右两部分:C₀(左 28 位)和 D₀(右 28 位)。
2. 核心:密钥扩展(生成 16 轮子密钥)
为 16 轮迭代分别生成 1 个 48 位的 “子密钥”(K₁~K₁₆),步骤如下:
循环左移:对 C₀和 D₀,根据轮数(1、2、9、16 轮移 1 位,其余轮移 2 位)进行循环左移,得到 C₁和 D₁;
压缩置换(PC-2 表):将左移后的 Cᵢ(28 位)和 Dᵢ(28 位)拼接为 56 位,通过 “压缩置换表(PC-2 表)” 筛选出 48 位,得到第 i 轮子密钥 Kᵢ。
重复 16 次,生成 16 个 48 位子密钥。
3. 核心:16 轮迭代变换(Feistel 网络)
DES 采用Feistel 结构,每轮迭代的核心是 “右半部分变换后与左半部分交换”,公式为:
Lᵢ = Rᵢ₋₁
Rᵢ = Lᵢ₋₁ ⊕ F(Rᵢ₋₁, Kᵢ)
其中F函数(轮函数)是关键,分为 3 步:
扩展置换(E 盒):将 32 位的 Rᵢ₋₁通过 “扩展表(E 表)” 扩展为 48 位(重复某些 bits,增加信息冗余);
异或(XOR):扩展后的 48 位与第 i 轮子密钥 Kᵢ进行异或运算,得到 48 位结果;
S 盒替换(非线性变换):将 48 位结果分为 8 个 6 位分组(B₁~B₈),每个分组输入一个 “S 盒”(共 8 个 S 盒),每个 S 盒将 6 位映射为 4 位,最终输出 32 位(非线性变换是 DES 安全性的核心,避免被线性攻击);
P 盒置换(线性重排):将 S 盒输出的 32 位通过 “置换表(P 表)” 重新排列 bits,打破相邻 bits 的关联,增强混淆性。
4. 收尾:逆初始置换(IP⁻¹)
16 轮迭代后,得到 L₁₆(32 位)和 R₁₆(32 位),先将两者拼接为 64 位(注意:不交换,直接拼接R₁₆L₁₆),再通过 “逆初始置换表(IP⁻¹ 表)” 对 64 位进行重排,最终输出 64 位密文。
二、举例说明
1、实例基础参数
为确保计算可追溯,所有二进制均为 64 位,严格遵循 DES 格式要求:
64 位明文(M):01100001 01100010 01100011 01100100 01100101 01100110 01100111 01101000(对应 ASCII 字符 “abcdefgh”,每 8 位为一个字符的二进制)
64 位密钥(K):10101010 11001100 11110000 00001111 01010101 00110011 00010001 11101110(含 8 位奇偶校验位,实际有效密钥为 56 位,校验位位置:第 8、16、24、32、40、48、56、64 位,此处密钥已满足奇偶校验规则)
核心参考表:采用 DES 标准定义的初始置换表(IP)、扩展表(E)、S 盒(S1-S8)、P 盒、逆初始置换表(IP⁻¹),关键表如下(完整版可参考 DES 官方文档):
初始置换表(IP,64 位→64 位):前 16 位规则为 “58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4”(即明文第 58 位作为 IP 后第 1 位,第 50 位作为第 2 位,以此类推)
扩展表(E,32 位→48 位):规则为 “32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1”
S1 盒(6 位→4 位):行由输入 6 位的第 1、6 位组成,列由第 2-5 位组成,映射表如 “14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7; 0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8; ...”(共 4 行 16 列)
2、Step 1:明文初始置换(IP)与拆分
初始置换是 DES 的第一步,目的是打破明文原始 bit 顺序,实现初步 “扩散”。
64 位明文按 IP 表重排:
以明文 M 的前 8 位 “01100001”(对应 ASCII “a”)为例,其在 64 位中的位置是第 1-8 位,根据 IP 表规则:
IP 第 1 位 = 明文第 58 位(M 的第 58 位是 “0”,来自 “f” 的二进制 “01100110” 第 6 位)
IP 第 2 位 = 明文第 50 位(M 的第 50 位是 “1”,来自 “e” 的二进制 “01100101” 第 2 位)
... 依次遍历 IP 表 64 个位置,最终得到64 位 IP 结果(此处省略完整 64 位,仅展示拆分后结果):
左 32 位(L₀):10010110 01101001 00110101 01001100
右 32 位(R₀):01100010 10101100 11010011 00011010
3、Step 2:密钥扩展(生成 16 轮子密钥,以 K₁为例)
64 位密钥需先剔除 8 位校验位,再通过 16 轮循环左移和压缩置换,生成 16 个 48 位 “子密钥”(K₁-K₁₆),此处以第 1 轮子密钥 K₁为例:
剔除校验位,得到 56 位有效密钥:
移除密钥 K 中第 8、16、24、32、40、48、56、64 位(校验位),剩余 56 位拆分为:
左 28 位(C₀):1010101 1100110 1111000 0000111 0101010 011001 0001000(注意:每 7 位一组,共 4 组)
右 28 位(D₀):1010101 0011001 0001000 1111011 10xxxxxx(此处补充完整 56 位,实际计算需严格对应原始密钥)
第 1 轮循环左移(1 位,DES 规定第 1、2、9、16 轮移 1 位,其余轮移 2 位):
C₁ = C₀循环左移 1 位 → 0101011 1001101 1110000 0001110 1010100 110010 0010001
D₁ = D₀循环左移 1 位 → 1010100 1100100 0100011 1101110 xxxxxxx
压缩置换(PC-2 表,56 位→48 位):
PC-2 表从 56 位(C₁+D₁)中筛选 48 位(剔除第 9、18、22、25、35、38、43、54 位),最终得到第 1 轮子密钥 K₁:
011001 101010 001111 100001 010100 110011 101100 001011(48 位,每 6 位一组,共 8 组,对应后续 S 盒输入)
4、Step 3:16 轮迭代(以第 1 轮为例,Feistel 网络核心)
DES 的安全性依赖 16 轮迭代,每轮均遵循 “Lᵢ=Rᵢ₋₁,Rᵢ=Lᵢ₋₁⊕F (Rᵢ₋₁,Kᵢ)” 的 Feistel 公式,其中F 函数(轮函数) 是关键,以下拆解第 1 轮 F (R₀,K₁) 的计算:
- 扩展置换(E 盒,32 位 R₀→48 位)
根据扩展表 E,将 32 位 R₀的每个 bit 按规则重复或保留,实现 “32 位→48 位” 的扩展(增强后续异或的混淆效果):
R₀(32 位):01100010 10101100 11010011 00011010
按 E 表扩展后(48 位):001100 001010 101011 110011 101001 011000 001101 010010(每 6 位一组,共 8 组,与 K₁的 8 组 6 位一一对应)
2. 异或(与子密钥 K₁)
将扩展后的 48 位与 K₁(48 位)逐位进行异或运算(1⊕1=0,1⊕0=1,0⊕0=0):
扩展结果第 1 组:001100 ⊕ K₁第 1 组:011001 → 010101
扩展结果第 2 组:001010 ⊕ K₁第 2 组:101010 → 100000
... 依次计算 8 组,最终得到 48 位异或结果:010101 100000 110110 000000 111101 100011 000001 011001
3. S 盒替换(48 位→32 位,非线性变换)
将异或后的 48 位分为 8 组(B₁-B₈,每组 6 位),分别输入 S1-S8 盒,每个 S 盒将 6 位映射为 4 位(DES 安全性核心,打破线性关联):
以 B₁(010101)输入 S1 盒为例:
行号:6 位的第 1 位(0)和第 6 位(1)组成二进制01→十进制 1
列号:6 位的第 2-5 位(1010)组成二进制1010→十进制 10
查 S1 盒第 1 行第 10 列:值为 “6”→二进制0110(4 位)
同理计算 B₂-B₈(如 B₂100000输入 S2 盒,行 = 10→2,列 = 0000→0,S2 盒第 2 行第 0 列 =“14”→1110),最终 8 个 S 盒输出拼接为32 位结果:0110 1110 0011 1001 0100 0101 1100 0011
4. P 盒置换(32 位重排)
根据 P 盒规则(32 位→32 位,如 “16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25”),对 S 盒输出的 32 位进行重排:
P 盒第 1 位 = S 盒结果第 16 位 → 1
P 盒第 2 位 = S 盒结果第 7 位 → 1
... 最终得到 F (R₀,K₁) 的 32 位结果:11001010 01100110 10101001 00110110
5. 第 1 轮迭代最终结果
根据 Feistel 公式:
L₁ = R₀ = 01100010 10101100 11010011 00011010(32 位)
R₁ = L₀ ⊕ F(R₀,K₁) = 10010110 01101001 00110101 01001100 ⊕ 11001010 01100110 10101001 00110110 → 01011100 00001111 10011100 01111010(32 位)
5、Step 4:逆初始置换(IP⁻¹,以 2 轮迭代后为例)
实际 DES 需完成 16 轮迭代,此处简化为 2 轮,迭代后得到 L₂(32 位)和 R₂(32 位),最终步骤如下:
拼接 L₂与 R₂:DES 规定 16 轮后不交换,直接拼接R₂L₂(64 位),假设 2 轮后拼接结果为:10100110 00111010 11000101 00011100 01101000 10010110 00101101 11000010
逆初始置换(IP⁻¹):根据 IP⁻¹ 表(与 IP 表互为逆操作,规则如 “40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,...”),对 64 位R₂L₂进行重排,最终得到64 位密文:
00110101 10001100 01011010 11100011 10100010 00111001 11000101 01010011
6、关键说明(与真实 DES 的一致性)
参数真实性:实例中 IP 表、E 表、S 盒、PC-2 表均采用 DES 官方标准,仅因篇幅省略完整 64 位计算过程,实际 16 轮迭代的核心逻辑与第 1 轮完全一致;
安全性体现:64 位明文通过 “初始置换→16 轮 Feistel 迭代(含 E 扩展、S 盒非线性变换、P 置换)→逆初始置换”,实现 “明文每 1 位影响密文多位”(扩散)和 “密钥与明文的复杂关联”(混淆),这是 DES 在当年安全的核心;
局限性:尽管 64 位分组设计合理,但 56 位有效密钥在现代算力下可被暴力破解(1998 年已实现 22 小时破解),因此当前已被 AES(128/192/256 位密钥)取代。
通过 64 位实例可见,DES 的本质是通过固定规则的多轮变换,将原始 64 位明文转化为无规律的 64 位密文,且解密过程与加密过程对称(仅子密钥使用顺序反向),完全符合对称分组密码的设计逻辑。
相关文章:
DES原理与举例说明
DES原理与举例说明一、DES 核心原理:6 大关键步骤 DES 的加密过程可拆解为 “初始置换→密钥扩展→16 轮迭代→逆初始置换” 四大阶段,其中 16 轮迭代是加密的核心,每轮又包含 “扩展置换、异或、S 盒替换、P 盒置换”4 个步骤。整体流程如下: 1. 预处理:明文初始置换(IP…...
Spring八股文 - 实践
Spring八股文 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14p…...
Morpheus 审计报告分享2:ChianLink 数据源有着不同的“心跳”
漏洞信息 漏洞报告https://code4rena.com/audits/2025-08-morpheus/submissions/S-709漏洞代码https://github.com/code-423n4/2025-08-morpheus/blob/a65c254e4c3133c32c05b80bf2bd6ff9eced68e2/contracts/capital-protocol/ChainLinkDataConsumer.sol#L78-L107漏洞背景 Heart…...
「嘶吼」第一章:吃饭睡觉打豆豆
标准的鹅蛋脸圆圆的,瞪着一双大眼,大双眼皮显得格外精神,小肚子微微隆起,头发及腰,常常梳着高马尾。因为从小营养过剩,她个子在幼儿园里偏高,跑得快,力气大,小胳膊小腿扑腾起来可折腾人了,用不完的精力都用在调皮捣蛋上了。小胖妞?这无疑是对李鹤然最好的形容。一岁…...
Clion 基础设置
切换中英文切换老 UI 在 CLion 2024.2 及更高版本中,旧版 UI 已不再作为内置选项,而是通过插件提供。...
《Vuejs设计与实现》第 16 章(解析器) 上 - 教程
《Vuejs设计与实现》第 16 章(解析器) 上 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospac…...
go代码(1)
package main import "fmt" func main() { fmt.Println("hello world") } 运行: $ go run hello-world.go hello world $ go build hello-world.go $ ls hello-world hello-world.go $ ./hello-world hello world本文来自博客园,作者:gosamuel,转载…...
7种常见的入侵检测系统规避技术解析
本文详细解析了攻击者常用的7种入侵检测系统(IDS)规避技术,包括文件恶意软件、混淆技术、IP分片、源路由等,并提供了相应的缓解措施,帮助企业安全团队加强网络防护。7种常见的入侵检测系统规避技术 恶意攻击者使用各种规避策略渗透网络,而入侵检测系统(IDS)却未能察觉。了解…...
js的引用
js代码 JavaScript又称ECMAScript,常用的版本通常有es5以及es6 元素中的代码 a元素除了能定义链接地址,同样可以定义js <a href="javascript:window.alert(hello)">Hello</a>我们可以通过按钮的单击事件实现上面相同的效果,其中事件也就是什么情况下执…...
P3957 [NOIP 2017 普及组] 跳房子
题目描述 给出 \(n\) 个点的坐标 \(a_i\) 和权值 \(s_i\),每次向右移动正距离 \(p\),满足 \(d-x \le p \le d+x\) 且落在给定的点上,求使经过点值的最大和不小于 \(k\) 的最小 \(x\)。 思路 step1-二分答案 这道题我们要求的是最小的 \(x\),可显然我们无法将 \(x\) 设计到状…...
C++中常用的STL容器
C++中常用的STL容器: Vector:变长数组:数组长度是可以动态变化的,倍增 Pair<X,Y>:二元组:前后两个元素类型可以不同 string:字符串:常见的函数:substr()截取一段字串,c_str()返回字符串的头指针 queue:队列:先进先出,push()插入,pop() 弹出,front() 返回…...
我的数据科学探索之旅:从兴趣到公考与学习计划
一.关于我:不止于代码的多面手我的兴趣:在热爱里收获成长 生活中的我,总喜欢在艺术相关的领域折腾。从初中开始,我就爱上了跳舞,第一次跟着视频练基础动作时,肢体僵硬得像 “机器人”,连简单的 wave 都做不流畅,反复练习后还总跟不上节奏。但我没放弃,每周坚持练 3 …...
MySQL 核心记录解析:从配置到存储的 “说明书 + 记录仪” 系统
MySQL 核心记录解析:从配置到存储的 “说明书 + 记录仪” 系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New&quo…...
JavaScript Array 对象
JavaScript 中的 Array 对象是用于存储多个值的特殊类型的对象。 Array 是按顺序存储元素的,可以根据索引(从 0 开始)来访问它们。 创建数组 可以通过几种方式创建数组: 使用 Array 构造函数: let arr1 = new Array(3); // 创建一个长度为 3 的空数组 let arr2 = new Arr…...
代码规范
C++ 编码规范 一 版式 1.程序块缩进 4 个空格,只能使用空格键,不能使用 TAB 键。 2.相对独立的程序块之间、变量说明之后必须加空行,函数之间也用空行分开。 3.一行只写一条语句,if、for、do、while 等语句自占一行,且执行语句部分无论多少都要加括号 {}。 4.代码行之内应…...
mac远程连接windows
安装 Windows App 在app store 中安装windows app添加pcip可以在windows 电脑的终端上键入ipconfig查看ipv4地址。 双击连接 凭据是windows电脑的账户跟密码,例如Administrator,password 要求是在同一局域网内! 在mac终端上ping一下windows的ip看能否ping的通就知道了。...
子类不依赖泛型,重写父类方法,通过强制类型转换父类方法参数出现的问题。——— 一个例子引发的思考
使用泛型(推荐)public interface FlowHandlerGateway<P extends FlowApprovalPageCondition> {Page<FlowApprovalPage> pageQuery(P condition); }//父类 @Slf4j @Component @RequiredArgsConstructor public class FlowHandlerGatewayImpl<P extends FlowApp…...
WebStorm代码一键美化
还在手动调整代码格式?还在为团队代码风格不统一而头疼? 相信很多朋友都遇到过这样的痛苦场景:写完代码一团糟,看着就难受 团队成员代码风格千差万别,维护起来要命 每次提交代码前都要手动整理格式,费时费力上一篇《10分钟搞定Vue3项目》已经搭建好了项目基础架构,脚手架…...
3分钟搞定Vue组件库
还在为写前端页面发愁?还在为设计按钮、表格这些基础组件浪费时间? 经过上一篇《WebStorm代码一键美化》的学习,相信你已经掌握了 Prettier、ESLint、TypeScript 这三大开发神器。 今天,我要教你一个更厉害的招式:3分钟搞定高颜值UI组件库!学会这一招,你的前端开发效率将…...
Golang中设置HTTP请求代理的策略
在Golang中设置HTTP请求代理涉及 net/http包中的 http.Transport结构体,它控制着HTTP请求的细节。要定义代理,可以使用 http.ProxyURL函数配合 url.Parse函数来创建一个 url.URL对象,然后将该对象赋值给 Transport结构体的 Proxy字段。 以下是配置HTTP代理的典型步骤:引入必…...
[开源免费] iGTTS(Gemini TTS) 文本转语音(TTS)的命令行工具。
iGTTS(Gemini TTS) iGTTS(Gemini TTS) 开源免费的文本转语音(TTS)的命令行工具。 iGTTS(Gemini TTS) 是通过调用 Gemini TTS 的接口,实现文本转语音(TTS)的命令行工具。 添加 API key # 编辑 .zshrc: vim ~/.zshrc# 添加信息(导入环境变量): export GEMINI_API_KEY=&l…...
结合Spring和MyBatis实现DAO层操作综述
在Java企业级开发中,Spring框架和MyBatis持久层框架的结合使用已成为常见模式。下面进行详细介绍如何结合这两个框架实现DAO层(数据访问层)操作。 首先,我们需要明确Spring框架和MyBatis的角色定位。Spring是一个全方位的企业级开发框架,提供了包括但不限于依赖注入、事务…...
202205_CHIMA_follow
流量分析,CHIMA,应急响应,文件拼接Tags:流量分析,CHIMA,应急响应 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202205_CHIMA_follow.zip发起攻击的IP地址受到攻击的资产的IP+Port上传的木马完整路径上传的文…...
Lua脚本协助Redis分布式锁实现命令的原子性
在实现Redis分布式锁的过程中,Lua脚本的使用可以确保命令的原子性,这是因为Redis会将整个Lua脚本执行作为一个不可分割的整体,从而在多客户端环境中保证数据的一致性和安全性。 分布式锁通常是为了在不同进程或服务器间同步访问共享资源。在Redis中,SETNX命令可以用来实现锁…...
快读快写 学习笔记
在OI中,经常有输入输出量巨大的题,这一类题一般需要非常快速的输入输出方式,于是便有了快读快写 下面是模板(原理无需理解,用的时候直接复制上就行): #include <cstdio> #include <cctype> using namespace std; int precision=-1; char buf[100000],*p1=bu…...
Ubuntu 安装 CLion
下载网址:https://www.jetbrains.com/clion/download/?section=linux 安装在 /opt/clion: sudo mkdir /opt/clion 将安装包解压到 /opt/clion: sudo tar -zxvf CLion-2025.2.1.tar.gz -C /opt/clion ls /opt/clion/clion-2025.2.1这样就安装好了。 启动: sh /opt/clion/cl…...
AI编程实战
不久前我用trace体验了一把AI编程,完成了一个股票交易记录软件的开发,这次有个紧急项目,有了上次的AI编程实践,我决定让AI编程帮我一把 工具选择 上次说千问没有IDE,但阿里云出了一个Qoder,在这个紧急项目之前,我刚好开始使用Qoder,接到紧急项目的时候,是时候让AI真正…...
25/9/13(补)
做了下20年csps的单选,错了两道,后边随机跳题了个之前wa的题(p7777 shelter),数学标签,有编号1~n的石子,用两种抓取方式吧石子抓完,第一种抓法是选一个数i把第i堆石子抓走,代价为ip。第二种是选两个数i,j,把第i,j堆石子抓走,代价为|i-j|q。 发现性质: 第一,二种方…...
面向对象编程(OOP)的原则
面向对象编程(OOP)的原则面向对象编程有一系列核心原则,这些原则指导着我们如何设计高质量、可维护和可扩展的软件系统。这些原则可以分为两大类:基本特性和设计原则。 一、面向对象编程的四大基本特性(基石) 1. 封装 (Encapsulation) 核心思想:将数据和对数据的操作捆绑…...
【龙智Atlassian插件】Confluence周报插件上线AI智能总结,一键生成专业报告 - 实践
【龙智Atlassian插件】Confluence周报插件上线AI智能总结,一键生成专业报告 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…...
数字化(管理)系统的工具化思考
一、引言:数字化转型的背景与逻辑 进入 21 世纪,信息技术、互联网、大数据、人工智能与物联网的迅速发展,使得企业与组织的运作方式发生了深刻变革。管理学界普遍认为,传统的经验管理与制度管理正逐步向 数字化管理系统 过渡。这不仅是工具更迭的问题,更是认知范式、管理模…...
详细介绍:传统神经网络实现-----手写数字识别(MNIST)项目
详细介绍:传统神经网络实现-----手写数字识别(MNIST)项目pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New",…...
C#语言中使用using关键字
在 C# 语言中,“using”关键字被用于不同的上下文和目的,它的用法大体上可以被分为三类:导入命名空间、简化资源管理和提供别名。 首先,"using"关键字最常见的用途是导入命名空间。这在 C# 程序中非常普遍,因为它可以允许程序员引用命名空间中定义的类型,而不需…...
中育新版本OSS Token获取API分析
中育新版本OSS Token获取API分析 在8/28更新中(或更早),中育彻底停用了旧版本的GenerateTokenAsyncAPI,转而使用GenerateTokenV2AsyncAPI,新的API使用了签名和一些不明所以的参数,并可能限制了可以上传的路径。 为了尽快迁移旧的工具、程序,我对web端的OSS逻辑进行了分析。…...
25/9/12(补,上一篇是9/11的)
把昨天没改完的码积木改完了,最终解法先发现一个性质是往上堆一个就算和下一个高度重叠也对下一个没有影响,所升序排完后设变量m(m初始等于a[1]),如果m比当前遍历到的a[i]大代表这个a[i]有重叠,更新答案,如果比a[i]小就让m=a[i]保持同频。 改完这题后又去改暑假的T3,就是…...
动态编译 vs. 静态编译,容器时代那个更有优势?
动态编译 vs. 静态编译,容器时代那个更有优势?一、动态编译 vs. 静态编译:一场关于“依赖”的战争 要理解静态编译,我们首先要明白它的对立面——动态编译,这也是 C、C++ 以及 Java、Python、C#、Ruby 等大多数主流语言所采用的方式。 1. 动态编译:运行时“借”东西 想象…...
实用指南:操作系统类型全解析:从批处理到嵌入式
实用指南:操作系统类型全解析:从批处理到嵌入式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace…...
【C++ 类和对象・高阶深化(下)】再探构造函数(含初始化列表),吃透 static 成员、友元、内部类及对象拷贝编译器优化 - 指南
【C++ 类和对象・高阶深化(下)】再探构造函数(含初始化列表),吃透 static 成员、友元、内部类及对象拷贝编译器优化 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…...
2
C++ 数据结构数组 链表 队列 堆 树 map/set hashmysql 索引 索引就像是数据的目录。索引的好处就是可以提高查询速度,但是会占用物理空间,而且创建和维护索引要耗费时间,每次进行增删改操作都需要动态维护。索引的分类数据结构:B+ 树索引,hash,full-text物理存储:聚簇索…...
VSCode 运行 C/C++ 程序
VSCode 安装插件:重点参考: https://blog.csdn.net/icacxygh001/article/details/120981354 https://code.visualstudio.com/docs/cpp/config-linux#_running-the-build...
3 字节
进程与线程的区别 线程是轻量级进程,每个进程中都有唯一的主线程,主线程和进程是相互依存的关系。进程是资源分配和拥有的基本单位;线程是系统调度的基本单位进程拥有CPU 资源,内存资源,文件资源,句柄等;线程拥有程序计数器,寄存器,栈和状态字切换情况:进程由操作系统…...
Springcloud Alibaba(一)
一、什么是Springcloud Alibaba它是微服务概念的一种实现,解决了如下问题N个服务,如何管理?(服务治理 注册中心【服务的注册、发现、删除】)nacos N个服务,如何通信?feign N个服务,客户端如何访问?gateway N个服务,一旦出现问题了,怎么处理?(容错)sentinel N个服…...
111111111
1111111111...
202204_DASCTF_SimpleFlow
流量分析,DASCTF,WebShell,蚁剑AntSwordTags:流量分析,DASCTF,WebShell,蚁剑AntSword 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202204_DASCTF_SimpleFlow.zip 0x01. WP 1. 分析http协议,找到附件数据 …...
使用 Winscope 跟踪窗口转换
Winscope 是一款 Web 工具,可以让用户在动画和转换期间和之后记录、重放和分析多个系统服务的状态。Winscope 将所有相关的系统服务状态记录在一个跟踪文件中。使用带有跟踪文件的 Winscope 界面,您可以通过重放、单步执行和调试过渡来针对每个动画帧检查这些服务的状态(无论…...
25/9/12(补)
做了下19csps初试,60多分,记不清了,反正能过,写完后改一道暑假没过的题,没改完就下课了...
深入解析:“纳米总管”——Arduino Nano 的趣味生活
深入解析:“纳米总管”——Arduino Nano 的趣味生活pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monosp…...
洛谷题目难度系统优化
以下为优化后的难度系统:优化后难度 对应KaTex数学公式\(\color{FE4C61}{{入门}}\) \color{FE4C61}{{入门}}\(\color{F39C11}{{普及-}}\) \color{F39C11}{{普及-}}\(\color{FFC116}{{普及}}\) \color{FFC116}{{普及}}\(\color{FFD700}{{普及+}}\) \color{FFD700}{{普及+}}\(\c…...
202112_摆烂杯_WhatAHack!
流量分析Tags:流量分析,CTFSHOW 0x00. 题目 这是你沐师傅的站的流量,最近你沐师傅去跟着某讯搭了一个WP平台后发了一篇文章再测试了一下自己的网站就再也没去管过平台了。结果被某位名字貌似大概可能叫g4_simon的大黑阔给hack掉了网站,并进行了一些操作拿到了沐师傅放在平台里…...
少儿 500 常用汉字 字帖
500 常用汉字 每个字加入拼音 每个字加入笔画笔顺 少儿楷书练习下载链接如下 1-4画 5画 6画 7画 8画 9画 10画 11-16画...