摘要: CRDT(Conflict-free Replicated Data Types,无冲突复制数据类型) CRDT是分布式系统中的一种数据结构设计方法,用来解决多副本数据在并发修改时如何自动合并且不产生冲突的问题。 CRDT 的核心目标是:在没有中心协调的情况下,让多个节点各自修改数据,最终自动收敛到 阅读全文
posted @ 2026-04-11 21:42 aixueforever 阅读(42) 评论(0) 推荐(0)
摘要: 草图算法 草图算法 = 用极小空间 + 可控误差,快速近似处理超大规模数据 “草图算法(Sketching Algorithms)”是一类在大数据和流式数据处理中非常重要的技术,核心思想是:用一个非常小的“摘要数据结构(sketch)”来近似表示一个巨大的数据集,从而实现高效的计算。 草图算法(Sk 阅读全文
posted @ 2026-04-11 21:32 aixueforever 阅读(132) 评论(0) 推荐(0)
摘要: C++ 任务窃取(Work Stealing) 任务窃取(Work Stealing)*是 C++ 并发编程(以及一般多线程编程)中一种非常高效的任务调度算法,主要用于解决多线程环境下的*负载均衡问题。 当你有很多小任务需要分配给多个线程执行时,传统的全局任务队列会导致严重的锁竞争。任务窃取算法通过 阅读全文
posted @ 2026-03-30 16:12 aixueforever 阅读(38) 评论(0) 推荐(0)
摘要: Hash Join(哈希连接) 是关系型数据库(如 MySQL、PostgreSQL、Oracle 等)在处理表连接操作时非常经典且高效的一种算法。它特别适用于大表之间的等值连接(Equi-join),尤其是在参与连接的列上没有合适的索引时。 简单来说,Hash Join 的核心思想是:利用较小的那 阅读全文
posted @ 2026-03-14 22:07 aixueforever 阅读(77) 评论(0) 推荐(2)
摘要: 最大理论带宽 最大理论带宽(Theoretical Maximum Memory Bandwidth),不需要运行复杂的测试,只需要知道两个核心参数:内存频率和内存通道数。 1. 核心计算公式 内存带宽的计算公式如下: \[\text{Max Bandwidth (GB/s)} = \frac{\t 阅读全文
posted @ 2026-03-10 11:31 aixueforever 阅读(314) 评论(0) 推荐(0)
摘要: 这是一个非常经典的“软件并发 (Concurrency) 与硬件并行 (Parallelism) 碰撞”的系统级问题! 简单来说:DuckDB 的 PRAGMA threads 决定了任务被切分成几份(软件上的工人数量),而 taskset 决定了这些工人被允许进入哪个车间干活(物理硬件资源)。 针 阅读全文
posted @ 2026-03-07 14:41 aixueforever 阅读(30) 评论(0) 推荐(0)
摘要: 什么是NUMA架构 简单来说,NUMA(Non-Uniform Memory Access,非统一内存访问架构) 是一种为了提高多处理器系统(多核 CPU)处理效率的内存设计方案。 在传统的架构中,所有处理器访问内存的速度是一样的;而在 NUMA 架构下,处理器访问“离自己近”的内存比访问“远程”内 阅读全文
posted @ 2026-03-02 13:37 aixueforever 阅读(186) 评论(0) 推荐(0)
摘要: 在 Ubuntu Linux 上,要把 Intel Core i5(14 代,P/E 核混合架构) 的频率尽量固定在 Base~Max Turbo 区间内,可以按下面思路操作。 英特尔CPU信息查看网站:https://www.intel.com/content/www/us/en/products 阅读全文
posted @ 2026-02-26 16:57 aixueforever 阅读(209) 评论(0) 推荐(0)
摘要: LSM-Tree 日志结构合并树 LSM-Tree(Log-Structured Merge-Tree,日志结构合并树)是一种分层、有序、面向磁盘的数据结构,其核心思想是充分利用磁盘的顺序写性能远高于随机写性能的特性,通过将随机写转换为批量顺序写来优化写入效率。这种结构最初源于Google的BigT 阅读全文
posted @ 2026-02-23 14:06 aixueforever 阅读(60) 评论(0) 推荐(0)
摘要: 数据库列存储和行存储的区别 什么是列存储(Column-oriented Storage)? 在传统的数据库中,数据是一行一行写入和读取的。而列存储(Columnar Storage)顾名思义,是将数据表中的每一列数据单独集中存储在物理磁盘上。 这意味着,表中同一列的所有数值会被连续地存放在一起。比 阅读全文
posted @ 2026-02-23 13:38 aixueforever 阅读(334) 评论(1) 推荐(2)
摘要: 数据库中的“哈希函数与布隆过滤器” 布隆过滤器的本质,就是一个有限长度的位数组(Bit Array)加上 \(k\) 个独立的哈希函数。 哈希函数决定了数据如何在这个位数组中留下“指纹”。 1. 核心映射关系:数据到比特位的“寻址器” 布隆过滤器本身不存储实际的数据库记录(如 user_id = ' 阅读全文
posted @ 2026-02-22 22:17 aixueforever 阅读(177) 评论(0) 推荐(0)
摘要: 数据库三范式 数据库三范式 (Database Normalization) 就是一套“防坑指南”。 如果不遵守范式,你的数据库就会变成一个巨大的垃圾场,充满冗余数据(浪费空间)和异常(想改一个数据要改 100 个地方,改漏了就出 Bug)。 第 0 阶段:混乱的原始表 (Unnormalized 阅读全文
posted @ 2026-02-12 22:07 aixueforever 阅读(35) 评论(0) 推荐(1)
摘要: 回表 1. 为什么会发生回表? 想象你在图书馆查书: 索引(Index):就像图书馆的索引卡片。卡片上写着:书名《数据库原理》,存放位置:3排-B架-12号。 表(Table/Heap):就像书架上的实物书。书里才有具体的内容(作者、出版社、正文)。 如果你只想知道书名,看卡片(索引)就够了。但如果 阅读全文
posted @ 2026-02-12 15:18 aixueforever 阅读(312) 评论(0) 推荐(2)
摘要: 你在 D:\WSL2Ubuntu 里导入了 WSL2 Ubuntu,为什么 wsl -d Ubuntu 启动后目录不是 D:\WSL2Ubuntu? 这是因为: 📌 1. WSL 的根文件系统挂载方式 D:\WSL2Ubuntu 是 WSL 的存储位置(也就是你导入的发行版的 rootfs 存放目 阅读全文
posted @ 2025-09-03 22:44 aixueforever 阅读(132) 评论(0) 推荐(0)
摘要: N5语法 简体中不出现です ます 形容词名词句用です表示敬体,动词句用ます表示敬体 先否定再过去 名词句 形容词句 在日语中,形容词分为两大类:一类形容词(い形容词) 和 二类形容词(な形容动词)。 二类形容词(形容动词) 和名词句的变化一致 一类形容词 总结:敬体和简体的区别就是敬体后面有です; 阅读全文
posted @ 2025-07-11 17:40 aixueforever 阅读(186) 评论(0) 推荐(0)
摘要: 副助词 日语中的副助词(副詞的助詞),副助词可以用在任意词后面。 以下是常见的副助词及其用法举例: 1. は(wa) 强调对比或者否定,表示主题。 例:私は学生です。 → 至少“我”是学生(也许别人不是)。 2. も(mo) 表示“也、都”,用于并列、追加信息,两个も翻译成都。 例:彼も学生です。 阅读全文
posted @ 2025-07-10 16:48 aixueforever 阅读(212) 评论(0) 推荐(0)
摘要: 常见格助词对照表 格助词只能接在名词后边 が表示主语,强调前面,是小主语; を表示宾语,但是表示能力、情感、愿望的对象使用が; ​ を表示动作的起点或经过地点,へ表示动作的朝向,に表示具体的目的地; へ 朝向; と和,共同; から 从,まで 到(时间空间); より 比,从; の 的,同位语; で:在 阅读全文
posted @ 2025-07-10 15:49 aixueforever 阅读(151) 评论(0) 推荐(0)
摘要: C++ Lambda 表达式 C++ 的 Lambda 表达式 是一种轻量级的 匿名函数,用于临时定义函数对象,常用于算法、回调、并发、事件响应等场景。 Lambda 表达式是定义内联函数的简洁方式,允许捕获外部变量,并在需要函数对象的地方直接使用。 一、基本语法 [capture](paramet 阅读全文
posted @ 2025-07-02 17:47 aixueforever 阅读(40) 评论(0) 推荐(0)
摘要: 在 C++ 标准库中,stream(流)是处理输入输出(I/O)的核心抽象,分为输入流(istream)、输出流(ostream)、输入输出流(iostream)等多种类型,且支持面向不同设备(文件、字符串、控制台等)的具体流类型。 Stream 类型 类别 主要类型及说明 头文件 输入流 std: 阅读全文
posted @ 2025-07-01 17:07 aixueforever 阅读(312) 评论(0) 推荐(1)
摘要: C++ STL(Standard Template Library)中主要提供了三大类通用容器,用于存储和管理不同类型和结构的数据。它们分别是: STL 容器总览 容器类别 容器 说明 序列式容器 (Sequence Containers) vector, deque, list, forward_ 阅读全文
posted @ 2025-06-24 21:56 aixueforever 阅读(170) 评论(0) 推荐(0)
摘要: 迭代器 C++ STL(Standard Template Library,标准模板库)中迭代器与常用算法是泛型编程的核心组成部分。它们配合使用,可以对容器进行高效、统一的操作。下面是对它们的系统性总结。 一、什么是迭代器(Iterator) 迭代器是 STL 的核心,用于访问容器中的元素。迭代器本 阅读全文
posted @ 2025-06-23 19:22 aixueforever 阅读(462) 评论(0) 推荐(1)
摘要: C++ 异常处理是通过 try、catch 和 throw 关键字来实现的,主要用于在程序运行过程中出现错误时进行错误捕获与处理,从而提高程序的健壮性和可维护性。 一、基本语法结构 try { // 可能抛出异常的代码 throw 异常对象; } catch (异常类型1 参数名) { // 对异常 阅读全文
posted @ 2025-06-20 16:52 aixueforever 阅读(57) 评论(0) 推荐(0)
摘要: -- 整体流程 C++ 源文件 (.cpp) ↓ 预处理(展开头文件、宏替换等) 预处理后的代码 (.i) ↓ 编译(编译器) 汇编代码 (.s) ↓ 汇编(汇编器) 目标文件 (.o / .obj) ↓ 链接(连接器) 最终可执行文件(如 a.out / exe) (一)预处理 C++ 的 预处理 阅读全文
posted @ 2025-06-20 11:21 aixueforever 阅读(291) 评论(0) 推荐(1)
摘要: 一、什么是模板(Template) 模板是 C++ 支持的泛型编程机制,可以用来编写与类型无关的代码,实现代码的复用。编译器根据调用时提供的类型参数生成对应版本代码,称为模板实例化。 二、函数模板(Function Template) 模板函数在编译时根据传入参数类型自动生成对应函数代码(实例化), 阅读全文
posted @ 2025-06-17 00:02 aixueforever 阅读(122) 评论(0) 推荐(0)
摘要: 一、函数定义 在 C++ 中,函数是组织代码逻辑的基本单元,用于实现模块化、复用、结构清晰的程序设计。 1、函数的基本结构 返回类型 函数名(参数列表) { // 函数体 return 值; // 可选,视返回类型而定 } 声明(Declaration): 告诉编译器函数存在,通常放在头文件中: i 阅读全文
posted @ 2025-06-16 14:49 aixueforever 阅读(263) 评论(0) 推荐(1)
摘要: static关键字 在 C++ 中,static 变量的生命周期贯穿整个程序的执行过程。这是 static 最核心的特性之一。 一句话总结: static 变量只初始化一次,存在于整个程序运行期间,直到程序结束时被销毁。 详细解释:不同作用域中的 static 变量 1. 函数内的 static 变 阅读全文
posted @ 2025-06-15 17:21 aixueforever 阅读(139) 评论(0) 推荐(2)
摘要: C语言字符串 C 语言中的 “string” 并不是一种内建类型,而是一种以 '\0'(null 字符)结尾的字符数组,用来表示字符串。C 语言的字符串处理完全是基于字符数组和标准库函数的组合实现的,理解起来要靠对内存、指针和字符操作的深入掌握。 一、C语言字符串的本质 定义 C 语言的字符串是 一 阅读全文
posted @ 2025-06-14 23:02 aixueforever 阅读(149) 评论(0) 推荐(1)
摘要: 右左法则不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。 右左法则原文: The right-left rule:Start reading the declaration from 阅读全文
posted @ 2025-06-14 15:24 aixueforever 阅读(103) 评论(0) 推荐(1)
摘要: 在 C++ 中,智能指针(smart pointers)是用于管理动态分配对象生命周期的类模板。它们旨在帮助开发者自动管理内存,避免常见的内存泄漏问题,并简化资源管理。C++ 标准库提供了三种主要类型的智能指针:std::unique_ptr、std::shared_ptr 和 std::weak_ 阅读全文
posted @ 2025-06-14 13:27 aixueforever 阅读(266) 评论(0) 推荐(2)
摘要: 在典型的 C++ 程序执行过程中,内存被大致划分为以下 4 个主要区域: C++ 程序运行时的 4 个内存区域 区域 说明 生命周期 增长方向 代码区 编译后的程序指令(程序的机器指令) 程序整个运行期间 固定,靠近低地址,通常只读、共享 全局/静态区 全局变量、静态变量、常量 程序整个运行期间 固 阅读全文
posted @ 2025-06-13 17:09 aixueforever 阅读(65) 评论(0) 推荐(0)