欢迎来到我的博客!这里是我记录编程世界旅程的开始 🎉
本博客的目的
在这个博客中,我将记录我的课程学习记录,展示我的项目,并分享我在编程过程中个人的反思。我的目标是创造一个供学习和分享知识的空间,与同样热爱编程的朋友们交流。
期待的内容
- 学习记录 🗒️: 来自我课程的笔记和见解。
- 项目展示 💻: 对我个人项目及其开发过程的详细介绍。
- 个人反思 📓: 在我编程旅程中所学到的思想和经验。
2024年11月2日小于 1 分钟
欢迎来到我的博客!这里是我记录编程世界旅程的开始 🎉
在这个博客中,我将记录我的课程学习记录,展示我的项目,并分享我在编程过程中个人的反思。我的目标是创造一个供学习和分享知识的空间,与同样热爱编程的朋友们交流。
信息技术硕士,计算机方向
墨尔本大学
2024年2月 - 2025年12月
相关课程: 编程与软件开发,计算机网络,数据结构与算法,数据库系统,分布式系统,集群与云计算,声明式编程,机器学习,软件过程与管理,信息可视化
客户端存储:
localStorage
- 持久化存储sessionStorage
- 会话存储Memory
- 内存存储(最安全,但刷新页面会丢失)HttpOnly Cookie
- 相对安全的方式public class Singleton {
// volatile保证可见性和禁止指令重排
private static volatile Singleton instance;
public static Singleton getInstance() {
if (instance == null) { // 第一次检查 不加锁直接读,效率高
synchronized (Singleton.class) { // 加锁后再次检查,避免多个线程同时创建实例
if (instance == null) { // 第二次检查
instance = new Singleton();
}
}
}
return instance;
}
}
MySQL 的 Buffer Pool(缓冲池)是 InnoDB 存储引擎中最核心的内存区域,主要用于缓存磁盘上的数据页,加速数据读写。
类型 | 说明/作用 |
---|---|
数据页(Data Page) | 存储表的实际数据行 |
索引页(Index Page) | 存储 B+ 树索引节点 |
Undo 页 | 存储回滚日志,支持事务和 MVCC |
Change Buffer 页 | 缓存二级索引的变更操作,提升插入效率 |
自适应哈希索引 | 热点数据自动生成哈希索引,加速查询 |
锁信息 | 记录锁定信息,支持并发控制 |
数据字典信息 | 缓存表结构、索引结构等元数据 |
阶段 | 技术基础 | 存储技术 | 编程语言 | 特点 |
---|---|---|---|---|
第一代(1940s-1950s) | 电子管 | 鼠笼式延迟线、磁鼓 | 机器语言 | 体积大、功耗高、运算慢、I/O 很慢、可存储信息 |
第二代(1950s-1960s) | 晶体管 | 磁芯存储器 | 汇编语言 | 更小更快、更稳定、更省电 |
第三代(1960s-1970s) | 中小规模集成电路(SSI/MSI) | 磁芯/半导体混合 | 高级语言出现 | 操作系统问世,批处理多道 |
第四代(1970s-至今) | 大规模/超大规模集成电路(LSI/VLSI) | 半导体存储器 | C语言等高级语言广泛 | 微处理器诞生,计算机普及化,出现个人电脑、网络、AI |
M2M 类型 | 英文全称 | 含义解释 | 关键词/提示语 |
---|---|---|---|
机器对机器 | Machine to Machine | 设备之间自动通信,不需要人为干预 | 自动控制、数据交互 |
人对机器 | Man to Machine | 人类通过接口与设备交互 | 人工输入、控制命令 |
机器对人 | Machine to Man | 设备将信息反馈给人类 | 报警、状态提示 |
移动网络对机器 | Mobile to Machine | 通过移动网络远程控制或采集设备数据 | 无线通信、远程管理 |
特征 | 含义 | 关键点 | 举例 | 实现方式 |
---|---|---|---|---|
并发性 | 系统允许多个程序同时存在,并交替执行 | 提高资源利用率、吞吐量 | 多个进程同时驻留内存 | 多道程序设计 |
共享性 | 多个进程可共同使用资源(资源复用) | 并发进程共享系统资源 | 多个进程共享打印机 | 资源统一管理 |
虚拟性 | 一个物理资源被“变成”多个逻辑资源,用户感觉“独占” | 逻辑 > 物理 | 虚拟内存、虚拟 CPU | 时分复用、空分复用 |
异步性 | 程序执行过程不可预期,按调度策略交替推进 | 非连续执行 | 一个进程执行到一半被切换 | 调度、切换机制 |
组合数 C(10,4) 表示从 10 个不同的元素中选出 4 个的不重复、无顺序的选法数。
C(n,k) = n! / (k! × (n - k)!)
所以:
C(10,4) = 10! / (4! × (10 - 4)!) = (10 × 9 × 8 × 7) / (4 × 3 × 2 × 1) = 5040 / 24 = 210
你不一定要写全阶乘,直接写:
C(10,4) = (10 × 9 × 8 × 7) / (4 × 3 × 2 × 1)