- 博客(68)
- 收藏
- 关注
原创 《C++11:通过thread类编写C++多线程程序》
C++多线程编程,mutex互斥锁,具有RAII思想的lock_guard、unique_lock,lock_guard与unique_lock的区别,生产者-消费者模型。
2025-03-29 11:22:43
695
原创 《C++11:bind绑定器与function包装器》
bind1st、bind2nd,C++11的bind及底层原理,C++11的function及底层原理,bind与function实现线程池。
2025-03-27 22:02:26
629
原创 《C++11 容器emplace方法原理剖析,究竟高效在哪?》
emplace_back可以直接传入对象构造所需的参数,在容器底层内存位置构造对象,避免了push_back要先创建对象再拷贝或移动的过程。减少了资源开销,提高了插入效率。
2025-03-22 16:48:37
594
原创 《C++智能指针:建议使用 make_shared 代替 shared_ptr》
使用C++14make_shared代替C++11的shared_ptr,make_shared的优缺点。
2025-03-21 17:41:23
481
原创 《线程池:Linux平台编译线程池动态库发生的死锁问题》
当把线程池在Linux下编译成动态库时,线程池发生死锁问题,通过分析发现Linux平台和Windows平台下关于信号量的析构函数实现不一样,进而解决线程池在Linux平台上运行死锁的问题。
2025-03-19 22:54:46
608
1
原创 《线程池:死锁问题情况分析》
在cached模式线程池的实际测试中发现程序运行出错,通过定位分析发现代码设计有缺陷,未考虑线程池在析构的时候,线程池中线程会竞争锁而导致死锁的情况。使用锁+双重判断解决了死锁问题。
2025-03-16 20:09:21
553
原创 《cached模式线程池:线程池析构之后,线程资源回收问题》
解决了线程池析构之后,线程资源回收问题。由此,设计出了一个完整的线程池,支持fixed模式、cached模式,支持用户自定义设置线程池工作模式、任务上限阈值、cached模式下线程上限阈值。
2025-03-16 03:34:51
709
原创 《cached模式线程池:基础功能实现》
基于fixed模式的线程池,通过解决三个问题,1.可变的线程池工作模式、2.根据任务数量创建新线程、3.多余线程的回收,完成了对cached模式线程池基础功能的实现。
2025-03-16 00:18:20
667
原创 《ps:cached模式下使用C++11提供的std::chrono处理时间问题》
关于C++11引入的std::chrono库提供的时间处理方法,时间间隔,时间点,时钟,时间转换。
2025-03-15 15:13:08
427
原创 《fixed模式线程池:基础功能实现》
通过对线程池整体架构的梳理,完成对fixed模式线程池基础功能的实现,用户提交给线程池任务,线程池派发线程处理任务。
2025-03-15 00:34:09
586
原创 《线程池项目:线程池背景知识与整体架构梳理》
线程池,并发与并行,多线程的优势,线程池的优势,基于fixed模式与cached模式的线程池,线程同步的方式,项目设计与架构梳理。
2025-03-14 21:06:50
991
1
原创 《fixed模式线程池:线程池执行完任务,获取返回值问题》
通过设计Any类来接收任意数据的类型,信号量让用户阻塞等待任务执行完成之后再接收返回值,最终通过实现Result类完美解决了如何接收线程池执行完任务以后,如何获取返回值的问题。
2025-03-14 20:42:15
1233
原创 《C++ 类型转换:这是什么造型啊?挺别致啊》
C++四种强制类型转换:static_cast、reinterpret_cast、const_cast、dynamic_cast......
2025-03-11 17:48:48
1027
原创 《C++ 智能指针:长达数十年的血泪史,一步步征服内存泄漏》
智能指针的血泪史、内存泄漏、智能指针的使用、auto_ptr、unique_ptr、shared_ptr、shared_ptr的线程安全问题、shared_ptr的循环引用......
2025-03-10 16:31:03
1025
原创 《C++异常:对比传统错误处理,开启编程新视角》
C语言传统的处理错误的方式、异常概念、异常使用、异常重新抛出、异常安全、异常规范、自定义异常体系、异常优缺点......
2025-03-09 16:39:44
1127
原创 【Vector】26. 删除有序数组中的重复项
使用快慢指针法,快指针fast遍历数组,如果nums[slow] == nums[fast],则说明两个元素相同,fast继续遍历,slow不动;如果nums[slow]!= nums[fast],则说明两个元素不同,进而可以将新元素nums[fast]覆盖上nums[slow]的下一个元素nums[slow+1],以达到去重的目的。(如果这两个不同的元素是相邻的,此时nums[fast]自己给自己覆盖也没关系)非严格递增是指序列中的元素从前往后看是递增的,但允许某些元素相等。
2025-03-07 16:59:12
219
原创 【String】125. 验证回文串
如果c是大写字母且具有等效的小写字母,则将c转换为其等效的小写字母。如果c无法进行此类转换,则返回的值为c不变。如果c是小写字母且具有等效的大写字母,则将c转换为其等效的大写字母。如果c无法进行此类转换,则返回的值为c不变。可以将原字符串中的字母和数字(数字字符)进行过滤,过滤到新字符串中,然后双指针遍历新字符串,判断是否回文。空间复杂度O(M),M为过滤后的新字符串长度。空间复杂度O(1),这里没有使用额外的空间。时间复杂度O(N),N为原字符串s长度。时间复杂度O(N),N为字符串s长度。
2025-03-05 17:20:27
138
原创 【String】387. 字符串中的第一个唯一字符
在计算机中,字符的表示有多种编码方式,如果是ASCII编码,那么字符的个数范围就是0-255,一共256个字符,但是,在更广泛的场景中,比如使用UTF-8等编码方式,这些字符的编码值是大于256的(Unicode编码范围从U+0000-U+10FFFF)。此时,使用长度为256的数组来统计字符出现的次数时,对于编码值大于255的字符,就无法正确记录其出现的结果了,所以会导致错误的结果。可以使用unordered_map来代替固定大小的数组,不会受限于字符编码值的范围,可以存储任意字符。
2025-03-04 11:51:08
201
原创 【String】415. 字符串相加
不能简单的将字符串转换为整数相加,因为题目要求处理的是以字符串形式的数字,数字可能非常大,超出任何整数类型所表示的范围。所以这道题要模拟两数相加的过程,注意处理进位即可。
2025-03-03 19:26:12
328
原创 【Linux】多线程 -> POSIX信号量与基于RingQueue的生产者消费者模型
POSIX信号量、信号量的相关操作、基于RingQueue环形队列的生产者消费者模型......
2025-02-21 12:50:36
656
2
原创 【Linux】多线程 -> 线程同步与基于BlockingQueue的生产者消费者模型
线程同步、条件变量、生产者消费者模型、基于阻塞队列的生产者消费者模型......
2025-02-20 13:20:40
1077
原创 【Linux】多线程 -> 从线程概念到线程控制
线程概念,线程的私有资源,线程优缺点,线程异常,线程用途,线程创建、终止、等待、取消,分离线程,线程ID,线程的局部存储......
2025-02-13 22:39:12
1217
5
原创 【Linux】进程间通信-> 信号 -> 一篇文章读懂Linux下的信号
全面了解 信号的发送 -> 信号的保存 -> 信号的递达 的全过程。信号发送的四种方式、核心转储、信号集操作函数、可重入函数、volatile关键字。
2025-02-06 22:59:40
754
3
原创 【Linux】进程间通信-> 共享内存
共享内存原理、概念、共享内存中的key、创建、删除共享内存、基于共享内存的client/server通信、优缺点、共享内存的数据结构...
2024-12-30 21:33:49
1297
1
原创 【Linux】基础I/O -> 如何谈文件与文件系统?
Linux下一切皆文件!从文件到文件系统、文件描述符fd、缓冲区问题、重定向、软硬链接...
2024-12-23 20:56:15
870
空空如也
怎么运行不出来呀?哪里错了么
2023-07-12
“=”左操作数必须为左值
2023-07-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人