UESTC 简介

编程学习 在大学期间,我主要学习了以下编程语言和技术: Python:用于数据分析、脚本自动化 Java:面向对象设计和大型项目开发 C/C++:系统编程和算法实现 Web 开发:HTML、CSS、JavaScript,搭建个人项目网站 项目实践 Web3 实验项目:使用区块链相关技术实现简单的去中心化应用 数据分析项目:Python + Pandas 对实验数据进行处理与可视化 课设与实验:团队协作完成 Java 和 C++ 项目,积累版本控制经验 学习心得 理论学习和实践结合,动手做项目才能加深理解 学会利用 Git/GitHub 进行版本控制和协作 多做笔记,记录学习过程中的问题与解决方案 关注新技术动态,例如 Web3、AI、云计算等 技术分享计划 定期在博客发布学习笔记与项目总结 分享代码示例和实验教程,便于同学参考 持续更新技术栈,记录成长过程

November 20, 2025 · 1 min · 31 words · Guangyang Zhong

第 4 章 串

串的存储结构 定长顺序存储(静态数组) 示意:定长顺序存储(MaxSize 固定,未用单元可能浪费) a b a c ∅ ∅ ∅ ... ∅ length=4,其余为预留空间(MaxSize-length) 存储方式:用连续存储单元(数组)依次存放字符 特点: 随机访问方便:可 O(1) 取第 i 个字符 需要预先给出 MaxSize,可能出现空间浪费或溢出 常见实现:额外记录 length(串长),便于快速求长度 堆分配顺序存储(动态数组) 存储方式:按需动态申请连续空间(如 malloc/new),串增长时可扩容 特点: 空间利用率更高,适合长度变化较大场景 扩容可能带来拷贝开销 示意:堆分配顺序存储(capacity 可扩容) base → a b a c ∅ ∅ length=4,capacity=6(增长时可申请更大块并拷贝) 链式存储(链串) 示意:链串(每个结点 1 个字符 + 1 个指针域) head → anext → bnext → anext → cNULL 优点:插入/删除不必整体移动;缺点:指针域带来额外开销、随机访问差 存储方式:用链表结点存放字符并用指针连接 特点: 插入/删除在局部位置更灵活(不必整体移动) 存储密度低(指针域开销),随机访问不便(取第 i 个字符需 O(i) 遍历) 块链存储(块链串) 示意:块链串(每结点存 k 个字符,末尾可能有空位) head → a b anext → c ∅ ∅NULL 例:块大小 k=3。相比链串减少指针数;相比顺序串允许分块扩展 核心思想:一个结点存放多个字符(一个“块”),再用指针把块串起来 特点: 相比链串:减少指针数量,提高存储密度 相比顺序存储:仍保留一定插入/删除灵活性 结点结构要点: 结点内字符数组大小 k(块大小)是性能折中:k 越大越接近顺序存储,k 越小越接近链式存储 模式匹配 朴素匹配(BF / 暴力匹配) 思想:从主串某一位置开始,逐字符与模式串比较;一旦失配,主串起始位置后移一位,模式串从头再比 设主串长度 n,模式串长度 m: 最好情况:一次就匹配成功,约 O(m) 最坏情况:大量“前缀相同、末尾失配”,时间复杂度约 O(nm) BF 的价值:实现简单,是理解 KMP 的参照物 KMP 算法 KMP 在“省”什么? 设主串 S、模式串 T,当比较到 S[i] 与 T[j] 时失配: ...

April 20, 2026 · 2 min · 410 words · Guangyang Zhong

第 3 章 栈和队列

栈 顺序栈(顺序存储结构) 示意:顺序栈(数组 + top 指针) ∅ ∅ ∅ c←top b a 栈顶在数组一端增长;入栈/出栈只移动 top 并读写对应单元 存储结构:用一段连续存储单元(数组)存放栈元素 关键指针: 常见做法:top 指向当前栈顶元素位置,或指向栈顶元素的下一位置(两种约定均可,需配套一致) 上溢/下溢: 上溢(overflow):栈满仍入栈(越界) 下溢(underflow):栈空仍出栈(非法) 时间复杂度:入栈/出栈/取栈顶均为 O(1) 空间特性:需要预先分配容量 MaxSize,可能产生空间浪费或容量不足 共享栈 示意:共享栈(top1 从左向右,top2 从右向左) top1 → S1 S1 ∅ ∅ S2 S2 ← top2 满栈常见判定:top1 + 1 == top2(依实现约定) 两个栈共享同一数组空间,分别从两端向中间增长 优点:在总空间固定时,能更充分利用存储空间;当一个栈空而另一个栈满的情况减少 满栈判定:两栈顶指针相遇(或满足相邻条件,依约定而定) 链栈(链式存储结构) 示意:链栈(表头为栈顶) top → cnext → bnext → aNULL 存储结构:用单链表实现,通常把表头作为栈顶以便 Push/Pop 在表头进行 栈顶指针:指向栈顶结点 优点: 不需要预先分配固定容量,理论上只受限于可用内存 入栈/出栈无需移动大量元素。 时间复杂度:入栈/出栈/取栈顶均为 O(1);额外指针域带来一定存储开销 栈的典型应用与要点 括号匹配 思想:扫描表达式,遇到左括号入栈,遇到右括号则与栈顶左括号进行匹配并出栈 关键结论: 扫描结束时栈必须为空才匹配成功; 扫描中任何时刻出现“需要出栈但栈空”则匹配失败 表达式求值与表达式转换 三种常见表示: 中缀(运算符在中间,日常书写) 后缀/逆波兰式(RPN)(运算符在后,便于用栈求值) 前缀(运算符在前) 中缀 → 后缀(人为转换逻辑,核心是“运算符栈”处理优先级与括号): 约定:运算符有优先级(如 * / 高于 + -),且多数二元运算符是左结合(同优先级从左到右计算)。括号用于改变优先级 准备: 一个输出序列(写下后缀表达式) 一个运算符栈(暂存运算符与左括号) 从左到右扫描中缀表达式的每个记号(操作数/运算符/括号): 遇到操作数:直接追加到输出序列 遇到左括号 (:入运算符栈(它的作用是“隔断”,直到遇到对应右括号才弹出) 遇到右括号 ): 反复弹出栈顶运算符并追加到输出序列,直到弹出左括号 ( 为止(左括号本身不输出) 遇到运算符 op(如 + - * /): 当运算符栈非空,且栈顶是运算符 topOp,并且: topOp 的优先级 高于 op,或 topOp 的优先级 等于 op 且 op 是左结合 则将 topOp 出栈并追加到输出序列;重复上述比较,直到不满足条件或遇到左括号 最后将当前运算符 op 入栈 扫描结束: 将运算符栈中剩余的运算符依次弹出并追加到输出序列(此时不应再有括号;若有通常说明表达式括号不匹配) 后缀表达式求值: 扫描:操作数入栈;遇运算符则弹出两个操作数计算后再入栈; 结束时栈顶即结果 出栈序列计数(卡特兰数) 问题表述(常见考点):对 n 个元素按固定顺序 1,2,...,n 依次入栈(入栈顺序固定),在允许任意时刻出栈的前提下,一共有多少种不同的出栈序列? 结论:合法出栈序列的种类数为第 n 个卡特兰数 Cn = (1 / (n + 1)) · C(2n, n) ...

April 13, 2026 · 2 min · 319 words · Guangyang Zhong

第 2 章 数据的机器级表示

IEEE754 ASCII American Standard Code for International InterInterchange 数据的宽度和存储 主存容量使用的单位 1 KB (kilobyte)=210 字节 1 MB (megabyte)=220 字节 1 GB (gigabyte)=230 字节 1 TB (terabyte)=240 字节 1 PB (petabyte)=250 字节 1 EB (exabyte)=260 字节 1 ZB (zettabyte)=270 字节 1 YB (yottabyte)=280 字节 ## 主频和带宽使用的单位 比特/秒:b/s 或 bps 1 kb/s=103 b/s = 1000 bps 1 Mb/s=106 b/s = 1000 kb/s 1 Gb/s=109 b/s = 1000 Mb/s 1 Tb/s=1012 b/s = 1000 Gb/s 硬盘和文件使用的单位 ...

March 30, 2026 · 1 min · 88 words · Guangyang Zhong

第 3 章 运算方法和运算部件

C 语言中涉及的运算 按位运算:或运算(|)、与运算(&)、取反运算(~)、异或运算(^) 逻辑运算:或运算(||)、与运算(&&)、非运算(!) 移位运算: 逻辑移位 算术移位:右移高位补符号 位扩展和位截断运算 0 扩展 符号扩展 带标志加法器 溢出标志 OF(Overflow Flag) : OF = Cn ⊕ Cn-1 符号标志 SF(Sign Flag) : SF = Fn-1 零号标志 ZF(Zero Flag) :ZF = 1,当且仅当 F = 0 进位/借位标志 CF(Carry Flag) :CF = Cout ⊕ Cin 定点数运算 无符号数和补码加减法运算 Y 即 Y 各位取反 CF = Cin ⊕ Cout,CF 对于补码加减法运算无实际意义 无符号数(X 和 Y 就是 x 和 y 的二进制表示) 加法 : X + Y, Cin = 0 减法 : X + Y + 1, Cin = 1 补码(X 和 Y 就是 x 和 y 的补码表示) 加法 : X + Y, Cin = 0 减法 : X + Y + 1, Cin = 1 原码乘法运算 原码一位乘法 ...

March 30, 2026 · 2 min · 361 words · Guangyang Zhong

第 2 章 线性表

线性表的定义 在稍微复杂的线性表中, 一个数据元素可以有若干个数据项组成, 常把数据元素称为记录, 含有大量记录的线性表又称为文件 ...

March 14, 2026 · 1 min · 177 words · Guangyang Zhong

第 1 章 绪论

基本概念和术语 数据: 是对客观事物的符号表示, 在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称 数据元素: 是数据的基本单位, 在计算机程序中通常作为一个整体进行考虑和处理(一个数据元素可由若干个数据项组成) 数据对象: 是性质相同的数据元素的集合, 是数据的一个子集 数据结构: 是相互之间存在的一种或多种特定关系的数据元素的集合. 包括三方面的内容: 逻辑结构, 存储结构和数据的运算 线性结构 非线性结构: 集合, 树形结构, 图状结构或网状结构 存储结构(物理结构): 数据结构在计算机中的表示(又称映像) 数据元素在计算机中的映像称为元素或结点, 例如通常用一个字长的位串表示一个整数, 通常称这个位串为元素或节点. 当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串称为数据域 * 顺序存储结构(顺序映像) * 链式存储结构(非顺序映像) * 索引存储 * 散列存储(哈希存储) 算法的设计取决于选定的数据逻辑结构, 而算法的实现依赖于采用的存储结构 数据类型: 和数据结构密切相关的一个概念, 最早出现在高级程序语言中, 用以刻画(程序)操作对象的特性 原子类型 结构类型 抽象数据类型(ADT): 是指一个数学模型以及定义在该模型上的一组操作 原子类型 固定聚合类型 可变聚合类型 后两种可统称为结构类型 多形数据类型: 指其值的成分不确定的数据类型 算法和算法分析 5 个重要特性: 有穷性 确定性 可行性 输入 输出 算法的设计要求 正确性 可读性 健壮性 效率与低存储量需求 算法效率的度量 事后统计的方法 事前分析估算的方法 算法的存储空间需求 如果一个问题所占的输入数据空间是固定的、和算法无关的, 那我们在分析空间复杂度时,只需要关注算法额外使用的空间(也叫辅助空间)

February 28, 2026 · 1 min · 69 words · Guangyang Zhong

第 1 章 计算机系统概述

计算机系统的基本组成 一个完整的计算机系统由软件和硬件组成 冯.诺依曼结构的基本思想 采用"存储程序"的工作方式 计算机由运算器, 控制器, 存储器, 输入设备和输出设备 5 个基本部件组成 现代计算机结构 中央处理器 数据通路 算术逻辑单元(ALU) 通用寄存器组 控制器 存储器 外部设备和设备控制器 总线 计算机系统层次结构 包含: 算法和程序 编程语言 语言处理系统 操作系统 指令集体系结构 微体系结构 编程语言 高级语言 低级语言 机器级语言 机器语言(计算机唯一能直接识别和执行的语言) 汇编语言 翻译程序 汇编程序(汇编语言 -> 机器语言) 解释程序(高级语言 –逐条–> 机器语言) 编译程序(高级语言 –整体–> 机器语言) 程序开发与执行过程 从源程序到可执行程序 预处理阶段: 预处理器 (cpp) 处理源文件中以 # 开头的预处理指令, 生成预处理后的 C 文件 hello.i 编译阶段: 编译器 (ccl) 将 hello.i 翻译为汇编程序 hello.s 汇编阶段: 汇编器 (as) 将 hello.s 转化为机器语言指令, 生成可重定位目标文件 hello.o 链接程序: 连接器 (ld) 将 hello.o 与标准 C 库中所需的函数 (例如 printf) 进行链接, 解析外部符号引用, 最终生成完整的可执行文件 hello, 并保存至磁盘 计算机主要性能指标 基本基本 吞吐率 : 在单位时间内所完成的工作量 响应时间 : 指从作业提交开始到作业完成所用的时间 时钟周期 : 机器内部主时钟脉冲的宽度 时钟频率 : 机器内部主时钟的频率, 即时钟周期的倒数 CPI: 执行一条指令所需的时钟周期数 MIPS: 每秒执行多少百万条指令 计算能力相关指标 MFLOPS : 百万次浮点运算/秒 GFLOPS : 十亿次浮点运算/秒 TFLOPS : 万亿次浮点运算/秒 PFLOPS : 千万亿次浮点运算/秒 EFLOPS : 百亿亿次浮点运算/秒 ZFLOPS : 十万亿亿次浮点运算/秒 1s = 1000 ms = 1000000 μs = 1000000000 ns ...

February 28, 2026 · 1 min · 143 words · Guangyang Zhong

机械硬盘结构图解

核心组件解析 1. 盘片与涂层 盘片(Platter):硬盘中的圆形磁性盘片,通常为铝合金或玻璃材质 表面涂层:磁性材料涂层,用于存储数据(0和1的磁化方向) 2. 读写机制组件 旋转轴 → 盘片 → 磁道 → 扇区 ↑ ↑ ↑ ↑ spindle platter track sector 主轴(Spindle):连接所有盘片的中心轴,控制盘片旋转 旋转(Rotation):盘片以恒定角速度旋转(如7200 RPM) 读写头(Read-Write Head):在盘片表面读取和写入数据的微小电磁体 3. 定位系统 机械臂(Arm Assembly):支撑读写头的移动结构 臂(Arm):连接读写头的悬臂,可径向移动 读写头定位:机械臂带动读写头在盘片上方移动(不接触盘面) 数据组织方式 1. 几何结构层次 柱面(最大单位) ← 盘片组垂直对齐 ↓ 磁道(同心圆) ← 单个盘面上的环形区域 ↓ 扇区(最小单位) ← 磁道被等分的弧段 2. 关键术语解释 柱面(Cylinder,c):所有盘面上相同半径的磁道集合形成的"柱状"区域 磁道(Track,t):单个盘面上的一个同心圆环,数据存储的基本环形路径 扇区(Sector,s):磁道上划分的固定大小弧段(通常512字节或4KB) 工作原理 数据访问流程 寻道(Seeking):机械臂移动读写头到目标磁道上方 旋转等待(Rotational Latency):等待目标扇区旋转到读写头下方 数据传输:读写头执行读/写操作 性能参数 寻道时间:机械臂移动到目标磁道的时间 旋转延迟:盘片旋转使目标扇区到达读写头的时间 传输速率:数据在接口上的传输速度 存储密度与容量计算 容量公式 硬盘容量 = 柱面数 × 磁头数(盘面数×2)× 扇区数 × 扇区大小 现代发展 垂直记录技术:提高存储密度 SMR(叠瓦式磁记录):磁道部分重叠,增加容量但影响随机写入性能 物理特性 关键技术特点 浮动高度:读写头悬浮在盘片上方约3-5纳米处 空气轴承:盘片旋转产生空气流,保持读写头稳定悬浮 启停区:硬盘不工作时读写头停放在盘片外缘安全区 脆弱性注意事项 防震需求:运行时震动可能导致磁头撞击盘面(磁头碰撞) 温度控制:热膨胀影响磁头定位精度 灰尘防护:密封环境防止污染物进入 应用与优化 数据布局优化 外圈磁道:线性速度更快,适合存储频繁访问的数据 分区对齐:确保分区起始位置与物理扇区边界对齐 维护要点 定期碎片整理:减少寻道时间(对HDD重要) SMART监控:监测硬盘健康状态 避免频繁启停:减少机械磨损

November 20, 2024 · 1 min · 92 words · Guangyang Zhong