
科普
文章平均质量分 80
ALex_zry
梦想走遍天涯,后来工作攒钱实现
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深入理解与灵活应用 std::optional
本文全面介绍了C++中std::optional的核心概念与应用技巧。首先阐述了std::optional作为类型安全容器表示可能存在的值的基本用法,对比了与传统方法的区别。重点展示了三种典型应用场景:作为函数返回值处理可能缺失的情况、管理类中可能未初始化的成员变量,以及安全地进行类型转换和解析。文章还深入探讨了高级用法,包括C++23的函数式链式操作、与variant/any的类型系统结合,以及性能优化技巧。最后通过设计模式示例,如空对象模式和建造者模式,演示了std::optional在实际设计中的灵活原创 2025-08-11 20:51:14 · 749 阅读 · 0 评论 -
Git 分支迁移完整指南(结合分支图分析)
本文提供了一个完整的Git分支迁移指南,基于分支图分析当前状态并规划迁移流程。关键步骤包括:处理未提交更改、创建新分支结构、迁移旧分支历史、建立新主分支。同时提供了分支命名规范、提交信息优化、分支清理策略等建议,并制定了迁移后的目标分支结构图。还包含团队协作更新步骤、操作验证清单和常见问题解决方案。整个迁移过程以图示分支结构为依据,确保历史数据完整性和新分支结构的清晰性。原创 2025-08-06 22:28:52 · 1015 阅读 · 0 评论 -
Git 分支管理:从新开发分支迁移为主分支的完整指南
本文介绍了将Git污染的主分支替换为新分支的完整解决方案。首先确认仓库状态,通过重命名操作将原主分支存档并设置新分支为主分支。针对远程仓库配置问题(存在中文别名远程),详细说明了如何正确推送修改到指定远程。方案包含强制推送新主分支、推送存档分支、清理无效远程引用等步骤,并提供了团队协作处理指南。最后给出技术总结和后续维护建议,包括分支保护策略、定期清理机制和命名规范。该方案适用于需要替换主分支且远程配置复杂的Git仓库维护场景。原创 2025-08-06 22:24:24 · 560 阅读 · 0 评论 -
Git 乱码文件处理全流程指南:从识别到彻底清除
本文系统介绍了Git乱码文件问题的完整解决方案,包括问题识别、安全删除、验证清理和预防策略。通过git ls-files检测异常文件,使用git rm和git filter-repo进行安全删除,并提供了多层次的验证方法。同时针对VS Code权限和Git认证问题提供了修复方案,最后提出防御性配置建议(如.gitignore规则和pre-commit钩子)以防止类似问题发生。全文形成一个从问题诊断到根治的完整闭环解决方案,适用于开发团队规范化Git操作。原创 2025-08-06 22:08:49 · 530 阅读 · 0 评论 -
Git 乱码文件处理全流程指南
本文介绍了如何安全处理Git仓库中的异常乱码文件,详细记录从定位到彻底删除的完整流程。主要内容包括:1)通过git ls-files和git update-index --force-remove识别并删除乱码文件;2)验证删除操作是否成功;3)解决可能出现的权限和认证问题;4)分析乱码文件的本质特征。此外还提供了替代删除方案、索引重建方法以及预防类似问题的实践建议。整个过程融合了Git基础操作和高级技巧,如文件内容分析、历史重写工具使用等,为处理特殊字符文件提供了系统化的解决方案。原创 2025-08-06 22:07:02 · 771 阅读 · 0 评论 -
CMake高阶使用指南
CMake进阶使用摘要 本文重点介绍CMake的进阶功能,包括构建目录管理、宏定义使用和三方库依赖处理。主要内容: 构建目录管理:推荐使用源外构建(out-of-source build)模式,保持代码与构建文件分离 宏定义使用: 支持项目级全局宏和目标特定宏 提供命令行参数控制构建选项 强调命名规范(避免保留前缀,推荐<PROJECT>_前缀) 演示了条件编译和代码中使用宏的示例 三方库依赖:简要提及但未展开说明 文中包含完整的CMakeLists.txt配置示例和代码示例,展示如何定义和使用原创 2025-08-03 21:36:19 · 1042 阅读 · 0 评论 -
CMake 命令行参数完全指南(2)
本文介绍了CMake常用命令选项及其功能: -G指定构建系统类型(如Ninja、Xcode等),适用于跨平台开发; --graphviz生成项目依赖关系图,需配合Graphviz工具可视化; 帮助命令系列包含基础帮助(--help)、完整文档(--help-full)、手册页查询(--help-manual)及模块帮助(--help-module),支持列出所有可用手册页和模块列表。这些命令为CMake项目配置、依赖分析和文档查阅提供了便捷工具。原创 2025-08-03 20:56:59 · 193 阅读 · 0 评论 -
CMake 命令行参数完全指南 (1)
:交叉编译指在一种操作系统上编译另一种操作系统的程序。:平台名称字符串(如 “Win32”、“ARM”):CMake脚本文件路径(.cmake格式):构建目录是存放编译中间文件的独立文件夹。:CMake会测试编译器功能以确定兼容性。:变量是CMake存储配置信息的容器。:指定目标平台名称(用于交叉编译):缓存文件存储CMake配置参数。:设置配置参数(最常用参数):调用CMake内置工具命令。:所有CMake项目初始化。:预加载缓存文件设置默认值。:目录路径(相对或绝对)原创 2025-08-02 13:55:18 · 361 阅读 · 0 评论 -
CMake进阶使用指南
宏定义的主要意义是在不同的分支下进行不同的操作,从而实现通过cmake一个入口处理多个事务的管理需求。这些宏定义有些是cmake本身定义就带有的宏定义,用来约束cmake构建编译规则不需要我们自己再次重复定义。有些是我们自己定义,定义在cmakelists中使用进行条件编译,在代码中使用进行分支代码执行。以下是详细介绍# ==================== 自定义项目宏定义 ===================# 项目级全局宏定义(使用<PROJECT>_前缀命名规则)原创 2025-08-02 13:53:52 · 572 阅读 · 0 评论 -
CMake 命令行参数全解析(2025年更新版)
本文系统梳理了CMake的核心参数体系,主要包括六大类功能参数:1)变量定义参数(-D/CMAKE_BUILD_TYPE等);2)路径控制参数(-S/-B/输出目录定制);3)构建编译参数(--build/--target等);4)安装部署参数(CMAKE_INSTALL_PREFIX);5)调试诊断参数(--log-level/--trace);6)高级定制参数(工具链/模块路径)。文档基于CMake 3.28+版本,提供参数速查表和实践示例,强调现代CMake推荐用法(如-S/-B替代传统构建目录方式)原创 2025-08-02 13:52:36 · 555 阅读 · 0 评论 -
CMake基础使用指南
本文是CMake基础使用指南,主要介绍了CMake的安装、配置和构建管理方法。指南包含:1)两种安装方式(Git官方源和国内镜像);2)CMakeLists.txt核心结构及构建目录管理规范;3)自定义宏定义的命名规则和使用方法;4)构建时环境变量传递和条件编译;5)分阶段构建流程控制(配置、编译、测试、安装);6)跨平台开发和国内镜像加速等最佳实践。该指南特别适合需要快速掌握CMake基础操作和规范化使用的开发者,尤其为中国用户提供了镜像加速方案。原创 2025-08-02 13:51:26 · 334 阅读 · 0 评论 -
C++中的查找操作巧思:使用STL和Lambda提升效率
C++设备信息更新优化技巧 本文展示了C++中利用STL和Lambda表达式高效处理设备信息更新的方法。核心优化包括: 空检查优先:在查找前检查向量是否为空,避免不必要的遍历开销 STL算法+Lambda:使用std::find_if配合Lambda表达式实现简洁高效的查找逻辑 选择性字段更新:只更新易变字段,保留关键属性确保数据一致性 完善的日志记录:详细记录操作过程和结果,便于调试和维护 这些技巧通过Mermaid流程图直观呈现,展示了从数据查询、条件查找到更新操作的完整流程。该方法显著提升了代码性能、原创 2025-07-06 18:37:51 · 938 阅读 · 0 评论 -
C++20 核心特性详解:现代C++的进化里程碑
《C++20革命性特性解析》摘要:C++20标准引入了概念(Concepts)、模块(Modules)、协程(Coroutines)三大核心特性,彻底革新了模板编程、代码组织和异步处理方式。同时新增范围库(Ranges)、格式化库(std::format)等现代化工具,大幅提升开发效率和代码安全性。文章通过Mermaid图表直观展示特性关系,并分析各编译器支持现状。这些变革使C++20成为现代系统编程的分水岭,为高性能计算注入新活力。原创 2025-06-15 20:42:42 · 1076 阅读 · 3 评论 -
Protocol Buffers 复杂嵌套编译指南:生成 C++ 代码
本文详细介绍了复杂嵌套结构Protocol Buffers文件的C++代码生成指南。主要内容包括:1)文件组织原则,建议模块化拆分和公共依赖集中管理;2)关键编译步骤,重点说明import语句编写和protoc命令参数配置;3)处理跨模块依赖和多级嵌套场景的解决方案;4)生成的C++代码集成到项目的方法;5)常见问题排查和优化建议。文中还提供了完整的目录结构示例、编译命令模板和自动化脚本,帮助开发者高效管理复杂的Protobuf项目结构。特别强调了路径一致性、命名空间定义和循环依赖避免等最佳实践。原创 2025-05-27 23:18:08 · 965 阅读 · 0 评论 -
使用 `.inl` 文件和 `#pragma once` 解决模板函数头文件膨胀问题指南
本文介绍使用.inl文件和#pragma once解决C++模板函数头文件膨胀问题。传统方式导致编译膨胀、代码臃肿和维护困难。方案要点:1)将模板实现分离到.inl文件,保持头文件简洁;2)使用#pragma once防止重复包含;3)规范文件结构和包含顺序。该方案能提升编译速度15-30%,使代码分层清晰,适合200行以上的模板类。需注意文件命名规范和IDE配置,推荐ClassName.h+ClassName.inl的配对方式。原创 2025-05-26 22:11:55 · 947 阅读 · 0 评论 -
C++ 模板函数深度指南
头文件管理:使用.h.inl分离声明与实现类型控制:显式实例化高频使用类型编译优化减少重复实例化现代C++:优先使用概念(Concepts)替代SFINAE文档规范:使用Doxygen标注模板参数要求/*** @brief 计算两个值的加权和* @tparam T 必须支持+和*运算符的类型* @param a 第一个值* @param b 第二个值* @param weight 权重系数(0-1)* @return 加权计算结果*/原创 2025-05-26 22:07:22 · 700 阅读 · 0 评论 -
C++字符串处理:`std::string`和`std::string_view`的区别与使用
•:动态字符串类,适合需要频繁修改字符串的场景。•:非拥有型字符串视图,适合只读操作,性能高效。• 拼接操作:使用进行拼接,可以作为输入。原创 2025-05-19 22:10:12 · 1262 阅读 · 0 评论 -
c++字符串常用语法特性查询示例文档(二)
C++提供了多种与字符串相关的类型和工具,每种类型都有其独特的特点和适用场景。以下是一个简单的总结:•和:字符数组,适合处理固定大小或动态大小的字符数据。•:模板化的字符串类,支持自定义字符类型。•:轻量级内存视图,适合高效访问连续内存的场景。•:表示可能为空的字符串,适合安全处理空值的场景。•:表示多种类型的值,适合处理多种类型的场景。•:管理动态分配的字符数组,适合需要自动管理内存的场景。希望这篇教程能帮助你更好地理解和使用 C++中的各种字符串类型和工具。如果有任何问题,欢迎随时提问。原创 2025-05-19 22:19:02 · 875 阅读 · 0 评论 -
c++字符串常用语法特性查询示例文档(一)
C++提供了多种与字符串相关的类型和工具,每种类型都有其独特的特点和适用场景。以下是一个简单的总结:•:动态字符串,适合需要频繁修改字符串的场景。•:字符串视图,适合只读操作和高效传递字符串片段的场景。•:支持宽字符和 Unicode,适合多语言支持的场景。•和:字符串流,适合复杂的字符串拼接和解析的场景。•和:字符数组,适合处理固定大小或动态大小的字符数据。原创 2025-05-19 22:16:45 · 403 阅读 · 0 评论 -
SSH主机密钥验证失败:全面解决方案与技术手册
SSH(Secure Shell)的主机密钥验证是确保安全通信的关键机制,当出现"Host key verification failed"错误时,表明客户端检测到服务器身份异常,可能遭遇中间人攻击。本文详细解析了SSH的安全机制,并提供了完整的解决方案集,包括标准修复流程、高级场景解决方案、安全验证技术等。标准修复流程包括删除旧密钥记录和交互式重新连接,而高级场景解决方案则涉及多密钥管理和自动化运维处理。此外,本文还探讨了密钥类型比较、企业级解决方案架构,并提供了最佳实践与常见误区的指原创 2025-05-16 22:43:46 · 972 阅读 · 0 评论 -
如何在大型项目中解决 VsCode 语言服务器崩溃的问题
通过分析系统内存情况,我们可以采取关闭不必要的程序、增加物理内存和优化程序等方法来解决 VsCode 在大型项目中语言服务器崩溃的问题。希望这些方法能够帮助您提高开发效率,确保项目的顺利进行。如果您有其他问题,欢迎在留言区交流讨论!原创 2025-05-07 21:15:03 · 1386 阅读 · 0 评论 -
VsCode 使用 git进行 源代码管理时,切换分支导致未保存代码丢失怎么恢复的两种情况
• 优先提交或暂存:确保所有修改被安全记录。• 慎用强制迁出:仅在明确不需要当前修改时使用。• 依赖VSCode内置Git功能:无需额外插件即可管理分支切换风险。原创 2025-05-06 18:12:47 · 1633 阅读 · 0 评论 -
实例化一个派生类,怎么才能调用父类的公用接口函数?
使用哪种方法取决于你的具体需求和设计。在实际编程中,你应该根据情况选择最合适的方法来调用父类的公共方法。如果派生类重写了父类的方法,但你想要调用父类的方法,可以使用作用域解析运算符。如果派生类没有重写父类的公共方法,你可以直接通过派生类的对象调用这个方法。如果你想要确保即使在多态的情况下也能调用到正确的父类方法,可以使用虚函数和。在派生类的构造函数中调用父类的构造函数,从而间接调用父类的公共方法。通过父类的指针或引用调用父类的公共方法。原创 2024-08-11 17:55:42 · 537 阅读 · 0 评论 -
Linux ps 命令 查看程序应用信息详解 从自动值守查询脚本开始
ps是 Linux 系统中用来查看当前进程状态的工具。它提供了一种快速查看系统进程及其状态的方式,对于系统管理员和用户来说,是诊断问题和监控系统性能的重要工具。原创 2024-08-05 14:35:38 · 1194 阅读 · 0 评论 -
【VsCode】通过tasks.json中的problemMatcher属性的fileLocation子属性设定问题的输出内容
这个问题是起因在我想把代码指向的相对路径更改为使用宏的绝对路径便于编译调试,但是在一次调试过程中有一个编译时报错,点击报错内容项时,却显示找不到路径文件。报错详细内容显示是 即:代码路径+绝对路径。那么这里的错误就已经很明显了,“现在VS 认为错误的查找路径应当是相对路径,并且拼接格式是 代码路径再拼接编译时路径。接下来就是解决问题需要了解的内容。我从VS的官方帮助手册和开放源码中找到了解决方法,现在整理记录下来。原创 2024-05-20 21:51:22 · 1075 阅读 · 0 评论 -
工具分享:VsCode注释神器,koro1FileHeader
他是有官方Wiki的。项目在GitHub上开源。以下摘录部分wiki,用作介绍分享在这里插入代码片。原创 2024-05-19 20:16:23 · 644 阅读 · 0 评论 -
经验分享:C++ error:‘syscall’ was not declared in this scope
其实这里就已经说明了,设计到的文件信息,所以之后的话,可以依照这个经验,来看看他所提到的文件中有无对应内容,这样可以减少查找的范围。分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za。这里我的编译环境是使用VsCode 进行的远端编译,远端服务器是Linux系统。通过对源码的学习,在头文件中找到如下内容,: syscall.h 的源码,说明了。如上所言,内部是一些宏定义。原创 2024-05-19 20:12:35 · 456 阅读 · 0 评论 -
Linux top命令详解:持续监听进程运行状态
ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。原创 2024-05-18 23:59:30 · 1477 阅读 · 0 评论 -
Linux技术工具:bpftrace介绍
bpftrace基于eBPF技术实现轻量级、低性能开销的监控和分析,使用简单易懂的声明式语言进行脚本编写,可以快速创建和运行复杂的跟踪脚本。在进入事件中,它记录当前时间戳,并将其存储在名为start的关联数组中,该数组的键是正在进行的系统调用的名称。bpftrace使用简单易懂的声明式语言进行脚本编写,可以快速创建和运行非常复杂的跟踪脚本,以便捕获并分析各种有关进程、文件系统、网络、内存、CPU等方面的事件和统计信息。bpftrace还拥有丰富的文档和社区支持,并得到了广泛的应用和推广。原创 2024-05-18 23:46:03 · 1034 阅读 · 0 评论 -
通过ELRepo修改CentOS 7内核版本的详细步骤
在Linux系统中,内核版本决定了硬件支持和系统性能。有时,为了获得更好的性能或新特性,我们需要升级或更换内核。本文将详细说明如何在CentOS 7系统上通过ELRepo仓库安装更新的内核版本。原创 2024-05-18 23:44:21 · 1412 阅读 · 0 评论 -
技巧分享:Git怎么修改已经提交版本的版本注释
在vscode 的使用过程中,git 作为一个版本管理非常方便的工具,十分适合用来管理长期项目,配合 gitlens 可以逐行查看代码的历史记录,并且,只要不发布,理论上这就是一个私有仓库。但是在使用过程中,常有生成的注释并不完美,在需要修改的时候,gitlens并没有给出理想的操作界面,为了解决这个问题,我们可以使用git 原生支持的命令完成这个目的。分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za。命令支持换行注释,可以在文本文件中写好然后拷贝到命令行,或者使用。原创 2024-05-18 23:36:00 · 381 阅读 · 0 评论 -
当自身需要使用的 gcc版本 和Linux 默认版本 存在大版本差异时怎样处理
解决多版本gcc 编译器依赖冲突问题原创 2024-05-15 15:33:31 · 1339 阅读 · 0 评论 -
Linux怎样更新Centos下Gcc版本支持C++17?
[Linux下的软连接、软链接的方式]][[Linux使用的filesystem库来自于c++17提供的新特性]][[Linux下centos查看 GCC 、G++版本]][[Linux 下centos 查看 -std 是否支持 C17 ]]原创 2023-03-21 16:49:18 · 9637 阅读 · 2 评论 -
Linux下怎样编译通过使用C++17新特性的代码?
通过c++17的新特性实现对文件的读取。原创 2023-03-21 16:40:52 · 740 阅读 · 0 评论 -
【VsCode】通过tasks.json中的problemMatcher属性的fileLocation子属性设定问题的输出内容
这个问题是起因在我想把代码指向的相对路径更改为使用宏的绝对路径便于编译调试,但是在一次调试过程中有一个编译时报错,点击报错内容项时,却显示找不到路径文件。报错详细内容显示是 即:代码路径+绝对路径。那么这里的错误就已经很明显了,“现在VS 认为错误的查找路径应当是相对路径,并且拼接格式是 代码路径再拼接编译时路径。”。接下来就是解决问题需要了解的内容。我从VS的官方帮助手册和开放源码中找到了解决方法,现在整理记录下来。原创 2022-12-08 22:49:32 · 3691 阅读 · 0 评论 -
SVN使用手册
每当修改或删除本地文件时,即每当本地文件和服务器文件不一致时,都可。如果你想提交当前文件夹中所有修改的文件或者文件夹,那么你需要在文。如果你只想提交某一个文件或者文件夹的最新内容,那么你只需要右击那。果你想下载整个文件夹的最新内容,那么你需要在文件夹的空白处右击,在检出前,先新建一个文件夹,因为检出时会检出很多文件和文件夹,:红色圈带白色感叹号,当你开始编辑一个文件,这个文件的状态就。:一把黄色的锁,表示文件被锁定,必须先释放锁才能让别人的修改。:红色叉,表示相应文件或文件夹被计划删除,或者表示文件缺。原创 2022-10-10 10:20:06 · 1140 阅读 · 0 评论 -
代码规范:程序的版式
【规则 2-3-5】赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=” “>=”、“原创 2022-10-09 19:43:18 · 599 阅读 · 0 评论 -
代码规范:头文件规范
定义文件有三部分内容:定义文件开头处的版权和版本声明(参见示例 1-1)。对一些头文件的引用。程序的实现体(包括数据和代码)。假设定义文件的名称为 XYworkMain.cpp,定义文件的结构参见示例// 版权和版本声明见示例 1-1,此处省略。#include “XYhead.h” // 引用头文件…// 全局函数的实现体{…}// 类成员函数的实现体{…}建议:如果是执行函数,使用bool类型作为返回值,告诉调用者执行结果。原创 2022-10-09 19:40:23 · 957 阅读 · 0 评论 -
关于python3 unittest 调用unittest.main() 执行多个测试函数并没有顺次执行的探讨。
在学习Python的单元测试的时候,扩展了一下,本来是想用setup和tearDown做一个简单的编号记录。然而,发现了问题。代码如下:class TestStudent(unittest.TestCase): num = 0 def setUp(self): print('setUp... %d' % self.num) def tearDown(self): print('tearDown...%d ' % self.num)原创 2022-01-14 09:27:42 · 494 阅读 · 0 评论 -
什么是单线程单元(STA)什么是多线程单元(MTA)
最近在解决问题的时候不得不使用线程,从而接触到了STA和MTA,度娘给的解释大多语焉不详。在WikiPedia上面看到了比较清楚的描述,趁着能访问的间隙麻利的摘抄下来分享和自我提升。Apartment typeDescriptionSingle-Threaded Apartment[17] (STA), (ThreadingModel=Apartment)A single ...转载 2019-01-07 14:49:21 · 1769 阅读 · 0 评论