自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++入门———命名空间及输入输出

C++的命名空间及输入输出

2024-11-25 20:02:43 1114

原创 动态规划(二)

目录回文串问题回文字串(1)题目(2)解题思路(3)代码实现最长回文字串(1)题目(2)解题思路(3)代码实现分割回文串(1)题目(2)解题思路(3)代码实现分割回文字串II(1)题目(2)解题思路(3)代码实现最长回文子序列(1)题目(2)解题思路(3)代码实现让字符串成为回文串的最少插入次数(1)题目(2)解题思路(3)代码实现最长公共子序列(1)题目(2)解题思路(3)代码实现不相交的线(1)题目(2)解题思路(3)代码实现不同的子序列(1)题目(2)解题思路(3)代码实现通配符匹配(1)题目(2)解

2026-02-03 14:48:06 740

原创 五种IO模型---(从钓鱼的视角出发)

IO = 等 + 拷贝。

2026-02-02 21:17:14 889

原创 传输层————TCP/UDP

客户端和服务端约定的结构化字段内核认为端口号为16位 报头和有效载荷分离如何做到 报头长度是固定的结构体位端中的比特位,0(无效)1(有效)1、验证全双工验证双方都可以收发消息,网络是通畅的2、建立双方要通信的共识三次握手的本质其实是四次握手,因为捎带应答,变成了三次,一发一答确立的双方要通信的共识互发消息write本质是拷贝,将信息拷贝到发送缓冲区中。双方建立要结束链接的共识指的是暂时无需等待确认应答而可以继续发送数据的最大值。

2026-01-31 20:29:16 998

原创 Liunx线程安全

一、线程互斥1、进程线程间的互斥相关背景概念2、互斥量(1)互斥量的引出(2)互斥量的接口(3)实现锁的方式(4)锁的封装​编辑二、同步1、条件变量(1)概念(2)同步概念和竞态条件(3)条件变量接口(4)代码演示三、生产消费者模型1、概念2、总结3、代码实现4、条件变量的封装四、信号量1、信号量的引入2、信号量接口3、生产消费模型场景(基于环形队列)代码实现五、日志书写六、线程池七、线程安全的单例模式

2025-11-01 11:59:52 1157

原创 线程基本概念

目录一、线程的基本概念二、进程和线程的对比三、重谈地址空间(1)页表的作用(2)物理内存管理四、虚拟到物理地址的转化页表的原理五、线程(1)POSIX 线程库(2)Linux 中多线程的实现——内核角度(3)线程接口线程创建LWD VS pthread_t线程等待线程退出线程分离 (4)线程切换(5)Linux 的线程vs 进程1、进程和线程的区别2、特点线程崩溃六、c++实现线程库

2025-10-30 19:53:30 916

原创 专题四——位运算

左移 ,》右移 ,~取反, &与运算(有0就是0),| 或运算(有1就是1) ^ 异或运算:相同为0 ,相异为1(无进位运算)

2025-10-29 17:32:08 853

原创 Linux进程信号

操作系统是一个基于中断工作的软件集合信号处理,不是立即处理,而是从内核态到用户态的时候检查三张表,进行信号捕捉。

2025-10-29 17:30:16 1405

原创 算法———栈

在一些题目中我们可以使用一、算法解析二、题目删除字符串中所有相邻重复项(1)题目(2)解题思路(3)代码实现比较含退格的字符串 (1)题目(2)解题思路(3)代码实现基本计算机II(1)题目(2)解题思路(3)代码实现字符串解码(1)题目 (2)解题思路(3)代码实现​编辑验证栈序列(1)题目(2)解题思路(3)代码书写栈来化简题目。

2025-10-28 19:17:46 317

原创 进程间通信

一、进程通信的概念二、进程间通信的目的三、进程间通信的本质四、进程通信的分类管道管道的概念管道的底层原理管道的demo代码管道的定义匿名管道的4种情况和5大特性命名管道命名管道原理命名操作命名管道和匿名管道的区别System V共享内存共享内存的组织共享内存操作用共享内存实现通信共享内存的特征总结消息队列消息队列的本质描述消息队列信号量信号量的概念信号量的本质信号量描述信号量接口为什么用信号量

2025-10-28 19:13:23 1004

原创 算法之动态规划

一、动态规划介绍二、题目第N个泰波那契数(1)题目(2)解题思路(3)代码实现三步问题(1)题目(2)解题思路(3)代码实现最小花费爬楼梯问题(1)题目(2)解题思路(3)代码实现解码方法(1)题目(2)解题思路(3)代码实现不同路径(1)题目(2)解题思路(3)代码实现不同路径II(1)题目(2)解题思路(3)代码实现珠宝价值最高问题(1)题目(2)题目解析(3)代码实现下降路径最小和

2025-10-26 18:36:42 1132 3

原创 库的认识和制作

库的概念库的基本原理库的认识库的分类静态库(1)静态库原理(2)静态库的打包(2)静态库的使用(3)总结动态库(1)动态库的打包(3)动态库的使用动静态库的选择ELF格式ELF Header理解ELF Header如何看待文件位置SectionProgram header table 总结理解链接与加载静态链接结论动态库链接

2025-10-26 18:11:40 688

原创 专题二———滑动窗口

专题二———滑动窗口

2025-09-21 21:07:41 571

原创 一篇文章搞定 ——————递归、搜索与回溯

一、什么时候会用到递归二、如何理解递归 1、递归展开的细节图 2、宏观的看待递归的问题3、如何写好一个递归三、搜索  深度优先遍历  深度优先搜索   宽度优先遍历   宽度优先搜索  暴搜(1)深度 vs 宽度(2) 搜索 vs 遍历(3)搜索 vs 暴搜四、题目汉诺塔问题(1)题目​编辑(2) 解题思路(3)代码书写合并两个有效的链表(1)题目(2)解题思路(3)代码实现反转链表(1)题目(2)解题思路(3)代码实现

2025-09-21 21:06:08 1061

原创 算法---字符串

字符串是一种类型,他不是一种算法,所以我们在处理这方面的问题的时候,需要结合其他的算法。

2025-08-29 22:08:40 444

原创 Linux 文件系统

一、磁盘1、磁盘的概念2、磁盘的物理结构3、磁盘的逻辑结构4、磁盘的定位二、文件系统1、块的概念2、管理磁盘(1)分区(2)分组3、如何使用一个硬盘4、描述以下新建一个文件,删除文件 5、关于inode 编号和datablock 编号6、文件名和inode的关系7、目录树三、链接1、软连接2、硬链接3、链接原理

2025-08-29 22:04:38 881

原创 算法 ---哈希表

存储数据的容器。

2025-08-23 22:19:48 920

原创 基础IO

一、进程和文件的关系二、背景补充三、打开文件接口(1) FILE *fopen(const char* filename , const char *mode)(2)open 系统调用文件描述符open和fopen的关系(3)size_t fwrite(const void * ptr, size_t size, size_t nmemb,FILE*stream)(4)size_t fread(void *buffer, size_t size,size_t nmemb,FI

2025-08-23 22:13:39 979

原创 算法 ----- 链式

解题思路一:我们可以设一个优先级队列,将各个链表头入列,在创建一个链表最小链入链表中。解题思路一:我们可以首先算出来有我们需要反转几次,然后我们就可以将他看作为几个逆置。解法思路二:归并我们可以通过归并将链表分为两个,在将两个链表进行排序。我们也可通过定义四个指针,改变她们的next值来交换结点。2、逆序后半段的指针(断开两端的指针)

2025-08-20 21:49:59 492

原创 Linux进程控制

当子进程刚刚被创建时,子进程和父进程的数据和代码是共享的,即父子进程的代码和数据通过页表映射到物理内存的同一块空间。只有当父进程或子进程需要修改数据时,才将父进程的数据在内存当中拷贝一份,然后再进行修改。这种在数据进行修改时在进行拷贝的过程叫写时间拷贝。

2025-08-20 21:47:56 905

原创 虚拟地址空间

虚拟地址空间的栈的上层还有一个内核空间和命令行参数环境变量,我们把除了内核空间的地址叫做用户空间,程序员可以直接用地址来进行访问,而访问内核空间必须要用系统调用。创建一个进程的时候,先有内核数据结构,再有进程的代码和数据,可以一边执行,一边加载(这就是惰性加载)变相保证物理内存的安全,维护进程独立性特性。进程管理和内存管理进行解耦合了。

2025-07-20 20:11:14 897

原创 分治算法---归并

我们可以先找左边部分的逆序对,再找右半部分逆序对,最后再找一左一右的,如果我们可以找的途中还能排序,会使最后一步非常的简单 变成了 左半部分 -》左排序 -》右半部分 -》右排序 -》一左一右,这和归并算法的思想差不多。方法二:和上述的算法差不多,先算左边的数,在算右边的数,再算左右两边,右侧小于当前元素的个数。方法一:暴力解法,一个一个的寻找,虽然可以找到,但是会超时。

2025-07-20 20:06:07 348

原创 分治算法---快排

分治算法--将问题进行分类。

2025-07-09 21:46:37 829

原创 命令行参数和环境变量

是系统级别的一些全局变量,具有不同的功能本地变量:只在本bash中有用由上图可知环境变量会被子进程继承下去(具有全局性),本地变量不会被继承下去。

2025-07-07 21:37:30 613

原创 算法————模拟算法

一、模拟算法二、题目1、替换所有的问号​​​​​​(1)题目 ​编辑(2)解题思路(3)代码实现​编辑 2、提莫攻击 (1)题目(2)解题思路(3)代码解答3、Z字形变换(1)题目(2)解题思路(3)代码实现4、外观数组(1)题目​编辑(2)解题思路(3)代码书写 5、数青蛙 (1)题目(2)解题思路(3)代码书写

2025-07-07 21:32:08 396

原创 Linux——进程(下)

一、Linux状态 1、运行状态​编辑2、 浅度休眠(阻塞状态)3、深度睡眠(D状态)4、暂停(T状态)5、追踪状态(t状态)6、僵尸状态(Z状态)7、结束状态(X状态)二、进程的优先级1、是什么2、为什么3、查看进程的优先级三、Linux优先级怎么做的1、调整优先级2、为什么nice有范围为什么3、竞争独立并行并发4、进程切换 四、Liunx如何调度的1、大O(1)调度算法五、实时操作系统

2025-07-05 11:37:05 979

原创 Linux——进程的概念

操作系统是由什么语言写的?C语言描述事物:structos内一定存在大量的数据结构 (有进程 ,文件, 内存,驱动管理)所以学操作系统之前,一定要了解os内各种数据结构。

2025-07-02 13:17:51 782

原创 c++——多态

首先我们调用test(),他会先在派生类中寻找,没有,因为派生类继承基类所以回去基类中去寻找,test中调用fun(),这个时候是基类的this指针调用func(),构成多态,又因为最开始是派生类的调用,所以根据多态调用的是派生类的func,其实多态的本质是调用派生类的声明和匹配的定义,上面调用的派生类的声明和基类的定义所以答案是B->1.派生类中有一个跟基类完成相同的虚函数(即派生类函数和基类虚函数的返回值类型、函数名字、参数列表完全相同),称派生类的虚函数重写了基类的虚函数。

2025-05-01 11:37:03 1138

原创 Linux一个系统程序——进度条

n :回车加换行\r:换行观察我们发现以上的两个代码除了缺少/n没有任何区别,但是运行代码之后我们会发现有何大的不同,图一会先在屏幕上打印helloworld在进行休眠2,但是图二会先休眠2在打印helloworld,原因是printf的作用是将括号中的值复制到一个c语言的缓冲区中,但是如果遇到\nor \r\n \n 会将他们之前的内容,全部刷新到显示器,程序退出的时候,曾经的历史数据,会被刷新。强制刷新。

2025-04-27 16:35:33 340

原创 Linux—— 版本控制器Git

所谓版本控制器,就是可以让你看到文件的历史,以及它的发展过程,通俗来说就是记录工程的每一改动和版本迭代的一个管理系统,也可以让多人协同作业,目前最流行的就是Git。但一个人提交自己的代码文件到远端之后,这时候远端和其他人本地的关系就是交集,当其他人将自己写好的代码push到远端的时候就会报错,所以我们需要在add之前将我们的本地和远端同步。当我们第一次commit 的时候我们会弹出如下的信息,我们只需要将红色的部分拷贝下来,“”中写上我们的email(注册时候写的email) 和 注册时候的名字。

2025-04-27 16:34:07 810

原创 Linux ———— 编译器g++/gcc

新的写法这样写就类似于宏,可以方便我们修改。

2025-04-23 17:03:40 761

原创 c++ —— 继承

下面我们看到Person是基类,也称父类。Student是派生类,也称子类。

2025-04-23 16:59:37 1315

原创 专题四——前缀和

方法:此方法适用于求一堆数组的和。

2025-04-20 10:26:42 1064

原创 c++------模板进阶

一个程序(项目)由若干源文件共同实现,而每一个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式模板的分离编译c/c++程序运行时的过程1、增强复用了代码,节省资源,更快的迭代开发,C++的标准库因此产生2、增强了代码的灵活性。

2025-04-14 20:41:17 920

原创 Linux——基础开发工具

在Liunx下安装软件,一个通常的方法就是下载程序的源代码,得到可执行程序。但是这样带过于麻烦,于是有些人把一些常见的软件提前编译好,做成软件包,放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装软件包和软件包管理器,就好比App和应用商店这样的关系yum是Linux下非常常用的一种包管理器,主要应用在Fedora,RedHat,Centos等发行办上Ubuntu主要使用apt作为其包管理器。底行其他命令。

2025-04-14 16:57:54 883

原创 专题三——二分查找

二分查找 在排序数组中查找元素的第一个和最后一个位置x的算法平方根 搜索插入位置 寻找峰值 上峰数组的索引寻找旋转排序数组中最小的组寻找0~n-1 中缺少的值

2025-04-11 15:48:59 943

原创 Linux __命令和权限

是什么:由上图可知操作系统是一款进行软硬资源管理的软件为什么:对下做好软硬件的管理工作(手段)操作系统要给用户提供一个良好的运行环境(目的)什么是良好:稳定 高效 安全目录的可执行权限是表示你可否在目录下执行命令如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使这个目录仍然有-r读权限(这个地方容易犯错)而如果目录有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读的权限 即可以执行ls命令,但是没有权限读出目录下的文档。

2025-04-11 15:40:49 1504

原创 c++--------- stack queue

kw=stackkw=stack我们可以观察到stack queue和vector、string、list都不同的是的模板中有一个适配器适配器是一种设计(设计模式是一套被反复使用堆的、多数人知晓的、经过分类编目、代码设计经验的总结),该模式是将一个类的接口转化成客户希望的另一个接口vector优点:下标的随机访问缺点:中间或者头部插入删除效率低/扩容有一定的消耗,可能存在一定的空间的浪费list优点:高效的在任意位置插入删除缺点:不支持小标随机访问/按需申请释放空间。

2025-04-08 17:12:57 932

原创 C++__list

带你从模拟实现list的角度理解list

2025-04-02 15:09:48 1220

原创 Linux--命令行操作

1.简单的文件操作2.编程3.支持系统和网络。

2025-03-27 21:18:09 1025

空空如也

空空如也

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

TA关注的人

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