摘要: Hash Join(哈希连接) 是关系型数据库(如 MySQL、PostgreSQL、Oracle 等)在处理表连接操作时非常经典且高效的一种算法。它特别适用于大表之间的等值连接(Equi-join),尤其是在参与连接的列上没有合适的索引时。 简单来说,Hash Join 的核心思想是:利用较小的那 阅读全文
posted @ 2026-03-14 22:07 aixueforever 阅读(62) 评论(0) 推荐(2)
摘要: 最大理论带宽 最大理论带宽(Theoretical Maximum Memory Bandwidth),不需要运行复杂的测试,只需要知道两个核心参数:内存频率和内存通道数。 1. 核心计算公式 内存带宽的计算公式如下: \[\text{Max Bandwidth (GB/s)} = \frac{\t 阅读全文
posted @ 2026-03-10 11:31 aixueforever 阅读(146) 评论(0) 推荐(0)
摘要: 这是一个非常经典的“软件并发 (Concurrency) 与硬件并行 (Parallelism) 碰撞”的系统级问题! 简单来说:DuckDB 的 PRAGMA threads 决定了任务被切分成几份(软件上的工人数量),而 taskset 决定了这些工人被允许进入哪个车间干活(物理硬件资源)。 针 阅读全文
posted @ 2026-03-07 14:41 aixueforever 阅读(11) 评论(0) 推荐(0)
摘要: 什么是NUMA架构 简单来说,NUMA(Non-Uniform Memory Access,非统一内存访问架构) 是一种为了提高多处理器系统(多核 CPU)处理效率的内存设计方案。 在传统的架构中,所有处理器访问内存的速度是一样的;而在 NUMA 架构下,处理器访问“离自己近”的内存比访问“远程”内 阅读全文
posted @ 2026-03-02 13:37 aixueforever 阅读(144) 评论(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 阅读(157) 评论(0) 推荐(0)
摘要: LSM-Tree 日志结构合并树 LSM-Tree(Log-Structured Merge-Tree,日志结构合并树)是一种分层、有序、面向磁盘的数据结构,其核心思想是充分利用磁盘的顺序写性能远高于随机写性能的特性,通过将随机写转换为批量顺序写来优化写入效率。这种结构最初源于Google的BigT 阅读全文
posted @ 2026-02-23 14:06 aixueforever 阅读(29) 评论(0) 推荐(0)
摘要: 数据库列存储和行存储的区别 什么是列存储(Column-oriented Storage)? 在传统的数据库中,数据是一行一行写入和读取的。而列存储(Columnar Storage)顾名思义,是将数据表中的每一列数据单独集中存储在物理磁盘上。 这意味着,表中同一列的所有数值会被连续地存放在一起。比 阅读全文
posted @ 2026-02-23 13:38 aixueforever 阅读(301) 评论(1) 推荐(2)
摘要: 数据库中的“哈希函数与布隆过滤器” 布隆过滤器的本质,就是一个有限长度的位数组(Bit Array)加上 \(k\) 个独立的哈希函数。 哈希函数决定了数据如何在这个位数组中留下“指纹”。 1. 核心映射关系:数据到比特位的“寻址器” 布隆过滤器本身不存储实际的数据库记录(如 user_id = ' 阅读全文
posted @ 2026-02-22 22:17 aixueforever 阅读(150) 评论(0) 推荐(0)
摘要: 数据库三范式 数据库三范式 (Database Normalization) 就是一套“防坑指南”。 如果不遵守范式,你的数据库就会变成一个巨大的垃圾场,充满冗余数据(浪费空间)和异常(想改一个数据要改 100 个地方,改漏了就出 Bug)。 第 0 阶段:混乱的原始表 (Unnormalized 阅读全文
posted @ 2026-02-12 22:07 aixueforever 阅读(23) 评论(0) 推荐(0)
摘要: 回表 1. 为什么会发生回表? 想象你在图书馆查书: 索引(Index):就像图书馆的索引卡片。卡片上写着:书名《数据库原理》,存放位置:3排-B架-12号。 表(Table/Heap):就像书架上的实物书。书里才有具体的内容(作者、出版社、正文)。 如果你只想知道书名,看卡片(索引)就够了。但如果 阅读全文
posted @ 2026-02-12 15:18 aixueforever 阅读(281) 评论(0) 推荐(1)
摘要: 你在 D:\WSL2Ubuntu 里导入了 WSL2 Ubuntu,为什么 wsl -d Ubuntu 启动后目录不是 D:\WSL2Ubuntu? 这是因为: 📌 1. WSL 的根文件系统挂载方式 D:\WSL2Ubuntu 是 WSL 的存储位置(也就是你导入的发行版的 rootfs 存放目 阅读全文
posted @ 2025-09-03 22:44 aixueforever 阅读(94) 评论(0) 推荐(0)
摘要: N5语法 简体中不出现です ます 形容词名词句用です表示敬体,动词句用ます表示敬体 先否定再过去 名词句 形容词句 在日语中,形容词分为两大类:一类形容词(い形容词) 和 二类形容词(な形容动词)。 二类形容词(形容动词) 和名词句的变化一致 一类形容词 总结:敬体和简体的区别就是敬体后面有です; 阅读全文
posted @ 2025-07-11 17:40 aixueforever 阅读(151) 评论(0) 推荐(0)
摘要: 副助词 日语中的副助词(副詞的助詞),副助词可以用在任意词后面。 以下是常见的副助词及其用法举例: 1. は(wa) 强调对比或者否定,表示主题。 例:私は学生です。 → 至少“我”是学生(也许别人不是)。 2. も(mo) 表示“也、都”,用于并列、追加信息,两个も翻译成都。 例:彼も学生です。 阅读全文
posted @ 2025-07-10 16:48 aixueforever 阅读(172) 评论(0) 推荐(0)
摘要: 常见格助词对照表 格助词只能接在名词后边 が表示主语,强调前面,是小主语; を表示宾语,但是表示能力、情感、愿望的对象使用が; ​ を表示动作的起点或经过地点,へ表示动作的朝向,に表示具体的目的地; へ 朝向; と和,共同; から 从,まで 到(时间空间); より 比,从; の 的,同位语; で:在 阅读全文
posted @ 2025-07-10 15:49 aixueforever 阅读(129) 评论(0) 推荐(0)
摘要: C++ Lambda 表达式 C++ 的 Lambda 表达式 是一种轻量级的 匿名函数,用于临时定义函数对象,常用于算法、回调、并发、事件响应等场景。 Lambda 表达式是定义内联函数的简洁方式,允许捕获外部变量,并在需要函数对象的地方直接使用。 一、基本语法 [capture](paramet 阅读全文
posted @ 2025-07-02 17:47 aixueforever 阅读(34) 评论(0) 推荐(0)
摘要: 在 C++ 标准库中,stream(流)是处理输入输出(I/O)的核心抽象,分为输入流(istream)、输出流(ostream)、输入输出流(iostream)等多种类型,且支持面向不同设备(文件、字符串、控制台等)的具体流类型。 Stream 类型 类别 主要类型及说明 头文件 输入流 std: 阅读全文
posted @ 2025-07-01 17:07 aixueforever 阅读(307) 评论(0) 推荐(1)
摘要: C++ STL(Standard Template Library)中主要提供了三大类通用容器,用于存储和管理不同类型和结构的数据。它们分别是: STL 容器总览 容器类别 容器 说明 序列式容器 (Sequence Containers) vector, deque, list, forward_ 阅读全文
posted @ 2025-06-24 21:56 aixueforever 阅读(161) 评论(0) 推荐(0)
摘要: 迭代器 C++ STL(Standard Template Library,标准模板库)中迭代器与常用算法是泛型编程的核心组成部分。它们配合使用,可以对容器进行高效、统一的操作。下面是对它们的系统性总结。 一、什么是迭代器(Iterator) 迭代器是 STL 的核心,用于访问容器中的元素。迭代器本 阅读全文
posted @ 2025-06-23 19:22 aixueforever 阅读(412) 评论(0) 推荐(1)
摘要: C++ 异常处理是通过 try、catch 和 throw 关键字来实现的,主要用于在程序运行过程中出现错误时进行错误捕获与处理,从而提高程序的健壮性和可维护性。 一、基本语法结构 try { // 可能抛出异常的代码 throw 异常对象; } catch (异常类型1 参数名) { // 对异常 阅读全文
posted @ 2025-06-20 16:52 aixueforever 阅读(48) 评论(0) 推荐(0)
摘要: -- 整体流程 C++ 源文件 (.cpp) ↓ 预处理(展开头文件、宏替换等) 预处理后的代码 (.i) ↓ 编译(编译器) 汇编代码 (.s) ↓ 汇编(汇编器) 目标文件 (.o / .obj) ↓ 链接(连接器) 最终可执行文件(如 a.out / exe) (一)预处理 C++ 的 预处理 阅读全文
posted @ 2025-06-20 11:21 aixueforever 阅读(277) 评论(0) 推荐(1)
摘要: 一、什么是模板(Template) 模板是 C++ 支持的泛型编程机制,可以用来编写与类型无关的代码,实现代码的复用。编译器根据调用时提供的类型参数生成对应版本代码,称为模板实例化。 二、函数模板(Function Template) 模板函数在编译时根据传入参数类型自动生成对应函数代码(实例化), 阅读全文
posted @ 2025-06-17 00:02 aixueforever 阅读(110) 评论(0) 推荐(0)
摘要: 一、函数定义 在 C++ 中,函数是组织代码逻辑的基本单元,用于实现模块化、复用、结构清晰的程序设计。 1、函数的基本结构 返回类型 函数名(参数列表) { // 函数体 return 值; // 可选,视返回类型而定 } 声明(Declaration): 告诉编译器函数存在,通常放在头文件中: i 阅读全文
posted @ 2025-06-16 14:49 aixueforever 阅读(256) 评论(0) 推荐(1)
摘要: static关键字 在 C++ 中,static 变量的生命周期贯穿整个程序的执行过程。这是 static 最核心的特性之一。 一句话总结: static 变量只初始化一次,存在于整个程序运行期间,直到程序结束时被销毁。 详细解释:不同作用域中的 static 变量 1. 函数内的 static 变 阅读全文
posted @ 2025-06-15 17:21 aixueforever 阅读(126) 评论(0) 推荐(2)
摘要: C语言字符串 C 语言中的 “string” 并不是一种内建类型,而是一种以 '\0'(null 字符)结尾的字符数组,用来表示字符串。C 语言的字符串处理完全是基于字符数组和标准库函数的组合实现的,理解起来要靠对内存、指针和字符操作的深入掌握。 一、C语言字符串的本质 定义 C 语言的字符串是 一 阅读全文
posted @ 2025-06-14 23:02 aixueforever 阅读(136) 评论(0) 推荐(1)
摘要: 右左法则不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。 右左法则原文: The right-left rule:Start reading the declaration from 阅读全文
posted @ 2025-06-14 15:24 aixueforever 阅读(84) 评论(0) 推荐(1)
摘要: 在 C++ 中,智能指针(smart pointers)是用于管理动态分配对象生命周期的类模板。它们旨在帮助开发者自动管理内存,避免常见的内存泄漏问题,并简化资源管理。C++ 标准库提供了三种主要类型的智能指针:std::unique_ptr、std::shared_ptr 和 std::weak_ 阅读全文
posted @ 2025-06-14 13:27 aixueforever 阅读(253) 评论(0) 推荐(2)
摘要: 在典型的 C++ 程序执行过程中,内存被大致划分为以下 4 个主要区域: C++ 程序运行时的 4 个内存区域 区域 说明 生命周期 增长方向 代码区 编译后的程序指令(程序的机器指令) 程序整个运行期间 固定,靠近低地址,通常只读、共享 全局/静态区 全局变量、静态变量、常量 程序整个运行期间 固 阅读全文
posted @ 2025-06-13 17:09 aixueforever 阅读(58) 评论(0) 推荐(0)
摘要: CMAKE学习笔记【Part1】 (零) 变量 一、基本概念 CMake 中的变量是 字符串类型(或列表),没有内置的数据结构如数组、字典等。变量的作用类似于 shell 脚本中的环境变量,但也有自己的作用域机制。 常见预定义变量(举例) PROJECT_NAME:当前项目的名称。 CMAKE_CU 阅读全文
posted @ 2025-06-08 23:55 aixueforever 阅读(291) 评论(0) 推荐(2)
摘要: 编译命令:nvcc hello.cu -o hello 运行:./hello #include <stdio.h> __global__ void helloWorldKernel() { // 获取线程在 block 中的坐标 int tx = threadIdx.x; int ty = thre 阅读全文
posted @ 2025-05-13 23:35 aixueforever 阅读(36) 评论(0) 推荐(0)
摘要: 执行如下命令,添加代码到本地仓库 git add . 出现警告信息:The file will have its original line endings in your working directory 原因是路径中存在 / 的符号转义问题,false就是不转换符号默认是true,相当于把路径 阅读全文
posted @ 2023-06-01 17:00 aixueforever 阅读(609) 评论(0) 推荐(0)