自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 迭代器失效问题

对于序列式容器(vector)之类的,调用erase之后会产生迭代器失效问题,但是这时候erase方法会返回一个可用的迭代器指向下一个元素。所以处理方法是it=x.erase(it);这样就好了。对于关联容器(list,map,set)之类的,因为删除一个节点不会对其他节点产生影响,所以直接x.erase(it++)即可。...

2018-05-21 20:24:19 318

转载 MIT HAKMEM算法

这是一个求二进制里有多少个1的算法,复杂度很平均,用的少量数学知识,这里贴个出处:https://blog.csdn.net/msquare/article/details/4536388这篇文章条理清晰,讲得非常不错,下面只贴最后结论代码供自己使用,详情请看上面链接,认真看一定能懂。int bitcount(unsigned int n) { unsigned int ...

2018-05-18 17:29:31 303

原创 缓存算法LRU和LFU

LRU cache:链表+hash表思路:维护一个链表,链表头为最近最少使用的,链表尾为最近使用最多的,每次如果命中(如果不知道命中建议先看下操作系统)那么把节点从链表删去,再放到链表末尾,如果没有命中,则把链表头删除,把新的放到末尾。至于查找是否命中,可以通过unordered_map来保存节点地址,这样就可以O(1)找到了。代码如下:#include <cstdio>#...

2018-05-17 23:24:58 652

原创 外部排序

外部排序指的是在一台机子上只有有限的内存但是你需要排序一个很大量的数据,例如你要排序2TB数据但是内存只有2GB,这时候你只能每次处理2GB数据然后把排序好的数据放到外存里,这就是外部排序的思想。基本流程是这样的。拿刚才的那个例子,你每次读入内存2GB的数据,然后对他们进行排序,再写到一个个的文件里,最后没一个个文件都是排好序的数据,然后进行多路归并就好了,多路归并的话,可以用堆进行优化。思路...

2018-05-17 18:08:00 913

原创 线程池的c++实现

emmmm,写这个的主要目的是为了加深对互斥锁和条件变量的理解,只看UNIX网络编程不实践一下老觉得心里没点底,正好这个东西能练一下而且面试好像也有问到,就手动实现了一下.线程池运用的设计模式是命令模式,其原理基本上都能查到这里就不多说了.直接上代码好了.首先是任务类 Task.h#ifndef TASK_H#define TASK_H#include &lt;string&gt;usin...

2018-05-16 21:58:01 576

原创 二叉树的持久化(序列化和反序列化)

一开始我以为是ACM的可持久化数据结构。。。后来了解一下发现不是这样,然后看多两眼。。。好像上课有讲这东西,居然忘了。。二叉树持久化是指用某种方式将一棵二叉树以字符串形式保存,之后再根据这个字符串还原出来。用途:保存信息,传递信息。普遍的方法是先序遍历,碰到空节点则加'#',普通节点则为val+',',实现感觉是很容易的,对于原ACMER的我来说。下面直接给代码:#include...

2018-05-15 19:51:32 1745

原创 一致性hash概括

普通的hash是这样的,假设有3个节点,数据分别是1 2 3 4 5 6 7 8 9 10,那么用取模方法的话分布如下。0:3 6 91:1 4 7 102:2 5 8这种情况下如果增加一个节点的话则会变成。0:4 81:1 5 92:2 6 103:3 7移动的数据要很多,所以这里就要用上一致性hash。对节点做hash计算,对值也做hash运算,最后把节...

2018-05-15 17:43:56 356

原创 数据库部分知识小结(未完待续)

数据库的4大特性:ACID;1:原子性。指事务的操作要么不发生要么执行完。2:一致性。指事务开始前和事务开始后,完整性约束没有被破坏。3:隔离性。多个事务并发执行时,事务之间不会相互影响。4:持久性。意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。...

2018-05-15 17:11:50 127

原创 数据结构难点总结

红黑树:红黑树的5个特性: 性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NULL节点)。性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5. 从任一节点到其每个叶子的所有简单路径 都包含相同数目的黑色节点。插入的情况:若是根节点直接插入.若父亲是黑色那么直接插入....

2018-05-14 23:37:30 3275

原创 快排尾递归优化版

没加随机优化和三数取中等优化...只是发出来方便自己记忆#include &lt;stdio.h&gt;#include &lt;time.h&gt;int partition(int *a,int l,int r){ int temp=a[l]; while(l&lt;r){ while(l&lt;r&amp;&amp;a[r]&gt;=temp) r--; a[l...

2018-05-14 22:46:57 497

原创 Linux内部定义的调试宏

Linux几个调试宏__FUNCTION__:在哪个函数 __TIME__:当前时间 __LINE__:当前行数 __FILE__:当前文件 __DATE__:当前日期 

2018-05-13 17:53:54 547

原创 可变参函数写法

#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;stdarg.h&gt;int print(const char *format, ...){ va_list args; const char *args1; va_start(args, format); args1 = va_...

2018-05-13 17:30:43 231

原创 僵尸进程,孤儿进程和守护进程的定义

僵尸进程:父进程fork一个子进程后,子进程退出,父进程没有调用wait或者waitpid函数获取子进程信息,那么子进程的资源就不会释放,就会变成僵尸进程。孤儿进程:父进程fork一个子进程后,父进程退出,然后子进程就归init进程管,这时候子进程就是孤儿进程.守护进程:守护进程相当于windows的服务,运行在后台且不与任何控制终端关联的进程,是一种生命周期比较长的进程,创建守护进程的方...

2018-05-13 16:36:03 492

空空如也

空空如也

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

TA关注的人

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