03 2025 档案
摘要:利用gdb对core dump文件进行debug 内容 通过 GDB 调试 Core Dump 文件可以快速定位程序崩溃的原因。以下是详细步骤: 1. 确保 Core Dump 已生成且可访问 检查系统是否允许生成 Core Dump 终端输入 ulimit -c,若返回 0,需临时解除限制: ul
阅读全文
摘要:operator函数必须定义为const 在很多容器,例如set当中,存储的实际上是const对象(我们想改变set中元素的值,只能先删掉再插入一个新的),如果operator不是const函数,那么set当中的成员就无法调用它了。
阅读全文
摘要:Map的最佳访问方式 内容 你的代码报错源于 unordered_map 的 operator[] 在键不存在时会 隐式构造一个默认初始化的 Node 对象,而你的 Node 类缺少默认构造函数。以下是详细分析和修复方案: ⚠️ 错误根源分析 Node &ans = M[key]; // 当 key
阅读全文
摘要:Nsight System报告分析技巧 调度压力 GPU侧算力越强,CPU的调度压力越大 CPU和GPU是否打满 有时候,CPU调度比GPU算的快,那么就会出现CPU空闲等待GPU的情况;反过来就是GPU等待CPU,但是如果两者同时空闲,就说明不正常了。 区分程序问题和环境问题 如果异常情况不是在每
阅读全文
摘要:Linux监控CPU使用 内容 在 Linux 中查看 CPU 占用率的常用命令非常多,以下是一个分类整理的高效工具清单,涵盖实时监控、历史分析和高级统计场景: 一、实时 CPU 监控工具 1. top (基础版) top 功能:动态显示进程和 CPU 占用(用户态、内核态、空闲占比) 操作: 按
阅读全文
摘要:C++ STL list基本用法 内容 好的,我来详细讲解C++ STL中的std::list用法及其优势,同时对比手写链表的差异。内容分三个部分: 一、STL list 核心用法 1. 基本操作 #include <list> // 初始化 std::list<int> myList; // 空链
阅读全文
摘要:Transformer为什么强大 内容 Transformer模型与传统模型(如RNN、CNN)的核心差异主要体现在三个方面: 自注意力机制的全局建模能力 传统模型(如RNN)依赖序列顺序逐步处理信息,导致难以捕捉长距离依赖且无法并行计算;CNN通过局部感受野提取特征,缺乏全局上下文感知。而Tran
阅读全文
摘要:预训练 vs 微调 内容 预训练(Pre-training)和微调(Fine-tuning)是深度学习中迁移学习(Transfer Learning)的两个关键阶段,它们的核心区别在于目标、数据、训练方式和应用场景。以下是详细对比: 1. 目的不同 预训练: 在大规模通用数据集(如ImageNet、
阅读全文
摘要:维护定长窗口内前K大/小值 K=1 当K=1的时候,就是我们非常熟悉的滑动窗口问题,用一个单调队列来维护窗口最值即可。 K>1 K > 1的时候,单调队列就不管用了,因为他令元素出队的操作,会丢失部分信息。 例如,维护前3大的元素: 11 12 10 5 我们会创建一个递减的单调队列,但是12入队的
阅读全文
摘要:lower_bound/upper_bound的重载 升序容器,正常使用 在一个升序的容器当中,lower_bound是寻找第一个大于等于target的目标; upper_bound是寻找第一个大于target的目标,那么,他们的实现大致就是这样子的: lower_bound大致实现 int fun
阅读全文
摘要:STL容器的erase erase的时候,我们既可以传入一个Iterator,也可以传入一个具体的值,顺序容器不支持用值,关联容器支持。 如果是multiset multimap 要注意,如果我们用具体的值去删,会把所有的记录都删掉,用Iterator去删除才能精确地删除我们想要的某个具体值。
阅读全文
摘要:递归与循环的博弈:何时在递归中拥抱循环,何时避免? 在算法设计中,递归和循环这对"孪生兄弟"常常让开发者陷入选择困境。很多程序员都曾有类似的困惑:"明明使用了递归,为什么还需要循环?"、"循环里套递归会不会导致重复计算?"。本文将通过具体案例,为您揭开这对组合的神秘面纱。 一、递归与循环的基因解码
阅读全文
摘要:C++ string查找方法 内容 在 C++ 中,std::string 提供了多种方法获取特定字符或子字符串的位置。以下是常见操作的详细说明和示例: 1. 查找字符的首次出现位置 使用 find() 方法获取字符第一次出现的索引: #include <string> #include <iost
阅读全文
摘要:push_back & emplace_back 内容 在C++中,vector<vector<int>>使用push_back和emplace_back时对初始化列表的处理差异源于两者参数传递机制的不同。以下是详细解释: 1. push_back的工作原理 隐式类型转换: push_back的参数
阅读全文
摘要:批量标准化/[0,1]标准化/[-1,1]标准化 内容 批量标准化( Batch Normalization )后的变量取值范围及进一步缩放方法如下: 一、批量标准化后的取值范围 标准化过程: 公式:\[\hat{x} = \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \e
阅读全文
摘要:RMSNorm理解 内容 RMSNorm( Root Mean Square Layer Normalization )是一种用于深度学习的归一化方法,其核心思想是通过对输入向量进行缩放归一化,以提升训练稳定性和效率。以下是对其作用、原理及优势的详细解释: 1. 公式回顾 RMSNorm的公式为:
阅读全文
摘要:滑动窗口两大应用场景 1. 求最值 这种情况下,窗口要满足的条件已知,长度未知,而要求的答案也就是窗口长度的最值。 解法: 根据要满足的条件去拉伸窗口,然后统计答案。 大部分题目都是这样。 2. 统计个数 窗口长度固定,条件已知,要统计所有满足条件的窗口。 这类题目比较少,典型例子:Leetcode
阅读全文
摘要:Clion使用wsl出现问题:Wsl/Service/0x8007072c 需要在Terminal设置和Cmake设置中,把Inclue system variables这个选项勾上。
阅读全文
摘要:Ccache缓存机制 内容 在 ccache 的工作机制中,软链接 /usr/lib/ccache/clang 指向 ccache 的可执行文件(而非直接指向 clang 编译器),这种方式是 ccache 实现透明缓存的核心设计。以下是详细解释: 1. 为什么软链接指向 ccache 而不是 cl
阅读全文
摘要:C++避免“未使用变量警告” 内容 这个 UNUSED 宏的作用是 显式标记未使用的变量或表达式,避免编译器产生 "未使用变量" 的警告。其实现原理和典型场景如下: 宏展开后的行为 // 假设使用宏:UNUSED(foo); do { (void)(foo); // 将变量强制转换为 void 类型
阅读全文
摘要:什么是Tokenizer 内容 在自然语言处理(NLP)中,Tokenizer(分词器/令牌生成器) 是将原始文本转换为模型可处理的结构化数据的核心组件。它的核心任务是将句子拆分为更小的单元(Token),并将这些单元映射为数字ID,供机器学习模型(如BERT、GPT)理解和计算。 一、Token
阅读全文
摘要:llama模型参数含义 内容 以下是这些模型参数的详细解释,它们描述了一个基于 Transformer 架构的大型语言模型(如 LLaMA、GPT 等)的核心结构。这些参数共同决定了模型的规模、计算能力和资源消耗。 1. 核心维度参数 参数名 值 含义 dim 4096 模型的隐藏层维度(d_mod
阅读全文