自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(228)
  • 资源 (1)
  • 收藏
  • 关注

原创 Buffer缓冲区的设计思想与实现

本文介绍了网络服务器中Buffer模块的设计与实现。Buffer用于解决TCP流式协议的粘包/半包问题,并协调网卡与应用层的速度差异。作者分析了常见Buffer实现方案,选择环形缓冲区+std::vector的组合方案,兼具连续内存优势与动态扩容能力。文章详细阐述了环形缓冲区的设计思想,包括读写指针分离、内存复用机制,以及空间不足时的紧缩处理流程。最后给出了Buffer类的代码框架,包含读写指针管理、空间计算、数据移动等核心方法实现,为高并发服务器提供了高效的内存管理方案。

2026-06-27 15:38:58 426

原创 通用类型Any的思想与实现

Any通用类型简介与实现 Any是一种类型擦除容器,能够存储任意类型的值并安全恢复原始类型。它解决了传统void*丢失类型信息的问题,避免了复杂的继承体系,适用于需要处理多种数据类型的场景(如服务器协议处理)。 核心特性: 类型擦除:统一接口存储不同类型 类型安全:运行时检查确保类型匹配 值语义:支持深拷贝和赋值操作 实现原理: 使用基类holder定义通用接口 模板子类placeholder存储具体类型数据 通过多态和clone方法实现深拷贝 重载运算符实现类普通变量操作 实现包含模板构造函数、拷贝控制成

2026-06-16 17:55:18 817 2

原创 掌握 regex :高效处理字符串匹配与网络协议解析

本文介绍了正则表达式及其库的核心功能与应用。正则表达式通过特定字符规则描述字符串匹配模式,而正则库则是执行这些规则的引擎,主要提供匹配、查找和替换三大功能。文章详细解析了C++中regex_match接口的使用方法,包括参数说明和示例代码,演示如何从URL中提取数字。此外,还介绍了regex_search(部分匹配)、regex_replace(文本替换)和sregex_iterator(全局遍历)等关键接口,并通过订单号提取的实例展示其实际应用。这些工具能显著简化HTTP请求解析等字符串处理任务,虽可能牺

2026-06-08 17:51:11 949 3

原创 第十五章:海纳百川——集成学习的高级策略与Stacking硬核实战

模型融合进阶:从Blending到Stacking的工业级实践 本文深入解析了模型融合的核心技术,对比了Blending与Stacking的本质差异。Blending简单但数据利用率低,而Stacking通过K折交叉验证实现数据价值最大化,生成无信息泄露的元特征。文章强调异构模型集成的重要性,指出多样性是提升性能的关键,并提供了量化模型差异性的方法。针对实际应用,详细演示了手写Stacking核心逻辑和使用mlxtend库的高效实现,特别警示了数据泄露这一常见陷阱。最后,通过动态集成选择策略的探讨,展现了模

2026-05-21 22:31:39 1472 67

原创 定时器与时间轮思想

本文介绍了Linux定时器接口timerfd_create和timerfd_settime的使用方法,并提出了基于时间轮算法的高效定时器设计方案。文章首先详细解析了两个系统调用的参数和功能,包括时钟源选择、定时模式设置等关键特性。然后重点阐述了时间轮的核心思想,通过类似钟表的环形数组结构实现高效定时任务管理,并针对长周期任务提出了多级时间轮的优化方案。最后展示了如何利用智能指针的引用计数机制实现定时任务的自动取消和续期功能,给出了具体的C++实现代码,包括TimerTask类的设计和时间轮的数据结构组织。这

2026-05-14 19:29:45 1446 61

原创 【MySQL基础】(5):MySQL 表的约束

MySQL数据类型仅限制数据格式,而约束则确保数据合法性。常见约束包括NOT NULL(非空)、DEFAULT(默认值)、PRIMARY KEY(主键)等。NOT NULL强制字段必须包含值,避免NULL导致的运算问题;DEFAULT为字段提供默认值;COMMENT添加字段描述;ZEROFILL在数字前补零显示。约束从业务逻辑层面保证数据正确性,是数据库设计的重要机制。实际开发中应合理使用约束,如避免NULL值、设置默认值等,以确保数据完整性和可靠性。

2026-05-12 17:43:11 2806 59

原创 触类旁通——迁移学习、多任务学习与元学习

1. 加载预训练的 ResNet50 模型# 2. 冻结所有参数(可选,通常在第一轮微调时这样做)# 3. 替换最后的全连接层以匹配我们的目标类别数(例如,5个新类别)# 将模型移至 GPU# 4. 定义优化器:只优化新添加的 fc 层# 5. 训练循环(第一阶段:仅训练新层)for epoch in range(5): # 先训练5个epoch# 6. 解冻部分底层,并使用更小的学习率进行第二阶段微调# 只解冻最后几个残差块(例如,layer4)# 使用更小的学习率])

2026-04-18 20:35:52 1367 71

原创 【MySQL基础】(4):MySQL 数据类型

数据选型是数据库系统设计的核心环节,直接影响系统性能和资源利用率。数值类型选择需遵循最小够用原则:TINYINT(1字节)适合状态位,SMALLINT(2字节)满足中等数值需求,INT(4字节)作为常规主键,BIGINT(8字节)应对极大数值场景。UNSIGNED类型可扩展数值范围并提升效率,但需注意INT(M)中的M仅影响显示宽度而非存储空间。金融等精确计算场景必须使用DECIMAL定点数,避免浮点数精度损失。合理选型可节省30%-75%存储空间,显著提升I/O效率和查询性能,是构建高效稳定系统的关键基础

2026-04-14 13:12:56 1937 61

原创 运筹帷幄——在线学习与实时预测系统

在我们过往的旅程中,无论是经典的线性回归、强大的梯度提升树,还是复杂的深度神经网络,其训练过程都遵循着一个共同的模式:批量学习(Batch Learning)。我们收集好一个庞大的、静态的数据集,将其视为对过去世界的完整快照,然后投入巨大的计算资源进行一次性的、耗时数小时乃至数天的模型训练。这种模式,本质上是一种数据考古学。我们挖掘历史遗迹(历史数据),试图从中总结出永恒不变的规律。然而,现实世界并非一成不变的化石层。用户兴趣如潮汐般涨落,市场趋势似季风般流转,欺诈手段若病毒般变异。当我们的模型还在为昨天的

2026-04-10 12:17:25 1513 70

原创 见微知著——特征工程的科学与艺术

摘要:特征工程的科学与艺术进阶 本章深入探讨特征工程的高级技术,将原始数据提炼为高效特征集。主要内容包括: 特征交叉:通过手动或自动方式(如因子分解机、深度交叉网络)揭示特征间隐藏的交互模式,突破线性模型局限。 目标编码:针对高基数类别特征,用目标变量统计量进行编码,并采用留一法或K折交叉防止数据泄露。 实践工具:介绍scikit-learn的PolynomialFeatures和category_encoders库等实现方案。 特征工程通过科学方法和艺术创造,显著提升模型性能上限,是机器学习成功的关键环节

2026-04-07 12:40:27 881 67

原创 登堂入室——深度学习的工程化实践与调优

本文探讨了深度学习从理论研究到工程化实践的关键过渡。首先强调了数据管道的重要性,指出专业数据管道需解决内存效率、计算效率和代码可维护性三大问题,并详细介绍了PyTorch中DataLoader和Dataset的最佳实践配置。其次深入分析了学习率这一核心超参数,比较了Step Decay、ReduceLROnPlateau和One Cycle Policy三种调度策略的特点,特别推荐了先增后减的单周期策略。全文聚焦如何将深度学习模型从"能跑通"提升到"能用好"的工程化阶

2026-04-04 16:58:15 1519 54

原创 【MySQL基础】(3):MySQL库与表的操作

MySQL数据库与表操作指南 本文介绍了MySQL中数据库和数据表的基本操作,重点讲解了创建数据库的语法及注意事项: 创建数据库:详细解析了CREATE DATABASE语法,强调必须指定字符集(推荐utf8mb4)和排序规则(推荐utf8mb4_unicode_ci) 字符集与校验规则: 比较了常见字符集特性,指出MySQL的utf8是残缺版UTF-8 解释了校验规则对字符串比较和排序的影响 操作示例: 演示了基础创建语句 介绍了避免重复创建的IF NOT EXISTS选项 提供了查看系统默认字符集和校验

2026-04-04 16:34:47 1437 35

原创 信而有征——模型评估、验证与可信部署的完整体系

模型评估与验证:构建可信AI的核心方法 本文系统探讨了机器学习模型评估的关键技术,重点解决偏差-方差权衡、数据划分策略和性能度量三大问题。通过偏差-方差分解公式,揭示了模型泛化误差的构成(偏差、方差、不可约误差),并给出诊断与优化方案。针对数据划分,详细比较了随机抽样、分层抽样、时间序列划分等方法,强调交叉验证(如K折、留一法)在有限数据下的重要性。在评估指标方面,分类任务推荐使用精确率、召回率、F1分数及ROC曲线,回归任务则采用MSE/RMSE等指标。最终指出,可靠的模型评估是AI系统落地的前提,需结合

2026-02-06 19:58:05 2073 86

原创 无中生有——无监督学习的原理、算法与结构发现

数据本身蕴含结构,只需合适的透镜去观察。它不提供确定答案,而是提出假设——“这些样本可能属于同一类”、“数据可能位于这个低维流形上”。这种探索精神,正是科学发现的本质。下一篇文章,我们将进入模型评估与验证的领域——那里有偏差-方差权衡、交叉验证、A/B 测试,是确保模型可靠落地的关键。真正的洞察,往往始于对数据本身的敬畏与好奇。

2026-02-03 13:58:59 3149 77

原创 【MySQL基础】(2):数据库基础概念

本文介绍了MySQL数据库的基础概念与架构。首先解释了数据库的本质是结构化数据存储方案,对比了文件存储的不足,并列举了主流数据库的特点。通过实际操作演示了数据库创建、表结构建立和数据插入的过程,揭示了数据库在Linux系统中的物理存储形式。文章阐明了服务器、数据库和表的三层关系:数据库服务器管理多个数据库,每个数据库包含多个表,表是存储实体数据的核心结构。最后强调数据库的本质是提供高效的数据管理解决方案。

2026-02-01 14:21:25 1927 72

原创 【MySQL基础】(1):MySQL的安装

本文为Linux和数据库新手提供在Ubuntu系统上快速安装MySQL 8.0的简明教程。主要内容包括:彻底清理旧数据库、添加MySQL官方APT源、安装MySQL Server、验证服务运行、设置root密码为"123456"、配置UTF-8支持以解决中文乱码问题。教程采用无密码登录方式简化流程,特别适合新手练习SQL操作,最后还介绍了如何通过GUI工具连接数据库。所有步骤均附带详细命令和成功验证方法,确保安装过程顺利可靠。

2026-01-30 21:24:25 2473 59

原创 从线性到非线性——神经网络的原理、训练与可解释性探索

神经网络通过多层非线性变换实现复杂函数逼近,其核心在于前向传播和反向传播机制。相比传统机器学习模型,神经网络擅长处理高维非线性数据(如图像、语音等),但计算复杂度更高。关键设计包括激活函数(如ReLU)引入非线性、损失函数匹配任务需求,以及通过反向传播高效计算梯度。尽管神经网络被视为"黑箱",但其本质是灵活的数学函数逼近器,而非模拟人脑。理解其数学原理和工程权衡,有助于在实际问题中合理选择模型。

2026-01-28 18:27:04 1694 72

原创 一文搞懂函数调用与栈帧管理:从汇编视角看C语言函数的生命周期

本文深入剖析了C语言函数调用背后的栈帧机制。通过VS2022调试环境下的汇编代码分析,揭示了函数调用时如何通过push ebp、mov ebp,esp等指令在栈上开辟独立空间。重点讲解了call指令如何保存返回地址、参数传递规则以及寄存器分类管理(Caller-saved与Callee-saved)的原理。通过内存地址变化图示,直观展示了栈帧创建过程中ESP和EBP寄存器的动态调整过程,帮助读者从底层理解函数调用的实现机制。

2026-01-16 10:23:12 1875 77

原创 计算机组成原理(15):定点数的移位运算

摘要:移位运算是计算机组成原理中的重要概念,涉及算术移位、逻辑移位和循环移位三种方式。算术移位根据原码、反码和补码的编码规则采用不同的补位策略,实现等效乘除运算;逻辑移位适用于无符号数,简单补0;循环移位则将移出的位重新补入另一端。本文通过十进制类比、二进制规则解析和实际应用场景(如RGB颜色拼接),深入浅出地讲解了移位运算的原理与实现,帮助读者掌握这一高频考点。(150字)

2026-01-14 22:01:27 2437 60

原创 从森林到梯度——梯度提升树的原理、调参与实战

grad = preds - labels # 一阶梯度hess = np.ones_like(preds) # 二阶梯度适用于 Quantile Regression、Focal Loss 等场景。梯度提升树不仅是算法,更是一种认知范式:承认当前模型的不完美,以谦卑之心,一步步修正偏差。复杂问题,可以分解为一系列简单修正;最优解,往往藏在误差的梯度方向里;真正的强大,源于对细节的极致把控。

2026-01-12 08:31:58 1573 65

原创 计算机组成原理(14):算术逻辑单元ALU

本文深入解析了计算机组成原理中的核心部件——算术逻辑单元(ALU)。首先明确了ALU在CPU中的核心地位,指出其作为运算器的核心组件,以加法器为运算基础。其次详细剖析了ALU的功能体系,包括算术运算、逻辑运算及其他辅助功能。接着从接口角度阐述了ALU的数据输入输出、控制信号及标志位机制,并简要介绍了内部实现原理。最后针对考研需求,提供了ALU电路图的解读方法。全文系统梳理了ALU的关键知识点,为计算机专业学生特别是考研同学提供了全面的学习指导。

2026-01-09 20:13:24 2752 77

原创 从树到森林——决策树、随机森林与可解释性博弈

决策树与随机森林:可解释性与性能的平衡 摘要: 本文系统介绍了决策树模型的工作原理及其优势。决策树通过if-else规则模拟人类决策过程,能自动处理非线性关系和交互效应,具有直观可解释性。文章详细讲解了分类任务中的基尼不纯度和信息熵两种分裂准则,以及回归任务中的方差减少方法。通过Python代码演示了如何从零实现一个简易决策树分类器,包括节点分裂、停止条件和递归构建过程。决策树虽直观,但单一模型容易过拟合,因此衍生出随机森林等集成方法,在保持可解释性的同时提升模型性能。文章最后探讨了模型透明度的辩证关系,指

2026-01-07 18:09:22 1945 58

原创 计算机组成原理(13):多路选择器与三态门

摘要: 多路选择器(MUX)和三态门是数字电路中控制数据流动的关键组件。MUX通过多位控制信号从多个输入中选择一个输出,其控制信号位数由输入数量决定(m≥⌈log₂k⌉)。三态门则通过单控制端实现输入信号的通断或高阻态(Z),在总线系统中避免信号冲突。两者区别在于:MUX处理多路输入选择,总有确定输出;三态门仅控制单路信号,可输出高阻态。MUX适用于数据选择场景,三态门则用于总线共享控制,二者共同构建了数字系统的信号管理机制。

2026-01-07 18:09:18 1554 39

原创 Reactor与多Reactor设计:epoll实战

在上一篇系列文章《多路转接之epoll:理论篇》中,我们讲解了epoll模型,以及它的三个调用函数。这些只是最简单的理论知识,我们都知道,实践出真知,要想彻底掌握一个知识,就只有去实践。所以本文将会带领大家深入epoll模型,探究其背后的应用与思想智慧。

2026-01-04 17:46:35 2102 77

原创 从直觉到公式——线性模型的原理、实现与解释

摘要: 线性模型是机器学习的基石,以简单性和可解释性著称。本章深入探讨线性回归与逻辑回归的原理:线性回归通过最小化均方误差(MSE)拟合数据,可用解析解或梯度下降求解;逻辑回归通过Sigmoid函数将线性输出映射为概率,采用交叉熵损失函数进行分类。文章强调线性模型在金融、医疗等需高解释性场景中的实用性,并演示了从零实现梯度下降的代码流程。最后指出,尽管结构简单,线性模型的核心思想(如损失函数、梯度下降)是复杂模型(如神经网络)的基础。

2026-01-02 20:11:45 1302 53

原创 计算机组成原理(12):并行进位加法器

本文介绍了从串行进位加法器到并行进位加法器(CLA)的优化过程。串行加法器因进位信号逐级传递导致速度慢,而CLA通过数学抽象(生成信号G和传播信号P)并行计算进位,显著提升运算速度。尽管CLA在4位设计中效果显著,但位宽扩展时面临逻辑复杂度爆炸问题,实际采用分组先行进位的分层设计。文章强调理解CLA核心思想对掌握现代处理器设计的重要性,同时指出其非考试重点但具有长期价值。最后提出延伸问题,引导读者思考更复杂的工程实现。

2026-01-02 20:04:37 1597 60

原创 为什么 CPU 要求内存对齐?深度解析其底层原理

CPU为什么要求内存对齐?性能与硬件的深层考量 内存对齐不仅是编程规范,更是硬件架构的强制要求。当数据未按边界对齐时: 性能损失:CPU需要多次内存访问和拼接操作,跨缓存行时性能下降3倍以上 硬件限制:RISC架构可能直接触发异常崩溃 SIMD/原子操作:严格对齐要求,未对齐会导致崩溃或百倍性能下降 现代编译器自动处理对齐: 结构体插入padding malloc保证16字节对齐 栈变量自动调整地址 关键结论:合理的内存对齐能显著提升程序性能,特别是在SIMD、原子操作等场景下差异可达10倍以上。理解对齐原

2025-12-31 13:10:29 1310 53

原创 计算机组成原理(11):加法器

文章摘要 本文深入解析CPU加法器的设计原理,从最基础的1位全加器(FA)开始,逐步构建n位加法器。首先介绍了串行进位加法器(RCA)的简单实现及其延迟问题,随后引入超前进位加法器(CLA),通过预判进位信号(G和P)实现并行计算,显著提升运算速度。此外,还探讨了加法器的状态标志位(如溢出OF、符号SF等)对程序逻辑的影响。理解加法器不仅是计算机运算的基石,还能帮助开发者优化性能、排查并发问题及安全漏洞。通过空间换时间的权衡,现代CPU采用混合进位设计,平衡速度与成本。

2025-12-31 13:03:48 1695 43

原创 数据是燃料:理解数据类型、质量评估与基本预处理

文章摘要 数据是机器学习的核心驱动力,高质量数据比复杂算法更重要。本文系统介绍了:1) 数据类型(数值型、分类型、文本型等)及其处理方法;2) 评估数据质量的五个维度(完整性、一致性、准确性、时效性、有效性);3) 常见数据问题(缺失值、异常值、重复数据)的预处理策略;4) 特征缩放的必要性和方法(标准化、归一化)。强调所有输入模型的数据必须转换为数值型矩阵,并提供了实用的Python代码示例。数据预处理是建模的基础,遵循"垃圾进,垃圾出"原则,优质数据才能训练出有效模型。

2025-12-28 12:12:09 2165 90

原创 多路转接之epoll:理论篇

本文介绍了Linux中的I/O多路复用机制,重点分析了select、poll和epoll三种方法的优缺点。文章指出select和poll存在fd数量限制、频繁拷贝和线性扫描等问题,而epoll通过红黑树管理fd、分离功能调用和事件绑定机制,显著提升了性能。详细讲解了epoll的三个核心函数:epoll_create创建实例,epoll_ctl管理fd监听,epoll_wait等待事件,特别强调了epoll_event结构体中data成员的巧妙设计,它通过联合体实现了fd或上下文数据的直接绑定,避免了查找开销

2025-12-28 12:07:07 1289 30

原创 Linux 网络编程 ——2025年度深度总结

Linux网络编程2025年度深度总结 本文系统梳理了Linux网络编程的核心原理与实践经验。首先从通信基础入手,解析了协议分层设计(TCP/IP五层模型)和地址体系(MAC/IP/端口)的协同机制。其次对比了UDP与TCP两种传输哲学:UDP以无连接、高效著称,适合实时应用;TCP通过复杂机制确保可靠传输。在应用层方面,探讨了自定义协议设计(二进制/JSON序列化)与HTTP/HTTPS实践。最后深入I/O多路复用演进(从select到epoll)和内核视角(socket/sk_buff)。全文立足202

2025-12-27 16:13:34 1526 12

原创 计算机组成原理(10):逻辑门电路

摘要: 逻辑门电路是计算机处理二进制运算的基础,由与(AND)、或(OR)、非(NOT)三种基本门构成。与门要求输入全为1才输出1,或门只需一个输入为1即输出1,非门则对输入取反。通过组合这些基本门,可构建更复杂的逻辑门,如与非门(NAND)、或非门(NOR)、异或门(XOR)和同或门(XNOR)。异或门在输入不同时输出1,常用于奇偶校验和加法运算;同或门则相反,输入相同时输出1。NAND门因其通用性成为芯片制造的核心单元。理解这些逻辑门的工作原理有助于深入认识计算机底层运算机制。

2025-12-25 19:13:09 1359 39

原创 Python 与数据科学工具链入门:NumPy、Pandas、Matplotlib 快速上手

本文介绍了Python数据科学三大核心工具(NumPy、Pandas、Matplotlib)的快速入门方法。首先强调了工具链的重要性,指出NumPy提供高效的数值计算,Pandas简化数据处理,Matplotlib实现数据可视化。文章详细讲解了如何搭建开发环境(推荐Anaconda),并通过实际代码示例演示了NumPy数组操作、Pandas数据框处理以及数据清洗技巧。这些工具共同构成了机器学习项目的基础设施,掌握它们能显著提高数据分析和建模效率。

2025-12-25 19:03:26 4051 52

原创 计算机组成原理(9):零拓展与符号拓展

摘要: C/C++中short到int的隐式转换依赖零扩展(无符号数高位补0)和符号扩展(有符号数高位补符号位),确保数值正确性。硬件层面,CPU通过movzx/movsx指令实现扩展,匹配寄存器位宽。错误扩展会导致数据失真(如将-90转为正数)。实际编程需警惕有/无符号混用,例如char转unsigned int需先符号扩展再类型转换,否则可能引发逻辑错误。理解扩展机制对底层开发至关重要。 (字数:149)

2025-12-23 19:51:19 1076 19

原创 计算机组成原理(8):各种码的作用详解

摘要: 计算机数值表示法中,原码直观但计算复杂,需特殊处理符号位;补码通过模运算将减法转为加法,简化硬件设计,成为现代计算机标准;移码便于浮点数阶码比较;反码因0表示不唯一等缺陷被淘汰。补码的核心优势在于统一加减运算、降低硬件成本(仅需加法器)及解决0表示问题,其数学基础源于模运算理论。这些编码方式共同构成了计算机底层数值处理的基石。

2025-12-21 14:14:10 1493 43

原创 导论:什么是机器学习?——破除迷思,建立全景地图

机器学习最迷人的地方,不在于复杂的公式,而在于它教会我们如何从混乱中寻找秩序,从噪声中提取信号。当你看到一组销售数据,能想到“或许可以用时间序列预测”;当你听到“用户流失率高”,会思考“能否用聚类找出高危群体”;当你面对一个新问题,不再慌张,而是冷静地问:“这是分类?回归?还是强化学习场景?我有哪些数据?目标是什么?——那一刻,你就真正拥有了机器学习的直觉。而这,正是本系列文章的终极目标。

2025-12-21 14:11:41 2278 63

原创 C++ set 和 multiset 怎么选?别再只说“一个去重一个不去重”了!

C++ 中的 set 和 multiset 虽然都是有序容器,但选择使用时需要考虑更多因素,而不仅仅是"是否允许重复元素"。set 作为约束型容器,通过 insert 返回值强制检查唯一性,能有效防止数据重复问题;multiset 则忠实记录所有插入元素,适合需要保留重复数据的场景。两者在 count() 语义、遍历方式和 erase() 行为上都有显著差异:set::count 仅判断存在性,multiset::count 统计出现次数;遍历重复元素时,multiset 需要使用 eq

2025-12-19 18:03:51 1058 16

原创 计算机组成原理(7):定点数的编码表示

本文介绍了计算机中定点数的编码表示方法,重点解析了无符号数、原码、反码、补码和移码的原理与应用。无符号数直接表示数值但存在溢出问题;原码直观但运算复杂且存在正负零;反码作为过渡方案仍保留双零缺陷;补码则通过巧妙设计统一了零的表示,简化了加减运算,成为现代计算机的标准编码方式。文章通过实例和数学推导,帮助读者深入理解这些编码方式的本质差异及其在计算机底层运算中的实际意义。

2025-12-17 21:26:11 1356 47

原创 C++可变参数队列与压栈顺序:从模板语法到汇编调用约定的深度解析

C++可变参数队列与压栈顺序深度解析 本文深入探讨C++可变参数模板的实现机制及其在x86-64架构下的底层行为。文章首先澄清了C风格可变参数(va_list)与C++可变参数模板的本质区别,指出后者提供了类型安全、支持任意类型且无运行时开销的解决方案。通过分析模板展开原理和System V ABI调用约定,揭示了参数传递的真实过程:前6个整数/浮点参数通过寄存器传递,只有超出的参数才会从右向左压栈。最后通过Queue类的实际案例,展示了7个参数全部通过寄存器传递的汇编实现,证明了可变参数模板在编译期展开后

2025-12-17 21:25:05 1053 43

原创 计算机组成原理(6):进位计数制

文章的最后,给基础不好的同学,或者觉得枯燥的同学讲个好玩的事。你知道吗?德国的大数学家莱布尼茨(微积分的发明者之一)被认为是现代二进制的发明者。但当他看到中国的《易经》八卦图时,震惊得下巴都掉了。太极生两仪:阴(–)和 阳(—)。这不就是 0 和 1 吗?两仪生四象:太阴、少阳、少阴、太阳。这不就是 00, 01, 10, 11 吗?四象生八卦:乾、坤、震、巽… 每一卦由三根爻组成。000(0)111(7)所以,咱们的老祖宗早在几千年前,就已经悟出了二进制的真谛。

2025-12-15 19:00:33 1545 47

计算机系统基础实验四:整数的编码表示

计算机系统基础实验四:整数的编码表示

2025-10-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除