- 博客(169)
- 收藏
- 关注

原创 初识C++ · 基于红黑树封装map + set
这部分是挺有难度的,因为套了好几层关系,涉及到关系层大概有4层左右,但是呢,多花点时间即可,更重要的还是细心部分,其次就是逐个的去捋清楚每层的关系即可,细心 + 耐心,这里就通关了。
2024-07-31 18:10:10
2858
170
原创 初识MySQl · 内置函数
在前文的学习我们已经简单了解了部分函数,比如count()函数什么的,今天我们主要是笼统的学习一下MySQL中的函数,仅仅从使用的角度来学习,如果要深究下去可能需要学习到事务部分了,那么因为事务还没有学习,所以我们这里就只讲怎么使用了。那么废话不多说,直接进入主题吧!
2025-03-28 22:27:53
719
原创 网络基本概念认识(2)
本文同样作为博主的二刷网络课程的文章,主要涵盖的主题还是网络基本概念的认识,从上一篇文章遗漏的点加上引入的一些知识点共同组成当前的知识点。在这篇文章收尾之后,我们就会开始愉快的TCP UDP IP ARP Cookie Session......之旅,所以在面临风暴之前,我们还是尽可能的将网络基础部分理解吧。局域网的分类,第二次认识协议,认识MAC地址IP地址,理解网络通信中的socket编程等。当然了,重点在于...其实都是重点哈哈哈。那么废话不多说,我们直接进入主题吧!!
2025-03-28 15:19:51
1412
原创 初识MySQL · 数据类型
对于MySQL来说,是一门编程语言,可能定义不是那么的严格,但是对于MySQL来说也是拥有自己的数据类型的,比如tinyint,varchar等,不过通过本章的学习,你就会知道,这里的数据类型其实和C语言中的数据类型挺像的。废话不多说,我们直接进入主题。
2025-03-27 10:27:26
622
原创 初识MySQL · 约束
对于约束来说,是一种限制数据的方式,这里的约束和生活中的约束是差不多的,比如数据来说,生活中的语文成绩在150以内,0分以上,如果有谁给你说我语文考了151分,那指定是扯淡,同样的,拿我们班级中的学号来举例,学号不能有重复的吧?在MySQL中就可以通过主键或者是唯一键来约束数据不能重复,等等等等。说白了,我们学习这里的约束和结合生活中的场景是非常容易理解的,那么话不多说,我们直接进入主题。
2025-03-26 15:29:31
972
原创 初识算法 · 递归算法(1)
面试题 08.06. 汉诺塔问题 - 力扣(LeetCode)21. 合并两个有序链表 - 力扣(LeetCode)206. 反转链表 - 力扣(LeetCode)相信大家对于递归有了一定的了解,所以在这里,什么是递归,递归的概念定义什么的,咱也就不介绍了,不过在本文会着重介绍递归算法的核心思想,废话不多说,咱们直接进入主题。
2025-03-26 15:29:20
1123
原创 高并发内存池 · central cache编写
在前文我们介绍了高并发内存池的整体框架,并且编写了thread cache部分,本文续高并发核心框架开始编写第二层框架,即centralcache。首先是central cache的结构,它整体的构造也是一个哈希桶映射的结构:整体开起来几乎和thread cache没有太大的区别,要是较真说它们之间的区别,就是freelist管理的链表不一样,对于threadcache,管理的直接就是不同大小的内存块,对于central cache,管理的是span对象,那么span是什么我们暂时先不讨论。
2025-03-10 11:09:51
754
原创 初识Linux · Socket理论基础
在前文我们介绍了什么是协议,网络的发展史,以及协议的本质是什么,并且介绍了网络通信分为几种,一种的局域网通信,一种是本地通信,其中局域网通信分为了大致三种,令牌环,以太网,以太网的变种-无线WLAN,还介绍了OSI七层模型,TCP五层/四层模型等。
2025-03-07 11:50:52
1009
原创 高并发内存池 · 整体框架认识和thread cache编写
在第一篇文章中,我们介绍了内存池的基本概念,引入了新话题,内存碎片,在内存碎片这个话题中,我们了解到了有两个概念,一个是外碎片,对于外碎片我们的理解是地址空间中因为容量太小,没法直接被分配的空间,另一个是内碎片,对于内碎片的问题在定长内存池我们暂时无法理解,但是在本节内容,我们可以对内碎片有一个非常形象的理解。那么对于上节内容的定长内存池,我们对于定长的理解不是该内存池的空间是定的,而是申请出去的对象的大小是定的,所以对于定长内存池来说,能使用的只能某个对象,局限性比较大。
2025-03-07 11:50:45
618
原创 高并发内存池 · 基本认识
本文呢开始搞搞项目咯,于是准备从一个最经典的项目入手--tcmalloc,也就是从谷歌开源出来的一个高并发内存池项目,要说这个项目有多牛*呢,就这么说吧,GO语言是直接将其作为了自己的内存的回收机制。但是因为该项目来源于谷歌,并且开源,也就代表了当时顶尖的C++高手是去写的,那么难度可想而知,所以我们这里呢,就实现一个min版本的,了解一下核心,就和当时我们学习stl一样。
2025-03-06 20:06:26
1708
原创 初识Qt · 信号与槽总结
对于信号和槽的部分我们这里算是大的知识点已经介绍完了,那么本文的重点就是放在对信号槽的一个总结,当然,对于信号和槽我们还有两个小的知识点没有介绍到,即disconnect和lambda表达式在这里的应用。在这里也会一并介绍到。最后就是信号与槽的一个意义了,咱们了解即可~1.理解基本的信号概念和槽的概念:在这里我们理解到了Linux中的信号和Qt中的信号其实差别没有那么大,可以说挺像的,然后理解了信号和槽本质是一个函数。2.信号槽的基本使用和如何查阅文档。
2025-03-06 20:06:18
840
原创 初识Qt · 信号与槽 · 自定义和参数
目前接触到的函数是connect,当我们使用的时候,我们发现connect关联的信号和槽,即便是函数,也是Qt中已经存在的,即内置函数,那么我们是否能够自己自定义信号或者说是自己自定义槽函数呢?当然是可以的。其实这么说都有点废话了,应该槽函数我们已经自定义了,对于内置槽函数我们也看过了,即锯齿状的是槽函数,波纹状的是信号。那么本文,我们将来学习,如何自定义。private:但是实际上现在Qt5版本和6版本是不用这样写的了。
2025-03-05 18:52:47
1257
原创 初识Qt · 信号与槽 · 基础知识
本文我们正式开始介绍信号与槽这个概念,在谈及Qt中的信号与槽这个概念之前,我们不妨回顾一下Linux中的信号,比如发生了除0错误,OS就会给该进程发送一个信号,使该进程终止。那么Linux中涉及信号的时候,涉及到了谁发出的,什么信号,执行的行为,谁接受的。在我们前文熟悉Qt的整个框架的时候,使用的函数connect,参数分别就是上面涉及到了四个点,所以实际上Qt中的信号和Linux中的信号是有很多相同点的,那么有了Linux的基础,在这里学习Qt我们就要轻松很多了。
2025-03-05 18:52:27
687
原创 初识Qt · 信号与槽(2)
本文我们正式开始介绍信号与槽这个概念,在谈及Qt中的信号与槽这个概念之前,我们不妨回顾一下Linux中的信号,比如发生了除0错误,OS就会给该进程发送一个信号,使该进程终止。那么Linux中涉及信号的时候,涉及到了谁发出的,什么信号,执行的行为,谁接受的。在我们前文熟悉Qt的整个框架的时候,使用的函数connect,参数分别就是上面涉及到了四个点,所以实际上Qt中的信号和Linux中的信号是有很多相同点的,那么有了Linux的基础,在这里学习Qt我们就要轻松很多了。
2025-03-04 22:22:01
992
原创 初识Qt · 实现Hello world的N种细节和坐标系
前文我们花费了许多时间,介绍了使用label实现hello world的多种细节,主要是包括了纯代码的方式和图形化的方式是否会引发内存泄漏和乱码的问题,从而引出了QT在这两个方面的具体处理,剩下的小点就是ui界面插入控件之后的xml格式的ui文件发生了哪些变化,加上简单理解了一下对象树的概念。在本文,我们学习使用其他的方式打印Hello world,并且介绍其中隐藏的细节。那么废话不多说,进入主题吧!可能到这里部分同学看的是比较乱的,我们不妨简单总结一下。
2025-03-04 22:21:49
954
原创 初识Qt · 实现hello world的N种细节和对象树
继上文我们了解了QT的环境,历史的基本知识,以及了解了如何创建一个项目,项目的内容都包括什么,本文我们学习的是如何在GUI界面上打印Hello world,重要的不是hello world本身,而是在hello world背后牵扯到的N个知识点。那么废话不多说,直接进入主题吧!
2025-03-03 19:31:37
877
原创 初识Qt · Qt的基本认识和基本项目代码解释
虽然现在学习了Linux的系统部分,C++,以及部分数据结构,也了解了一下git的相关内容,但是呢,对于向外拓展的方面笔者感觉并不是很充实,对于Qt,对于算法,对于MySQL等都没有具体了解过,所以笔者最近也是突然有了点内驱力了,打算在这个假期更新完Qt,至少咱们更新完能结合数数据库写一个项目,项目的话呢,就是仿QQ音乐的一款播放器吧!其实我是想要仿制酷狗的,后面看吧,其实都一样。
2025-03-03 19:31:17
946
原创 2024走你,2025的小飞棍来咯~
1.2024年我学到了什么技术2.2024年我如何平衡学校和代码3.2024年我的博客有了哪些进展当然咯,总结2024年的同时,也就顺便参加参加博客之星的这个活动了,不过是陪跑就是了哈哈。
2025-01-23 22:45:11
929
1
原创 初识Linux · 网络基础
本文作为Linux网络学习的第一篇文章,相对来说概念还是偏多的,甚至于概念让人觉得晦涩,这是非常正常的,那么进入网络部分之前,我们不妨思考一下,为什么会有网络?对于一个业务来说,交互数据的时候,要求的是“快准狠”,那么如果一个人在地球北端,一个人在地球南端,数据传输可想而知有多慢,即便是拿马车来说,时间也是消耗不起的,因为时效性问题。
2024-12-13 02:15:00
6726
75
原创 初识Linux · 系统编程done
本文作为Linux系统编程的收尾工作,介绍的是些零碎的概念,比如死锁,可重入函数,自旋锁,读写锁等,其中死锁概念要重要些,对于自旋锁,读写锁来说都没有那么重要,所以咱们了解一下即可。那么废话不多说,我们直接进入第一个主题,死锁。
2024-12-13 00:00:00
1064
28
原创 初识Linux · 日志编写
在线程池部分我们纵观全文,可以发现全文有很多很多的IO流,看起来还是差点意思的,而我们今天提到的日志,是在今后的代码编写中会经常接触,或者说在这之前,我们也接触过日志,不过我们没有注意而已,比如平常常用的电脑,强制关机什么的都会在日志里面。接下来,我们将简单介绍一下日志的相关知识,然后进行编写。
2024-12-12 00:15:00
1592
26
原创 初识Linux · 线程池
前文我们介绍了基于线程同步和互斥两种关系的一种模型->生产消费模型,那么之前在学习进程的时候我们已经编写过了进程池,同理,学习线程的时候我们也要编写线程池。那么对于线程池的编写,我们也不废话,直接进入主题。
2024-12-12 00:00:00
590
13
原创 初识Linux · 编写生产消费模型(2)
前文我们介绍了基于阻塞队列实现生产消费模型,使用阻塞队列实现生产消费模型中,我们学习到了pthread_cond_wait的第二个参数的重要性,不仅会解锁,此时锁被其他人持有,当条件满足的时候,就重新竞争锁,所以在pthread_cond_wait函数这里是不会存在死锁的。第二个重要的条件是while,首先不说函数等待失败,直接造成错误的情况,如果多个消费者同时在等待,但是只有一把锁,这种情况就需要重新判断,所以使用的while,以上是前文两个比较重要的讨论。
2024-12-11 00:15:00
1860
27
原创 初识Linux · 编写生产消费模型(1)
前文我们花了大量篇幅介绍了线程同步的概念,同时引出了条件变量,认识了相应的接口,并且快速编写了一个简单的测试用例见识了一下条件变量的使用,并且有意思的是,在Ubuntu环境下,man不了条件变量对应的接口,所以想要查询对应的接口可以使用对应的centos系统。介绍完线程同步之后,我们花了不少的篇幅介绍了生产消费模型,引出了321原则,即一个交易场所,两个角色,三种关系,其中的重点是三种关系,我们编写生产消费模型的时候,主要是要注重关系。其中,对于生产消费模型,第一种生产消费模型的编写我们使用阻塞队列。
2024-12-11 00:00:00
1487
13
原创 初识Linux · 线程同步
前文我们介绍了线程互斥,线程互斥是为了防止多个线程对临界资源访问的时候出现了对一个变量同时操作的情况,对于线程互斥来说,我们使用到了锁,而加锁的过程是原子性的,所以不用担心时间片轮转的时候发生错误,那么加锁的过程为什么是原子的我们也介绍了,因为加锁用到了cpu指令集中的swap指令,直接将内存中的值和寄存器中的值切换,只有一个汇编语句,所以是原子的。以上是对于线程互斥部分的一个简单总结,本文,我们来介绍线程同步。
2024-12-10 00:15:00
976
12
原创 初识Linux · 线程互斥
本文的主题是线程互斥,但是我们不能光单独的把概念引出来,我们肯定要一个场景,所以我们将抢票这个场景引出来,模拟一下抢票的场景,随即引出今天的主题。那么对于线程互斥这个主题,我们从以下几点介绍:认识锁和它的接口->解决历史问题->原理角度理解锁->实现角度理解锁。当然了,因为没有理解抢票这个场景,所以我们暂时不知道锁是什么是正常的,那么,直接进入主题吧!
2024-12-10 00:00:00
1015
11
原创 初识Linux · 线程控制(2)
在前面Linux的线程控制1中,我们介绍了如下的几个问题:主线程和子线程的执行顺序,主线程先退出还是子线程先退出,什么是tid,全面看待线程函数传参,全面看待线程函数的返回值。以上是N个子问题的部分问题,本文,我们要学习N个子问题的剩余问题以及我们要简单的模拟实现一下线程。那么话不多说,我们直接进入主题吧!
2024-12-09 00:43:34
651
10
原创 初识Linux · 线程控制(1)
前文我们已经介绍了线程的基本概念,知道查看线程是使用ps -aL查看,并且因为线程的特殊性,我们必须在用户层和操作系统层面接一层库,也就是线程库,编译程序的时候需要将程序link到线程库里面。我们也见识了最基本的线程创建,使用函数pthread_createa,但是仅仅从创建来学习线程,或者说仅仅从概念中学习线程的所有内容实在是有一点不可靠,所以本文我们介绍线程的各种操作。大体的介绍思路是我们从各种角度的问题出发,问题介绍的差不多了,欸我们不妨自己试试模拟实现一个所谓的线程。int main()
2024-12-09 00:43:25
953
6
原创 初识算法 · 分治(3)
本文的主题是分治,通过两道题目讲解,一道是归并排序,一道是求逆序对。912. 排序数组 - 力扣(LeetCode)LCR 170. 交易逆序对的总数 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。
2024-11-21 22:32:26
3182
69
原创 初识算法 · 分治(2)
本文的主题是分治,通过两道题目讲解,一道是数组中的第k个最大元素,一道是最小的k个数。链接分别为:215. 数组中的第K个最大元素 - 力扣(LeetCode)LCR 159. 库存管理 III - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。
2024-11-21 16:40:04
1237
20
原创 初识算法 · 分治(1)
本文的主题是分治,通过两道题目讲解,一道是颜色分类,一道是排序数组。链接分别为:75. 颜色分类 - 力扣(LeetCode)912. 排序数组 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。
2024-11-20 22:47:18
1013
13
原创 初识Linux · 线程概念
Linux的学习从开始到现在,我们已经经历了许多大boss,从一开始的熟悉指令,到第一次在gcc环境下编译C语言的代码,到理解文件系统,比如理解了文件的权限,万物皆文件的概念,此时,是我们经历的第一次大boss,文件系统。
2024-11-20 21:10:39
1199
6
原创 初识算法 · 模拟(2)
本文的主题是模拟,通过两道题目讲解,一道是Z字形变化,一道是数青蛙。1419. 数青蛙 - 力扣(LeetCode)6. Z 字形变换 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。
2024-11-18 23:12:33
1235
12
原创 初识Linux · 信号处理 · 续
在前文,我们已经介绍了信号产生,信号保存,信号处理的主题内容,本文作为信号处理的续篇,主要是介绍一些不那么重要的内容,第一个点是可重入函数,第二个点是在信号处理这里的进程等待。那么话不多说,我们进入主题吧!
2024-11-18 20:33:04
1283
9
原创 初识算法 · 模拟(1)
本文的主题是模拟,通过三道题目讲解,一道是提莫攻击,一道是替换所有的问好,一道是外观数列。链接分别为:1576. 替换所有的问号 - 力扣(LeetCode)38. 外观数列 - 力扣(LeetCode)495. 提莫攻击 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。
2024-11-17 21:36:38
1335
17
原创 初识Linux · 信号处理
按照信号学习的时间戳,从信号的预备知识,到信号的产生,到了信号的保存,终于,我们进入了信号学习的尾声,信号处理部分。那么,信号处理部分,我们介绍的顺序是从捕捉信号入手,到多个子问题,子问题包括了内核态VS用户态,其中要了解的是再谈地址空间,谈谈键盘输入数据的过程,谈谈如何理解OS正常的运行,在OS正常运行这里,理解系统调用,理解OS如何运行的,最后是内核态和用户态的VS。那么话不多说,我们直接进入主题吧!
2024-11-17 20:15:45
1074
7
原创 初识算法 · 位运算(end)
面试题 17.19. 消失的两个数字 - 力扣(LeetCode)还是和前文一样,通过三个部分介绍,题目解析,算法原理,算法编写来介绍。那么话不多说,进入主题吧!题目解析题目的要求十分简单,是让我们在一段连续数字区间里面找到缺失两个数字,数字的区间是从1到N的。要求非常简单。所以我们直接进入到算法原理部分。算法原理268. 丢失的数字 - 力扣(LeetCode)260. 只出现一次的数字 III - 力扣(LeetCode)
2024-11-15 22:22:32
951
30
原创 初识Linux · 信号保存
前文我们已经介绍了信号产生,在时间的学习线上,信号的学习分为预备知识,信号产生,信号保存,信号处理,本文我们学习信号保存,在前言部分,我们介绍几个信号保存中的概念。信号递达:实际执行信号的处理动作。信号未决:信号从产生到递达之间的状态。对于信号产生之后,在递达的这个过程,成为未决,就像老师给你布置了作业,你接受到了做作业的这个信号,但是因为贪玩,不想做,这个状态,就是未决。
2024-11-15 21:49:51
1310
9
原创 初识算法 · 位运算(3)
本文的主题是位运算,通过两道题目讲解,一道是只出现一次的数字II,一道是两整数之和。链接分别为:137. 只出现一次的数字 II - 力扣(LeetCode)371. 两整数之和 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。。
2024-11-14 23:38:41
611
17
sort.h排序算法的实现
2024-09-19
C语言中的字符异位词分组
2024-09-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人