自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

尜尜君的小世界

守好你的代码边界~~~

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

原创 IPIP.Net地址库格式分析

IPIP.NET地址库文件格式分析ipip库是什么?ipip是一个ip地址库, 官网号称全球唯一一个基于各电信运营商,以及网络服务的BGP/ASN数据而分析处理而得来的IP库ipip库有哪些特性地理数据标注准确: 国内的地址标注准确度高更新实时: 数据24小时实时更新提供CDN/DNS/VPN专版, 专为CDN、DNS、VPN用户设计(提供ACL格式)ipip库提供文件格式DAT[X]格式数据TX...

2018-04-19 17:25:43 8981

原创 为什么是虚析构函数?

CPP玩多了你自然就会接触很多关于继承的实例,在继承体系中我们经常会为了多态特性去使用很多的virtual关键字。其中会有对普通成员函数的virtual修饰,对继承关系的virtual修饰,见得更多的还有对父类析构函数的virtual修饰,那么为什么父类的析构函数是虚的那?如果不用virtual修饰父类的析构函数会怎么样?先看如下两个实例:class B{public: B(){ s

2015-10-26 18:44:02 510

原创 TCP断开连接中与TIME_WAIT

上一篇文章中我们讲到了TCP连接的建立过程中的三次握手的起因,这里我们来看看常常出现的TIME_WAIT问题,通过TCP状态转移图我们很容易的可以看出TCP的断开连接是从一个FIN包开始,这个过程经历了FIN-ACK-FIN-ACK的四次交互,这个过程也叫做TCP连接的四次挥手断开连接。如:                                ①  主动关闭的一方首先发送 序

2015-10-23 18:09:08 979

原创 TCP建立连接为什么是三次握手?

我们都知道TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP也是日常通讯中用的最广泛的一种协议,TCP的连接需要三次握手,断开连接需要四次挥手,那么TCP的连接过程为什么是三次握手而不是两次或者四次呢?    根据《UNIX网络编程》所述的TCP状态转换变迁图所示:     从状态转换图我们可以看出TCP的连接建立经历了 SYN----SYN+ACK-----ACK的过

2015-10-20 11:16:17 2582

原创 无聊写排序之 ----第K最值(nth_element)

之前partial_sort有讲述了如果从一个无序序列中快速获得top m的所有有序数列m个。我们也常常会遇到这样的问题:如何在一个乱序的序列集合中,找到第K大的或者排名第K的那个元素?或者找到前K个排名的元素,但是这K个数之间的顺序对我们来说并不重要。比如篮球比赛中总胜利场数最多的20支球队进入总决赛,而这20支球队之前各自胜利多少的排名并不重要,因为决赛要重新比。 这个问题我们同样可以用排

2015-07-28 17:51:12 901 1

原创 无聊写排序之 ----部分排序(Partial Sort)

当有一个无序的序列集合的时候,我们想知道这个序列里面按照某种排序关系最大的m个或者前top个有序的元素。比如我又100个学生,我只想知道排名前20的学生的名次列表,剩余的我并不关心,如何去得到呢? 当然你脑海中第一个闪过的便是sort,做一次排序,取排序后前面的20不就好了吗? 没错,排序作为做常规的方法,肯定是最先想到的,这里要介绍的是比排序来的更快更直接的一个算法:部分排序(partial_s

2015-07-28 16:43:06 6660

原创 后缀数组(SuffixArray) 学习笔记

后缀数组    前面有介绍过后缀树,后缀树对于我们针对某些字符串的处理使得如鱼得水,美中不足的是后缀树的代码实现复杂,只能让很多人望而却步。这次我们来介绍后缀树组:一个处理字符串的有力工具,也是一个后缀树的精美替代品,同样可以方便解决很多字符串问题。它比后缀树更加容易实现编码,也可以在不损失效率的情况下实现很多后缀树的功能,占用内存也比后缀树小很多,尤其是在模式匹配数据规模庞大的操作中实用性很

2015-02-11 16:46:22 3120 1

原创 无聊写排序之 ----基数排序(RadixSort)

基数排序(RadixSort)     基数排序也是一种不需要元素间的比较进行排序的排序算法,而是通过对数据的分配和合并来实现的排序,也叫做桶子法排序,通过对元素按照键值进行分配到指定标准的桶中,在进行合并收集从而达到排序的结果,是一种稳定排序,基数排序的时间复杂度是O(k·n)其中n是排序元素个数,k是数字位数。注意这不是说这个时间复杂度一定优于O(n·log(n)),k的大小取决于数字位的

2015-02-02 17:33:55 562

原创 无聊写排序之 ---- 计数排序(CountingSort)

前面讲过了几种常见的排序方法,比如冒泡,归并,插入,快排等等,这些排序算法的时间复杂度都限制在O(nlogn)的上界。他们所有的排序结果都依赖于各个元素之间的比较来确定,所以我们把这类算法称之为比较排序。今天我们介绍时间复杂度为O(n)上界的排序算法:计数排序。     计数排序假设N个输入元素的每一个都是确定在一个range里面,比如一个整数序列,其中所有的元素都不大于K,当k=O(n)时,

2015-01-30 11:34:31 531

原创 后缀树(SuffixTree)的Ukkonen线性时间构造方法

前面blog讲了后缀树SuffixTree相关的介绍,还有粗暴的平方时间构造法,今天我们来看下后缀树在Ukkonen优化下的线性时间构造方式。本篇博客原文出自地址:http://www.cnblogs.com/gaochundong/p/suffix_tree.html 在此基础上做了小幅度的改动,特此说明。Suffix Tree 与 Trie 的不同在于,边(Edge)不再只代表

2015-01-27 16:02:12 1711

原创 后缀树介绍-Suffix Tree

前面的文章中有讲解了模式匹配相关的KMP和TrieTree,他们有各自的方式去提高性能,从而也应用在不同的场景中,这一次我们讲解后缀树(SuffixTree),相信如果没有专门去看过这些知识的同学应该很少知道后缀树,那么后缀树到底是什么,他能解决什么样的问题呢?    后缀树(SuffixTree)一种数据结构,通过对一个字符串所有后缀操作构建一棵树,可以支持字符串的快速匹配查询,他对于以下几

2015-01-23 18:48:25 5390

原创 Trie-tree (字典树)

假设给你一个敏感词汇表, 然后让你把一篇文章里的敏感词汇都找出来,以便于验证当前文章是否都满足没有敏感词汇要求,你会怎么办? 最容易想到的便是将文章里的每一个单词都拿去在敏感词汇表中查找是否存在,这样当文章词汇很大的时候,查找算法便成为了一个瓶颈。你可以使用最简单的做个单词匹配,也可以先将词汇表按字典排个序来加速查找匹配的过程,当然你也会想到利用红黑树,hash表,splay树来做优化。我们这里介

2014-11-26 16:13:47 820

原创 无聊写排序之 ---- 快速排序(QuickSort) 非递归实现

前面讲了最常规的快速排序算法

2014-10-29 17:52:26 2181

原创 无聊写排序之 ---- 快速排序(QuickSort) 递归实现

如果排序你忘记了快速排序这个王者至尊,那你的排序

2014-10-29 15:54:59 850

原创 无聊写排序之 ---- 归并排序(MergeSort) 非递归实现

前面讲了归并排序的递归实现,虽然递归实现代码简洁容易理解,但是在实际执行中由于

2014-10-29 11:09:40 2615 1

原创 无聊写排序之 ---- 归并排序(MergeSort) 递归实现

归并排序是采用分治法的思想,将

2014-10-28 16:23:33 1014

原创 无聊写排序之 ---- 堆排序(HeadSort)

还记得之前说的选择排序么?忘记了看这里选择排序>。 选择排序i时,我们需要从n-i+1个序列中选择一个最小的数字, 那么势必就要比较多次来寻找到最小的那一个元素从而来进行排序,这种排序虽然相对于冒泡排序有效的减少了交换所带来的开销,但是多次比较对于比较的结果却没有进行记录,当排序第1个数字的时候需要从第1.....n中找到最小的数字进行和第1个进行比较交换,当我们需要排序第2个数字时,同样需要将上

2014-10-24 14:03:32 866

原创 无聊写排序之 ---- 希尔排序(ShellSort)

之前我们讲了插入排序,它的效率在某些时候是很高的,比如,我们的记录本身就是基本有序的,我们只需要少量的插入操作,就可以完成整个记录集的排序工作,此时直接插入很高效。还有就是记录数比较少时,直接插入的优势也比较明显。可问题在于,两个条件本身就过于苛刻,现实中记录少或者基本有序都属于特殊情况。        不过别急,有条件当然是好,条件不存在,我们创造条件,也是可以去做的。于是科学家希尔研究出了

2014-10-23 11:12:34 463

原创 无聊写排序之 ---- 插入排序(insert Sort)

插入排序(Insert Sort)基本的操作是:

2014-10-22 17:39:56 588

原创 无聊写排序之 ---- 选择排序(Select Sort)

前面讲过了冒泡排序, 冒泡排序sh

2014-10-22 16:26:19 570

原创 无聊写排序之 ---- 冒泡排序(Bubble Sort)

排序是算法实现

2014-10-22 10:18:14 849

原创 关键路径(AOE网)

前面讲了AOV网,现在来介绍AOE网。在一个表示工程的youxiang

2014-10-15 14:35:46 2518

原创 拓扑排序(Topological Sort)

一个比较大的工程往往会被划分成多个子工程进行, 我们

2014-09-23 14:05:03 867

原创 图的最短路径SP--Floyd算法

单源最短路径可以shi

2014-09-21 16:59:09 672

原创 图的单源最短路径--Dijkstra算法

单源最短路径是指

2014-09-21 16:13:54 1303

原创 并查集 Union-Find-Set

当我们需要判断一个图是不

2014-09-20 12:44:52 526

原创 图的最小生成树MST--Kruskal算法

图的最小生成树算法中,prim算法是以顶点为单位,每次都是将xinding

2014-09-18 10:18:37 875

原创 图的最小生成树MST--Prim算法

带权值的网图通常会遇到这样一个问题:得到一个tuzho

2014-09-17 17:43:29 4835

原创 图的遍历---广度优先搜索(BFS)

上一篇我们讲解了图

2014-09-13 16:42:11 1192

原创 图的遍历---深度优先搜索(DFS)

图的遍历

2014-09-13 14:40:53 1494

原创 图的存储结构 --- 邻接表

图的邻接矩阵存储方式方便实现和操作,dan

2014-09-12 17:04:29 776

原创 图的存储结构 --- 邻接矩阵

zau

2014-09-12 16:28:41 1211

原创 KMP字符串模式匹配

字符串相关的处理在程序设计中占有很大的一部分

2014-09-09 15:40:21 560

原创 动态栈 栈结构的链式实现

用链表形式实现栈结构的实现,栈链式实现可以不受空间的限制,

2014-08-13 17:27:42 490

原创 静态链表的实现 部分完善

上一篇静态链表的博客转载部分, 原稿则是出自一书, 有兴趣的可以去参考这本书,很适合初学者进行学习。以下部分是自己的代码实现,原因是觉得原文中有部分处理的不合理的部分做了相关 修改

2014-08-13 16:27:13 456

转载 静态链表

静态链表 静态链表相当于是用一个数组来实现线性表的链式存储结构,大概结构图如下                                    在静态链表中,每一个结点包含两部分内容,一部分是data(即有意义的数据),另一部分是cur(存储该元素下一个元素所在数组对应的下标)。有几个特殊的结点:首先是下标为0的结点中不包含有意义的数据,它的cur存储的是备用链表

2014-08-13 16:23:31 479

原创 线索二叉树的实现 先序 中序 后序

线索二叉树的实现:x

2014-08-13 00:32:02 1405

原创 FZU OJ 1055 赋值问题

前两天有朋友说福大

2014-08-05 14:24:59 1038

原创 二叉树的非递归遍历实现

对于上一篇文章中介绍的二叉树结构,可以考虑使用非递归的方式进行不同的遍历fan

2014-08-02 23:45:01 694

原创 二叉树的创建遍历 递归实现

二叉树的实现1> 二叉树的chuang2>3>4>5>

2014-08-02 13:12:15 583

空空如也

空空如也

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

TA关注的人

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