Hanerson 的学术车辙

观察 · 描述 · 记录

前言:本文是高度定向化的,仅用于南京大学2026年春季学期的课程《中国近现代史纲要》期末考试使用,不可用做一般近现代史课程的重点复习

进入近代之后中华民族的磨难与抗争

近代中国的社会主要矛盾和两大历史任务

占有支配地位的两大社会矛盾

  • 帝国主义和中华民族的矛盾
  • 封建主义和人民大众的矛盾

历史任务

  • 推翻帝国主义、封建主义联合统治的半殖民地半封建的社会制度,争取民族独立和人民解放
  • 改变中国经济技术落后的面貌,实现国家富强和人民幸福
阅读全文 »

本文部分内容由AI辅助整理

中间表示(IR)

什么是IR

  • 定义:编译器前端与后端之间使用的、与具体源语言和目标机器都相对独立的程序表示形式。
  • 作用:承载程序语义、驱动优化,并作为目标语言生成的基础。

IR的层次分类

类型 抽象程度 代表 优点 缺点
高层IR AST、语法树 便于高层语义优化(内联、异常处理) 距机器远,难以做寄存器分配
中层IR 三地址码(TAC)、四元式、SSA 权衡了可分析性与机器接近度 常见于编译器核心
低层IR 显式寄存器/栈操作 易映射到目标指令 优化空间受限
阅读全文 »

可以点击这里使用名词解释小工具

一、基础语法与形式语言

  • LHS / Left-Hand Side:产生式左侧,通常为单个非终结符
  • RHS / Right-Hand Side:产生式右侧,由终结符与非终结符组成的序列
阅读全文 »

点击–>这里<–查看原始笔记参考

本文使用例题加上知识点复习的方式对于南京大学编译原理课程做一个简单的复习

正则表达式以及 NFA & DFA

正则语法符号(最常用)

符号 含义 示例 匹配结果
* 0次或多次 ab*c "ac", "abc", "abbc"
+ 1次或多次 ab+c "abc", "abbc"
? 0次或1次 ab?c "ac", "abc"
| a|b "a", "b"
阅读全文 »

一行“T.copy”的旅行——从python到GPU指令,中间到底发生了什么?

GPU 存储金字塔

类比:桌面/书架/同一个房间/仓库/下楼走一趟

阅读全文 »

GPU发展的三个时代

  • 图形加速时代(1963-2006):核心目标为3D图形渲染加速,硬件采用固定管线设计,缺乏灵活性。
  • 通用计算时代(2006-2017):NVIDIA发布GeForce 8800及CUDA,引入统一着色器架构,GPU转变为可编程并行处理器。
  • AI工厂时代(2018至今):大模型参数量级爆发,GPU从单卡计算转向集群互联,数据中心演变为7x24小时的Token生产工厂。
阅读全文 »

RAID

基本概念

  • 定义:将多个独立磁盘组合成一个逻辑磁盘,通过并行存取提高性能,通过冗余校验提高可靠性。
  • 设计目标:解决CPU性能增长与磁盘I/O性能增长不平衡的问题。
  • 关键术语
    • Striping (条带化):将数据分块,交叉存放到多个磁盘,提高并行I/O。
    • Redundancy (冗余):通过校验码或镜像来保证数据在部分磁盘损坏时不丢失。

常见RAID级别对比

级别 数据分布方式 冗余方式 空间利用率 读性能 写性能 容错能力 (可坏盘数) 适用场景
RAID 0 条带化 (Striping) 100% (N块盘 → N倍) 高 (N倍) 高 (N倍) 0 追求速度,不要求安全(如临时缓存、游戏)
RAID 1 镜像 (Mirroring) 完全复制 50% (N/2) 高 (N倍) 最慢的磁盘 N-1 高安全性(如操作系统、关键数据)
RAID 2 位级条带化 海明码 (n)/(n+k) 较高 低 (受校验盘限制) 1 顺序数据访问,成本高,现已罕见
RAID 3 字节/位级条带化 单块奇偶校验盘 (N-1)/N N-1倍 低 (校验盘瓶颈) 1 大容量顺序数据(如视频流、科学计算)
RAID 4 块级条带化 单块奇偶校验盘 (N-1)/N 高 (N-1倍) 低 (校验盘瓶颈) 1 随机读多、写少的数据
RAID 5 块级条带化 分布式奇偶校验 (N-1)/N 高 (N倍) 中等 (写惩罚) 1 综合性能最佳(如文件服务器、数据库)
RAID 6 块级条带化 双重分布式奇偶校验 (N-2)/N 高 (N倍) 较低 (写惩罚更大) 2 高安全性需求(如金融、档案存储)
RAID 10 先镜像(RAID1),再条带(RAID0) 镜像 50% N-1 既追求速度又要求安全(如高性能数据库)

关键RAID级别特性补充

  • RAID 0 vs. RAID 5:RAID 0 写性能略好于 RAID 5,但无容错能力。
  • RAID 3 vs. RAID 4:RAID 3 适合大块顺序数据(如视频),RAID 4 适合小块随机数据(如文件)。
  • RAID 5 vs. RAID 6:RAID 6 提供双重校验,可容忍两块盘同时损坏,安全性更高,但写性能略低,空间利用率稍低。
  • RAID 10 (RAID 1+0):结合了RAID 1的高可靠性和RAID 0的高性能,既快又安全,但成本高(利用率50%)。

其他补充内容

  • Disk Cache (磁盘缓存):利用主存中开辟的缓冲区缓存磁盘扇区数据,减少实际磁盘I/O。
  • SSD (固态硬盘):当前主流趋势,无机械部件,速度远超机械硬盘(顺序读速可达7000MB/s以上,如NVMe SSD)。

核心公式与计算技巧

RAID容量与空间利用率

  • RAID 0:总容量 = N × 单盘容量
  • RAID 1:总容量 = (N/2) × 单盘容量
  • RAID 3/4/5:总容量 = (N-1) × 单盘容量
  • RAID 6:总容量 = (N-2) × 单盘容量
  • RAID 10:总容量 = (N/2) × 单盘容量 (N为偶数)

点击 –>这里<– 查看原始复习提纲

Chapter 19

需要掌握白盒测试和黑盒测试的常见方法,并进行优缺点比较 能解释并区别白盒测试三种不同的方法:语句覆盖、分支覆盖和路径覆盖

基于规格的技术——黑盒测试方法

把测试对象看做一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性

  1. 等价类划分
  2. 边界值分析
  3. 决策表
  4. 状态转换

基于代码的技术——白盒测试方法

将测试对象看做是透明的,不关心测试对象的规格,而是按照测试对象内部的程序结构来设计测试用例进行测试工作

  1. 语句覆盖(对简单情况)
    • 确保被测试对象的每一行程序代码都至少执行一次
  2. 分支覆盖(对复杂代码)
    • 确保程序中每个判断的每个结果都至少满足一次
  3. 路径覆盖(对关键、复杂的代码)
    • 确保程序中每条独立的执行路径都至少执行一次
阅读全文 »