- 博客(14)
- 问答 (3)
- 收藏
- 关注
原创 NioEventLoop 对象的创建
老样子,先贴出的继承类图。在之前的文章“NioEventLoopGroup 对象的创建”中,创建对象时,会调用newChild()循环创建对象。我们就从newChild()方法切入,讲解。
2025-04-06 22:11:43
940
原创 NioEventLoopGroup 对象的创建
示例代码// BossGroup 仅需 1 线程处理连接请求// WorkerGroup 按 CPU 核心数动态分配(默认核心数的 2 倍)上面的代码使用 Netty 的主从 Reactor 架构。BossGroup(主 Reactor):负责监听 TCP 连接请求(accept事件)。通常配置为单线程((从 Reactor):监听并处理已建立连接的 I/O 读写事件(read/write 事件)。Netty 默认将 WorkerGroup 中的线程数其设置为 CPU 核心数的 2 倍。
2025-04-06 16:46:32
652
原创 SelectorProvider.provider()
不同操作系统对的实现存在显著差异,这主要源于它们底层 I/O 多路复用机制的不同。SelectorSelectorSelector我们以 Linux 系统为例。Java NIO 程序中,通常会调用获取多路复用器Selector。Linux 系统中,的静态方法provider()会返回对象。根据provider()方法的逻辑, 依次调用 3 个方法去获取对象,直到首次获取成功后返回。
2025-04-05 21:02:22
802
原创 使用 Grub2 在 x86 架构上引导 Linux
网上有许多关于如何使用 Grub2 的信息。Grub2 官方网站也有一些关于其工作原理的非常详细的资料。然而,似乎没有一个像样的、能在 15 分钟内讲清楚 x86 个人计算机如何使用 Grub2 引导 Linux 内核的概述;本文旨在提供这样的概述。和其他任何概述一样,本文省略了许多细节;要完整描述 Grub2 的话,恐怕得写成一本教科书,而不是一篇简短的介绍了。如需了解更多信息,请访问 Grub2 官方网站。本文不是 Grub2 的使用指南或参考手册;
2025-03-28 23:31:15
822
原创 BOIS INT 13h(Direct Disk Service)
INT 13h是 BIOS 中断调用 13H 的简写,是基于 x86 架构(源自 IBM PC)的计算机系统中的第 20 个中断向量。BIOS 通常在此向量处设置一个实模式中断处理程序,该程序提供基于扇区的硬盘和软盘读写服务。最初的 BIOS 实模式INT 13h接口使用通常所说的物理柱面 - 磁头 - 扇区()寻址方式,支持最大约 8GB 大小的驱动器。这个限制源于 IBM PC/XT 磁盘硬件的硬件接口。为了支持对更大磁盘的寻址,IBM 和微软引入了一个名为INT 13h。
2025-03-27 22:08:26
739
转载 C++的函数重载
函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)当我们调用一个重载的函数时,又是如何去解析的?(即怎么知道调用的是哪个函数呢)这两个问题是任何支持函数重载的语言都必须要解决的问题!带着这两个问题,我们开始本文的探讨。本文的主要内容如下:
2022-04-02 22:42:19
7452
原创 Ubuntu18配置静态IP地址
1. 记住网卡名称ifconfig2. 记住网关地址#netstat -rn3. 配置静态IP注意:Ubuntu18固定IP的方式跟Ubuntu18之前版本的的配置方式不同,Ubuntu18之前在/etc/network/interfaces进行配置,Ubuntu18及之后版本在/etc/netplan/*.yaml进行配置,如/etc/netplan/01-network-manager-all.yaml,如果/etc/netplan目录下没有yml文件,则可以新建一个sudo
2022-04-02 10:42:11
10736
转载 路由选择的最长匹配原则
最长匹配原则 是支持IP路由的设备默认的路由查找方式(事实上几乎所有支持IP路由的设备都是这种查找方式)。当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的表项进行bit by bit的逐位查找,直到找到匹配度最长的条目,这叫最长匹配原则。这里有几个概念要先搞清楚:看上面的图,这是一个形象化的二维空间图。深灰色的空间 172.16.0.0/16,这个网络号,我们称为 主类网络号,所谓主类网络号,意思是该网络号按照其所属的IP地址类别区分后、对应上的默认的子网掩码长度后得到的网络
2021-06-28 11:11:31
9362
原创 操作数寻址(operand addressing)
操作数寻址(operand addressing)x86 机器指令可以有0或多个操作数,一些操作数显式指出,其他则隐式指出。源操作数(source operand)可以放在如下地方:指令本身(立即数)寄存器内存I/O端口目标操作数(destination operand)寄存器内存I/O端口立即数(Immediate Operands)一些指令的源操作数被编码在指令当中,这些操作数被称为立即数( immediate operands 或 immediates)。例如:83
2021-05-31 23:38:22
1193
原创 operand-size和address-size属性
operand-size和address-size属性当处理器工作在 保护模式(the protected mode)时,每个代码段(code segment )都会有一个默认的 operand-size 属性和 address-size 属性。这两个属性值由 代码段描述符 的 D标志位 指定。若 D标志位 被设置为 1,则表示 operand-size 和 address-size 都是 32-bit。若 D标志位 被设置为 0,则表示 operand-size 和 address-size 都
2021-05-28 19:05:19
537
原创 Java访问权限控制
参考《Java核心技术》1.修饰类默认访问权限(即包访问权限):用来修饰类的话,表示该类只对同一个包中的其他类可见。public:用来修饰类的话,表示该类对其他所有的类都可见。2.修饰类的字段和方法private:如果一个类的方法或者字段被private修饰,那么这个类的方法或者字段只能在该类本身中被访问,在类外以及其他类中都不能显示地进行访问。默认访问权限(即包访问权限):如果一个类...
2020-04-25 16:22:55
152
原创 结构体字节对齐
结构体字节对齐字节对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个i...
2020-03-31 21:27:39
854
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人