- 博客(4074)
- 资源 (72)
- 收藏
- 关注
原创 【Python】策略模式-简介
策略模式(Strategy Pattern)是一种行为型设计模式,它将算法封装成独立对象,使它们可以相互替换。该模式的核心是将“做什么”和“怎么做”分离,避免条件分支导致的代码臃肿。Python实现策略模式有两种方式:基于抽象类的传统面向对象方式(通过上下文类管理策略对象),或利用Python函数特性直接传递函数作为策略。该模式的优点包括解耦算法、支持开闭原则、提高可读性;缺点是可能增加类数量。典型应用场景包括支付方式选择、数据解析等需要动态切换算法的场景。Python中推荐使用函数式实现,更简洁高效。
2026-07-28 08:00:25
171
原创 【Python】《Head First设计模式》读书笔记02: 策略模式Python深度解析:用鸭子类型优雅应对变化
继承虽然提供复用,但容易将行为静态绑定,需求变化时导致代码脆弱。单纯使用接口能抽离行为,但无法复用实现,产生大量重复代码。设计原则1:找出变化的部分并封装之。设计原则2:面向接口编程,而非面向实现。设计原则3:多用组合,少用继承。策略模式定义:定义一系列算法,封装每一个算法,并使它们可以相互替换。策略模式让算法的变化独立于使用它的客户。结构:抽象策略接口 → 具体策略实现 → 上下文持有策略引用,通过委托执行行为。Python中可用abc抽象基类实现,或更轻量地直接使用函数。
2026-07-28 07:56:46
314
原创 【Java】策略模式-简介
策略接口pass# 持有策略对象# 允许在运行时动态切换策略# 委托给策略对象执行当你发现代码中有大量的if-else或switch用于选择不同的业务逻辑,且这些逻辑未来可能会频繁增减时,策略模式是最佳的重构选择。它将“做什么”(Context)和“怎么做”(Strategy)解耦,使系统更加灵活和可扩展。
2026-07-27 14:43:50
200
原创 【Java】《Head First设计模式》读书笔记02: 策略模式深度解析 - 从“鸭子困境”到掌握设计原则
继承虽然提供复用,但容易把行为静态绑定,导致代码在变化时脆弱不堪。单纯使用接口能抽离行为,但无法复用实现,造成大量重复代码。设计原则1:找出变化的部分并封装之。设计原则2:面向接口编程,而非面向实现。设计原则3:多用组合,少用继承。策略模式定义:定义一系列算法,封装每一个算法,并使它们可以相互替换。策略模式让算法的变化独立于使用它的客户。策略模式的结构:抽象策略接口 → 具体策略实现 → 上下文对象持有策略引用,通过委托执行行为。可以在运行时动态切换策略,提供极大的灵活度。
2026-07-27 06:07:10
290
原创 【C++】《Head First设计模式》读书笔记01: 《Head First设计模式》用C++学,从“鸭子模拟器”到掌握设计精髓
Head First设计模式》用故事化的方式帮你建立了面向变化的设计思维。当你用C++实现这些模式时,你会发现:内存管理、虚函数开销、模板的静态多态这些语言特性,并不是障碍,而是实现设计原则的强大工具。从策略模式开始,你学会了把变化“关进笼子”。继续学下去,你再看自己过去写的代码,会自然地问:“这里什么可能会变?我该如何隔离它?” —— 那个时刻,你就真的把设计模式学活了。
2026-07-26 07:29:44
332
原创 【Python】《Head First设计模式》读书笔记01: 《Head First设计模式》到底讲了什么?新手怎么学才不会从入门到放弃
Head First设计模式》帮你建立的是应对变化的思维框架。当你用Python实现一个个模式时,你会发现,语言的灵活性不是用来抛弃设计的,而是让你更优雅地实践设计原则。从策略模式开始,你会习惯性地问:“这里什么可能会变?”然后把变化抽离出去。坚持下去,三个月后,你的代码将充满弹性,而不再是一触即溃的“脆饼”。
2026-07-25 09:02:07
325
原创 【Java】《Head First设计模式》读书笔记01: 《Head First设计模式》到底讲了什么?新手怎么学才不会从入门到放弃
Head First设计模式》绝对不是一本让你“读完就忘”的教科书,它是一本训练营手册。它逼迫你不断思考软件变化之源,并通过手把手的故事和代码,把设计原则烙进你的思维里。从策略模式起,你就开始学会“把变化的地方揪出来关进笼子里”。后续每一个模式,都是在不同场景下对这个核心思想的进一步演绎。好好跟着书中的节奏走,别跳步,你会发现:六个月后,当你回看自己过去写的“一锅粥”代码时,会不由自主地皱起眉头,并脑海中自动浮现出一个合适的模式来重构它。那个时刻,你就真正入门了。
2026-07-24 20:34:17
519
原创 Python memoryview 零拷贝内存访问详解
其设计哲学与 Python 的“Unicode 三明治”模型一脉相承,旨在将高效、低级的字节操作限制在明确的边界内,从而让程序的核心逻辑保持清晰与高效。的数据访问,从而在处理大型二进制数据(如音频、视频、图像、网络包等)时,显著提升性能并降低内存开销。的使用,是编写高性能、内存友好的 Python 应用程序的关键技能之一。的一个高级且强大的应用场景,常用于解析文件头、网络协议包等。在数据处理密集型应用中,频繁的数据复制是主要的性能瓶颈。,提供了对原始数据的“窗口”式访问。支持缓冲区协议的对象。
2026-07-23 12:43:59
501
原创 Python memoryview 深度解析
memoryview是 Python 内置的一个对象,它允许你在不复制数据的情况下,直接访问支持缓冲区协议(Buffer Protocol)的对象的内部内存。核心一句话memoryview是原始数据的“零拷贝视图”或“窗口”。fill:#333;important;important;fill:none;memoryview核心优势零拷贝 Zero-Copy原地修改 In-place Mutation多维视图 Multi-dimensional适用场景网络包解析图像处理大数据分片。
2026-07-23 12:43:37
414
原创 K8s的Pod如何做到优雅终止
必须做:在应用代码中监听SIGTERM并执行优雅关闭逻辑(这是“拦截”的核心)。建议做:将设置为足够长的时间(如 60-120 秒)。建议做:确保 Pod 是GuaranteedQoS 类,减少被资源驱逐的概率。建议做:配置 PDB 防止维护期间的并发删除。不要依赖:不要试图通过脚本或外部工具去“阻断”kill命令,这在分布式系统中是不可靠且危险的。信任 Kubernetes 的优雅终止机制,并完善你的应用对SIGTERM的处理。
2026-07-22 07:18:04
580
原创 《深入理解计算机系统》CSAPP 之后,路在何方?
CSAPP 之后,你不再是“写代码的人”,你是“构建系统的人”。如果想做后端架构,读DDIA,学Go/Java,搞分布式。如果想做基础软件,读APUE/LKD,学C/Rust,搞内核/数据库。如果想做高性能/游戏/AI Infra,学CUDA/SIMD,搞软硬协同。如果想做安全,学逆向,搞漏洞挖掘。路就在脚下,关键在于选择一个领域,深潜下去。祝你在系统的世界里玩得开心!
2026-07-21 12:25:17
245
原创 《深入理解计算机系统》读书笔记17: CSAPP 之后,路在何方?
CSAPP的终章,是你迈向系统专家之路的真正起点。面对浩瀚的进阶知识,请不必感到迷茫,保持持续执行的力量。带着问题去学习:当你阅读进阶书籍时,请时常回顾CSAPP中相对应的内容,分析它们是“深入”还是“拓展”了原有的知识。实验与代码并重:计算机科学是实践的科学。进阶学习也必须有大量的代码实践来支撑。保持好奇心:当你发现一个感兴趣的领域(如数据库、AI框架、游戏引擎)时,不妨深入研究其底层原理,你会发现自己已经拥有了看懂它们内核代码的能力。社区与交流。
2026-07-21 00:00:00
906
原创 《深入理解计算机系统》 全书总结
第 1 章:计算机系统漫游核心:建立宏观视角。理解编译流程(预处理->编译->汇编->链接),理解存储层次结构(寄存器->缓存->内存->磁盘)。关键概念:摩尔定律、Amdahl 定律、抽象的重要性。第 2 章:信息的表示和处理核心:计算机只认识 0 和 1。关键概念整数:补码表示(Two’s Complement),溢出行为,移位运算。浮点数:IEEE 754 标准,精度损失,舍入误差。位级操作:掩码、移位、布尔代数。第 3 章:程序的机器级表示核心。
2026-07-20 17:51:49
248
原创 《深入理解计算机系统》读书笔记16: 全书总结:为什么这本书是程序员的“内功心法”?
作者: andylin02学习章节: 全书总览关键词: CSAPP;计算机系统漫游;信息的表示;机器级表示;处理器体系结构;性能优化;存储器层次结构;链接;异常控制流;虚拟内存;系统级I/O;网络编程;并发编程;Data Lab;Bomb Lab;Attack Lab;Cache Lab;Shell Lab;Malloc Lab;Proxy Lab“本书的核心价值在于,它以一份 Hello World 程序开篇,带着读者走完了这个简单程序在计算机系统中的整个生命周期。
2026-07-20 00:00:00
791
原创 《深入理解计算机系统》附录 B 错误处理
附录B《错误处理》是CSAPP从“讲原理”到“教编程”的关键一环。它传授的**“封装变化”**思想——将容易出错、风格不一的系统调用,封装成统一、可靠的接口——是值得每一位系统程序员学习的设计模式。它的价值不仅在于教会你检查errno,更在于启发你思考如何构建健壮、清晰的代码。理解其背后的思想,远比记住具体的代码实现更重要。
2026-07-19 06:58:34
309
原创 《深入理解计算机系统》读书笔记15: 附录 B 错误处理
正如本书所做的,明确对错误进行处理,并利用包装函数(wrapper function)将错误处理与核心逻辑分离,是在掌握 Unix/Linux 系统编程时的关键一步。——至此,CSAPP 的核心章节与附录已全部学完,打通了从数据表示到处理器设计,再到系统级编程和网络并发等计算机系统核心领域的学习链路。它们在底层完成对实际函数的调用的同时,也完成了系统的错误检查处理工作,让我们的核心代码变得更简洁、更可靠。Unix 风格的函数在成功时返回一个有用的结果(如文件描述符、进程 ID),在失败时。
2026-07-19 00:00:00
566
原创 《深入理解计算机系统》 附录 A 处理器控制逻辑(HCL)
总的来说,CSAPP的第11章是一份优秀的纲领性文件,它高屋建瓴地为你勾勒出网络编程的全貌。如果你是初学者:这一章是你最好的起点。请务必动手实践每一个代码示例,这是理解抽象概念的最好方式。如果你已有基础:可以将本章作为一次极好的“温故而知新”,重点体会“网络是I/O设备”和“套接字是连接端点”这两个核心思想。进阶方向:在掌握本章内容后,强烈建议继续学习I/O多路复用和并发编程(即CSAPP的第12章),这是迈向高并发、高性能网络编程的必经之路。
2026-07-18 19:10:44
258
原创 《深入理解计算机系统》读书笔记14: 附录 A 处理器控制逻辑(HCL)
在第 4 章,我们研读过用 HCL 描述的 Y86-64 顺序实现(SEQ)和流水线实现(PIPE),但在附录 A 中,作者更系统地介绍了这种语言——从逻辑门的基础,到存储器和时钟,再到贯穿 Y86-64 处理器设计的具体实现。CSAPP 为我们呈现了计算机系统的完整图景——从数据的二进制表示,到指令集体系结构,从处理器设计到性能优化,从存储层次结构到链接,从异常控制流到虚拟内存,从系统级 I/O 到网络编程,最后以并发编程收尾。组合电路是多个逻辑门连接构成的网,是硬件设计中实现复杂函数的基本方式。
2026-07-18 19:08:23
600
原创 《深入理解计算机系统》并发编程
信号量sP(s)(Wait/Down): 如果s > 0,则s--并立即返回;如果s == 0,则挂起线程直到s变为正数。V(s)s++。如果有线程在 P(s) 上等待,唤醒其中一个。并发是复杂的:必须仔细设计同步机制。线程是主流:在现代多核系统中,基于线程的并发是性能和编程复杂度的最佳平衡点。信号量是核心原语:理解 P/V 操作是解决同步问题的关键。线程池是最佳实践:在生产环境中,永远不要为每个请求动态创建线程,务必使用线程池。使用Socket I/O(Ch 11) 接收请求。使用线程池。
2026-07-17 20:02:07
309
原创 《深入理解计算机系统》读书笔记13: 并发编程
优点缺点☑️ 地址空间隔离,子进程不会意外覆盖父进程数据❌ 独立的地址空间使得共享状态困难——必须使用 IPC☑️ 易于理解和调试,消除了许多复杂错误❌ 进程控制和 IPC 开销高,速度较慢☑️ 信号机制提供了基本的 IPC 能力❌ 需要手动处理 SIGCHLD 信号回收僵尸进程。
2026-07-17 19:58:01
473
原创 《深入理解计算机系统》网络编程
总的来说,CSAPP的第11章是一份优秀的纲领性文件,它高屋建瓴地为你勾勒出网络编程的全貌。如果你是初学者:这一章是你最好的起点。请务必动手实践每一个代码示例,这是理解抽象概念的最好方式。如果你已有基础:可以将本章作为一次极好的“温故而知新”,重点体会“网络是I/O设备”和“套接字是连接端点”这两个核心思想。进阶方向:在掌握本章内容后,强烈建议继续学习I/O多路复用和并发编程(即CSAPP的第12章),这是迈向高并发、高性能网络编程的必经之路。
2026-07-16 21:01:54
316
原创 《深入理解计算机系统》读书笔记12: 网络编程
本章将带你从零开始构建网络应用:先理解客户端-服务器模型和网络协议栈,再掌握套接字接口的核心函数,最终实现一个功能完整的 Web 服务器(Tiny Web Server),并为下一章第 12 章并发编程和 Proxy Lab 实验打下基础。一台主机可以同时运行许多不同的客户端和服务器,客户端和服务器的事务可以在同一台或不同的主机上。一个套接字是连接的一个端点,套接字地址为(IP 地址:端口号)。Tiny 是一个功能齐全的 Web 服务器,能够为真实的 Web 浏览器提供静态的和动态的文本和图形内容。
2026-07-16 00:00:00
563
原创 《深入理解计算机系统》系统级 I/O
系统级 I/O 是 Unix 编程的基石。文件描述符是 I/O 的核心句柄。短计数是正常现象,必须通过循环处理。内核数据结构(描述符表、打开文件表、V-node)解释了文件共享和重定向的原理。dup2是实现 Shell 重定向和管道的关键。理解带缓冲 I/O与系统调用 I/O的区别及适用场景。掌握这些内容后,你就具备了编写网络服务器和处理复杂文件操作的能力。
2026-07-15 17:47:40
363
原创 《深入理解计算机系统》虚拟存储器
统一了内存和磁盘的管理:通过分页和缺页机制。简化了编程模型:每个进程拥有独立的、连续的地址空间。提供了保护机制:通过页表权限位。支持高效的共享:通过内存映射和共享库。理解 VM 对于编写高性能、低内存占用且无内存错误的程序至关重要。
2026-07-15 17:46:01
327
原创 《深入理解计算机系统》读书笔记11: 系统级 I/O
作者: andylin02学习章节: 第 10 章 系统级 I/O关键词: Unix I/O;文件描述符;RIO包;带缓冲的输入输出;共享文件;I/O重定向;标准I/O库;stat;目录操作;套接字;Shell Lab。
2026-07-15 00:00:00
566
原创 《深入理解计算机系统》读书笔记10: 虚拟存储器
作者: andylin02学习章节: 第 9 章 虚拟存储器关键词: 虚拟内存;页表;MMU;地址翻译;TLB;内存映射;mmap;动态内存分配;malloc;隐式空闲链表;显式空闲链表;分离适配;Malloc Lab。
2026-07-14 00:00:00
880
原创 《深入理解计算机系统》 异常控制流
在传统的程序执行中控制流是平滑的(PC 递增或跳转)。ECF 是指控制流发生**突然变化且不是由程序内部正常逻辑引起的情况。硬件层:中断、陷阱、故障、终止。操作系统层:进程上下文切换、信号处理。应用层longjmp、非局部跳转。核心思想:ECF 是操作系统用来模拟并发(Concurrency)的基本机制。ECF 是连接硬件中断、操作系统内核和用户程序的桥梁。异常是硬件触发的 ECF。进程是操作系统利用 ECF 提供的并发抽象。信号是软件触发的 ECF,用于进程间通信和异步事件处理。
2026-07-13 17:40:07
348
原创 《深入理解计算机系统》读书笔记09: 异常控制流
异常是异常控制流的一种形式,它一部分由硬件实现,一部分由操作系统实现。异常就是控制流中的突变,用来响应处理器中的一些变化。│ 异常处理流程 ││ ││ 当前指令 Icurr ──→ 处理器检测到事件 ──→ 查找异常表 ──→ 异常处理程序 ││ │ │ ││ │ ├──→ 返回 Icurr ││ │ ├──→ 返回 Inext ││ │ └──→ 终止程序 ││ │ ││ └── 异常处理程序运行在**内核模式**,对系统资源有完全访问权限 ││ │。
2026-07-13 00:00:00
1001
原创 《深入理解计算机系统》第七章 链接(Linking)
本章主要讲解链接器如何将多个目标文件(.o .a .so)组合成可执行文件或共享库,以及链接过程中涉及的符号解析、重定位、动态链接等核心机制。以下是对关键知识点的梳理,并关联了Link Lab实验。
2026-07-12 06:37:40
325
原创 《深入理解计算机系统》存储器层次结构
深入理解计算机系统》中关于存储器层次结构的内容,核心是解决CPU与存储器之间日益增长的速度差距,通过构建多级存储体系,利用局部性原理实现高效的数据访问。
2026-07-11 11:03:01
421
原创 《深入理解计算机系统》读书笔记07: 存储器层次结构
作者: andylin02学习章节: 第 6 章 存储器层次结构关键词: 随机访问存储器(SRAM/DRAM);非易失性存储器(ROM/Flash);局部性原理;存储器层次结构;高速缓存;直接映射;组相联;全相联;写策略;分块;存储器山;Cache Lab。
2026-07-11 00:00:00
690
原创 《深入理解计算机系统》优化程序性能
消除不必要工作:减少循环低效、过程调用、内存引用。利用指令级并行:循环展开、提高并行性。规避限制因素:注意寄存器溢出、分支预测、内存访问模式。这些方法在《深入理解计算机系统》第5章有详细阐述,通过实践可以显著提升C等底层语言的运行效率。
2026-07-10 07:16:46
343
原创 《深入理解计算机系统》 处理器体系结构
(Sequential implementation)是一种最简单的处理器实现,每个指令的执行分为多个阶段(取指、译码、执行、访存、写回、更新PC),所有阶段在一个时钟周期内顺序完成。Y86-64是x86-64的简化版本,定义了程序员可见的状态(寄存器、内存、条件码等)以及指令的编码格式。通过这个精简模型,读者可以聚焦于指令执行的控制与数据流,而不被x86的复杂细节淹没。(取指、译码、执行、访存、写回),并重点讨论了流水线冒险(结构冒险、数据冒险、控制冒险)及其解决方法(例如转发、分支预测、流水线暂停)。
2026-07-09 16:27:05
322
原创 《深入理解计算机系统》读书笔记05: 处理器体系结构
第 3 章学习了机器级指令和汇编语言,但这些指令是如何在硬件中真正执行的?不同的指令如何共享硬件资源?如何让处理器更快地执行指令?本章将回答这些问题。本章定义了一个简化版的 x86-64 指令集——Y86-64,并基于它从零开始设计处理器。这种“循序渐进”的方式比直接研究真实处理器更容易理解硬件设计的核心思想。本章结构:ISA 定义了处理器支持的指令、指令的字节级编码、状态单元、编程规范和异常事件处理。Y86-64 处理器的状态包括:寄存器 被入栈、出栈、调用和返回指令作为栈指针。条件码 (零标志)、(
2026-07-09 00:00:00
956
原创 《深入理解计算机系统》程序的机器级表示
深入理解计算机系统》第三章“程序的机器级表示”是理解计算机如何执行高级语言程序的核心内容,它主要揭示了C语言与汇编代码之间的映射关系,以及处理器、内存和寄存器等硬件层面的工作机制。以下分点梳理该章节的关键知识点。
2026-07-08 12:52:28
396
原创 《深入理解计算机系统》读书笔记04: 程序的机器级表示
作者: andylin02学习章节: 第 3 章 程序的机器级表示关键词: x86-64;汇编语言;寄存器;栈帧;过程调用;条件码;循环;跳转表;缓冲区溢出;Bomb Lab;Attack Lab;GDB。
2026-07-08 00:00:00
570
原创 《深入理解计算机系统》信息的表示和处理
深入理解计算机系统》第2章“信息的表示和处理”是全书的基础,它揭示了计算机如何用二进制位表示现实世界中的数字、字符、指令等,并解释了不同编码方式带来的数学特性和潜在陷阱。以下是对该章核心内容的梳理。
2026-07-07 17:37:52
419
学生选课系统
2007-06-16
鼠标、键盘 记录程序
2008-09-20
Cloudera中文手册
2018-01-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅