- 博客(257)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 了解点儿RESP协议内容,以后会用到的!
类型前缀典型用途示例操作成功的状态码+PONGError错误提示信息-WRONGTYPEInteger计数器、命令执行结果:1具体的键值、JSON 数据$4\r\njsonArray指令集合、MGET 返回列表*3\r\n...
2025-12-26 15:47:49
348
原创 C++ 输出流(Output Stream)全解析
输出流(Output Stream)是 C++ 中用于将数据从程序发送到外部设备的抽象机制。数据像“水流”一样,从程序流向:屏幕、文件、网络、字符串等。<<要点内容核心操作<<(插入)、endlflush格式控制setwhexfixed等三大标准流cout(正常)、cerr(错误)、clog(日志)性能优化'\n'高级用法拼接、rdbuf()重定向自定义重载<<支持结构体。
2025-10-31 16:07:43
550
原创 解决 OpenSSL 3.6.0 在 macOS 上 Conan 构建失败的链接错误
您正在尝试使用 Conan 包管理器在 macOS 环境下构建时,遇到了链接器(ld。这个错误是 macOS 上使用make工具链构建大型库(如 OpenSSL)时的常见陷阱。根本原因通常在于系统 PATH中存在一个与标准 macOS 归档器(ar)冲突的版本,最常见的是binutils。它提供的ar工具创建的归档文件不符合 macOS 链接器所期望的格式,导致链接失败。
2025-10-28 10:18:32
1077
原创 C++20 范围库详解
C++20 范围库(Ranges Library)是对 STL 的重大改进,通过引入范围(Range)概念简化迭代器操作,提供更安全、更可组合的编程方式。核心特性包括: 视图(Views):支持懒惰计算的轻量级序列,可通过管道操作链式组合(如 filter | transform) 范围算法:ranges:: 命名空间下的算法直接接受范围参数 概念约束:使用 C++20 概念确保类型安全 兼容性:与现有 STL 容器/算法无缝协作 扩展性:C++23 新增了 zip、enumerate 等实用视图 该库显著
2025-10-27 12:00:00
990
原创 详解C++中的标准模板库(STL)算法与迭代器结合使用
摘要:本文深入探讨了C++标准模板库(STL)中算法与迭代器的协同工作方式。STL算法通过迭代器与容器解耦,提供通用且高效的数据操作功能。文章系统介绍了STL算法的分类(非修改序列操作、修改序列操作、排序等7大类),并详细分析了不同迭代器类型(输入/输出/前向/双向/随机访问)与算法的匹配关系。通过可运行的代码示例(包括搜索、转换、排序等操作),展示了如何正确使用迭代器范围、谓词等参数。同时强调了迭代器失效、范围检查等重要注意事项,为开发者提供了STL算法与迭代器结合使用的实践指导。
2025-10-27 08:00:00
1683
原创 C++ 中 Views 的详细讲解
Views 是 Ranges 库的核心部分,是一种轻量级的、非拥有的范围(range)抽象,用于对数据序列进行惰性(lazy)操作和转换,而不修改底层数据。以下是对 C++ views 的详细讲解,包括其概念、设计原则、常见视图类型、使用方式、优势、注意事项以及示例。讲解基于 C++20 标准(以及后续小更新,如 C++23 的扩展),假设你有基本的 C++ 知识(如容器、迭代器和 lambda)。View 是一个特殊的范围(range),它不存储数据,而是提供对底层范围的“视图”或“窗口”。
2025-10-26 17:18:33
1178
原创 深入解析 any、optional、expected 和 variant:类型安全与错误处理的现代编程利器!
any是一种类型,表示可以存储任意类型的值。它是类型系统中的一种“通配符”,允许动态类型行为,通常在静态类型语言中用于绕过严格的类型检查。optional表示一个值可能存在或不存在。它是处理“值缺失”的一种类型安全方式,替代传统的null或空指针。是一种类型,表示一个操作的结果要么是成功的值(类型T),要么是错误(类型E它是optional的扩展,增加了错误信息。variant是一个类型安全的联合类型,可以存储多种预定义类型之一。它类似于枚举,但每个变体可以携带不同类型的数据。类型用途类型安全。
2025-10-25 09:30:00
566
原创 详解C++中的流
C++ 允许通过重载操作符或继承流类来扩展流功能。通过继承streambuf可以创建自定义流缓冲区,用于与特定设备交互(如网络流、自定义设备等)。这需要深入了解底层的缓冲区管理,较为复杂,通常用于高级应用。C++ 的流机制通过iostream库提供了一种强大、灵活的输入输出方式,适用于标准输入输出、文件操作和字符串处理。核心类(如istreamostreamfstream)和操作符(如<<>>)简化了数据处理,格式化函数(如setw)提供了细粒度的控制,自定义流则为高级应用提供了扩展性。
2025-10-24 16:05:05
1089
原创 详解C++中的字符串流
通过重load<<和>>操作符,支持自定义类型的字符串流操作。int age;return is;ss << p;// 写入// 输出: Alice 25Person p2;ss >> p2;// 读取// 输出: Read: Alice 25return 0;C++ 字符串流()提供了一种灵活的方式在内存中操作字符串,广泛用于格式化输出、解析输入和数据转换。核心操作包括使用<<和>>进行读写,str()
2025-10-24 16:02:05
1179
原创 详解c++中的文件流
通过重载<<和>>int age;return is;Person p2;return 0;C++ 文件流通过ifstreamofstream和fstream提供灵活的文件操作接口,支持文本和二进制模式,适用于各种场景。关键操作包括文件的打开与关闭、读写、定位、状态管理和格式化。优化技巧(如二进制模式、批量读写)可提高性能,高级用法(如自定义类型和随机访问)扩展了功能。正确处理流状态和错误是编写健壮文件操作代码的关键。
2025-10-24 15:21:23
1029
原创 深入理解C++中的 `thread_local` 的核心机制
是一种。它的核心目的只有一个:确保被声明的变量在程序中的每一个执行线程中都拥有一个。
2025-10-23 10:31:48
770
原创 CPM:CMake 包管理详细介绍
CPM(CMake Package Manager)是一个专为 CMake 设计的轻量级依赖管理工具。它本质上是一个跨平台的 CMake 脚本,充当 CMake FetchContent 模块的薄包装器,提供了版本控制、缓存、简单 API 等功能,被誉为“CMake 缺失的包管理器”。CPM 旨在实现无设置、跨平台、可重现的依赖管理,帮助开发者轻松处理 C++ 项目中的外部依赖,而无需额外的安装步骤。
2025-10-16 11:29:50
803
原创 在c++中,怎么理解把析构函数设置为virtual呢?
目的:确保通过基类指针删除派生类对象时,能够正确地触发多态行为,从而调用到派生类的析构函数。核心问题:如果析构函数不是虚函数,delete操作会根据指针的静态类型(基类类型)来决定调用哪个析构函数,导致派生类的析构函数被跳过,从而引发内存泄漏。规则:如果一个类可能被用作基类,并且你计划通过基类指针来管理派生类对象的生命周期,那么它的析构函数必须是虚函数。注意。
2025-09-20 20:25:20
450
原创 使用 uv 发布 Python 包到 PyPI 教程
本教程将指导你使用uv工具创建一个 Python 包并将其发布到 PyPI。uv是一个快速、现代的 Python 包管理工具,适合替代传统的pip和setuptools。
2025-09-17 17:19:30
1445
原创 C++ 线程安全初始化机制详解与实践
方法优点缺点适用场景局部静态变量最简洁、最安全。由编译器自动处理,具有延迟初始化特性。只能用于局部静态变量。单例模式或需要延迟初始化的简单对象。常量表达式最高效、最安全。编译时完成初始化,无运行时开销。只能用于常量,不具备延迟初始化能力。编译时已知值的变量。通用、明确。可用于任何一次性初始化,包括类成员。相比局部静态变量,代码略显繁琐。复杂的一次性初始化,如类成员初始化。双重检查锁定(无)复杂、不安全。容易因编译器重排导致错误。绝不应在现代 C++ 中使用。你应该优先考虑局部静态变量。
2025-08-29 17:28:53
968
原创 C++ 并发编程:全面解析主流锁管理类
特性锁定类型独占锁独占锁独占锁共享锁加锁数量111或多个1灵活性最低最高高中等死锁避免无无内置无与条件变量否是否是主要用途简单、安全的单锁管理需要灵活控制锁或与条件变量配合安全的多锁管理读多写少场景。
2025-08-29 17:16:20
1690
原创 C++并发编程的双生利器:std::call_once 与 thread_local深度解析
在现代多线程编程中,和是两个解决不同问题的关键工具。它们都是为了在不使用繁琐的互斥锁(std::mutex)的情况下,实现高效、安全的并发编程。
2025-08-29 13:41:08
432
原创 驾驭巨量数据:HTTP 协议与大文件传输的多种策略
在互联网时代,处理和传输大文件是常见的挑战。无论是下载一部高清电影、更新一个大型软件,还是实时处理海量数据流,高效、可靠的传输机制至关重要。HTTP 协议为此提供了多种解决方案,同时还与其他技术协同工作,共同构建了一个强大的数据传输生态系统。
2025-08-28 17:43:25
523
原创 HTTP 分块传输编码:深度解析与报文精髓
分块传输编码(Chunked Transfer Encoding)是 HTTP/1.1 协议中的一项核心特性,它允许服务器在不预先知道响应体总大小的情况下,高效地传输数据。这项技术解决了传统机制的局限性,使得 HTTP 协议能够完美地支持流式传输和动态生成内容。
2025-08-28 17:11:43
843
原创 深入理解 PHP 中的 `pcntl_fork()`:父进程与子进程的执行路径
创建的子进程是父进程的一个副本,但每个进程都有自己的独立内存空间。父进程和子进程中的变量是独立的,修改一个进程中的变量不会影响另一个进程中的变量。父进程和子进程都会继续执行之后的代码,但会根据的返回值分别执行不同的代码路径。通过上述示例,我们可以清楚地看到的行为和父进程与子进程的独立性。理解这些概念对于编写正确的多进程程序至关重要。父进程和子进程中的变量是独立的,修改一个进程中的变量不会影响另一个进程中的变量。父进程和子进程都会继续执行之后的代码,但会根据的返回值分别执行不同的代码路径。
2025-08-28 15:35:05
1004
原创 深入理解 C++ 中的原子类型:`std::atomic
提供了线程安全的低级操作,适用于无锁编程,避免竞态条件,且比互斥锁更高效。通过本文的介绍和示例代码,希望你能够更好地理解和使用,从而在多线程编程中实现更高效、更安全的数据同步。
2025-08-27 14:51:27
998
原创 C++23 中使用 `std::chrono_literals` 的正确姿势
是 C++14 引入的一个强大功能,它让时间操作更加直观和简洁。虽然 C++23 没有直接继承这一功能,但通过显式启用或降级标准,开发者仍然可以方便地使用它。希望本文的介绍和示例能帮助你在 C++23 中正确使用,从而写出更加优雅和高效的代码。
2025-08-27 14:41:17
508
原创 C++ 使用最新 MySQL Connector/C++(X DevAPI)+ CMake 完整教程
X DevAPI 接口头文件在mysqlx目录库为默认连接端口33060CMake 自动路径检测支持 Intel支持 M1/M2MySQL 操作流程USE错误处理捕获和未知异常,保证程序不会异常退出。
2025-08-23 11:43:46
528
原创 C++ 类型转换
转换构造函数double m;Length(double x) : m(x) {} // 转换构造// double → Length,隐式转换函数double(m);// 必须显式一句话规则:把“别的类型→本类型”写成构造函数;把“本类型→别的类型”写成。explicit能堵住隐式,但挡不住显式 cast。
2025-08-19 21:52:32
486
原创 Linux Shell 条件判断:`test`、`[`、`[[` 命令深度解析
在 Linux Shell 脚本的广袤世界中,条件判断是构建智能逻辑的灵魂。它赋予脚本决策能力,使其能根据实时状态灵活响应。test和[[,揭示它们的奥秘,并提供最佳实践指导。test作为 Shell 条件判断的鼻祖,test命令依据表达式的真伪,返回一个0代表真,非0代表假。它是if语句逻辑判断的幕后英雄。test命令是test的一个简洁别名,旨在提升脚本的可读性。使用时,,且与两侧都需留有空格。为避免因变量值中的空格或特殊字符导致解析错误,使用双引号 () 包裹所有变量(如。
2025-07-31 15:05:42
763
原创 如何判断进程是否存活?Linux 系统中的核心方法解析
方法优点缺点推荐场景首选方法,非侵入,高效,原子性权限敏感C/C++ 程序中精确判断特定 PID 进程存活/proc/PID直观,权限宽松非原子性,需处理僵尸进程Shell 脚本通用检查,或需获取更多进程状态信息时pgreppidof快捷,基于名称查找高开销,不通用,可能不精确简单的 Shell 脚本,按名称快速判断进程是否存在在 Linux 系统编程中,kill(pid, 0)系统调用是判断进程是否存活的黄金标准。它不仅高效,而且能准确反映进程的“可调度”和“可响应信号”的状态。
2025-07-22 17:26:17
881
原创 Makefile 基础教程
每条Makefile规则都精准定义了如何从一组依赖项 (Prerequisites)生成一个目标 (Target)。这是Makefile最核心的逻辑单元。command_1command_2...target:它可以是物理文件(如可执行文件、.o目标文件、库文件),也可以是抽象的伪目标 (Phony Targets),代表某个操作(如cleanMake 工具的核心任务是确保所有目标都是最新的。:生成target所需的文件或依赖。Make 会检查这些依赖项的时间戳:如果任何一个依赖项比target。
2025-07-22 14:25:23
590
原创 告别手动编译:用 Makefile 优雅管理 C/C++ 项目的库
Makefile是 C/C++ 项目管理中的强大工具。通过定义清晰的规则和变量,它能够将复杂的编译过程自动化,让你专注于代码本身。无论是简单的源文件编译,还是更高级的静态库或动态库管理,掌握Makefile的编写都将显著提升你的开发效率和项目的专业性。开始尝试编写你自己的Makefile吧,它将彻底改变你编译和管理 C/C++ 项目的方式!
2025-07-22 14:21:02
818
原创 C/C++ 编程:掌握静态库与动态库的编译
静态库通常更简单,因为它消除了运行时的库依赖问题。动态库是更好的选择,因为它提供了更好的模块化、更小的可执行文件体积以及更灵活的更新机制。理解这两种库的编译和链接机制是 C/C++ 开发者在构建健壮、高效且易于维护的应用程序时的必备技能。选择哪种库取决于你的具体项目需求和部署策略。
2025-07-22 14:17:29
1141
原创 揭秘 CLI 神器:深度探索 ANSI 转义序列,打造炫酷命令行交互
在命令行界面(CLI)中,你是否曾惊叹于那些色彩斑斓的日志输出、实时更新的进度条,或是像“htop”这样的交互式工具?它们并非魔术,而是巧妙运用了。这些看似神秘的代码,实则是让你的命令行应用程序“活”起来的强大武器。本文将带你深度探索 ANSI 转义序列的世界,不仅提供丰富的学习资源,更为你揭示其背后的原理和实用技巧,助你从命令行“菜鸟”蜕变为“大师”。
2025-07-18 18:11:18
932
原创 了解点儿Python 函数的“魔法”参数`*args` 和 `**kwargs`,让函数参数不再受限制!
args和**kwargs是 Python 中非常灵活且强大的功能,它们使得函数能够处理任意数量的位置参数(打包成元组)和任意数量的关键字参数(打包成字典)。理解它们的收集机制、数据结构以及在函数签名中的顺序,是编写更通用、更健壮、更符合 Python 哲学代码的关键。掌握了它们,你的 Python 编程能力将更上一层楼。
2025-07-16 11:16:37
958
原创 模型上下文协议(MCP)的工作流程、安全威胁与未来发展方向
整个 MCP 工作流程形成了一个闭环,从用户发出请求开始,经过客户端的意图分析和协调,通过传输层与服务器通信,服务器利用其丰富的工具和数据源完成任务,最终将结果通过通知机制反馈给用户。这种模块化、可扩展的设计,使得 MCP 能够有效地管理复杂的 AI 应用上下文,为用户提供更智能、更个性化的服务。虽然上图主要展示了工作流程,但一个健壮的协议如 MCP,必然会面临安全威胁,如数据泄露、未授权访问等,这些都将是未来研究的重要方向。
2025-07-16 10:42:07
1186
原创 简单了解点儿`asyncio.open_connection()`背后都做了啥
因为在异步编程中,我们不能让任何操作阻塞主程序的执行。一个阻塞的 Socket 操作会像一道墙,彻底停滞事件循环,导致所有其他协程也无法运行。非阻塞模式意味着 Socket 操作会立即返回,即使它还没完成。
2025-07-15 10:29:48
1189
原创 `asyncio.start_server` 揭秘:协程如何优雅接管网络连接
在 Python 的异步编程世界中,asyncio库是构建高性能、高并发网络应用的基石。其中,是创建 TCP 服务器的核心函数。它并非采用传统的“一个连接一个线程/进程”的模式,而是基于强大的**事件循环(Event Loop)非阻塞 I/O(Non-blocking I/O)回调函数(Callback Function)**机制,将新建立的客户端连接无缝地交给你的异步应用逻辑处理。那么,是如何在单个线程内,高效地处理海量并发连接,并将每个新连接准确地传递给你的回调函数的呢?
2025-07-15 09:51:41
889
原创 假如你号称精通C++,我作为考官,猜猜我准备怎么难住你?
C++ 的知识体系深邃广阔,要真正精通并非易事。作为考官,我不会试图用一些偏僻的语法点来“难住”你,那没有太大意义。我更感兴趣的是,你对 C++。
2025-07-14 22:18:06
651
架构师与开发的区别是什么?
2022-01-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅