自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 详谈 Linux进程控制(看这一篇就够了)

本文将系统介绍进程控制的基本要素,包括进程创建, 进程终止, 进程等待, 进程替换等方面。深入理解进程创建的相关知识, 帮助更好的构建知识架构!酷酷学!!!进程控制是操作系统中的一个重要主题,主要涉及如何管理和调度进程以确保计算机系统的高效运行。如果感觉本篇博客对你有帮助的话就点个关注吧~

2024-12-02 22:01:18 1858 69

原创 使用基数树优化高并发内存池(替代加锁访问的哈希表和红黑树)

优化tcmalloc高并发内存池,基数树

2025-04-16 20:18:16 1621 7

原创 Linux__之__基于UDP的Socket编程网络通信

本篇博客旨在使用Linux系统接口进行网络通信, 帮助我们更好的熟悉使用socket套接字网络通信, 学会了socket网络通信, 就能发现所谓网络, 不过都是套路而已, 话不多说, 让我们直接进入代码编写部分.

2025-03-23 18:19:30 1407 1

原创 Linux软硬链接与动静态库

我们看到, 真正找到磁盘上文件的并不是文件名, 而是inode, 其实在linux中可以让多个文件名对应于同一个inode.硬链接是通过inode引用另外一个文件, 软链接是通过名字引用到另外一个文件, 但实际上, 新的文件和被引用的文件的inode不同, 应用场景上可以想象成一个快捷方式, 在shell中的做法:硬链接:软链接库是写好的现有的, 成熟的, 可以复用的代码. 现实中每个程序都要依赖很多基础的底层库, 不可能每个人的代码都是从零开始, 因此库的存在意义非同寻常.本质上来说库是一种可执行代码的

2025-02-18 20:31:45 916

原创 Linux Ext系列文件系统(看这一篇就够了!)

硬盘是典型的"块"设备, 操作系统读取硬盘数据的时候, 其实是不会一个个扇区地读取, 这样效率太低, 而是一次性连续读取多个扇区, 即一次性取⼀个”块”(block)。硬盘的每个分区是被划分为⼀个个的”块”。⼀个”块”的⼤⼩是由格式化的时候确定的,并且不可以更改,最常⻅的是4KB,即连续⼋个扇区组成⼀个”块”。”块”是⽂件存取的最⼩单位。注意磁盘就是⼀个三维数组,我们把它看待成为⼀个"⼀维数组",数组下标就是LBA,每个元素都是扇区每个扇区都有LBA,那么8个扇区⼀个块,每⼀个块的地址我们也能算出来。

2025-02-16 19:13:59 829

原创 Linux 之 详谈系统I/O文件及内核级缓冲区(看这一篇就够了)

读写⽂件时,如果不会开辟对⽂件操作的缓冲区,直接通过系统调⽤对磁盘进⾏操作(读、写等),那么每次对⽂件进⾏⼀次读写操作时,都需要使⽤读写系统调⽤来处理此操作,即需要执⾏⼀次系统调⽤,执⾏⼀次系统调⽤将涉及到CPU状态的切换,即从⽤⼾空间切换到内核空间,实现进程上下⽂的切换,这将损耗⼀定的CPU时间,频繁的磁盘访问对程序的执⾏效率造成很⼤的影响。因为标准I/O库每⾏的缓冲区⻓度是固定的,所以只要填满了缓冲区,即使还没有遇到换⾏符,也会执⾏I/O系统调⽤操作,默认⾏缓冲区的⼤⼩为1024。

2025-02-15 16:32:48 1092

原创 进程地址空间

我们在学习C语言的时候想必大家对这张图并不陌生, 这里可以理解为每一个进程都认为自己是独占系统物理内存大小, 进程之间,彼此不知道, 不关心对方的存在, 从而实现一定程度隔离!那么操作系统是如何进行管理的呢?所谓的进程虚拟地址空间, 本质是一个内核数据结构(类似PCB)。父子进程的全局变量的地址是一样的, 但是变量内容不一样!OS负责将虚拟地址转化为物理地址。

2024-12-01 14:10:31 236 1

原创 Linux自动化构建-make/Makefile

不管是源文件, 还是可执行程序, 都是文件, 程序可不可总是被执行就是看mtime的时间, 如果没有修改proc.c的m时间,只修改了proc.exe的时间, 那么表示exe比.c更新,编译器就认为没有必要再重新编译了, 相反如果.c的mtime时间更新,那么就可以重新编译生成新的可执行程序。以下简称acm时间, a表示最近一次访问的时间, M表示内容最近被修改的时间, C表示最近一个属性被修改的时间。依赖关系:右侧的依赖文件, 一个一个的交给gcc -c选项, 形成同名的.o文件。

2024-11-27 19:02:58 913

原创 Linux 进程概念与进程状态

计算机管理硬件

2024-11-22 21:25:59 1246

原创 算法专题十一: 基础递归

3. 当N = 3时跟N = 2的思路一样, 先把B上的n-1个盘子转移到B上(借助C),再把A上的最后一个盘子转移到C上, 最后将B上的盘子转移到C上(借助A),算法原理:这个就是求x的n次方, 如果使用暴力解法, 当n特别大时是会超时的, ,那么我们采用第二种思路, 递归的思想。解决大问题时具有相同的子问题时,解决子问题又出现相同类型的子问题时就可以使用递归。当链表为空或者只有一个节点, 返回当前节点即可,即为递归出口。先比大小,让小的那个节点连上后面合并好的链表。递归:宏观视角理解递归。

2024-11-22 19:55:06 659

原创 Linux基础指令(汇总)

tail命令从指定点开始将文件写到标准输出,使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename⾥最尾部的内容显⽰在屏幕上,并且不断刷新,使你看到最新的⽂件内容.-a 将所有章节的都显示出来,比如man printf它缺省从第一章开始搜索,知道就停止,用a选项,他会继续继续往后搜索直到所有章节搜索完毕,当按下q退出。如同时指定两个以上的文件或者目录, 且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。

2024-11-21 15:16:48 2137 1

原创 Linux环境搭建:如何使用云服务器

我们点击下载第一个, 下载之后可以任意安装路径, 下载之后点击打开,第一次登录时可能需要验证, 这里用户名可以随意填写,邮箱填写自己的邮箱进行验证, 之后就进入到了XShell的界面。在此界面展示的是轻量级云服务器, 如果需要其他的产品,可以点击控制台界面检索需要购买的产品, 我们以Flexus服务为例。选择自己需要的产品,之后下一步, 这里区域选择利自己最近的区域, 选择对应的镜像以及版本,最后点击购买。点击云服务器, 这里我们就可以查看到我们自己的云服务, 点击重置密码,记住这里的公网IP。

2024-11-20 17:08:50 458

原创 Linux中编译器-gcc/g++的使用

Linux中编译器-gcc/g++的使用

2024-11-06 18:08:14 800 2

原创 C++智能指针

智能指针来解决资源的自动管理

2024-11-04 15:04:56 936 1

原创 C++11中lambda表达式与包装器

lambda的用法和包装器function, bind

2024-10-25 13:54:12 1006

原创 算法专题十: 栈+BFS

使用栈和广度优先搜索(BFS)算法都是常见的图形和树形结构遍历方法

2024-10-24 20:37:35 846

原创 算法专题九: 哈希表与字符串

哈希表leetcode刷题和字符串刷题

2024-10-21 11:07:25 1085

原创 算法专题八: 链表

常用技巧画图!!!更加直观形象, 便于我们理解引入虚拟头节点, 方便我们对链表的操作, 减少我们对边界情况的考虑. 如果没有虚拟头节点我们可能还需要考虑头插时候的情况进行特殊处理3. 不要吝啬空间, 大胆定义变量4. 快慢双指针, (判环, 找链表中环的入口, 找链表中倒数第n个节点)链表中的常用操作创建一个新的节点 使用new尾插的方法头插的方法 (逆序链表)

2024-10-19 16:42:23 1372 1

原创 算法专题七: 分治归并

使用归并的思想解决问题

2024-10-16 16:03:03 1178 1

原创 C++11新特性 右值引用与新的类功能

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。

2024-10-14 21:35:11 1091 1

原创 算法专题六: 模拟与分治快排

本篇题目为模拟和数组分三块快排算法与快速选择算法

2024-10-13 12:42:04 1126

原创 算法专题五: 位运算

本文将介绍位运算常见的用法总结, 以及题目解析

2024-10-09 20:10:08 1541 2

原创 算法专题四: 前缀和

本文继续讲解算法专题, 利用前缀和思想求解

2024-10-07 21:10:33 2275 51

原创 算法专题三: 二分查找

本文即讲解朴素二分算法与左右端点的二分算法

2024-10-05 15:30:36 1547 1

原创 算法专题二: 滑动窗口

本文介绍滑动窗口算法思路, 以及题目讲解

2024-10-01 19:38:57 1561

原创 C++: unordered系列关联式容器

本文讲解unordered系列关联式容器, 带你走进哈希的魅力

2024-09-24 19:46:36 1639 63

原创 C++: 使用红黑树模拟实现STL中的map和set

模拟实现map和set细节和代码

2024-09-20 16:47:38 1331 35

原创 C++: 红黑树

红黑树, 一种二叉搜索树, 但在每个节点上增加一个存储位表示节点的颜色, 可以是Red或者Black.

2024-09-17 22:08:13 1159 51

原创 C++: AVL树

AVL树: 当向二叉搜索树中插入新节点后, 能保证每个节点的左右子树高度之差的绝对值不超过1

2024-09-16 19:03:03 2011 36

原创 C++: 二叉树进阶面试题

一些面试中可能会遇到的二叉树的进阶题目

2024-09-15 13:46:49 1683 40

原创 C++: set与map容器的介绍与使用

这里map和set的特性需要先铺垫二叉搜索树, 而二叉搜索树也是一种树形解构, 二叉搜索树的特性了解, 有助于更好的理解map和set的特性

2024-09-09 18:26:36 3856 56

原创 算法专题一: 双指针

常见的双指针有两种形式,一种是对撞指针,一种是左右指针。

2024-09-07 14:59:34 2021 86

原创 C++三大特性之多态详解

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为

2024-09-04 23:29:06 2207 33

原创 C++中的继承

继承机制是面向对象程序设计使代码可以复用的最重要的手段, 它允许程序员在保持原有类特性的基础上进行扩展, 增加功能, 这样产生新的类, 称派生类

2024-09-02 22:31:52 1634 3

原创 C++第十四弹 -- STL之queue和priority_queue深度剖析

C++之队列与优先级队列,想要使用堆结构如何做

2024-08-30 10:10:51 1856 5

原创 C++第十三弹 -- STL之stack深度剖析与模拟实现

本文将重点介绍STL中的stack容器

2024-08-27 09:13:43 1602 21

原创 C++第十二弹 -- STL之list模拟实现

通过模拟实现可以让我们更加深刻的理解C++底层STL的实现逻辑

2024-08-21 17:10:03 1475 21

原创 C++第十一弹 -- STL之List的剖析与使用

list是C++标准模板库中的一种容器, 它是一个双向循环链表, 能够在任意位置进行插入和删除操作.

2024-08-19 20:12:26 1776 20

原创 LeetCode之vector

LeetCode和牛客网 vector相关题目解析

2024-07-29 14:11:14 1740 2

原创 vector深度剖析及模拟实现

模拟实现vector的核心接口, 理解底层逻辑, 对vector的深度剖析.

2024-07-27 14:22:38 1339

空空如也

空空如也

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

TA关注的人

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