• 博客(92)
  • 收藏
  • 关注

原创 轻松看懂海明码(Hamming Code)原理

插入特定的校验位(决定个数和位置)。每个校验位采用分组偶校验(或奇校验)。接收端校验出错时,出错组的编号拼起来,计算出的对应十进制数,正好就是出错位置的索引。这就是海明码的魔法:用巧妙的数学规律,实现了数据的自我修复!

2026-03-09 21:37:41 322

原创 数据库:故障与备份详解

用户输入密码↓ HTTPS加密传输应用服务器接收↓ bcrypt/Argon2 加盐哈希数据库存储哈希值(永不存储明文)↓ SSL/TLS加密连接数据库服务器保存验证时:用户输入密码 → 应用服务器 → 取出存储哈希 → bcrypt比对 → 通过/拒绝核心原则:密码只有用户自己知道,系统中任何地方都不应该能看到用户的原始密码!可判断:系统能够检测到错误条件可控制:应用程序通过 ROLLBACK 语句显式回滚事务非突发性:属于正常业务逻辑中的错误分支特点说明影响范围。

2026-02-25 21:07:47 816

原创 数据库:封锁协议详解

*锁(Lock)**是数据库用来控制并发访问的一种机制,确保多个事务同时操作时数据的一致性和完整性。│ 锁的本质理解 ││ ││ 生活类比:公共厕所的门锁 ││ ││ 1. 进去前:锁门(加锁) ││ → 其他人看到门锁着,知道有人在用 ││ ││ 2. 使用期间:独占使用 ││ → 其他人必须等待 ││ ││ 3. 出来后:开锁(释放锁) ││ → 下一个人可以进去 ││ ││ 数据库的锁机制完全一样!││ │事务执行流程开始事务 加锁 访问数据 释放锁 提交事务。

2026-02-25 20:41:04 879

原创 数据库:事务管理详解

事务(Transaction)是数据库执行的最小工作单元,包含一组相关操作,这些操作要么全部成功,要么全部失败。│ 事务的本质 ││ ││ 定义:一个不可分割的工作单元 ││ ││ 生活类比:去银行办理转账业务 ││ │ 步骤1:从账户A扣款1000元 │ ││ │ 步骤2:向账户B加款1000元 │ ││ ││ 特点: ││ • 两个步骤是一个整体 ││ • 必须都成功,或者都不执行 ││ • 不能只扣了A的钱,B却没收到 │。

2026-02-25 20:40:25 1002

原创 数据库:并发控制基本概念

数据库并发控制(Concurrency Control)是指当多个用户或程序同时访问和操作数据库时,通过一定的机制来协调这些操作,确保数据的一致性和正确性。│ 并发控制的本质 ││ ││ 核心思想:让多个操作"看起来"像是串行执行的 ││ ││ 生活类比: ││ • 多人同时在银行ATM取款 ││ • 每个人都要确保账户余额不会出错 ││ • 不能同时取款导致余额变成负数 ││ ││ 技术实现: ││ • 通过锁、时间戳等机制 ││ • 控制事务的执行顺序 │。

2026-02-25 20:39:24 688

原创 数据库(五):反规范化

反规范化(Denormalization)是指在数据库设计中,为了提高查询性能,有意识地在已规范化的数据库中引入数据冗余的过程。│ 反规范化的本质 ││ ││ 核心思想:以空间换时间 ││ ││ • 牺牲:存储空间、数据一致性维护成本 ││ • 获得:查询性能提升、SQL简化 ││ ││ 类比: ││ • 规范化 = 整理房间,每样东西放固定位置(省空间但取用麻烦) ││ • 反规范化 = 常用物品多放几处(占空间但取用方便) ││ │重要区分:反规范化 ≠ 非规范化概念含义特点。

2026-02-02 18:06:07 943

原创 数据库(四):规范化与范式详解

规范化是关系数据库设计的核心理论,掌握它能够帮助我们设计出结构合理、维护方便的数据库。规范化(Normalization)是一种将关系模式分解为更小、更规范的关系模式的过程,目的是消除数据冗余和各种更新异常。通俗理解:规范化就是"拆表"——把一个设计不好的大表,拆分成多个设计合理的小表。就像整理房间:- 乱放一堆东西 → 分类归纳到不同抽屉- 杂乱无章 → 井井有条数据冗余是指同一数据在数据库中重复存储多次。

2026-02-02 17:29:29 716

原创 数据库(三):关系代数

关系代数是关系数据库的理论基础,理解它对于深入掌握SQL和数据库查询优化至关重要。关系代数(Relational Algebra)是一种抽象的查询语言,它使用对关系的运算来表达查询。│ 关系代数的本质 ││ ││ 输入:一个或多个关系(表) ││ ↓ ││ 运算:对关系进行各种操作 ││ ↓ ││ 输出:一个新的关系(表) ││ ││ 核心思想:关系进 → 关系出(封闭性) ││ │并运算是将两个关系的所有元组合并成一个关系,同时去除重复元组。

2026-02-02 17:04:23 780

原创 数据库(二):数据模型

数据模型。数据模型是数据库系统的灵魂,它决定了数据如何组织、如何操作、如何约束。可以说,理解了数据模型,就理解了数据库的本质。**数据模型(Data Model)**是对现实世界数据特征的抽象,是用来描述数据、组织数据和对数据进行操作的一组概念和定义。现实世界 数据模型 数据库│ 建筑物 │ ────→ │ 建筑图纸 │ ────→ │ 实际房屋 ││ (实体) │ │ (模型) │ │ (实现) │就像建筑师用图纸来描述建筑一样,数据库设计师用数据模型来描述数据的结构和关系。

2026-02-02 16:12:35 1256

原创 数据库(一):三级模式与两级映像

想象一下,你住在一栋公寓楼里。你只需要知道自己的房间号和钥匙,就可以进入自己的房间。你不需要关心这栋楼的地基是怎么打的、电线是怎么布的、水管是怎么走的。这就是一种"分层"的思想——每一层只关心自己该关心的事。数据库系统也采用了类似的分层设计。三级模式结构外模式:用户看到的数据(你的房间)模式:数据库的整体逻辑结构(整栋楼的设计图)内模式:数据的物理存储方式(地基、电线、水管)数据(Data)是描述事物的符号记录。用大白话说,数据就是我们用来描述现实世界中各种事物的信息。你的名字"张三"是数据。

2026-02-02 14:22:19 662 1

原创 Qt网络编程详解(下):项目实战

一个基于TCP的简易聊天程序,包含服务端和客户端,支持多客户端同时连接和消息广播。功能特点服务端支持多客户端连接消息广播给所有在线用户用户上线/下线通知简洁的命令行界面一个支持断点续传的HTTP文件下载器,提供命令行界面,显示下载进度和速度。功能特点支持HTTP/HTTPS下载断点续传(暂停后可继续)实时显示下载进度和速度命令行交互控制一个基于UDP广播的局域网设备发现工具,包含设备端(响应发现请求)和发现端(搜索设备)。功能特点UDP广播发现局域网内设备。

2026-01-30 14:43:51 862

原创 Qt网络编程详解(上):基础知识

本文档是一份全面系统的Qt网络编程教程,涵盖底层Socket编程、高级网络接口、现代Web通信协议,以及多个实战项目。💡 特色亮点:🎯 适合人群:📊 学习成果:完成本教程后,你将能够:如果你是第一次接触Qt网络编程,建议按以下顺序学习:在 文件中添加网络模块:核心头文件📋 第一章:网络编程基础网络编程是现代应用开发的必备技能。无论是调用云端API、实现实时聊天,还是进行文件传输,都离不开网络通信。本章将带你从理论基础出发,建立对网络编程的整体认识。在学习网络编程之前,必须先了解网络通信

2026-01-30 14:41:55 986

原创 Qt Model/View架构详解(六):综合实战项目(下)

一个完整的数据分析和可视化应用,支持CSV数据加载、表格编辑、实时统计和图表展示。核心功能:加载CSV数据表格展示和编辑实时统计数据导出图表展示类设计:关键特性:csvparser.h:csvparser.cpp:2. 数据表格模型datatablemodel.h:datatablemodel.cpp:3. 统计面板和主窗口datavisualizerwindow.h(简化版):main.cpp:12.4.4 完整源码项目文件结构:datavisualizer.pro:simp

2026-01-29 17:40:33 651

原创 Qt Model/View架构详解(五):综合实战项目(上)

第12章 综合实战项目第13章 常见问题与最佳实践第14章 进阶资源与学习路径附录本章通过三个完整的实战项目,综合运用前面学习的所有知识。一个功能完善的电子表格应用,支持数据编辑、公式计算、样式设置和文件导入导出。核心功能:多行多列数据编辑单元格公式支持样式和格式化导入导出类设计:数据流:12.1.3 核心功能实现1. 自定义表格模型spreadsheetmodel.h:spreadsheetmodel.cpp:2. 公式计算引擎formulaengine.h:formulaengine.

2026-01-23 11:11:02 548

原创 Qt Model/View架构详解(四):高级特性

什么是代理模型代理模型(Proxy Model)是一个位于源模型(Source Model)和视图(View)之间的中间层,它不存储实际数据,而是对源模型的数据进行转换、过滤或排序后再展示给视图。代理模式架构原始数据流:│ (源模型) │ │ (视图) │使用代理模型:│ (源模型) │ │ (代理模型) │ │ (视图) ││├─ 排序├─ 过滤└─ 转换代理模型的优势不修改源数据- 所有操作都在代理层完成多视图支持- 同一源模型可以有多个不同的代理即时响应- 源模型数据变化时自动更新。

2026-01-23 11:05:56 567

原创 Qt Model/View架构详解(三):自定义模型

第6章 自定义Model实战第7章 选择模型(QItemSelectionModel)第8章 Delegate(委托)详解设计一个自定义Model需要遵循一定的步骤和最佳实践,以确保模型的正确性和可维护性。第一步:明确需求在设计自定义Model之前,首先要明确:数据结构选择:6.1.2 选择合适的基类基类选择指南:基类对比:6.1.3 实现必要的接口只读模型的最小接口:可编辑模型的接口:支持动态增删的接口:6.1.4 发送正确的信号关键信号和使用场景:信号使用决策树:6.1.5

2026-01-23 10:58:37 640

原创 Qt Model/View架构详解(二):内置视图与模型

第4章 视图类详解第5章 便捷模型类 是用于显示列表数据的视图类,支持单列或图标模式显示。最简单的使用:常用属性设置:4.1.2 视图模式:ListMode vs IconModeListMode - 列表模式(默认):IconMode - 图标模式:完整示例:切换视图模式:4.1.3 选择模式设置选择模式类型:选择行为:获取选中项:4.1.4 拖放支持启用拖放:模型需要支持拖放:完整拖放示例:4.1.5 实战:图片浏览器这个示例实现一个简单的图片浏览器,支持缩略图显示

2026-01-23 10:55:07 633

原创 Qt Model/View架构详解(一):基础理论

第1章 Model/View架构概述第2章 Model基础第3章 View基础在软件架构设计中,有多种将数据与界面分离的模式:MVC(Model-View-Controller)模式MVP(Model-View-Presenter)模式Qt的Model/View模式Qt采用了简化的MVC模式,将Controller的功能融入到View和Delegate中:核心原则:数据与显示分离关键特性:Qt提供了两种数据展示方式:传统Widget方式(如QListWidget, QTableWidget, QTree

2026-01-23 10:51:24 747

原创 Qt多线程编程详解(下)

本文档是一份全面系统的Qt多线程编程教程,内容涵盖从基础理论到进阶主题,从设计原则到实战项目,本篇主要讲解5-7章内容,1-4章内容请看上篇。💡 特色亮点:🎯 适合人群:📊 学习成果:完成本教程后,你将能够:如果你是第一次接触Qt多线程,建议按以下顺序学习:学习策略:建议按顺序完成,循序渐进掌握实战技能。难度:简单时长:1小时核心技术:QMutex + QWaitCondition、QSemaphore学习重点:理解同步原语的实际应用经典场景:实际应用:完整源码:测试代码:运行输出示例:

2026-01-20 13:46:03 673

原创 Qt多线程编程详解(上)

本文档是一份全面系统的Qt多线程编程教程,内容涵盖从基础理论到进阶主题,从设计原则到实战项目,这部分只讲1-4章理论部分,后续章节在下一篇讲解。💡 特色亮点:🎯 适合人群:📊 学习成果:完成本教程后,你将能够:如果你是第一次接触Qt多线程,建议按以下顺序学习:在传统的单线程程序中,所有代码都在一个执行流中按顺序运行。这带来几个严重问题:问题1:无法同时处理多个任务问题2:CPU资源浪费问题3:用户体验差让我们通过一个实际例子看看单线程的问题:❌ 错误示例:阻塞UI线程现象:原因分析:1.1.

2026-01-20 13:42:41 718

原创 Qt样式系统详解(下)

创建自定义样式是Qt样式系统的高级应用。通过继承QStyle,可以完全控制控件的绘制逻辑,实现独特的视觉风格。QProxyStyle是什么?QProxyStyle是一个代理样式类,它允许在不修改原始样式的情况下扩展样式功能。这是创建自定义样式最简单、最推荐的方式。QProxyStyle的优势:基本用法:基于现有样式扩展:选择性覆盖:完全自定义QStyle何时需要完全自定义?当需要完全控制所有控件的绘制,或者需要实现全新的视觉风格时,可以完全自定义QStyle。继承QCommonStyle:完全自定

2026-01-09 19:23:06 855

原创 Qt样式系统详解(上)

什么是样式系统?样式系统是Qt框架中负责控制应用程序视觉外观的核心机制。它决定了控件如何被绘制、如何显示颜色、字体、边框、背景等视觉元素。简单来说,样式系统就是Qt应用程序的"化妆师",它让界面变得美观、统一、符合设计规范。样式系统的核心作用:样式系统的工作流程:当Qt需要绘制一个控件时(比如按钮),样式系统会:Qt样式系统由三个核心组件组成,它们协同工作,共同完成界面的绘制:1. QSS(Qt Style Sheets)- 样式表QSS是Qt的样式表系统,类似于Web开发中的CSS。它允许开发者通过文本

2026-01-09 19:03:57 792

原创 Qt对象与对象树机制详解

Qt的对象系统是Qt框架的核心基础,几乎所有Qt类都继承自。理解QObject的设计和机制,是掌握Qt编程的关键。是Qt框架中所有对象的基类,它的设计遵循了几个核心理念:简单理解:QObject就像一个"万能的基础设施",为所有Qt对象提供了:让我们看看QObject类的核心数据结构(简化版,基于Qt源码):关键成员说明:parent(父对象指针):children(子对象列表):objectName(对象名称):thread(所属线程):1. 构造函数和析构函数:关键点:2. 父对象相关函数:3.

2026-01-06 15:39:13 1043

原创 Qt实现事件发布订阅系统

基于Qt的MetaCall事件实现的线程安全事件发布订阅系统,类似ROS的消息订阅模式。eventpubsub.cpp核心组件EventPubSub类:事件发布订阅系统的核心类SubscriberInfo结构体:存储订阅者信息(接收者对象、回调函数、线程信息)CallbackEvent类:自定义事件类,用于在事件循环中执行回调PublishType枚举:定义三种发布类型数据结构线程安全机制使用保护订阅者映射表订阅和取消订阅操作都加锁保护发布消息时复制订阅者列表,避免长时间持有

2026-01-05 16:19:46 1016

原创 Qt事件驱动与信号槽原理分析

想象一下餐厅的服务模式:传统模式(顺序执行):服务员按固定顺序,先给第1桌点菜,等他们吃完再给第2桌点菜,依此类推。这样的问题是,如果第1桌吃得很慢,其他桌都要等。事件驱动模式:服务员在各桌之间巡回,当某桌需要服务时(比如举手、按铃),就过去处理。这样服务员可以同时照顾多桌,响应更及时。在程序世界中,事件驱动编程就是类似的概念。程序不是按固定顺序执行代码,而是等待"事件"发生(如用户点击按钮、键盘输入、定时器到期等),然后响应这些事件。传统顺序执行(控制台程序):这种方式适合批处理任务,但不适合交互式程序

2026-01-05 14:19:58 629

原创 操作系统原理详解(六):操作系统实例分析

本篇主要讲解第十章以及附录:操作系统实例分析。其余章节请参考专栏其他篇幅。

2025-12-27 18:12:18 748

原创 操作系统原理详解(五):现代操作系统技术

本篇主要讲解第九章:现代操作系统技术。其余章节请参考专栏其他篇幅。

2025-12-27 17:58:21 729

原创 操作系统原理详解(四):作业管理、死锁、操作系统安全

本篇主要讲解第六章和第七章和第八章:操作系统作业管理、死锁、操作系统安全。其余章节请参考专栏其他篇幅。作业管理是操作系统对用户作业进行管理的功能模块。在批处理系统中,作业管理尤为重要;在现代交互式系统中,作业管理的概念仍然存在,但形式有所变化。死锁的正式定义死锁(Deadlock)是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。死锁的定义:正式定义:- 一组进程处于死锁状态- 当且仅当这组进程中的每个进程。

2025-12-27 17:41:24 985

原创 操作系统原理详解(三):设备和文件管理

本篇主要讲解第四章和第五章:操作系统设备管理和操作系统的文件管理。其余章节请参考专栏其他篇幅。

2025-12-27 17:38:02 879

原创 操作系统原理详解(二):操作系统存储管理

本篇主要讲解第三章:操作系统的存储管理,其余章节请参考专栏其他篇幅。存储管理是操作系统对内存资源进行管理的功能模块。它负责内存的分配、回收、保护、共享和地址转换等工作,为进程提供运行所需的内存空间。

2025-12-27 17:34:19 931

原创 操作系统原理详解(一):操作系统概述和进程管理

本篇主要讲解操作系统概述和操作系统的进程管理,其余章节请参考专栏其他篇幅。操作系统的概念操作系统(Operating System,OS)是管理计算机硬件与软件资源的系统软件,是计算机系统的核心和基石。它直接运行在"裸机"(Bare Machine)之上,是用户与计算机硬件之间的接口。硬件= 工厂的机器设备(CPU、内存、硬盘等)操作系统= 工厂的管理系统(协调各部门、分配资源、制定规则)应用程序= 工厂的生产车间(Word、游戏等具体工作)用户= 工厂的老板(下达指令,使用工厂)

2025-12-27 15:13:52 885

原创 计算机硬件组成详解:从基础原理到现代架构(下)

计算机存储系统采用多级层次结构,平衡速度、容量和成本。速度:快 ←──────────────────────────────→ 慢容量:小 ←──────────────────────────────→ 大成本:高 ←──────────────────────────────→ 低│ CPU寄存器 ││ 容量:几十到几百字节 ││ 速度:<1纳秒 │↓│ CPU缓存(L1/L2/L3) ││ 容量:几MB到几十MB ││ 速度:纳秒级 │↓│ 主内存(RAM) │。

2025-12-26 11:24:54 923

原创 计算机硬件组成详解:从基础原理到现代架构(上)

什么是硬件?硬件(Hardware)是计算机系统中所有看得见、摸得着的物理设备。就像人体的骨骼、肌肉和器官一样,硬件是计算机的"身体"。什么是软件?软件(Software)是运行在硬件上的程序和数据,是计算机的"灵魂"。软件告诉硬件该做什么、怎么做。硬件 ←→ 软件↓ ↓身体 ←→ 灵魂硬件= 钢琴本身(琴键、琴弦、踏板等物理部件)软件= 乐谱(告诉钢琴家如何演奏)没有硬件,软件无法运行;没有软件,硬件只是一堆废铁。两者缺一不可。硬件层面。

2025-12-26 11:23:00 1167

原创 VPP中DHCP插件源码深度解析第八篇:CLI与API命令以及实践、调试、改进

第一部分:DHCP协议基础知识 - 系统介绍DHCP协议的基本概念、DORA交互流程、DHCPv4/v6协议差异以及协议在网络中的角色定位,为理解VPP实现奠定理论基础。第二部分:VPP DHCP插件功能概述 - 全面介绍VPP DHCP插件的功能特性、架构定位、API/CLI支持能力以及多线程处理机制,帮助读者建立对插件的整体认知。第三部分:源码目录结构与模块划分 - 详细解析DHCP插件的源码文件组织方式、各模块职责划分、控制平面与数据平面分离设计,以及模块间的依赖关系。第四部分:DHCPv4客户端实现

2025-12-25 17:17:11 760

原创 VPP中DHCP插件源码深度解析第七篇:DHCP Proxy实现详解(下)

全面介绍VPP DHCP插件的功能特性、架构定位、API/CLI支持能力以及多线程处理机制,帮助读者建立对插件的整体认知。

2025-12-25 17:12:40 729

原创 VPP中DHCP插件源码深度解析第六篇:DHCP Proxy实现详解(上)

DHCP Proxy在DHCP协议中扮演"中继代理"的角色,负责在不同网络段之间转发DHCP报文。当客户端和服务器不在同一个广播域时,Proxy接收客户端的DHCP请求,将其转发给远程的DHCP服务器,并将服务器的回复转发回客户端。这一节详细讲解DHCP Proxy的角色、多服务器支持策略、VRF隔离支持等核心功能。功能说明错误代码定义用于标识DHCP Proxy处理过程中可能出现的各种错误情况。VPP使用宏定义机制自动生成错误代码枚举和错误消息字符串,支持IPv4和IPv6两种协议。

2025-12-25 17:10:43 821

原创 VPP中DHCP插件源码深度解析第五篇:DHCPv6客户端实现详解(下)

功能说明PD控制平面需要维护客户端状态、前缀信息、前缀组、地址配置等,这些信息通过多个结构体组织。理解这些数据结构是理解整个控制平面实现的基础。前缀信息结构体/* 前缀组索引,标识此前缀属于哪个前缀组 *//* 不透明数据,用于前缀发布者,存储sw_if_index(前缀所属的接口) *//* IPv6地址前缀,128位地址(但只有前prefix_length位有效) *//* 前缀长度(位数),范围通常为32-64,表示前缀的有效位数 */

2025-12-25 17:06:52 844

原创 VPP中DHCP插件源码深度解析第四篇:DHCPv6客户端实现详解(上)

第一部分:DHCP协议基础知识 - 系统介绍DHCP协议的基本概念、DORA交互流程、DHCPv4/v6协议差异以及协议在网络中的角色定位,为理解VPP实现奠定理论基础。第二部分:VPP DHCP插件功能概述 - 全面介绍VPP DHCP插件的功能特性、架构定位、API/CLI支持能力以及多线程处理机制,帮助读者建立对插件的整体认知。第三部分:源码目录结构与模块划分 - 详细解析DHCP插件的源码文件组织方式、各模块职责划分、控制平面与数据平面分离设计,以及模块间的依赖关系。第四部分:DHCPv4客户端实现

2025-12-25 17:04:32 587

原创 VPP中DHCP插件源码深度解析第二篇:DHCPv4客户端实现详解(下)

第一部分:DHCP协议基础知识 - 系统介绍DHCP协议的基本概念、DORA交互流程、DHCPv4/v6协议差异以及协议在网络中的角色定位,为理解VPP实现奠定理论基础。第二部分:VPP DHCP插件功能概述 - 全面介绍VPP DHCP插件的功能特性、架构定位、API/CLI支持能力以及多线程处理机制,帮助读者建立对插件的整体认知。第三部分:源码目录结构与模块划分 - 详细解析DHCP插件的源码文件组织方式、各模块职责划分、控制平面与数据平面分离设计,以及模块间的依赖关系。第四部分:DHCPv4客户端实现

2025-12-25 16:59:23 1043

原创 VPP中DHCP插件源码深度解析第二篇:DHCPv4客户端实现详解(上)

第一部分:DHCP协议基础知识 - 系统介绍DHCP协议的基本概念、DORA交互流程、DHCPv4/v6协议差异以及协议在网络中的角色定位,为理解VPP实现奠定理论基础。第二部分:VPP DHCP插件功能概述 - 全面介绍VPP DHCP插件的功能特性、架构定位、API/CLI支持能力以及多线程处理机制,帮助读者建立对插件的整体认知。第三部分:源码目录结构与模块划分 - 详细解析DHCP插件的源码文件组织方式、各模块职责划分、控制平面与数据平面分离设计,以及模块间的依赖关系。第四部分:DHCPv4客户端实现

2025-12-25 16:58:30 835

空空如也

空空如也

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

TA关注的人

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