自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(451)
  • 收藏
  • 关注

原创 【C/C++】explicit_bzero

特性说明安全不会被编译器优化用途清除密码、私钥等敏感数据可移植性glibc 2.25+、BSD、macOS 支持,Windows 需替代方案推荐场景密码学、加密库、认证信息清除等。

2025-07-27 00:01:14 620

原创 【C/C++】Undefined reference: memset_s

你所使用的 libc 实现并不包含memset_s问题说明memset_s链接失败因为 glibc 没有实现它需要定义宏安全需求memset可能被优化掉,memset_s不会兼容方式自己封装 volatile 写法在Linux 上实现类似 memset_s 的安全清零函数(比如用于密码清除),推荐用(glibc 2.25+)或手动实现 volatile 写法。

2025-07-26 23:57:14 429

原创 【读书笔记】《Computer Systems: A Programmer’s Perspective》 第4章 Processor Architecture

与或非异或门等基本布尔门介绍。

2025-07-19 00:18:08 1123

原创 【软件开发】AI辅助编程在实际开发中的优势和风险

方面优点风险生产力显著提升开发效率,特别是在重复性、模板性任务上易引入隐性bug、开发人员思维依赖安全性无直接本地执行风险(如插件类AI)可能泄露源码、配置、密钥等敏感信息合规性合理使用可以安全提升效率开源合规、版权争议依然是雷区建议方向逐步引入,建立公司治理机制强烈建议私有部署、规范使用流程。

2025-07-18 08:11:50 810

原创 【软件开发】Copilot 编码插件

文件/项目白名单:在 settings.json 配置补全长度限制控制最大补全令牌数语言优先级:可指定对某些语言更频繁地调用高阶模型(GPT‑4)隐私模式:启用不上传未保存文件内容。

2025-07-17 23:36:31 598

原创 【软件开发】主流 AI 编码插件

VS Code、Neovim、JetBrains 系列、Visual Studio。

2025-07-17 23:27:16 919

原创 【读书笔记】《Computer Systems: A Programmer’s Perspective》第三章 Machine-Level Representation of Programs

本章深入分析 C 语言程序如何映射到机器级语言。理解指令执行、函数调用、内存访问与布局、控制结构实现,为性能优化、安全分析、逆向工程等打下基础。

2025-07-16 08:10:45 1195

原创 【C/C++】为什么 C++ 的设计会影响 JVM 的性能表现?

因为 C++ 要求极致性能,迫使 CPU 设计者(如 Intel、IBM) 保留尽可能弱的内存模型和强大的乱序执行能力;而 Java 虚拟机(JVM)运行在这些 CPU 上,它必须在这些弱内存模型上强行实现更严格的 Java 内存模型(JMM),这会导致额外同步指令和屏障,降低 JVM 性能。所以,如果为了 Java 而强制 CPU 或语言统一为 JMM 风格,就会反过来让 C++ 性能下降(甚至 JVM 本身也受损),这就是 Bjarne 提出的反对点之一。

2025-07-16 00:53:06 914

原创 【读书笔记】《Computer Systems: A Programmer’s Perspective》第2章 Representing and Manipulating Information

逻辑代数(AND, OR, NOT, XOR)是数字电路基础。真值表、逻辑表达式简化、和硬件实现均在学习范围内。题目范围考察点核心策略位操作任务位掩码、逻辑/算术移位精确位置选取、folding、shift+mask溢出与优化溢出检测、偏移调整移位生成偏移、符号位操作浮点操作IEEE‑754 编码与舍入位域操作、判断特殊值、自定义舍入。

2025-07-15 07:39:22 1116

原创 【读书笔记】《Computer Systems: A Programmer’s Perspective》第一章 A Tour of Computer Systems

这一章通过对计算机系统各个层面(从硬件到软件、从存储到网络)的巡礼,帮助程序员建立起“系统观”,强调理解底层原理对编写高效、可靠程序的重要性。

2025-07-15 00:50:01 1039

原创 【读书笔记】《Effective Modern C++》第七章:The Concurrency API

条目建议35优先使用基于任务的并发(如std::async)而非裸线程36如果确实需要异步执行,明确指定37保证所有路径上在析构前不可 joinable38注意不同平台对的实现细节和调度差异39使用实现一次性事件通知40使用进行线程同步,volatile仅用于特殊内存访问现代 C++ 的并发库为我们提供了强大的工具,但也要求我们有明确的语义意识和生命周期管理。只有精确掌握任务、线程、通信与原子操作的边界,才能写出安全、可移植、可扩展的并发代码。

2025-07-14 08:07:48 720

原创 【读书笔记】《Effective Modern C++》第六章: Lambda Expressions

Lambda 表达式是现代 C++ 最强大也是最常用的语法工具之一。条目建议31避免[=]或[&],改用显式捕获32使用 init capture () 移动资源进闭包33对泛型参数使用保持值类别34优先使用 Lambda,避免使用std::bind通过正确使用 Lambda,你不仅可以简化代码、提升性能,更能避免因隐式捕获、复制、转发失败而带来的微妙错误。这是写出现代、高效、健壮 C++ 的基础能力之一。

2025-07-14 08:04:26 955

原创 【读书笔记】《Effective Modern C++》第八章 Treaks

本章围绕“微调”的两个建议,着眼于优化函数参数传递与容器操作这两个频繁操作的细节层面。条目建议Item 41对于总是被拷贝、可高效移动的参数,考虑按值传参Item 42优先使用emplace族函数,避免冗余构造和复制它们并不依赖语言新特性,却体现出对代码性能与可读性的深度考量。在代码设计已趋稳定的阶段,这类“微小优化”往往成为衡量代码精致程度的重要标志。

2025-07-13 23:59:52 631

原创 【读书笔记】《Effective Modern C++》第五章 Rvalue References, Move Semantics, and Perfect Forwarding

/ 仅声明无定义 → 链接失败完美转发并非“完美无缺”;使用时需对边界情况保持敏感;出现奇怪错误时,可回退到按值或const&。本章内容涵盖了右值引用的语法基础、移动语义的工程意义,以及完美转发在模板编程中的实战应用。在现代 C++ 中,高效地使用这些特性是性能优化和泛型代码设计的基石。什么时候用std::move、什么时候用;如何区分 universal reference 和 rvalue reference;如何优雅地处理完美转发失败;

2025-07-13 23:19:53 791

原创 【读书笔记】《Effective Modern C++》第4章 Smart Pointers

Pimpl 模式目的隐藏实现细节、减少头文件依赖、加快编译速度。头文件中声明不完整类型,实际数据保存在实现类 Impl 中。头文件示例(Widget.h)public:Widget();~Widget();private:实现文件示例(Widget.cpp)// 数据成员原因与好处Impl 定义对外部不可见,确保封装性;修改 Impl 后只需重新编译 cpp,减少依赖传播;特殊成员函数在 cpp 中定义时,Impl 完整可见,避免不完整类型使用错误。

2025-07-13 23:02:34 656

原创 【读书笔记】《Effective Modern C++》第3章 Moving to Modern C++

旧习惯private:仅在不定义函数时会在链接期报错,且误报位置不直观。现代做法public:建议对于不希望调用的函数,使用= delete,让编译器在编译期明确报错并指出源位置。

2025-07-13 22:55:33 1065

原创 【读书笔记】《Effective Modern C++》第二章:auto

C++11 引入auto关键字,让编译器根据初始化表达式自动推导变量类型。在以下场景中,autoautoautoauto&&然而,auto并非万能,滥用可能导致类型意外退化或丢失const/引用语义。因此,本章提出两条最佳实践。

2025-07-13 22:26:22 311

原创 【读书笔记】《Effective Modern C++》Chapter 1: Deducing Types

C++11/14 引入了强大的自动类型推导机制,让我们可以借助模板参数推导、autodecltype等关键字以更少的代码表达更丰富的泛型逻辑。但这些便利背后有着诸多细节:不同场景下推导规则各异、数组和函数会“退化”、以及如何准确地查看编译器真正推导的类型。理解这些规则,既能让代码更简洁,也能避免性能陷阱和难以察觉的 bug。

2025-07-13 20:26:57 799

原创 【读书笔记】《C++ Software Design》第十章与第十一章 The Singleton Pattern & The Last Guideline

确保类在系统中只有一个实例,并提供全局访问点。public:private:听起来没问题?其实隐藏了重大的设计隐患。内容核心关键要点Singleton 是实现细节,不是架构主张它隐藏依赖、妨碍测试、耦合状态更好的方式是依赖注入和接口分离用 Strategy 模式组合替代模式之间应灵活组合、替换、转化不应生搬硬套传统结构图学习设计模式是设计思维的启蒙最终目标是写出可演化的系统。

2025-07-13 20:16:01 1045

原创 【读书笔记】《C++ Software Design》第九章:The Decorator Design Pattern

在现实系统中,我们常常需要在不修改已有类的前提下,为对象添加新功能——比如增加日志记录、性能度量、缓存行为等等。这种是软件工程中典型的需求。正是为此而生的一种经典结构型设计模式。它提供了一种透明、组合式的方式来增强对象的行为,是继承替代方案中最灵活的一种。

2025-07-13 19:02:35 850

原创 【读书笔记】《C++ Software Design》第八章 The Type Erasure Design Pattern

Type Erasure 的调用性能略低于虚函数(1.1~1.3x)但在缓存友好、编译期复杂度更低的上下文中可能胜出若启用 Small Buffer Optimization,性能可大幅提升特性拥有式类型擦除非拥有式类型擦除所有权封装器持有对象外部持有生命周期管理自动析构需外部管理分配成本有(除非 SBO)零分配性能略逊色(取决实现)高性能,接近裸函数调用使用难度容易(如 std::function)中等,需要手动维护调用接口类型擦除设计模式。

2025-07-13 18:41:34 604

原创 【读书笔记】《C++ Software Design》第七章:Bridge、Prototype 与 External Polymorphism

Bridge 模式的核心思想是将“抽象接口(Abstraction)”与“具体实现(Implementation)”分离,从而使它们可以独立演化。目的:将接口和实现分离以减少物理依赖、降低构建成本。传统多态依赖继承与虚函数,但这要求你侵入类定义。External Polymorphism 提供了一种非侵入式运行时多态实现方式。模式核心作用优点缺点Bridge抽象接口与实现分离架构解耦、支持独立演化抽象复杂、增加间接层级Prototype抽象复制机制支持克隆任意派生对象。

2025-07-13 18:30:24 925

原创 【读书笔记】《C++ Software Design》第六章深入剖析 Adapter、Observer 和 CRTP 模式

Observer(观察者)是一种发布-订阅(Publish-Subscribe)机制,当“主题对象”状态变化时,通知所有观察者对象。模式名称本质功能推荐场景Adapter接口兼容/转换第三方库/统一标准Observer解耦事件通知机制GUI、MVC、数据流架构CRTP静态多态与类型增强零运行开销的行为复用、类型封装它们分别强调了接口适配、事件解耦和静态行为增强的不同维度,是 C++ 软件设计中的“三剑客”。

2025-07-13 18:26:25 507

原创 【读书笔记】《C++ Software Design》第五章:The Strategy and Command Design Patterns

深入探讨传统面向对象实现存在的不足,以及如何借助现代 C++ 的特性(如模板、、值语义)来替代经典写法。

2025-07-13 15:51:32 595

原创 【读书笔记】《C++ Software Design》第四章:The Visitor Design Pattern

本章通过对比多种实现方式(面向过程、动态多态、 及 acyclic visitor),深入探讨如何在“类型扩展”与“操作扩展”之间进行权衡,并给出实用建议。 为抽象元素,定义 。 实现 并调用 。 定义所有 函数。 提供操作的实现(如 Draw、Area)。Guideline 15: Design for the Addition of Types or Operations本节关注“在已有数据结构上增加新操作”的设计问题 —— 典型的开放-封闭冲突问题。描述:最直接的方式是使用 或

2025-07-13 12:04:23 631

原创 【读书笔记】《C++ Software Design》第三章 The Purpose of Design Patterns

含义:模式通过抽象接口(基类或概念)把“可变部分”和“固定部分”分离。示例(装饰者模式 Decorator)void operation() override { /* 原始逻辑 */ }public:// 额外行为(前)// 额外行为(后)抽象接口Component定义了通用契约,装饰者Decorator只需依赖该接口即可插入额外职责。

2025-07-13 00:39:03 824

原创 【读书笔记】《C++ Software Design》第二章:The Art of Building Abstractions

示例场景:实现一个Stack<T>类时,提供pop()方法返回T&,但在空栈调用时未抛出异常,而是返回未定义引用。问题:客户端无法预期pop()行为,违反直觉。解决方案改用返回值,或抛出明确异常。添加文档注释,明确表明函数的异常保证级别(noexcept 语义)。要点:抽象应贴合领域概念,避免陷入技术细节。示例:定义Moneylong cents;public:好处:减少单元转换错误,增强类型安全性与可读性。优势:支持对第三方类型扩展接口,无需修改原始类。示例实践示例} };

2025-07-13 00:07:50 419

原创 【读书笔记】《C++ Software Design》第一章《The Art of Software Design》

依赖管理依赖倒置public:/*...*/ }效果:业务逻辑与具体日志实现解耦,可在运行或编译时替换不同 Logger。抽象层次分层架构:界面层、业务层、数据层;每层仅通过接口通信。DAO 模块暴露接口Service 模块仅持有UI 模块调用 Service,无需知道底层实现。

2025-07-12 23:00:03 618

原创 【C/C++】编译期计算能力概述

随着 C++ 标准不断完善,编译期执行能力与元编程框架将更加统一与强大。完整的反射支持、元对象协议、以及更丰富的编译期执行环境,将使得 C++ 在 DSL(领域专用语言)、高性能库开发、跨语言绑定等领域拥有更大竞争力。我们有理由相信,在不远的将来,C++ 将真正实现“零开销抽象”的最终形态——不仅在运行时零成本,也在编译期为开发者提供前所未有的表达力与安全性。

2025-07-12 22:46:54 658

原创 【C/C++】迈出编译第一步——预处理

文件包含(File Inclusion)将被#include的头文件内容插入到源文件中,形成“单一翻译单元”(Translation Unit)。宏定义与替换(Macro Expansion)通过#define指令定义符号常量和宏函数,编译器在预处理阶段将宏替换为相应文本或表达式。条件编译(Conditional Compilation)根据条件选择性地包含或排除源代码片段,如#if#ifdef等。行控制与其他指令包括#line#pragma#error。

2025-07-12 22:43:40 737

原创 【学习新知识】用 Clang 提取函数体 + 构建代码知识库 + AI 问答系统

这是一个面向研发智能化C/C++ 源码 → clang 提取函数 → 构建知识库 → LLM 问答 / 搜索构建企业级代码知识库开发辅助系统(IDE 插件 / Bot)本地模型问答训练数据准备编译工具链自动化分析场景。

2025-07-12 22:08:05 727

原创 【C/C++】无处不在的模板编程 之 vector模板应用

特性描述泛型化使用模板支持任意类型元素高性能对基本类型优化、使用指针操作可定制分配器模板参数可更换内存策略类型安全模板确保类型一致性灵活迭代器使用模板嵌套类型定义灵活迭代器模板技巧使用 SFINAE、类型萃取、偏特化实现重载选择与优化模板不仅是vector的技术支撑,更是现代 C++ 的核心力量。深入理解模板的使用原理与技巧,不仅能让你读懂 STL,更能让你在构建自己的泛型组件、通用框架时游刃有余。

2025-07-12 08:15:34 1044

原创 【C/C++】thread库学习 之 管中窥豹

是现代 C++ 并发编程的重要基石,尽管功能相对底层,但它提供了统一的接口和强类型安全的语义,在多线程程序中起到了关键作用。理解其接口设计、生命周期语义与典型用法,对于构建高效、可靠的并发系统至关重要。C++ 的提供了一个轻量但强大的原始线程接口,适合构建并发程序的底层模块。小规模线程可直接使用;大规模并发更应采用线程池或 async/future 等模型;高性能设计则需结合原子变量、锁优化、任务划分等综合策略。在大型系统中,推荐以。

2025-07-12 07:52:56 1128

原创 【C/C++】动态内存分配:从 C++98 裸指针到现代策略

自行实现继承缓存或限额策略,然后传给。场景推荐方式普通项目容器 + 智能指针(unique_ptrvector性能敏感 / 实时应用, 自定义 allocator共享所有权shared_ptrweak_ptr短期请求生命周期。

2025-07-11 23:12:38 1282

原创 【Linux】C++项目分层架构:核心三层与关键辅助

原则描述单一职责每层专注职责,降低耦合。依赖方向上层依赖下层,使用接口抽象其依赖。可替换实现数据层可不换存储,UI 可切换视图方式。可测试性接口 + 模拟让单测成为可能。模块化构建分库/分模块,支持并行开发和CI。日志与配置用统一工具支撑整个系统。是一套由 FrankBuschmann等人于 1996–2007 期间陆续出版的系列著作,旨在从体系结构视角系统化地阐述软件模式(patterns)([Wikipedia][1])。– 大型系统的结构、设计和细节习惯;

2025-07-11 23:02:52 1381

原创 【Linux】GDB/CGDB 调试器学习笔记

CGDB 是基于 curses 的终端调试界面,提供源代码与 GDB 窗口的分屏显示,键盘操作类似 vi ([cgdb.github.io][5])。使用 GDB Python API,编写自定义命令和输出美化功能 ([Reddit][12])。示例:定义函数自动打印$arg0,能在断点时执行一系列操作 ([Medium][13])。

2025-07-11 22:57:21 747

原创 【读书笔记】「等到 Linux 6.17 就分手」:Bcachefs 背后的技术与流程之争

Bcachefs 是 Kent Overstreet 一手打造的文件系统项目,目标是整合 Btrfs 的灵活性与 ext4 的稳定性。它支持现代文件系统的关键特性:写时复制(COW)、快照、压缩、校验等,并于 2024 年正式并入 Linux 6.7 主线内核。Linus 坚持流程有其合理性,在外界有些群体看来方式略显强硬;Kent 推送补丁的行为本意为善,但操作方式欠缺沟通与透明;Linux 内核开发机制或许需要引入“紧急改动审查流程”,作为常规机制之外的特例绿色通道。

2025-07-11 00:18:29 757

原创 【读书笔记】如何画好架构图:架构思维的三大底层逻辑

画架构图不是为了炫技,而是为了成为团队内部通用的沟通语言。只有明确目标逻辑、结构逻辑、演化逻辑,并结合语义统一、可视状态、分视角组织的技巧,你的架构图才能真正落地在设计、开发、运营、复盘等各类场景中,变成系统建设的一部分。“一张图,就是一份系统的自省,一次思维的外化,一种团队的对齐。画图,不只是画,更是一种架构能力的体现。

2025-07-11 00:09:21 745

原创 【Note】Linux Kernel 实时技术深入:详解 PREEMPT_RT 与 Xenomai

特性内核结构单一内核、全路径可抢占双核模式,有专用实时内核中断处理IRQ 作为线程处理,延迟可控I‑pipe 由 Cobalt 直接接管中断,延迟极低API 支持POSIX / SCHED_* 实时接口支持 RTOS Skin(Alchemy、VxWorks 模拟)维护与稳定性已合入主线,自带长期支持需要特定打补丁,维护稍复杂适用场景低中实时延迟需求,如工业自动化、视频处理严格硬实时,如电机控制、精密系统实现PREEMPT_RT 和 Xenomai 是 Linux 实时扩展的两条成熟路径;

2025-07-10 23:30:13 1294

原创 【Note】Linux Kernel 之 内核架构、源码文件、API/ABI 、FHS

项目内容说明架构单体 + 模块化可抢占内核代码结构以子系统为单元目录组织API / ABI用户空间接口兼容,内核空间接口可变FHS按照标准结构挂载虚拟与持久文件系统。

2025-07-10 23:13:49 770

C/C++麻烦的Kafka+Json体验

C/C++麻烦的Kafka+Json体验

2025-05-26

rabbitmq docker镜像资源

rabbitmq docker镜像资源

2025-05-25

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

TA关注的人

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