自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 error: insufficient permission for adding an object to repository database .git/objects

error: insufficient permission for adding an object to repository database .git/objectserror: Error building trees

2023-02-18 10:00:00 944 1

原创 【深入理解计算机系统】库打桩 - 阅读笔记

库打桩机制、1. 编译时打桩、2. 链接时打桩、3. 运行时打桩

2023-02-17 14:42:01 1015

原创 C++11 线程异步

1. 线程异步的概念、2. future、2.1 共享状态、2.2 常用成员函数、3. promise、3.1 常用成员函数、3.2 promise的基本使用、4. package_task、4.1 常用成员函数、4.2 package_task的基本使用、5. async、5.1 async的基本使用、6. promise、package_task、async的对比与总结

2023-01-05 15:30:00 1724

原创 C++11 线程池及其三种优化

C++11 简单线程池、优化1 - 支持任意类型任务、优化2 - 支持可变参数、优化3 - 通过future获取任务函数的返回值

2023-01-03 17:08:24 836

原创 C++ using的三种用法详解

1. using声明(引入单个名称)、2. using指示(引入命名空间)、3. 类型重定义(替代typedef)

2022-11-22 09:52:13 10077 1

原创 Skiplist跳表详解及其模拟实现

1.跳表的概念、2.Skiplist在插入时采用随机层数的方法是如何保证效率的呢?、3.跳表的模拟实现、4.跳表VS平衡搜索树和哈希表

2022-10-24 14:19:21 686 1

原创 MySQL详解 --- 聚合与分组

聚合函数、count的使用细节、group by用法、分组查询、where与having、SQL中的关键字的执行顺序!

2022-06-21 10:18:09 2001 2

原创 MySQL详解 --- 内置函数

1. 日期函数、2. 字符串函数、3. 数学函数、4. 加密函数、5. 流程控制函数、6. 其他函数

2022-05-12 15:12:06 3172 2

原创 MySQL详解 --- 表的基本操作

1. 创建表、2. 查看表的结构、3. 修改表、3.1 修改列(※)、3.2 修改表名、3.3 删除表、3.3 删除表

2022-05-10 15:05:41 482 1

原创 MySQL详解 --- 库的基本操作

1. 创建数据库、Extra: 字符集与校验规则、2. 操纵数据库、2.1 查看数据库、2.2 显示创建语句、2.3 修改数据库、2.4 删除数据库、3. 查看连接情况

2022-05-08 16:56:32 473 2

原创 Linux详解 --- 多线程5: 线程池及其模拟实现

线程池: 线程池的模拟实现、线程池测试 线程池是一种线程的使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时 创建与销毁线程的代价。线程池不仅能保证内核的充分利用,还能防止过度调度。

2022-05-05 18:29:07 692 2

原创 C++11 多线程操作 (线程控制、互斥锁、条件变量、原子操作、自旋锁)

文章目录1. thread1.1 线程创建1.2 join与detach1.3 std::this_thread命名空间1.3.1 get_id1.3.2 yield1.3.3 sleep_for1.3.4 sleep_until1.3.5 yield vs sleep_for2. mutex2.1 mutex2.2 recursive_mutex2.3 timed_mutex2.4 recursive_timed_mutex3. lock3.1 lock_guard3.2 unique_lock4. 条件

2022-05-03 15:14:01 2260 18

原创 数据库常见约束类型(操作详解)

MySQL约束类型、主键(创建主键、删除主键)、自增长、唯一键(创建唯一键、删除唯一键)、外键(创建外键、删除外键)、空属性、默认值、零填充、列描述

2022-05-01 15:31:22 2468 1

原创 Linux详解 --- 多线程4: POSIX信号量、基于环形队列的生产消费者模型

POSIX信号量、基于环形队列的生产消费者模型 POSIX信号量与SystemV信号量的作用相同,都是能进行同步操作,以达到无冲突的访问共享资源的目的。除此以外,POSIX可以用于线程间的同步。问题:什么是信号量?信号量(信号灯),本质就是一个计数器!它是描述临界资源有效个数的计数器!问题:为什么要使用信号量?信号量将临界资源看成多份,在不冲突的部分,可以提高效率(让线程处于并行)。//二元信号量(0和1) “等价于” mutex互斥锁问题:如何对信号量进行操作?

2022-04-30 16:35:31 436

原创 乐观锁、悲观锁与CAS

乐观锁与悲观锁、CAS是一种无锁编程的方法、ABA问题、ABA问题的解决方法

2022-04-28 09:33:53 329

原创 数据库设计的三大范式(举例详解)

数据库设计的三大范式。为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就被称为范式。范式是符合某一种设计要求的总结。因此要设计一个结构合理的关系型数据库,就必须要满足下面这三大范式。

2022-04-26 20:17:25 5811 2

原创 Linux详解 --- 多线程3: 线程同步、生产者消费者模型

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

2022-04-26 14:32:01 434

原创 Linux详解 --- 多线程2: 线程互斥(互斥量的使用与原理、线程安全与可重入函数、死锁)

线程互斥、互斥量的使用、互斥量的原理、线程安全与可重入函数、死锁、死锁的4个必要条件、预防死锁的措施、避免死锁的算法

2022-04-12 14:44:50 941

原创 Github的token更新, 替换git的token信息(git添加新的token)

添加token信息、替换git的token信息

2022-04-04 21:31:48 13105

原创 Linux详解 --- 多线程1 (线程理解、线程创建、线程终止、线程等待、线程分离)

线程理解、线程与进程、线程的优缺点、线程的私有数据与公有数据、线程创建、线程的查看、线程ID及获取、线程ID与LWP、线程终止、线程等待、线程分离

2022-03-29 16:14:03 916

原创 Gitee图床失效(临时)解决方案

gitee图床失效的临时解决方法

2022-03-26 22:37:03 867 1

原创 C++智能指针详解(auto_ptr、unique_ptr、shared_ptr)

智能指针的应用场景、智能指针的介绍、智能指针的使用与原理、auto_ptr、unique_ptr、shared_ptr、shared_ptr与线程安全、shared_ptr的循环引用、weak_ptr解决循环引用、智能指针与定制删除器、lock与RAII、内存泄漏

2022-02-24 15:32:06 2320 19

原创 Linux详解 --- 信号(捕捉信号、保存信号、处理信号、用户态与内核态的转化)

信号的理解:信号产生之前、信号产生时、处理信号信号的种类、捕捉信号->signal函数、sigaction函数信号产生的方式、保存信号、信号在内核中的结构、信号集操作函数、处理信号、处理信号的时机、用户态与内核态、用户态与内核态的转化、处理信号的过程

2022-02-10 15:47:49 3803 56

原创 Linux详解 --- 进程间通信2 (共享内存、信号量)

共享内存:共享内存的查看及删除、共享内存建立的过程、申请共享内存、将共享存、挂接到进程地址空间中、'去'关联共享内存、释放共享内存、如何使用共享内存信号量

2022-02-06 17:44:38 1928 50

原创 C++异常详解

C语言中处理错误的方式与缺陷、C++异常的介绍、C++异常关键字、异常的使用、异常的抛出和匹配原则、异常的重新抛出、自定义异常体系、异常安全、异常规范、C++标准库的异常体系、异常的优缺点

2022-01-30 17:53:19 2275 30

原创 Linux详解 --- 进程间通信1 (匿名管道与命名管道)

进程间通信的思维导图一览、进程间通信的种类、进程间通信的原理、管道的特点、匿名管道与命名管道的介绍与使用、管道的读写规则

2022-01-28 16:50:32 4387 52

原创 Linux详解 --- 重定向及其原理

重定向的种类、重定向的原理、输出重定向、追加重定向、输入重定向、重定向函数dup2

2022-01-25 18:16:08 3416 5

原创 Linux详解 --- 动静态库的原理与制作

动静态库的识别、动静态库的原理、动静态库的优缺点、静态库动态库制作/打包 动静态库与使用静态库的制作、静态库的使用、动态库的制作、动态库的使用外部库

2022-01-23 20:33:51 666 32

原创 Linux详解 --- 文件系统 (inode与软硬链接)

文件系统(Ext2文件系统)、inode详解、文件操作的本质(文件的创建、写入、删除、拷贝、剪切)、目录与文件、软硬链接的本质与操作

2022-01-13 12:31:21 2026 33

原创 Linux详解 --- 系统文件IO操作与文件描述符

Linux中的IO操作(思维导图一览)语言IO操作与系统IO操作文件描述符详解与底层结构

2022-01-10 12:36:12 3175 34

原创 Linux详解 --- 进程管理3 (进程创建、进程终止、进程等待、进程替换)

进程相关操作:进程创建、进程终止、进程等待、进程替换fork函数用法与参数详解、fork与写时拷贝、进程退出码、exit与return、wait与waitpid、进程替换exec系列函数

2022-01-07 18:53:10 1911 21

原创 Linux详解 --- 进程管理2 (进程状态、环境变量与命令行参数)

进程状态:R、S、D、T、X、Z 的介绍僵尸进程的危害 / 如何避免僵尸进程?环境变量的相关指令、环境变量的导入与使用、环境变量的组织结构命令行参数与环境变量

2022-01-05 19:00:01 2462 35

原创 Linux详解 --- 进程管理1 (进程概念 / 进程优先级)

进程管理思维导图一览本文:进程概念、进程控制块(PCB)、进程优先级与优先级的设置

2022-01-04 19:26:17 1549 19

原创 模板详解 --- 模板的特化与分离编译

文章目录模板的特化函数模板的特化类模板的特化类模板的全特化类模板的偏特化模板的分离编译模板的特化模板的特化就是指:对模板的某一具体类型,做与原模板不一样的处理。函数模板的特化template <class T>bool isEqual(T x1, T x2){ return x1 == x2;}//函数模板的特化template <>bool isEqual<char*>(char* str1, char* str2){ return !str

2021-08-18 11:50:03 565 2

原创 模板详解 --- 函数模板与类模板

我们为什么要使用模板?C++使用模板的目的是为了解决C语言中无法解决的一个关键问题。假如在C语言中我们在一个源文件里面写了一个栈,现在要求你使用同一个栈的类型去创建2个栈,一个栈中的数据存储int类型,另一个存储double类型。你会发现你没办法实现这个功能。然而在C++中,我们可以通过使用类模板,同时实例化出一个int类型的栈和一个double类型的栈。除此之外,使用模板是符合泛型编程的理念的。模板是干什么的?模板就是如字面意思一样,它只是一个模板,但是当我们使用函数模板/类模板去实例化对象的时候,编

2021-07-17 20:54:27 1352 2

原创 C++类中的六大默认成员函数

1

2021-04-11 17:35:33 2597 7

原创 程序的环境与函数重载

在ANSI C的实现中,存在2种环境:翻译环境和运行环境。翻译环境在翻译环境下,程序的编译可以被分为编译和链接2个部分,其中编译还可以被分为预处理、编译、汇编。下图是程序的编译过程。组成一个程序的每个源文件通过编译器的编译最终都会变成其对应的目标代码 每个目标文件由链接器捆绑在一起,最终形成一个单一且完整的可执行程序 链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库, 将其需要的函数也链接到程序中编译和链接接下来再通过一张图去概括编译.

2021-04-04 20:12:12 2696 7

原创 快速排序的三种实现方法及非递归实现快排

快速排序

2021-03-26 22:25:44 6114 8

原创 TopK问题的三种解法

TopK问题是指从n个数据中取前K个数据,在生活中的应用也有很多,如游戏中xxx的排行榜前10名等。在这篇博客中我将主要利用堆去解决TopK问题。堆排序首先我们需要建一个堆,然后我们再进行堆排序,排好序后直接取前K个就可以了。需要注意的是在使用堆排序的时候,我们需要确定我们要排升序还是降序。如果是升序的话,我们要建一个大根堆;如果是降序的话,我们要建一个小根堆。思路:(可以结合图来进行分析) 这里我们以排降序为例子进行说明,建好小根堆后,我们将堆顶元素与堆中的最后一个元素进行互换 (让最小的元素..

2021-03-19 16:33:04 5864 9

原创 结构体,位段,枚举和联合的使用详解

结构体谈到结构体,我们会关注结构体的声明,结构体的自引用和结构体的大小等问题。接下来我们主要来分析一下结构体的大小是如何计算的,而结构体的大小又是与结构体中的内存对齐息息相关,我们通过对结构体中的内存对齐进行分析来得到结构体的大小。结构体中的内存对齐结构体中的内存对齐原则:第1个成员在与结构体变量偏移量为0的地址处。 从第2个成员开始,就要对齐到“对齐数”的整数倍的地址处了 对于嵌套了结构体的结构体,嵌套的结构体要对齐到 自己的最大对齐数 的整数倍处 结构体的总大小是 最大对齐数 的

2021-03-08 11:05:47 1119 1

空空如也

空空如也

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

TA关注的人

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