自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《八大排序算法》

直接插入排序、希尔排序,直接选择排序、堆排序,冒泡排序、快速排序,归并排序。

2025-03-30 21:51:17 1663

原创 《二叉树:二叉树的顺序结构->堆》

二叉树的顺序结构实现,向下调整算法,向上调整算法,堆的创建,插入,删除,堆排序,Top-K问题。

2025-03-30 13:45:43 1032

原创 《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++:函数对象-仿函数》

函数指针,函数对象,使用函数对象的优点。

2025-03-27 16:47:00 253

原创 《Git:基本命令使用》

git基本指令。

2025-03-22 21:28:34 1233 2

原创 《C++11 容器emplace方法原理剖析,究竟高效在哪?》

emplace_back可以直接传入对象构造所需的参数,在容器底层内存位置构造对象,避免了push_back要先创建对象再拷贝或移动的过程。减少了资源开销,提高了插入效率。

2025-03-22 16:48:37 594

原创 《C++11 基于CAS无锁操作的atomic原子类型》

基于CAS的atomic原子类型。

2025-03-21 22:11:36 197

原创 《C++智能指针:建议使用 make_shared 代替 shared_ptr》

使用C++14make_shared代替C++11的shared_ptr,make_shared的优缺点。

2025-03-21 17:41:23 481

原创 《线程池最终版:使用可变参模板和future优化重构设计》

将线程池改造为基于可变参模板和future机制的最终版本线程池。

2025-03-20 17:34:49 964

原创 《线程池:线程池资源回收策略修改》

修改线程池资源回收策略,线程池析构要等全部任务执行完毕再析构。

2025-03-20 10:02:39 165

原创 《线程池:Linux平台编译线程池动态库发生的死锁问题》

当把线程池在Linux下编译成动态库时,线程池发生死锁问题,通过分析发现Linux平台和Windows平台下关于信号量的析构函数实现不一样,进而解决线程池在Linux平台上运行死锁的问题。

2025-03-19 22:54:46 608 1

原创 《Linux:动态库动态链接与静态库静态链接》

静态库与静态链接、动态库与动态链接、运行动态库的四种方式、动静态库的加载。

2025-03-19 20:09:10 1663

原创 《C++知识梳理及常见面试题》

C++知识梳理,常见面试题。

2025-03-16 23:00:48 895 2

原创 《线程池:死锁问题情况分析》

在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++11 暗藏玄机:好用的新东西究竟有啥?》

右值引用与移动语义、可变参数模板、function适配器、bind适配器、线程库......

2025-03-12 14:34:43 422

原创 《C++ 类型转换:这是什么造型啊?挺别致啊》

C++四种强制类型转换:static_cast、reinterpret_cast、const_cast、dynamic_cast......

2025-03-11 17:48:48 1027

原创 【C++】特殊类的设计 + 单例模式

特殊类的设计、单例模式、懒汉模式、饿汉模式......

2025-03-11 13:05:13 673

原创 《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】917. 仅仅反转字母

使用双指针,一个指针指向s的开始,一个指向s的末尾,同时遍历即可。

2025-03-03 22:39:33 137

原创 【String】415. 字符串相加

不能简单的将字符串转换为整数相加,因为题目要求处理的是以字符串形式的数字,数字可能非常大,超出任何整数类型所表示的范围。所以这道题要模拟两数相加的过程,注意处理进位即可。

2025-03-03 19:26:12 328

原创 【Linux】多线程 -> 使用C/C++实现简单的线程池

使用C和C++实现了线程池的基本设计......

2025-02-22 10:03:38 836 3

原创 【Linux】多线程 -> POSIX信号量与基于RingQueue的生产者消费者模型

POSIX信号量、信号量的相关操作、基于RingQueue环形队列的生产者消费者模型......

2025-02-21 12:50:36 656 2

原创 【Linux】多线程 -> 线程同步与基于BlockingQueue的生产者消费者模型

线程同步、条件变量、生产者消费者模型、基于阻塞队列的生产者消费者模型......

2025-02-20 13:20:40 1077

原创 【Linux】多线程 -> 线程互斥与死锁

线程封装、线程互斥、锁的封装、可重入与线程安全、死锁......

2025-02-19 08:34:08 970 2

原创 【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】进程间通信 -> 匿名管道&命名管道

从文件描述符的角度深度理解管道、从内核角度理解管道本质、命名管道与匿名管道的区别...

2024-12-25 17:19:00 981

原创 【Linux】基础I/O -> 如何谈文件与文件系统?

Linux下一切皆文件!从文件到文件系统、文件描述符fd、缓冲区问题、重定向、软硬链接...

2024-12-23 20:56:15 870

空空如也

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

TA关注的人

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