随笔分类 -  Linux

摘要:目录主要功能1. 检测的内存错误类型2. 工作原理3. 性能影响使用方法GCC/Clang编译选项环境变量示例问题代码编译和运行ASan输出示例其他相关工具1. ThreadSanitizer (TSan)2. MemorySanitizer (MSan)3. UndefinedBehaviorSa 阅读全文
posted @ 2026-01-16 10:45 guanyubo 阅读(14) 评论(0) 推荐(0)
摘要:伙伴算法是一种经典的内存管理算法,主要用于分配和回收物理内存页(通常是连续的页框),其核心思想是将内存分割和合并,以尽可能减少外部碎片。 阅读全文
posted @ 2025-11-25 17:43 guanyubo 阅读(81) 评论(0) 推荐(0)
摘要:目录💡 常用选项与技巧⚠️ 注意事项🔄 与其他工具的比较 scp 命令用于在本地和远程主机之间安全地传输文件,它基于 SSH 协议,提供了加密的数据传输。 下面这个表格汇总了 scp 的常见使用场景和命令格式,你可以快速查阅: 使用场景 基本命令格式 上传文件到远程主机 scp /本地/文件.t 阅读全文
posted @ 2025-11-19 15:05 guanyubo 阅读(478) 评论(0) 推荐(0)
摘要:目录🧩 为什么需要多版本 CMake?✅ 核心原则📦 步骤 1:下载并安装多个 CMake 版本(推荐预编译包)1.1 创建安装目录1.2 下载预编译二进制包1.3 复制到目标目录🔗 方法一:使用 update-alternatives 管理(推荐|系统级)添加两个版本:切换版本:验证:🧩 阅读全文
posted @ 2025-10-24 18:08 guanyubo 阅读(243) 评论(0) 推荐(0)
摘要:目录🔽 步骤 1:进入临时目录并下载 CMake 二进制包🔧 步骤 2:解压安装包🧩 步骤 3:将 CMake 添加到系统 PATH方法 A:全局生效(需 root 权限)方法 B:仅对当前用户生效(无 root 权限也可用)✅ 步骤 4:验证安装🛠️ 步骤 5:(可选)与 devtools 阅读全文
posted @ 2025-10-24 18:01 guanyubo 阅读(322) 评论(0) 推荐(0)
摘要:目录🛠️ 解决方案:使用阿里云镜像步骤 1:备份并禁用原 SCLo 仓库步骤 2:配置阿里云 SCLo 仓库步骤 3:清理缓存并安装 devtoolset-11步骤 4:启用新版本 GCC🔄 备选方案:如果阿里云镜像也不行📦 其他获取 GCC 的方法方案 1:从源码编译 GCC方案 2:使用预 阅读全文
posted @ 2025-10-24 17:48 guanyubo 阅读(110) 评论(0) 推荐(0)
摘要:目录1. 使用 firewalld(推荐用于 CentOS/RHEL/Fedora)2. 使用 ufw(Ubuntu 系统常见)3. 使用 iptables(传统工具,或底层驱动)4. 使用 netstat 或 ss 查看正在监听的端口(系统级)总结 在 Linux 系统中,查看防火墙放开的端口取决 阅读全文
posted @ 2025-10-24 15:51 guanyubo 阅读(436) 评论(0) 推荐(0)
摘要:目录确认glibc版本情况详细解决方案方法一:升级系统的glibc(请谨慎操作)方法二:使用静态链接重新编译程序方法三:使用容器技术(推荐)方法四:寻找兼容的程序版本总结与建议glibc各个版本发布的时间 在Linux环境下,glibc版本不匹配确实是个棘手的问题,通常表现为程序启动时提示 libc 阅读全文
posted @ 2025-10-24 15:46 guanyubo 阅读(1345) 评论(0) 推荐(0)
摘要:目录如何安装与使用总结 devtoolset-11 是 Red Hat 为 Red Hat Enterprise Linux (RHEL) 及其社区版本 CentOS 等系统提供的一套开发工具集,主要用于在不升级整个系统的情况下,获得并使用更新的编译器及开发工具。 下面的表格整理了 devtools 阅读全文
posted @ 2025-10-24 15:44 guanyubo 阅读(93) 评论(0) 推荐(0)
摘要:目录什么是 Arena?为什么需要 Arena?单线程时代的问题多线程时代的挑战glibc malloc 的 Arena 实现1. Arena 数据结构2. Arena 分配策略3. Arena 数量限制jemalloc 的 Arena 改进1. 更细粒度的 Arena 管理2. Arena 分配算 阅读全文
posted @ 2025-10-19 10:06 guanyubo 阅读(132) 评论(0) 推荐(0)
摘要:目录问题描述问题根源:glibc malloc的内存管理缺陷1. 内存碎片化2. arena竞争3. gRPC特有的内存模式jemalloc的优势1. 更好的碎片管理2. 主动的内存归还3. 线程局部缓存优化解决方案对比glibc malloc的问题表现jemalloc的改进最佳实践配置1. jem 阅读全文
posted @ 2025-10-19 09:44 guanyubo 阅读(43) 评论(0) 推荐(0)
摘要:目录1. 安装 Jemalloc2. 编译时链接 Jemalloc方法一:修改 CMakeLists.txt方法二:直接使用编译器参数3. 运行时配置 Jemalloc通过环境变量配置推荐的 gRPC 服务 Jemalloc 配置4. 在代码中集成 Jemalloc 监控5. Docker 容器中的 阅读全文
posted @ 2025-10-19 09:41 guanyubo 阅读(46) 评论(0) 推荐(0)
摘要:目录一、 Jemalloc 是什么?Jemalloc 的核心目标和优势:与系统默认分配器(ptmalloc)的简单对比:二、 怎么使用 Jemalloc?方法 1:动态链接(最常见和简单的方式)方法 2:静态链接(在编译时链接)三、 高级用法:调优和监控常用的环境变量:常见的 MALLOC_CONF 阅读全文
posted @ 2025-10-19 09:38 guanyubo 阅读(380) 评论(0) 推荐(0)
摘要:目录1. 检查现有 SSH 密钥2. 生成新的 SSH 密钥3. 启动 SSH 代理并添加密钥4. 复制公钥到剪贴板5. 将公钥添加到 Git 服务商6. 测试连接7. 配置 Git 用户信息(如未设置)可选配置 在 Linux 系统中为 Git 添加 SSH 密钥的步骤如下: 1. 检查现有 SS 阅读全文
posted @ 2025-10-15 14:24 guanyubo 阅读(180) 评论(0) 推荐(1)
摘要:目录1. 安装编译依赖2. 下载 GCC 10.1.0 源码3. 下载依赖库(非常重要)4. 创建构建目录5. 配置编译选项6. 编译(根据 CPU 核心数调整 -j)7. 安装8. 添加到系统路径9. 验证安装 ⚠️ 警告:耗时长(1~2小时),需要至少 10GB 磁盘空间,仅建议用于测试或特殊需 阅读全文
posted @ 2025-10-15 14:22 guanyubo 阅读(171) 评论(0) 推荐(0)
摘要:目录核心概念基本语法常用选项常见使用场景与示例1. 端口扫描(TCP)2. 端口扫描(UDP)3. 简单的聊天程序4. 文件传输5. 目录传输(使用 tar)6. 创建后门/远程 Shell7. 作为简单的 Web 客户端注意事项 Linux netcat(通常简称为 nc)是一个非常强大的网络工具 阅读全文
posted @ 2025-09-29 13:39 guanyubo 阅读(114) 评论(0) 推荐(0)
摘要:目录基于 systemd 的 Go 应用自动化部署完整指南部署流程总览详细部署流程1. 环境准备阶段1.1 前置条件检查1.2 系统用户创建1.3 目录结构建立2. 应用部署阶段2.1 文件复制与权限设置2.2 systemd 服务文件配置3. 服务配置详解3.1 Service 类型选择策略3.2 阅读全文
posted @ 2025-09-23 10:31 guanyubo 阅读(44) 评论(0) 推荐(0)
摘要:目录服务管理操作1. 启动/停止/重启服务2. 启用/禁用服务3. 查看服务状态系统状态查看4. 列出服务5. 日志查看系统管理操作6. 系统控制7. 系统状态实用技巧和组合命令8. 常用组合9. 服务文件操作10. 资源监控实际应用示例 systemctl 是 systemd 系统和服务管理器的主 阅读全文
posted @ 2025-09-22 18:03 guanyubo 阅读(106) 评论(0) 推荐(0)
摘要:目录核心机制:文件描述符是可重用的举例说明为什么会有“只增不减”的错觉?重要规则和例外总结 核心机制:文件描述符是可重用的 Linux 内核会为每个进程维护一个文件描述符表。当进程打开一个新文件(或 socket 等)时,内核会在这个表中寻找最小的、未被使用的文件描述符编号,并将其分配给这次新的打开 阅读全文
posted @ 2025-09-02 17:26 guanyubo 阅读(60) 评论(0) 推荐(0)
摘要:目录1. 在 GDB 启动时屏蔽信号方法一:使用 handle 命令(推荐)方法二:启动时一次性设置2. 在调试过程中动态屏蔽方法一:使用 GDB 的 signal 命令方法二:修改程序的信号处理3. 在程序代码中设置断点来屏蔽方法一:在 main 函数开始时设置信号处理方法二:使用命令自动化4. 阅读全文
posted @ 2025-08-26 14:09 guanyubo 阅读(109) 评论(0) 推荐(0)