![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
我家云
qq1065773073
展开
-
无向图的广/深度优先搜索
无向图的BFS和DFS无向图的遍历存在广度优先搜索(BFS)和深度优先搜索(DFS)两种方法;深度优先搜索概念:沿着深度遍历树的节点,尽可能深的搜索分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。算法...原创 2020-03-29 20:14:11 · 1952 阅读 · 0 评论 -
堆排序C++实现
堆排序C++实现堆的数据结构实际就是完全二叉树,即叶子节点只可能出现在最下面两层,且最后一层的叶子节点,从左往右进行排列;堆的简单性质由上面所说的堆的结构,可以推出一些简单的堆的性质,这些性质在实现的时候,会用到(将堆存放在数组中):父节点的下标为i,左子节点的下标为2*i;父节点的下标为i,右子节点的下标为2*i+1;一个下标为i的节点,其父节点为[i/2];堆排序的实现步骤...原创 2020-03-14 16:59:52 · 363 阅读 · 0 评论 -
Redis跳跃表的实现
Redis跳跃表的实现在看redis代码的时候,看到了redis实现了一个跳跃表,看了一下结构,写了一个小demo,记录一下,代码链接;跳跃表结构跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— 查找、删除、添加等操作都可以在对数期望时间下完成, 并且比起平衡树来说, 跳跃表的实现要简单直观得多。从图中可以看到, 跳跃表主要由以下部分构成:表头:负责维护跳跃表的节...原创 2020-03-08 21:38:29 · 253 阅读 · 0 评论 -
muduo网络库线程池的实现
muduo库线程池的实现muduo库实现了一个线程池的功能,能够自己设定线程池的大小以及实现线程原创 2019-12-28 16:13:04 · 581 阅读 · 0 评论 -
内核Generic Netlink通信
内核netlink通信select函数Netlink 是一种在内核与用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就可以使用 netlink 提供的强大功能,内核态需要使用专门的内核 API 来使用 netlink。Netlink 相对于系统调用,ioctl 以及 /proc文件系统而言具有以下优点:1,netlink使用简单,只需要在includ...原创 2019-11-12 00:20:39 · 1098 阅读 · 0 评论 -
网络限流令牌桶算法原理及实现
令牌桶算法原理及实现令牌桶算法的原理令牌桶算法的简单实现令牌桶算法的原理令牌桶算法听起来蛮牛逼,但是原理非常简单,简单说就是在一个桶中匀速放入令牌,如果桶中有令牌,就取走一个令牌,进行服务,若没有则拒绝服务。简单示意图如下所示:实际的令牌桶算法具体实现流程图如图所示:流程key是否存在。因为流程图是基于分布式缓存做的集群限流,需要根据不同key做统计,第一次访问初始化key。...原创 2019-10-27 15:38:26 · 1428 阅读 · 0 评论 -
boost::noncopyable的实现
boost::noncopyable最近在看muduo网络库,muduo是基于boost库做开发的。里面很多类是继承自noncopyable,顺手查看了noncopyable类的实现。noncopyable类的作用默认情况下,如果类没有声明拷贝构造函数和复制构造函数,编译器会自动的为类创建隐含的public拷贝构造机复制构造函数。但是noncopyable类的实现是将构造函数与析构函数声明...原创 2019-09-15 19:36:01 · 648 阅读 · 0 评论 -
Linux定时任务crontab详解
Linux定时任务crontab详解crontab的作用crontab的设置crontab的用法crontab的编辑列表crontab的配置crond进程crontab命令后的> /dev/null 2 > &1的含义crontab遇过的坑crontab的作用定时循环任务是由linux上的crond系统服务来控制的,这个系统服务实现是以守护进程的方式实现,守护进程的详解戳文...原创 2019-09-01 21:56:40 · 329 阅读 · 0 评论 -
C++基于对象编程与function,bind用法
C++基于对象编程与function,bind用法博主今天在看muduo多线程库开源代码的时候,看到了在muduo库中使用的基于对象编程,何为基于对象编程与面向对象编程有什么不同,看了下面例子,基本就可以了解。在基于对象编程方法实现中,主要用到的是C++中的function和bind,也同时总结下function和bind的用法。参考:C++ primer,https://www.bilib...原创 2019-07-28 20:35:03 · 464 阅读 · 0 评论 -
守护进程构造原理及实现
守护进程详解守护进程的作用守护进程实例守护进程特性及构造原理守护进程特性进程、进程组、控制终端登陆会话之间的关系守护进程的构造原理(APUE中的创建步骤,实际操作中有些不同)调用umask将文件模式创建屏蔽字设置为一个已知值(通常为0):调用fork,然后是父进程exit:调用setsid创建一个新会话:改变当前工作目录:关闭不再需要的文件描述符:某些守护继承打开/dev/null使其具有文件描述...原创 2019-07-13 17:15:43 · 1328 阅读 · 0 评论 -
[基础算法]--分治法
「基础算法」分治法分治法基本概念分治法解题的基本步骤分治法例题归并排序leetcode23. 合并K个排序链表(困难)题目描述:示例:题解:备注分治法基本概念分治法是一种比较常见的算法,也是我们在平常做题或者分析复杂问题的一种思路。分治法简而言之就是分而治之,将大的问题分解成小的问题,再将小问题继续划分,变成足够简单可以直接求解的子问题进行解析,最后再将子问题合并。在我们见过的算法中,归并排序...原创 2019-07-07 21:51:29 · 266 阅读 · 0 评论