seq_operations
代码分析
当打开一个 stat 文件, 如 /proc/self/stat
时, 内核会从 kalloc-32 中分配一个 seq_operations
(0x20), 这个结构体如下:
「笔记」随机过程与排队论
「笔记」应用密码学与网络安全
古典密码
代替和置换
凯撒密码
单表代替密码.
$c = p + k \mod |\Sigma|$
统计频率可以攻击
Playfair
多字母代替密码
在 $5 \times 5$ 的矩阵中, 从左到右从上到下, 先填入密钥, 然后再按顺序填入剩余字母. 其中 I = J.
明文两个字母一组. 若一组字母相同, 则插入一个字母 (如 x). 若明文长度奇数, 则最后补一个字母 (如 x).
两字母在表上
- 同行, 用右边一个代替
- 同列, 用下面一个代替
- 对角线代替, (第一个字母所在行, 第二个字母所在列), (第一个字母所在列, 第二个字母所在行)
明密文不是一一对应关系, 能够降低统计规律, 但仍然有结构信息, 可被攻破.
Hill 密码
多字母代替密码
$n \times n$ 可逆矩阵 K, 明文分组, $n \times 1$ 的列向量 $p$.
加密: $c = Kp \mod |\Sigma|$
解密: $p = K^{-1}c \mod |\Sigma|$
「笔记」人工智能导论
「笔记」软件工程
第一章
软件
软件是程序, 数据及相关文档的完整集合
文档 + 程序
- ⽂档是软件质的部分
- 程序是⽂档代码化的表现形式
- 运行时提供程序
- 程序能够处理数据
- 程序能够按照预定的商业逻辑运行
- 描述程序功能需求以及程序如何操作的文档
软件危机
软件开发和维护中遇到的问题
- 怎样满足对软件日益增长的需求 (如何开发软件)
- 如何维护数量不断膨胀的已有软件 (如何维护)
说 nm 呢
产生原因:
两个方面, 1) 软件本身的特点 2) 软件开发维护的方法
- 客观: 软件本身
- 逻辑部件
- 规模庞大
- 主观: 不正确的方法:
- 忽视需求分析
- 忽视文档
- 轻视维护
解决方法:
- 组织管理
- 工程项目管理方法
- 技术措施
- 软件开发技术与方法
- 软件工具
软件工程
软件工程是知道计算机软件开发和维护的一门工程学科. 采用工程的概念, 原理, 技术和方法来开发维护软件.
软件生命周期
- 问题定义: 问题性质报告, 工程目标和规模报告, 对用户访问调查, 得到双方满意的文档
- 可行性研究: 导出系统的逻辑模型, 数据流程图, 在此基础上更准确, 更具体确定工程规模和目标, 更准确估计系统成本和效益.
- 需求分析: 和用户配合, 交流, 得出经过用户确认的系统逻辑模型, 通常用数据流程图, 数据字典和简要的算法表示
- 总体设计: 如何解决问题, 低成本完成最少的工作, 中成本完成一些附加功能, 高成本完成用户还可能希望有的功能
- 详细设计: 把任务具体化, 设计出详细的程序说明, 通常是 HIPO 图 或 PDL 语言
- 编码和单元测试: 写程序, 并测试每个模块
- 综合测试: 通过各种测试使软件达到要求
- 集成测试: 更具软件结构, 把模块按策略装配, 测试 (联调的意思)
- 验收测试: 按规格说明书的规定, 对目标系统进行验收
- 软件维护: 改正性, 适应性, 完善性, 预防性维护
软件生存周期模型
瀑布模型: