- 博客(406)
- 资源 (1)
- 收藏
- 关注
原创 C++数据结构与算法_排序算法
本文记录基础排序算法和高级排序算法。基础排序算法包括:冒泡排序,选择排序,插入排序和shell排序,并对四种排序算法做了对比。高级排序算法:快速排序,归并排序,堆排序,并对这三种高级高级排序算法做了对比。
2026-03-07 21:53:09
97
原创 C++数据结构与算法_一致性哈希算法-负载均衡算法
*分布式系统负载均衡算法:**轮回算法,哈希算法,权重比算法,最少链接算法和一致性哈希算法等。其中,一致性哈希算法是分布式系统负载均衡首选算法。一个良好的分布式哈希方案应该具有良好的单调性,即服务节点的增加不会造成大量哈希的重新定位。
2026-03-04 08:40:01
23
原创 C++数据结构与算法_哈希表
总结1:哈希表的优缺点,有点是查询速度快,缺点是需要更多的内存消耗。总结2:分别实现了线性哈希+线性探测,链式哈希,这两种哈希比较。线性哈希表指的是,使用数据来存储元素,增加元素:当装载因子大于0.75时,需要扩容,时间复杂度为O(n),查找时:最坏情况下时间复杂度O(n);多线程情况下,需要对整个哈希表加互斥锁,对于高并发情况下,这导致了并发量较低。链式哈希表指使用一个数组+链表方式实现,每个桶中保存的是一个链表;对于查询时,链式哈希表时间复杂度为O(n);链式哈希表优化:使用红黑树 + 分段锁。
2026-03-03 14:49:20
590
原创 C++数据结构与算法_线性表_链表
翻转链表:使用头插入法。如果链表没有头节点,那就new一个头结点,使用一个指针指向头结点,另一个指针指向头的下一个节点;然后头部指针和下一个节点指针断开;当p!=nullptr时,依次采用头插入方式插入。核心插入如下:删除倒数第N个节点:使用双指针方法,头指针先移动N个节点,然后两个指针一起移动,判断条件时,p->next!= nullptr时,直接返回。最后q指向的待删除节点的前一个节点。
2026-02-24 20:52:39
780
1
原创 CMake条件命令if() else() endif()
定义宏macro(MAC)message("参数个数 ARGC = ${ARGC}")message("第一个参数 ARGV0 = ${ARGV0}")message("第二个参数 ARGV1 = ${ARGV1}")message("参数列表 ARGN = ${ARGN}")endmacro()# 调用宏#[[参数个数 ARGC = 4第一个参数 ARGV0 = AA第二个参数 ARGV1 = BB参数列表 ARGN = AA;BB;CC;DD]]
2026-01-14 20:59:42
685
原创 cmake_CMake内置属性解决头文件包含/CMake定义C/C++标准/include_directories()/宏定义
add_compile_definitions() 为当前目录以及子目录下的所有target添加宏定义,相当于在编译时添加 -D MY_MRO=1# 定义一个带值的宏(相当于 #define MAX_BUFFER_SIZE 1024) add_compile_definitions(MAX_BUFFER_SIZE = 1024)
2025-12-26 16:33:23
790
原创 cmake_CMake定义属性define_property()与设置属性
CMake属性(PROPERTY)是影响构建过程的关键概念,它们定义了如何编译源文件、二进制文件的安装位置以及安装程序的打包目录等。CMake属性可以附加到不同的对象上,例如目标(TARGET)、目录(DIRECTORY)、源文件(SOURCE)、缓存变量(CACHE)、安装(INSTALL)、测试(TEST)等。
2025-12-24 09:04:48
826
原创 cmake_查找文件find_file()命令,查找程序find_program()与查找库find_library()
本文介绍CMake查找文件find_file()命令、查找程序find_program()与查找库find_library()。
2025-12-24 08:53:34
712
原创 cmake_CMake打印消息命令message(),CMAKE_SOURCE_DIR、CMAKE_BINARY_DIR,CMAKE_CURRENT_LIST_FILE/DIR/LINE/FILE
CMake定义了环境变量来控制CMake的行为,设置的环境变量仅在当前CMAKE进程中生效,而不影响调用CMake的进行,也不影响整个系统环境,也不会影响后续构建或测试进程的环境。set (ENV{变量名} [值])$ENV{变量名}
2025-12-21 23:30:22
811
原创 cmake_file(GLOB)详解
本文介绍cmake的file()文件操作函数,该函数功能强大,可以读文件,写文件,复制,删除,重命名等操作。
2025-12-20 10:34:11
1016
原创 cmake_第二章 CMake基础语法_cmake列表命令list(),字符串string()和aux_source_directory()
本文介绍cmake列表命令list(),字符串string()和aux_source_directory()
2025-12-18 23:20:37
839
原创 cmake_第二章 CMake基础语法_set(),缓存变量set(CACHE)
CMake中的变量分为普通变量和缓存变量,本节讲解普通变量。CMake变量是 CMake 语言中的基本存储单元,变量的值是字符串类型。变量名称区分大小写,变量名称几乎可以包含任何文本,但建议使用仅由 “字母数字”加上“_”和“-”组成的名称。字母 数字 _ - 下划线和中划线。CMake中使用set() 定义一个变量,下面开始逐步介绍set()的使用。在cmake 编译时,使用-D(define)可自定义变量,然后在cmake文件中引用该变量。-D选项放在-P选项之前,理解为先定义再使用。
2025-12-18 22:59:18
757
1
原创 cmake_第二章 CMake基础语法_cmake生成器,cmakegui构建和add_subdirectory()
本文介绍cmake第二章,cmake生成器,cmakegui构建和add_subdirectory()
2025-12-17 23:56:08
1118
原创 cmake_cmake简介
CMake(Cross-platform Make)是Kitware公司主导的一个开源的、跨平台自动化构建、测试系统。CMake最初是被设计为各种Makefile方言的生成器,如今的CMake为现代构建系统例如Ninja生成构建文件、也可以为Visual Studio 和Xcode等 IDE 生成项目文件。
2025-12-16 23:47:38
899
原创 C++数据结构与算法_数据结构与算法概念_定义,递归与迭代比较
数据结构:相互之间存在一种或者多种特定关系的数据元素的集合。在逻辑上可以分为线性结构、散列结构、树形结构和图形结构等。算法 :求解具体问题的步骤描述,代码上表现出来是解决特定问题的一组有限的指令序列。
2025-12-10 13:56:48
1026
原创 C++23新特性_多维下标运算符
C++23支持的多维度下标,相比 [][] 的代理对象模式,[x, y] 是单次函数调用,更容易被编译器内联和优化。
2025-12-04 23:06:26
421
原创 C++23新特性_if consteval
if consteval 修复了std::is_constant_evaluated 容易被误用于 if constexpr 的陷阱,使用起来也更简洁。代码一目了然:如果是编译期间走一条路,运行期间走一条路。建议在C++23下,分编译期和运行期的场景,使用if consteval 替换 std::is_constant_evaluated().
2025-12-04 23:01:43
460
原创 C++23新特性_Deducing this
Deducing this 是C++这门古老语言迈向现代化的又一重要步伐。主要特性总结如下:1 去重:它用一个模板函数替代了 const/non-const/lvalue/rvalue 的四个重载。2 解耦:它让 CRTP 模式不再依赖复杂的模板继承语法,实现了真正的“鸭子类型”混入。3 赋能:它让 Lambda 递归变得轻而易举。
2025-12-04 22:56:23
884
原创 C++20新特性_std::is_constant_evaluated() 编译期判断
本文记录C++20新特性之std::is_constant_evaluated()。
2025-12-04 11:20:28
255
原创 C++20新特性_原子智能指针,std::source_location和位操作函数
在多线程环境下,可以使用 原子智能指针来确保线程安全,这虽然比裸指针的原子操作慢,但比使用mutex 保护 shared_ptr快,也可以避免死锁风险。
2025-12-03 22:19:54
1296
原创 C++20新特性_std::jthread和chrono库扩展
jthread 是现代C++多线程的首选,jthread更安全,利用了RAII特性,避免了忘记join()导致的崩溃。内置 std::stop_token,提供了一套标准的、线程安全的停止机制,替代了过去常用的 bool is_running 标志位。建议,在C++20以后的项目中使用jthread代替thread.
2025-12-03 22:11:04
1094
原创 C++20新特性_std::format和span
性能:format的性能优于iostream,在某些情况下超过 printf.语法:format结合了python风格的易用性和C++的高性能,是现代C++开发中处理字符串的首选工具。span优点:零拷贝,统一接口(连续内存都可以使用span处理),类型安全,支持切片。需要注意的是,使用span时,避免悬空引用。
2025-12-03 22:00:42
874
1
原创 C++20新特性_指定初始化 (Designated Initializers)
本文记录C++20新特性之指定初始化 (Designated Initializers)。
2025-12-02 23:02:47
216
汇编语言是学习高级语言的基础,也是了解计算机体系结构的基础。学习汇编语言后,对各章节进行了简要的总结,方便记忆和查看。
2022-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅