自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Everlasting2016的博客

我流我的汗水 华丽如天花乱坠

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

原创 AVL树

记得上次的博客中说到了二叉所搜树,也说到了他还说一种有欠缺的二叉树,当输入单调递增或单调递减的数据后,他会退化成链表,这样会严重影响效率,所以AVL树就被引出来了,下面就开始简单介绍AVL树吧。首先AVL树是一种严格的平衡二叉树,他要求所有节点所在的二叉树都满足一个条件:平衡因子不大于2,搜索二叉树也就接近满二叉树了,这个时候搜索的效率就比较高了,但是它也因此付出了很高的代价,那就是他会不断的

2016-08-24 15:30:59 458

原创 性能剖析器

一、项目总结图:二、功能支持1. 统计代码段的调用次数、花费时间、代码段信息2. 支持剖析段不匹配场景3.支持剖析递归程序4. 支持跨平台5. 支持高并发多线程的剖析三、各个模块的介绍及测试结果1、性能剖析器的管理模块划分及功能(1)PerformanceProfiler--性能剖析模块(3)ConfigMan

2016-08-23 19:25:28 383

原创 布隆过滤器

布隆过滤器(Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。它实际上是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假正例False positives,即Bloom Filter报告某一元素存在于某集合中,但是实际上该元素

2016-08-22 11:45:57 674

原创 基于TCP的http服务器

http服务器的实现逻辑1.实现基于 tcp 协议的服务器端(创建监听套接字  bind; listen )    注:http协议属于应用层协议,其功能的实现依赖于下层结构提供的服务。它的无连接特性决定了它的下层必须保证 单次交互的可靠性(否则  本来就一次性,还不知道可靠不可靠(获取的数据是否正确有序),谁用?)。而tcp协议刚好提供了这种可靠性。但是tcp协议是面向连接的,因此

2016-08-22 11:41:25 1182 1

原创 基于linux聊天系统

一、整体介绍(1)client模块:畅聊系统client上层逻辑,提供client底层通信(2)server模块:畅聊系统server上层逻辑,提供server底层通信service_com模块:(3)畅聊系统底层公共逻辑,如数据序列化。(4)window模块:client窗口模块(5)lib第三方库模块:提供第三方库模块(6)plug插件起停服务脚本模块:起停服务脚本

2016-08-21 20:56:03 2023

转载 phtread_mutex的初始化

class MyLock{public: MyLock() { //m_lock = PTHREAD_MUTEX_INITIALIZER; //使用这种方法初始化时GCC编译无法通过 pthread_mutex_init(&m_lock, NULL); } ~MyLock() {} void Lock() { pthread_mutex_lock(&m_lock)

2016-08-20 09:34:18 1488

原创 STL的空间配置器

这篇博客主要讲一下SGI-STL中的空间配置器的工作流程。我自己实现模仿STL实现了一个空间配置器,并且用两个容器list和vector测试使用了空间配置器。这里只给出模型,如果要看源码,点击打开链接下载。源码中的注释比较多,也比较全。下面是工程目录: 现在介绍一下工程目录:List.h、Vector.h是模仿STL容器中的两个list和vector的接口完成的

2016-08-20 08:45:17 635

原创 文件压缩项目

前段时间研究了一下哈夫曼树,也知道了其主要应用是哈夫曼编码,那么我想既然有编码那么我们是否可以利用这点来实现一个文件压缩呢?答案是可以的,而且我已经实现了,这里我就不将代码放在下面了,下面我就说一下主要思路吧    1.统计:首先读取一个文件,统计出256个字符中各个字符出现的次数以及字符出现的总数    2.建树:按照字符出现的次数,并以次数作为权值建立哈夫曼编码树;建好树后找出

2016-08-19 19:40:23 686 1

原创 Linux 查看进程和删除进程

1. ps 命令用于查看当前正在运行的进程。grep 是搜索例如: ps -ef | grep java表示查看所有进程里 CMD 是 java 的进程信息ps -aux | grep java-aux 显示所有状态ps2. kill 命令用于终止进程例如:kill -9 [PID]-9 表示强迫进程立即停止通常用 ps 查看进程 PID ,用 kill 命

2016-08-18 00:03:31 363

原创 priority_queue的用法

priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解#include #include #include u

2016-08-15 10:06:47 263

原创 二叉树的下一个结点

题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:结合图,我们可发现分成两大类:1、有右子树的,那么下个结点就是右子树最左边的点;(eg:D,B,E,A,C,G) 2、没有右子树的,也可以分成两类,a)是父节点左孩子(eg:N,I,L) ,那么父节点就是下一个节点 ; b)是

2016-08-15 09:10:38 444

原创 第九天(5道)

终于开始Tree的练习了1、树的子结构两个递归结构2、二叉树的深度递归3、平衡二叉树使用了二叉树的深度,abs的使用4、二叉树的镜像遍历然后每次交换left和right5、从上往下打印二叉树二叉树的层序遍历

2016-08-14 23:38:28 250

原创 第八天(6道)

1、复杂链表的复制边界条件要仔细判断2、链表中环的入口结点先是快慢指针,然后是同时遍历,需要仔细复习一下3、两个链表的第一个公共结点要先遍历两个链表,然后长的链表先走4、数组中只出现一次的数字使用的是^运算,eO&(~eO +1),找到最右侧的15、删除链表中重复的结点先在前面插个头结点,然后遍历的时候不是每一步都删除,而是重复的遍历完了在删除,并且ne

2016-08-14 23:34:16 363

原创 字符串2(6道)

1、两串的旋转string::npos的使用2、句子的逆序使用left和right标志位置3、字符串移位reverse的使用4、拼接最小单词序sort的使用,最后一个参数为仿函数5、空格替换使用指向最后末尾的指针6、合法括号序列判断一个status变量来标识个人今天刷题的github的链接:点击打开链接

2016-08-14 23:26:03 311

原创 排序3和字符串1(6道)

1、三色排序练习快速排序的单向扫描的变形2、有序矩阵查找二维数组的查找3、需要排序的最短子数组长度遍历两边数组4、相邻两数最大差值归并排序的变形5、拓扑结构相同的子树两个递归6、词语变形使用map[256]个人今天刷题的github的链接:点击打开链接

2016-08-14 23:20:49 290

原创 排序2(7道)

1、堆排序非递归写法是空间复杂度为O(1)2、希尔排序3、计数排序就是相当于使用一个map[256]记录的题一样,不过这个是统计出来min和max4、基数排序先统计低位出现的次数,然后一个位置的数组,然后就是直接定位了5、小范围中的排序练习题非比较排序时间复杂度和空间复杂度是和序列的范围有关的其他的排序:是随机的和序列的顺序是没有什么关系的使用插入排序:O(

2016-08-12 16:17:26 340

原创 排序1

1、冒泡排序2、选择排序3、插入排序4、归并排序递归和非递归写法5、快速排序递归和非递归写法个人今天刷题的github的链接:点击打开链接

2016-08-12 16:08:46 306

原创 第七天(5道)

1、把数组排成最小的数其实就是定义一种新的排序规则,但是这道题中学习到了to_string和仿函数的使用(两种方法都是可以的)2、最小的K个数其实是想写堆排序的,但是总是显示时间复杂度太高,所以使用了sort,但是注意less()的用法3、整数中1出现的次数(从1到n整数中1出现的次数)就是简单的遍历而已4、数组中的逆序对原型是归并排序5、数字在排序数组中出现的次数

2016-08-12 16:04:14 268

原创 归并排序非递归写法

void _Merge(int arr[], int* tmp, int begin1, int end1, int begin2, int end2){ int index = begin1; while (begin1 <= end1&&begin2 <= end2) { tmp[index++] = arr[begin1]<arr[begin2] ? arr[begin1++]

2016-08-11 14:36:23 803

原创 第六天(5道)

1、扑克牌顺子其实没有什么,就是一个一个的遍历,然后统计black2、和为2的连续的正数序列left++和right++的遍历,但是add==sum的时候不要忘记了left++,昨天以为是牛客网的系统有问题,其实是自己的代码死循环了3、跳台阶问题思路:第一次跳一次的方法为f(n-1),跳两次的方法为f(n-2),所以最后为f(n-1)+f(n-2)4、变态跳台阶思路

2016-08-11 09:53:07 307

原创 二叉查找树中节点的删除

今天,在写数据结构的二叉查找树时,写到remove方法时,突然卡壳了。后来,打开书细看时,竟然耗费了不少时间才看懂。    现将思想记录下来,以免以后再次遗忘。    二叉查找树重要性质:                                     每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。左子树上所有节点的关键码(key)都小于

2016-08-10 23:25:13 651

原创 第五天(5道)

1、找出字符串中第一次只出现一次的字符其实就是使用map[256]遍历两次的方法重点是这道题的测试用例标准输入的时候使用了while (scanf("%s", str) != EOF),这种写法值得研究研究2、数组中重复的数字在一个长度为n的数组里的所有数字都在0到n-1的范围,就是每一个树到该到的位置上3、把字符串转换为整数溢出的判断十分巧妙4、连续子数组的最大和

2016-08-10 02:25:01 343

原创 并查集

在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。建模思路:最简单而直观的假设是,对于连通的所有节点,我们可以认为它们属于一个组,因此不连通的节点必然就属于不同

2016-08-09 22:40:19 277

原创 第四天(6道)

1、最小的K个数使用的是堆排序,但是貌似编译不通过,明天在研究研究2、第一个只出现一次的字符位置就是使用哈希表进行记录出现的次数,然后在遍历一遍找其中次数为1的即可3、左旋转字符串本身这道题没有什么难度,但是体现出来了自己对于迭代器的使用还不是很熟练,STL中是有reverse函数的,参数是迭代器类型4、翻转单词顺序列本人认为自己使用的方法还是比较直观的,使用left和

2016-08-08 01:08:08 374 6

原创 第三天(5道)

1、反转链表两种方法2、合并两个排序的链表巧妙的处理了第一次的判断的时候谁是新的链表的头结点的问题3、顺时针打印矩阵利用矩阵的分圈处理4、包含min函数的栈注意第一次插入的时候的min的判断条件数组中出现次数超过一半的数字数组中出现次数超过一半的数字

2016-08-07 02:00:53 218

原创 第二天(5道)

1、斐波那契数列使用递归和非递归的方法注意0、1、1...  if(n2、二进制中1的个数使用了两种方法(1)flag,注意判断条件为flags!=0(2)n=n&(n-1)点击打开链接3、数值的整数次方感觉数学自己都不会了呀注意:浮点数不能直接和0比较4、调整数组顺序使奇数位于偶数前面关键实现的是:相对位置不改变,这个时候我选择了插入排序并且做了少量的

2016-08-06 01:34:21 255

原创 第一天(5道)

1、二维数组中的查找就是不断的查找空间2、替换空格就是使用for循环,还有while循环都是可以的3、从尾到头打印单链表给定函数的头部使用的是vector,居然在1分钟之内都没有反应过来,该复习STL的使用了4、两个栈实现一个队列就是在数据倒换的时机上要十分的注意,一定要第二个stack中没有元素的时候才可以倒5、旋转数组中的最小数字这道题其实是最难的,这道题后

2016-08-04 23:55:09 410 1

原创 三种多路复用IO实现方式:select,poll,epoll的区别

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用

2016-08-03 23:46:58 6232

空空如也

空空如也

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

TA关注的人

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