自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Darling_sheeps的博客

努力努力再努力

  • 博客(127)
  • 收藏
  • 关注

原创 [数据结构] 深入理解什么是跳表及其模拟实现

每相邻两个节点升高一层,增加一个指针,让指针指向下下个节点;上面每一层链表的节点个数,是下面一层的节点个数的一半,这样在查找的时候就类似于二分查找。每个跳表结点内部包含值域和指针数组域;T _data;} };

2023-02-15 16:55:43 494

原创 [数据结构] 浅谈什么是B+树及B+树的应用、B*树

B+树,又称多路平衡搜索树,B树的变形,是在B树基础上优化的多路平衡搜索树B*树,是B+树的变形,是在B+树基础上优化的多路平衡搜索树。

2023-02-08 10:29:03 776

原创 [数据结构] 深入理解什么是B树及其模拟实现

B树,又称M路平衡搜索树,一个结点上可以有多个key和映射规则设置数据的结构为类型,K为磁盘地址(关键字),M为孩子的个数;若结点中关键字的个数定义为M,则其孩子的个数为M+1,但是为了方便插入以后再分裂,此处多给一个空间;//关键字的个数比孩子小1 K _keys [ M ];//关键字 BTreeNode < K , M > * _subs [ M + 1 ];//孩子结点 BTreeNode < K , M > * _parent;

2023-02-07 15:50:10 802

原创 [数据结构] 图---图的最小生成树之实现克鲁斯卡尔算法、普里姆算法

生成树:在无向图中,一个连通图的最小连通子图,不能构成回路;最小生成树:权值最小的生成树(不唯一),实现方式有克鲁斯卡尔算法和普里姆算法。

2023-02-06 17:29:17 351

原创 [数据结构] 图---求解单源最短路径:实现迪杰斯特拉算法、贝尔曼福特算法

Dijkstra算法找的是起始边,Bellman_Ford算法找的是终止边;但是,都不能解决带有负权回路的路径问题。

2022-11-28 20:23:51 326

原创 [数据结构] 并查集

【代码】[数据结构] 并查集。

2022-11-28 20:23:04 361

原创 [Linux] 进程程序替换之实现一个简单的shell

e(env) 表示自己维护环境变量。

2022-11-28 20:16:00 525

原创 [数据结构] 图---求解多源最短路径:实现弗洛伊德算法

【代码】[数据结构] 图---求解多源最短路径:实现弗洛伊德算法。

2022-11-28 09:47:54 186

原创 [数据结构] 图---图的邻接表存储方式模拟实现(下)

【代码】[数据结构] 图---图的邻接表存储方式模拟实现(下)

2022-11-17 21:41:50 187

原创 [数据结构] 图---图的邻接矩阵存储方式模拟实现,包括BFS广度优先遍历和DFS深度优先遍历(上)

【代码】[数据结构] 图---图的邻接矩阵存储方式模拟实现,包括BFS广度优先遍历和DFS深度优先遍历(上)

2022-11-17 21:41:18 922

原创 [C++] 布隆过滤器的模拟实现

将一个元素用多个哈希函数映射到一个位图中,因此被映射到的位置的比特位一定为1;布隆过滤器如果说某个元素不存在时,该元素一定不存在;如果该元素存在时,该元素可能存在,因为有些哈希函数存在一定的误判;布隆过滤器不能直接支持删除工作,因为在删除一个元素时,可能会影响其他元素。

2022-11-16 19:30:54 395

原创 [C++] 位图的模拟实现

位图:用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况,通常是用来判断某个数据存不存在;

2022-11-16 19:29:21 205

原创 [C++] 哈希的模拟实现---开散列法(下)

开散列法,又称链地址法(拉链法或哈希桶),首先对关键码集合用散列函数计算散列地址,把具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。

2022-11-10 15:28:41 257

原创 [C++] 哈希的模拟实现---闭散列法(中)

闭散列法,又称开放定址法,当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有空位置,那么可以把key存放到冲突位置中的“下一个”空位置中去。

2022-11-10 15:25:20 268

原创 [C++] 哈希的模拟实现---闭散列法、开散列法(上)

顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较;哈希结构:可以不经过任何比较,一次直接从表中得到要搜索的元素:通过某种哈希函数,使元素的存储位置与它的关键码之间能够建立一一映射的关系。

2022-11-10 15:24:11 258

原创 [C++] RBTree红黑树的模拟实现

红黑树的模拟实现

2022-11-09 18:12:38 780

原创 [数据结构] AVLTree平衡二叉搜索树的模拟实现

它或者是空树,或者是具有以下性质的二叉搜索树:左右子树高度之差(简称平衡因子)的绝对值不超过1(可以取值为:-1/0/1);并且,它的左右子树都是AVL树。采用三叉链表的形式定义树的结点,用pair存放数据,增加平衡因子成员变量;

2022-11-08 17:02:31 535

原创 [数据结构] BSTree二叉搜索树的模拟实现

它或者是一颗空树,或者是具有下面性质的二叉树:若它的左子树不为空,左子树的结点的值都小于根结点的值;若它的右子树不为空,右子树结点的值都大于根结点;同时,它的左右子树又都是搜索二叉树。

2022-11-07 18:31:18 513

原创 [Linux] 数据链路层-----以太网帧协议、ARP协议

以太网帧格式、ARP协议

2022-11-02 16:11:45 332

原创 [Linux] 网络层-----IP协议、ICMP协议、NAT技术

-----路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下一个路由器-----依次反复,一直到达目标IP地址。当IP数据包,到达路由器时,路由器会先查看目的IP(通过。

2022-11-02 15:30:58 423

原创 [Linux] 传输层---TCP传输控制协议(下)

面向字节流、粘包问题、tcp异常情况

2022-10-28 17:09:46 990

原创 [Linux] 传输层---TCP传输控制协议(上)

tcp协议段格式1. 16位窗口大小2. 6位标志位3. 16位紧急指针4. 16位校验和确认应答(ACK)机制超时重传机制1.数据丢失2.ACK丢失3.关于超时的时间连接管理机制滑动窗口1. 相关概念2. 丢包问题3. 高速重发控制(快重传)流量控制拥塞控制(网络拥塞)延迟应答捎带应答

2022-10-26 18:49:31 736

原创 [Linux] 传输层---UDP用户数据报协议

如果我们需要传输的数据超过64K,就需要在应用层进行手动的分包,多次发送,并在接收端手动拼装;BOOTP:启动协议(用于无盘设备启动)注:udp所能传输的数据最大长度为。TFTP:简单文件传输协议。DHCP:动态主机配置协议。NFS:网络文件系统。DNS:域名解析协议。

2022-10-26 11:52:09 620

原创 [Linux] 应用层---http协议---实现简单的http服务器

【代码】[Linux] 应用层---http协议---实现简单的http服务器。

2022-10-25 17:51:53 848

原创 [Linux] TCP网络程序引入线程池版本

所以,当有大量客户端存在时,系统中会有大量的执行流,线程间切换也是导致效率低下的一个主要原因,因此。多线程版本----健壮性不强,较吃资源,效率相对较高;多进程版本----健壮性强,但比较吃资源,效率低下;单进程版本----基本不用;

2022-10-23 11:23:12 194

原创 [Linux] 网络套接字编程之实现简单的TCP网络程序(下)

初始版本的tcp程序一次只能给一个客户端提供服务,当有其他客户端请求服务器时,可以connect连接上,但是无法通信,因为start循环体内的语句限制了只要当前客户端不退出,就要一直为这一个客户端服务。客户端停止发送信息后,服务器要把当前通信套接字关闭掉;在提供服务的时候,当前服务结束,也要把通信套接字关闭掉。以命令行参数的形式传入创建tdp客户端所需要的ip地址参数和端口号参数。connect()申请建立连接,返回值不为0时,表示申请失败。以命令行参数的形式传入创建tdp服务器所需要的端口号参数。

2022-10-22 19:04:15 1223

原创 [Linux] 网络套接字编程之实现简单的UDP网络程序(上)

通常用来进行网络通信代码的本地测试,一般使用该ip地址如果能通信的话,就代表本地环境及代码基本没有大问题。udp客户端中使用的ip和端口号,不是链接,而是标记了服务器在哪,用于向服务器发送数据。以命令行参数的形式传入创建udp客户端所需要的ip地址参数和端口号参数。主机端口号转换为16位的网络端口号----htons()6位的网络端口号转换为主机端口号----ntohs()char类型转换为网络地址类型----ip:标记网络中的一台主机的地址。网络地址类型转为字符串----整型转字符串类型输出----

2022-10-22 16:32:37 891

原创 [Linux] 网络协议之TCP/IP五层模型

OSI(Open System Interconnection,开放系统互连)七层网络模型称为。协议是一种“约定”,网络协议是计算机之间能够进行通信的一种标准。

2022-10-21 21:29:32 743

原创 [Linux] 实现简单的线程池

线程过多会带来调度开销,进而影响缓存的局部性和整体性能;而线程池维护着多个线程,等待着管理者分配可并发执行的任务,避免了在处理短时间任务时创建与销毁线程的代价;static void *Routine(void *arg)----从任务队列中拿任务,然后处理任务。void Put(Task &in)----往任务队列里面往任务,然后唤醒消费者去拿任务。void ThreadPoolInit()----初始化一堆处理任务的线程。void Get(Task &out)----从任务队列里面拿任务。

2022-10-21 11:56:15 463

原创 [Linux] 基于环形队列的生产者消费者模型

void Get(int &out)----消费者消费数据,P操作->从环形队列里面取数据->V操作。void Put(int &in)----生产者生产数据,P操作->往环形队列中放置数据->V操作。生产者生产数据:申请格子信号量----生产数据----释放数据信号量。消费者消费数据:申请数据信号量----消费数据----释放格子信号量。初始时,环形队列中全是空格:生产者要在空位置处生产数据;

2022-10-20 22:45:27 400

原创 [Linux] 基于阻塞队列的生产者消费者模型

生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理, 直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力,这个阻塞队列就是用来给生产者和消费者解耦的。PS:不一定非要是队列为空时通知生产者来生产,队列为满时通知消费者来消费,我们可以自定义一些通知机制,比如,当队列小于1/2大小时,就通知生产者来生产,大于1/2大小时,通知消费者来消费。生产者消费者模式就是。

2022-10-20 21:20:35 476

原创 [Linux] 进程中的信号:信号的捕捉过程、volatile关键字(下)

PS:进程地址空间中,包括1G的内核空间和3G的用户空间,其中所有的进程看到的内核空间都是一样的内容,都是OS的代码和数据。,告知编译器,被该关键字修饰的变量,,对该变量的任何操作,都必须在真实的。

2022-10-18 21:41:59 270

原创 [Linux] 进程中的信号:产生、处理、信号集操作(上)

调用alarm(unsigned int seconds)函数设定一个闹钟,告诉内核在seconds秒之后给当前进程发。SIGINT默认动作是终止进程,SIGQUIT默认动作是终止进程且core dump。注:野指针不存在虚拟地址,不会分配物理内存,在页表+MMU转换时就会发现地址转换错误。一段时间之后取消对2号信号的阻塞,获取其递达状态的信息(用例说明:屏蔽2号信号,获取其未决状态的信息(, 该信号的默认处理动作是终止当前进程。访问非法地址、野指针----MMU异常。除0操作----CPU运算单元异常。

2022-10-18 18:18:12 469

原创 [Linux] 进程间通信之System V 共享内存

【代码】[Linux] 进程间通信之System V 共享内存。

2022-10-17 17:32:18 476

原创 [Linux] 进程间通信之管道(匿名管道和命名管道)

通过open函数打开管道进行使用。可以用于不相关进程之间的通信。

2022-10-17 15:46:48 806

原创 [二叉树] 树的子结构

代码】[二叉树] 树的子结构。

2022-08-16 22:38:19 354

原创 [Linux] 进程管理之进程等待

代码】[Linux] 进程等待。

2022-08-12 19:09:11 658

原创 [剑指Offer] 合并两个排序的列表

代码】[剑指Offer] 合并两个排序的列表。

2022-08-12 18:25:13 230

原创 [剑指Offer] 三种方法计算二进制数中1的个数

代码】[剑指Offer] 三种方法计算二进制数中1的个数。

2022-08-11 18:14:52 214

原创 [剑指Offer] 三种方法求解斐波那契数列

代码】[剑指Offer] 三种方法求解斐波那契数列。

2022-08-11 18:02:46 116

空空如也

空空如也

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

TA关注的人

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