- 博客(100)
- 资源 (1)
- 收藏
- 关注
原创 java设计模式:动态代理
你可以把动态代理想象成一个万能业务管家。静态代理好比是:银行专门为“转账”业务雇了一个管家。如果银行后来又开通了“买理财”业务,就得再为“买理财”专门雇另一个管家。业务越多,管家也越多,管理起来很麻烦。动态代理则是:银行雇了一个超级聪明的AI管家。你只需要告诉这个AI管家银行的各项业务规则(比如办业务前要验证身份,办完后要记录日志),那么无论是转账、买理财、还是查余额,这个AI管家都能自动帮你处理这些通用流程,然后再去调用银行真正的核心功能。它的巨大优势在于。
2025-10-05 03:46:25
840
原创 java设计模式:静态代理模式
静态代理模式通过接口约束、代理类隔离和功能增强,实现了代码的可扩展性、安全性和可维护性。此案例展示了如何在不污染核心代码的前提下,系统性地增强业务逻辑,体现了代理模式在实际开发中的价值。注意:静态代理需为每个真实类编写代理类,若接口频繁变更会增加维护成本。对于动态代理场景(如代理多个类),可考虑JDK动态代理或CGLIB。
2025-10-05 01:30:11
343
原创 java设计模式:适配器模式
假设我们有一个220V交流电源(现有类),但客户端需要5V直流电(目标接口)。适配器模式可以帮助我们实现电压转换而不修改现有代码。代码实现。
2025-09-29 22:51:48
501
原创 java设计模式:抽象工厂模式 + 建造者模式
将抽象工厂模式与建造者模式结合,可以优雅地处理需要创建多个产品族,且每个产品族内部对象构建过程复杂的场景。这种结合充分发挥了抽象工厂管理产品族的优势,以及建造者模式精细控制复杂对象构建过程的优势。新增产品族(如田园风格)只需增加新工厂和建造者,符合开闭原则。首先,我们定义房屋的组成部分和不同风格的具体实现。抽象工厂负责创建一整套风格一致的产品部件。实现现代风格和古典风格的具体工厂。1. 产品部件接口。2. 具体产品部件。1. 抽象工厂接口。1. 产品:房屋。
2025-09-28 17:21:48
450
原创 java设计模式:工厂方法 + 建造者模式
当你的系统需要创建多种类型的复杂对象,且每种对象都有自己特定的构建过程时,考虑使用这种工厂方法与建造者模式的组合,它能为你带来更好的代码结构性和可维护性。这个设计充分利用了两种模式的优势:工厂方法负责创建不同类型产品的建造者,而建造者模式负责分步骤构造复杂产品。工厂方法专注于创建适当类型的建造者对象。建造者模式专注于分步骤构造复杂产品。指挥者控制构建过程,确保一致性。🔄 极高的灵活性和可扩展性。🛡️ 构建过程的质量保证。✨ 设计模式的优越性体现。
2025-09-28 17:03:26
239
原创 java设计模式:建造者模式
建造者模式的核心优势在于它能优雅地处理复杂对象的创建,特别是在对象包含多个部件或配置选项时。下面我用具体的Java例子来展示它的强大之处。
2025-09-28 16:44:22
506
原创 java设计模式:工厂方法
虽然结构简单,但在新增产品时需要修改这个工厂类的逻辑,违反了开闭原则。良好的扩展性:当需要增加新的产品(如网络日志记录器 NetworkLogger)时,只需创建新的具体产品类和具体工厂类,无需修改任何现有代码,完全符合开闭原则。客户端与具体实现解耦:客户端代码只依赖于抽象接口(Logger和 LoggerFactory),不关心具体产品的创建细节,降低了模块间的耦合度。将对象的创建与使用分离:使代码结构更清晰,创建逻辑集中在工厂中,便于统一管理和维护。
2025-09-28 16:27:49
335
原创 【JAVA面向对象编程】模拟双色球系统
把开奖号码放入 win.txt,购买的号码放入 tickets.txt 中(像是数字1,放入1就可以了)一开始运行默认是不显示,该选项选一次反转一次。拓展:修改填入txt文件地址的,暂且保留。拓展:手动修改选项操作,暂且保留。
2025-08-01 13:30:12
288
原创 APIpost :了解预后执行脚本 connect ECONNREFUSED 127.0.0.1:8080 检测您的系统代理貌似开小差了,请到设置中确认下
完成,现在可以愉快的玩耍了。也可以直接输入百度,测试一下了。发送成功!
2025-03-21 15:50:52
1968
原创 WindowsAPI 查阅笔记:进程间管道通信
当程序发出一个异步I/O请求时,它会将OVERLAPPED结构体的地址作为参数传递给异步I/O函数。异步I/O函数会在后台执行I/O操作,并在操作完成时通过设置事件对象或完成端口来通知程序。程序可以在任何时间点检查事件对象或完成端口的状态,以确定I/O操作是否已完成,并处理操作的结果。重叠I/O(Overlapped I/O)是Windows编程中的一种异步 I / O 处理方式,在重叠I/O中,OVERLAPPED结构体用于存储I/O操作的上下文信息。1.1 重叠I/O(Overlapped I/O)
2024-08-13 20:01:57
1071
原创 WindowsAPI 查阅笔记:设置、获取系统时间
我关闭了时间的自动设置,并且右键exe文件使用管理员权限才修改了时间。不过,修改时间要用到管理员权限。SYSTEMTIME 结构体。
2024-08-13 11:39:37
601
原创 WindowsAPI 查阅笔记:线程、多个线程互同步
等待函数可以等待同步对象以外,还可以等待其他对象,包括进程和线程。以进程或线程句柄为等待对象就可以了。TID 是 DWORD 类型,每个线程的 TID 都不同,所以可以用 TID 标识唯一的 线程。通过三个读事件和写事件控制三个线程,避免在写入数据的时候发生【读事件】。每一个线程都有一个句柄和一个标识符 (TID)。创建三个线程,对一个全局变量进行读操作。
2024-08-13 09:42:49
591
原创 《真象还原》读书笔记——第十章 输入输出系统
多线程访问公共资源时出问题的原因是产生了竞争条件,也就是多个任务同时出现在自己的临界区。信号量的初值代表是信号资源的累积量,也就是剩余量,若初值为 1 的话,它的取值就只能为 0 和 1,这便称为。时(当然这也属于线程合作),为了保证结果正确,必然要用一套额外的机制来控制它们的工作步调,也就是使线程们。信号量就是个计数器,它的计数值是自然数,用来记录所积累信号的数量。操作来表示信号量的减、增,这两个都是荷兰语中的单词的缩写。唤醒已阻塞的线程是由别的线程,通常是锁的持有者来做的。
2024-03-02 17:46:19
1018
原创 《真象还原》读书笔记——第九章 线程
操作系统把进程“执行过程”中所经历的不同阶段按状态归为几类,注意,强调的是“执行过程”,意为进程的状态描述的是进程中有关“动作”的执行流部分,即线程,而不包括静止的资源部分。初始情况下此栈在线程自己的内核栈中位置固定,在 PCB 所在页的最顶端,每次进入中断时就不一定了,如果进入中断时不涉及到特权级变化,它的位置就会在当前的 esp 之下,否则处理器会从 TSS 中获得新的esp 的值,然后该栈在新的 esp 之下,这是后话,有关 TSS 这方面的内容以后会介绍。任务片到期后从任务表中切换任务。
2024-03-02 01:21:33
1151
原创 《真象还原》读书笔记——第八章 内存管理系统(字符串操作、位图定义与实现)
一个字节有8位,所以位图的一个字节对应8个资源单位。假设是管理内存,每一位都将表示实际物理内存中的 4KB。也就是 1页。如果某位为0,就是可以分配,如果某位为1,就是不可分配。1/*遍历位图时候是以字节为单位,微操是位。所以此处的位图指针必须是单字节*//*初始化 btmp 位图*///向下取整用于数组索引。//取余用索引数组内的位/*先字节比较*///该字节无空位,去下一个字节++idx_byte;
2024-02-27 20:58:51
557
原创 《真象还原》读书笔记——第七章 中断处理
8259A 有哪些功能呢?管理和控制可屏蔽中断,屏蔽外设中断.实行优先级判决CPU 提供中断向量号Intel 处理器可支持256个中断,但8259A只管理8个中断。所以把多个8259A级联起来,最多连9个,也就是最多64个中断。n片8259A通过级联的方式可支持7n+1个中断源。级联的时候只有一个主片master,其余都是从片slave。8259A在收到了中断后,对中断判优,将优先级高的中断转发给 CPU处理。IMR 寄存器中的位,为 1,则表示中断屏蔽,为 0,则表示中断放行。
2024-02-25 18:17:02
1487
原创 《真象还原》读书笔记——第六章 完善内核(打印字符代码部分)
尤其要注意的是在链接的时候,main.o 和 print.o 的顺序不能颠倒,因为 main.o 中调用了 print.o 中的实现,所以main.o要在前,print.o要在后。并且这两种情况的编译出的文件大小还不一样,运行时如果不遵守这种情况情况运行还会报错。当 main.o print.o 时候,编译大小为:2656 bytes。当 print.o main.o 时候,编译大小为:2660 bytes。由于我的环境是 Linux 64位子系统。
2024-02-24 11:16:25
344
原创 Linux 之 start_kernel() 下的 setup_arch()
end (->addr) 因为是 add+size,所以自然和 自己的起始地址 addr (->pbios->addr) 不相等。change_point [ 0 ]->pbios / change_point [ 1 ]->pbios 存放的是。最主要就是这个 for 结构,以及打头的 if — is addr — else — is end — 操作。很明显,这里的第二行是和第四行同属于一对,第一行和第三行是一对。is end 的操作是删除,我们看看 OS 是如何操作的。我们看一下排序后的结果。
2023-10-11 02:36:04
273
原创 在 Win11安装 Ubuntu20.04子系统 WSL2 到其他盘(此处为D盘,因为C盘空间实在不能放应用)
该篇文章记录了在 win11 中安装 Ubuntu20.04 子系统。先安装到 C盘 ,再通过打包的方式 安装到 D盘 上。因为是安装后写的文章,可能会有所疏漏,所以有任何问题可以在评论区留言。打开这三个:配置功能后记得重启。之后还可能要安装一个软件(下载速度有些慢):https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi接下来的全过程只有设置用户名和密码的时候以及设置 su 的密码时候在 Ubuntu 上操
2023-07-25 00:06:47
26443
32
转载 Windows 10 开启文件名大小写敏感功能(转载)
Windows 的文件系统的文件名,是大小写不敏感的,也就是你的文件名是 a.txt 或者 A.txt,在 Windows 中都是一视同仁,认为是同一个文件。下面宇润给大家介绍一个在 Windows 10 中开启文件名大小写敏感的功能,需要注意这个功能必须启用 WSL 才可使用!只要针对这个路径进行设置,这个路径下后续建立的所有文件和文件夹,都会是大小写敏感的了!使用 Git 时,相信大家也经常遇到文件名或者目录名大小写冲突的问题。好了,现在你的 Windows 文件系统,已经支持区分文件名大小写了!
2023-07-14 12:23:36
1368
1
原创 真象还原-碎笔笔记 : C与汇编混合编程 在64位机器上编译出32位可执行代码
很重要的一点:这时候的环境是64位的环境。所以在编译程序的时候要注意编译成32位的。
2023-02-18 00:08:53
348
原创 《真象还原》读书笔记——第五章 保护模式进阶,向内核迈进(特权级,更新)
Task State Segment 任务状态段。用于存储任务环境。104字节是TSS的最小尺寸,根据需要还可以接上个IO位图。当任务在特权级变化的时候,如果说使用同一个栈来容纳所有特权级的数据,就会导致栈中数据混乱、栈溢出的问题。所以TSS 中有3个栈。分别是:ss0,sp0ss1,sp1ss2,sp2TSS是处理器硬件原生的系统级数据结构。低特权到高特权级此时 3 可以到 2 1 0 ,2 可以到 1 0 ,1 可以到 0。这被称为“向内层转移”。高特权级到低特权级。
2023-02-16 01:37:59
263
原创 《真象还原》读书笔记——第五章 保护模式进阶,向内核迈进(加载内核)(代码部分,更新)
kernel.bin编译,还是因为gcc 编译太大了,所以用clang编译。同时还要注意,编译环境可能是64位下,所以要指定编译后的代码为 32 位的。mbr.asm 没有什么改变。
2023-02-15 21:10:52
202
原创 《真象还原》读书笔记——第三章 完善MBR(3.5 硬盘)
柱面-磁头-扇区磁道的编号从0 开始,相同编号的此道组成的管状区域就是柱面。盘面和磁头一一对应,所以用磁头号表示盘面,磁头编号从上到下从0开始。扇区编号与盘面和磁道不同,各磁道内的扇区都是以1为起始编号的,并且只限于本磁道内有效。所以各个磁道间的扇区编号都是相同的,下限都是0。主板是如何支持硬盘的硬盘控制器 与硬盘的关系就像是 显卡和显示器。一开始:将硬盘和硬盘控制器整合一起,这个接口被称为集成设备电路(IDE)。习惯将硬盘称为IDE硬盘。后期出现硬盘串口接口(SATA)。
2023-02-09 10:41:54
470
原创 《真象还原》读书笔记——第三章 完善MBR(3.1-3.4)
地址就相当于门牌号。编译器的工作就是给各个符号编址。偏移量:本质就是地址,每个变量的地址是前一个变量的地址+前一个变量的内存空间大小。1. mov ax, 0x0 说明 $$ 就是在段首。3. var 处被 0xd 替换,说明var 的地址为 0xd4. $ 也就是 label 该行代码的地址 0x85. jmp short 0x8 ,说明 label 标号也就是 标号处的地址。
2023-02-04 22:14:43
781
2
原创 《真象还原》读书笔记——第二章 编写 MBR 主引导记录
因为是历史原因。BIOS将检测到了任何可用的磁盘,BIOS就将其第一个扇区加载到0x7c00。MBR的任务是加载某个程序(这个程序一般是内核加载器,很少有直接加载内核的)到指定位置,并将控制权交给它。之后MBR就没用了。
2023-01-27 18:09:31
826
原创 Qt学习之 信号与槽
通过 connect, 将 按钮 与 A 信号绑定,在点击按钮时,激活信号,从而调用函数。定义了A Class 和 B Class,在A中自定义了信号,在B中定义了要被定义的函数。按钮按下,激活clicked信号 => 激活A,A信号 => 激活B,B函数。通过 connect,将 A 中的信号和 B 中被调用函数绑定。.........
2022-08-03 18:13:55
269
原创 汇编语言(第三版)第九章 转移指令的原理 笔记
修改IP或是同时修改CS和IP的指令就是转移指令。就是可以控制执行内存中某处代码的指令。转移指令对IP的修改范围不同。通过学习无条件转移jmp来俩理解cpu执行转移的基本原理。
2022-07-15 17:44:29
713
《汇编语言(第三版) 作者:王爽》学习过程中使用的工具
2022-07-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅