基础算法 2026-06-19
Rust辨析: Deref、AsRef、Borrow、From、Into 2026-06-17
- 目录大纲
- 解引用家族的核心底牌 (Deref & DerefMut)
- 1.1 痛点引入:为什么需要解引用?
- 1.2 心智模型:智能指针的“隐形披风”
- 1.3 底层机制与内存物理布局
- 1.4 相似与不同:Deref 与 DerefMut 的约束继承
- 1.5 工业级代码实例
- 借用视角的化身协议 (AsRef, AsMut & Borrow)
- 2.1 痛点引入:多重视角切换与函数入参爆炸
- 2.2 心智模型:多功能的“观察窗口(Viewing Port)”
- 🎯 核心对比:AsRef 与 Borrow 的细微差别
- 2.3 物理内存布局
- 2.4 工业界选型指南
- 2.5 工业级代码实例:通杀路径的公共文件处理器
- 所有权转换的钢铁鸿沟 (From & Into 及其变体)
- 3.1 痛点引入:深浅拷贝的混乱与所有权毁灭
- 3.2 心智模型:原子重组舱
- 3.3 物理内存布局与零拷贝退化
- 3.4 相似与不同:深度厘清 4 对黄金转换特征
- 1. From & Into vs TryFrom & TryInto
- 2. FromStr vs TryFrom<&str>
- 3. Display vs From<MyType> for String
- 4. From vs Into 的自动推导机制
- 3.5 工业级代码实例
- 孤儿规则与泛型特赦
- 4.1 痛点引入:下游依赖的混乱地狱
- 4.2 心智模型:原住民优先保障政策
- 4.3 底层机制与泛型特赦漏洞
- 4.4 工业界选型指南
- 借用生命周期的微观生死 (Reborrowing)
- 5.1 痛点引入:可变借用的独占性灾难
- 5.2 心智模型:唯一的特权车钥匙与临时分包
- 5.3 底层机制与借用检查器的微观工作链条
- 5.4 工业级代码演示:探索可变引用的生死边界
- 坐标与索引的工业设计哲学
- 6.1 痛点引入:数据解构的职责混乱
- 6.2 心智模型:视口的专属翻译官
- 6.3 物理内存布局与 Index 语法糖
- 6.4 工业级代码演示:零成本网格索引器
- Map 映射操作的万物生化
- 7.1 痛点引入:命令式循环与临时状态污染
- 7.2 心智模型:无水的流式管道线
- 7.3 物理底牌与寄存器级内联优化
- 7.4 工业级代码演示:从数据提取到高精度映射
- 🎯 结语:Rust 极简思维的终极回归
从“破防”到“顿悟”的 Rust 类型驱动设计思维全纪录 2026-06-17
内存管理、mmap、brk/sbrk、文件映射、软渲染与实践项目 2026-06-16
- 目录
- 1. GDI 对象、DeleteObject、DC 的生命周期
- 2. Windows 虚拟内存:VirtualAlloc、HeapAlloc、MEM_RESERVE、MEM_COMMIT
- 3. Linux 内存:brk/sbrk、mmap、malloc 的关系
- 4. 文件映射 mmap:原型、偏移、长度、与 read 的差别
- 5. 从 CPU 视角理解 read / mmap / DMA / page fault / zero-copy
- read 的路径
- mmap 的路径
- 6. softbuffer 是什么,它在 Linux 上如何工作
- 7. Handmade Hero 风格是否还能在 Linux 上实现
- 8. Arch Linux 解压 rar
- 9. 重要结论:碎片、层级、边界与误区
- 9.1 碎片不是 bug,而是动态分配的自然代价
- 9.2 brk/sbrk 像 stack,但不是 stack
- 9.3 mmap 是独立 mapping,不是“自动免碎片”
- 9.4 不能把“物理页是否存在”与“逻辑上是否属于你”混为一谈
- 10. 最终实践项目:软件渲染图片查看器
- 10.1 项目总目标
- 10.2 总体技术栈
- 10.3 项目结构
- 10.4 阶段 1:窗口 + framebuffer
- 10.5 阶段 2:软件绘图 API
- 10.6 阶段 3:BMP 解析器
- 10.7 阶段 4:mmap 文件读取
- 10.8 阶段 5:arena allocator
- 10.9 阶段 6:摄像机和平移/缩放
- 10.10 阶段 7:性能分析
- 10.11 阶段 8:扩展为小型 2D 软件渲染器
- 10.12 为什么这个项目能“巩固整个会话”
- 11. 关键术语速查
Handmade Hero 学习路线Rust · Arch Linux · 全 667 集 2026-06-15
claude使用 2026-02-27
计划 2025-09-09
- 终极蓝图V13.0:“学习之道”实战计划
- 阶段一:计算的基石 —— 机器、语言与抽象 (第1 - 9个月)
- 阶段二:现代Web“工具箱”的构建 (第10 - 18个月)
- 阶段三:Rust与后端“铸造” (第19 - 27个月)
- 阶段四:跨平台与价值实现 (第28 - 30个月)
- inbox
- 清华 rust 课
- C即时通讯 in Rust
- java DataBase书 in rust
- rust写预定系统
- sylar服务器 in Rust
- 陈硕 muduo in Rust
- rust lecture
- 整理 the rust book 的 todo list
- Self Referential Structs in Rust@rust
- Build your own blockon()@rust
- Build your own executor@rust
- Green Threads Explained in 200 lines of rust@rust
- Futures Explained in 200 Lines of Rust@rust
- rust数据结构@rust
- 学习 gtd 书
- TODO 整理多线程代码@rust
- 抄一遍到笔记上.
- TODO [#C] 学习linux basic
- TODO [#C] 看emacs region这篇文
- TODO [#B] 整理 compiler 计划
- TODO [#C] 看cpp atomic videos
- DOING [#A] 完成Eoc课程@compiler
- DONE L1
- DONE L2
- DONE L3
- DONE L4
- DONE L5
- DONE L6
- DONE L7
- TODO L8
- TODO L9
- TODO L10
- TODO L11
- TODO L12
- TODO L13
- TODO L14
- TODO L15
- TODO L16
- TODO L17
- TODO L18
- TODO L19
- TODO L20
- TODO L21
- TODO L22
- TODO L23
- TODO L24
- TODO L25
- TODO L26
- TODO L27
- TODO L28
- TODO L29
- DOING [#A] Unity Pokemon
- p1-p3
- p4-p6
- p7-p9
- p10-p12
- p13-p15
- p16-p18
- p19-p21
- p22-p24
- p25-27
- p28-30
- p31-33
- DOING [#A] rust语言圣经@rust
- DONE 多线程
- TODO 全局变量
- 错误处理
- unsafe
- Macro
- async/await
- tokio
- 难点攻关
- 自动化测试
- cargo
- 实现链表
- 征服编译错误
- DOING [#A] 分析cranelift源码@rust@compiler
- DOING [#A]印度compiler课程@compiler
- L18 machine independent opts
- L19 basic block, cfg
- L20 local optimizition
- L21 ssa
- L22 dataflow examples
- L23 liveness
- L24 available
- L25 llvm101
- L26 runtime
- L27 code gen
- L29 local reg alloc
- L30 global reg alloc
- DOING [#B] 抄个sfml rpg
- DONE sfml rpg 11–13节
- DONE sfml rpg 14–16节
- DONE sfml rpg 17–19节
- TODO sfml rpg 20–22节
- TODO sfml rpg 23–25节
- TODO sfml rpg 26–28节
- TODO sfml rpg 29–31节
- TODO sfml rpg 32–34节
- TODO sfml rpg 35–37节
- TODO CSEP 501 (EAC)@compiler
- TODO [#A] 北大编译课@compiler
- [#A] Rust 秘典(死灵书)@rust
- [#A] 学习EAC书的内容@compiler
- [#B] 阅读async book@rust
- 韩国编译课程@rust@compiler
- TODO DC 888@compiler
- TODO CSE 231 advanced compiler@compiler@cpp
- TODO [#C] ece459@rust@system
- TODO [#B] cs110L@rust@system
- [#C] 完成过程宏的几个实验@rust
- [#B] 学习elisp@emacs
- compilerai课程@compiler
- [#C]Vulkan Game Engine Series
- [#C] mydocker@system
- [#C] 每天看一小节陈正康单词课
- Python Cookbook
- 看完mini perl
- 编译器 eoc
- react + web 开发
- standford 网络
- cmu db
- OS mit lab /thu os in rust
- 南京大学 & csapp lab
- youtube 静态分析 cpp lab
- llvm@compiler
- https://vmm.dev/en/rust/@rust
- spinlock
- data structures
- build a os@system
- emacs文章@emacs
- org mode gtd@emacs
- learn C++@cpp
- 读懂 Rust 的Arc@rust
- A Guide to Porting C/C++ to Rust@rust@cpp
- rust cookbook@rust
- cs110L lab@rust@system
- opengl modern
- C programming + basic makefile
- React源码
- 职业编曲课
- DONE 配置org的番茄钟在界面上显示时间
- DONE [#B] 看rust atomic video
- DONE [#C] Emacs Lisp: Get User Input
learning 2025-09-09
- 精通任何技术视频教程的终极 S.O.P. (标准作业流程)
- 彻底改变学习习惯的五句“心智箴言”
- 1. 当你因为计划不够完美、工具不够好、时机不合适而迟迟不敢开始时,对自己说:
- 2. 当你因为一个“工房项目”做得不够好、不够酷,而感到羞愧、不想示人时,对自己说:
- 3. 当你卡在一个Bug上数小时、肌肉紧绷、头疼欲裂、开始怀疑自己是不是“不适合编程”时,对自己说:
- 4. 当你看到别人快速“刷完”一门课程,而自己进度缓慢,开始羡慕和焦虑时,对自己说:
- 5. 当你感觉好像理解了一个概念,但不确定是否真的懂了时,对自己说:
- 第一部分:学习操作总流程
- 阶段〇:战略准备 (课程或大章节开始前)
- 阶段一:学习执行 (每个专注时段,推荐以 25+5 的番茄钟为单位)
- 阶段二:课后固化 (学习时段结束后立即进行,至关重要)
- 阶段三:长期内化 (每日/每周坚持)
- 第二部分:笔记记录工作流
- 第一步:判断知识类型
- A. “工匠工具箱”工作流 (记录工具用法)
- B. “建筑师蓝图”工作流 (记录算法/数据结构)
- C. “四角色解构”工作流 (记录抽象思想)
- 通用:做作业/项目时的“侦探日志”
- 费曼学习法
- 第一步:放下“必须用比喻”的执念(核心心态转变)
- 第二步:启动“纯逻辑”降维打击(替代操作流)
- A. 从“问题”出发,讲述一个“故事” (Problem-First Narrative)
- B. 用“流程图”的方式讲话 (Step-by-Step Blueprint)
- C. 用一个“具体例子”贯穿始终 (Concrete Example Walkthrough)
- 第三步:如何“刻意练习”你的类比能力(长期策略)
- 何时开始费曼学习
- 第一部分:何时开始?—— 最佳时机
- 第二部分:如何应用于“操作性知识”?—— 讲解“工作流”而非“定义”
- 1. 讲解一个“黑箱”的内部工作流 (Explaining a "Black Box" Workflow)
- 2. 讲解一个“决策点”的权衡取舍 (Explaining a "Decision Point")
- 3. 讲解一个“标准操作程序” (Explaining a Standard Operating Procedure, S.O.P.)
- 第三部分:费曼学习法终极S.O.P. (一步步照做)
- 第一步:锁定目标与准备 (Target & Prepare)
- 第二步:尝试讲解 (Attempt to Teach)
- 第三步:识别“卡壳点” (Identify Sticking Points)
- 第四步:回溯研究 (Go Back & Research)
- 第五步:简化与重构 (Simplify & Refactor)
- “代码复刻”的正确姿势:三遍阅读与实践法
- 第一遍:侦察兵模式 —— “只读不写,建立地图”
- 第二遍:学徒模式 —— “预测-执行-注释”
- 第三遍:工匠模式 —— “闭卷重建与自由创作”
- 总结
CS61A 2025-09-09
(无章节)
基本的 cmake 命令 2025-09-05
emacs备忘 2025-09-05
- kill buffer: C-x k
- S-tab 对整个文件进行缩进
- Tab 对特定标题下的内容进行展开/折叠
- C-\<RET> 自动创建和上面相同的标题
- M-左/右 对标题的缩进进行调整
- M-上/下 对标题所在行的位置进行调整
- 用三组括号标记链接/图片
- 表格 行末按Tab
- 任务状态切换 C-c C-t
- TODOtask1
- TODOtask2
- 查看整个文件中的todo事项
- 为todo事项添加子任务
- TODOsome hige task [0/3] [0%] (用C-c C-c来刷新任务进度)
- C-c [将文件加入agenda列表中
- C-c ]将当前文件从agenda列表中移除
- Mx org-agenda
- 代码块
- C-c d/s 为任务设定开始和截止日期
- TODOsometask
- agenda来查看任务时间表
- C-c C-e h将org导出为html
- C-S-p
- open file
- close edit :关闭当前文件
- shortcuts
- new untitled file 创建新文件
- new window
- open Folder :打开文件夹
- open recent
- add folder to workspace
- save workspace as
- prefer setting (ui/json) 设置
- 选中范围内查找替换
- eval-expression M-: 对表达式进行求值
- eval-buffer
- variable
白斩鸡 2025-09-05
(无章节)
x86-64 2025-09-05
(无章节)
Csharp 2025-09-05
Unsafe 2025-09-05
- 对代码进行格式化cargo fmt
- cargo test
- 编译链接 cargo build
- 对代码进行检查: cargo clippy
- 用cargo安装二进制包
- 以release模式进行编译
- 标量Scalar类型
- 数字类型
- 字符类型
- 复合类型
- 数组
- 切片类型 Slice
- 作为参数的切片类型
- 用struct组织相关联的数据
- 定义并实例化struct
- tuple struct
- unit-like struct
- struct的方法
- 使用struct的示例
- Enum: rust中的变体Variant
- 标准库中的Enum: Option\<T>
- if let: 只处理一种模式的语法糖
- for
- loop
- 所有权规则
- 变量的作用域
- 所有权和函数
- 返回值和作用域
- 引用类型和借用
- 可变引用
- 作为返回值的引用类型
- .enumerate()为元素附加上index
- with_capacity(usize)
- v.extend(迭代器)
- drain(..)
- 默认的Hash函数 DefaultHasher
- 带约束的泛型
- 以常量作为泛型参数
- 常量表达式
- 特征对象
- 特征对象的两种类型
- 静态分派/动态分派
- 动态分派的汇编
- 对象安全
- 类型转换
- 数值类型的转换
- 隐式类型转换
- 无限制转换 \<– ?????
- 整数 ==>enum
- 定长类型 & 不定长类型
- 定长类型(Sized)
- 不定长类型(DST)
- hashmap
- 可恢复错误 Result
- 不可恢复错误 panic!()
- 何时 panic ?
- 函数和闭包的关系:
- 闭包的两种写法
- 闭包作为返回值
- crate
- module
- 嵌套的Module
- 将module放在不同文件
- 导入名字:use 路径
- 重新导出:pub use
- struct和pub
- const/static
- 可见性控制小结: 各种pub
- 将程序变为library
- 首先将代码拆分为两部分:
- 创建src/lib.rs
- 创建src/bin/目录
- 多个可执行文件
- 格式化输出
- Box<T>
- Box::leak: 绕过 drop
- 解引用Deref
- Drop
- Rc和Arc
- 内部可变:Cell和RefCell
- 作用
- 对比
- Cell
- RefCell
- 可有多个owner+可修改:Rc<RefCell<T>>
- 容器的可变借用
- [x]Weak解决循环引用
- 裸指针
- Pin + NonNull
- Rc+RefC
- 计算时间差
- 基本线程管理
- 创建线程 spawn()
- 获得某个线程的信息 id(), name()
- 阻塞线程 park()/unpark()
- 线程休眠 sleep()
- 主动放弃当前时间片 yieldnow()
- 等待子线程 join()
- 线程的结束
- 线程局部变量thread_local!{ }
- 线程间的数据共享&通信
- [共享内存] Arc + Mutex(data)
- [消息传递] Channel
- Send&Sync
- 动机
- 定义
- Send
- Sync
- 默认行为
- 同步
- 条件变量 Condvar
- 多个线程仅执行一次的代码片段Once
- 线程Barrier
- 内存模型&原子操作
- 在自旋中 hint::spinloop()
- 基于锁的数据结构
- 无锁数据结构
- 设计并发代码
- 高级线程管理: 线程池
- 并行算法
- 多线程的debug
- IO操作
- 创建输入/输出源
- 读取输入源 Read
- 写入输出源 Write
- web server
- linux I/O
- 进程
- 信号
- 时间/定时器
- 线程
- 线程同步: 锁+条件变量
- 信号量
- IPC
- 进程间通讯
- 信号量集
- 共享内存
- 消息队列
- socket: tcp/udp
- 有内部可变性的类型: Cell/RefCell/Mutex/Atomic
- Into\<…>
- 某对象有多个使用者
- 不能直接写: dyn A + B
- 实现了Copy的类型 其成员函数的入参是self类型
- 处理 Option/Result 类型的值
- 访问字符串的第i个字符
Ch1 2025-09-05
procedural-marcos 2025-09-05
(无章节)
declarative-macros 2025-09-05
(无章节)
Cranelift IR 文档 2025-09-05
特权级架构 2025-09-05
简介 2025-09-05
fd (find) 2025-09-05
- 忽略错误继续执行
- 退出 exit n
- 判断文件是否存在
- 设置/取消代理
- clone 子模块
- 指定需要克隆的branch
- 查看目录下的大文件
- debtap
- dpkg
- 重启ssh服务
- 查看ssh服务是否启动
- 定义变量
- 伪目标 .PHONY
- 为整个项目添加宏定义
- 为目标链接上库
- 通配符
- 函数调用
- 当前目录下某一类型的所有文件形成的列表
- 将列表中的所有匹配项替换为指定形式
- 为可执行文件设置环境变量
- 为可执行程序传参
- 显示某文件源代码
- 添加断点
- 查看断点
- 禁用断点
- 重新启用断点
- 删除断点
- 保存断点到文件
- 单步跳过 next
- 继续执行, 直至遇到断点
- 运行到某处,忽略期间的断点
- 进入到函数内部
- 从函数中跳出并暂停
- 强制从函数中返回特定值
- 跳转到指定位置继续执行
- 显示当前所有的局部变量
- 变量/表达式相关
- 打印变量/表达式
- 自动显示变量值
- 取消对变量的自动显示
- 显示变量/表达式类型
- 修改变量的值
- 监视某变量的值
- 栈相关
- 显示堆栈信息: bt
- 切换栈帧
- 调试已经运行的程序
- 检查点
- 在当前位置添加checkpoint
- 查看所有checkpoints
- 删除指定checkpoint
- 线程
- 显示所有线程
- 切换到指定线程
- 以指定格式显示某地址处的内容
- 反向运行
- 无法使用, 报错
- 配置纯C项目
- 配置C++项目
- 组成
- 功能
- 接口
- eg: pids控制器
- 删除cgroup
- 控制器概览
- cpu
- cpuset: 控制cpu和内存亲和度
manateelazycat 2018 年12 月 11 日 07:10 #16 2025-09-05
(无章节)
字体包名中的附加术语: 2025-09-05
文本文件显示异常( 中文utf-8编码 ) 2025-09-05
(无章节)
+begin_src 2025-09-05
- 基本约定
- "the lisp reader/printer"
- nil的语义
- 真值的表示
- nil和t都是常量
- 判断是否为bool类型
- require / provide
- 在文件末尾导出模块
- 导入模块
- emacs的导入模块的寻找路径(load-path)
- 添加新的模块到load-path
- 将当前目录下的每个目录的路径加入到loadpath中
- interactive
- 简介
- 以光标位置为参数 "d"
- 前缀参数 "P/p"
- 文件/目录相关
- 当前目录 default-directory
- 查找包含指定文件的父目录 locate-dominating-file
- 打开文件 find-file
- 判断某文件是否存在 file-exists-p
- 获取目录的名字 directory-file-name
- 获取文件路径的目录部分 file-name-directory
- 将路径转换为绝对路径
- 返回目录形式的文件路径(加个斜线在最后) file-name-as-directory
- list相关
- note
- list和cons cell
- 和list相关的谓词
- 访问list中的元素
- 创建list/cons-cell
- 修改list类型变量
- 修改已经存在的list结构
- 数据类型
- 简介
- 对象的输出表示 && 读取语法
- 注释
- 和编程相关的类型
- 文本属性
- buffer
- current buffer
- 操作系统接口
- 空闲定时器
为函数添加别名 2025-09-05
(无章节)
L1: C 2025-09-05
数据结构 2025-09-05
语义分析 sematic analysis 2025-09-05
动态dyn分发 2025-09-05
(无章节)
rustpractice 2025-09-05
(无章节)
Rust 生命周期杂记 2025-09-05
iterator 2025-09-05
(无章节)
My Notes 2025-09-05
- Table of Contents
- 1emacs备忘
- 1.1kill buffer: C-x k
- 1.2
- 2org 入门
- 2.1S-tab 对整个文件进行缩进
- 2.2Tab 对特定标题下的内容进行展开/折叠
- 2.3C-<RET> 自动创建和上面相同的标题
- 2.4M-左/右 对标题的缩进进行调整
- 2.5M-上/下 对标题所在行的位置进行调整
- 2.6用三组括号标记链接/图片
- 2.7表格 行末按Tab
- 2.8任务状态切换 C-c C-t
- 2.8.1TODOtask1
- 2.8.2TODOtask2
- 2.9查看整个文件中的todo事项
- 2.10为todo事项添加子任务
- 2.10.1TODOsome hige task[0/3][0%](用C-c C-c来刷新任务进度)
- 2.11C-c [将文件加入agenda列表中
- 2.12C-c ]将当前文件从agenda列表中移除
- 2.12.1Mx org-agenda
- 2.13代码块
- 2.14C-c d/s 为任务设定开始和截止日期
- 2.14.1TODOsometask
- 2.15agenda来查看任务时间表
- 2.16C-c C-e h将org导出为html
- 3VSCode
- 3.1C-S-p
- 3.1.1open file
- 3.1.2close edit :关闭当前文件
- 3.1.3shortcuts
- 3.1.4new untitled file 创建新文件
- 3.1.5new window
- 3.1.6open Folder :打开文件夹
- 3.1.7open recent
- 3.1.8add folder to workspace
- 3.1.9save workspace as
- 3.1.10prefer setting (ui/json) 设置
- 3.2选中范围内查找替换
- 3.3
- 4Elisp
- 4.1eval-expression M-: 对表达式进行求值
- 4.2eval-buffer
- 4.3variable
- 5hello