2013年11月20日

Aho-Corasick 多模式匹配算法、AC自动机详解

摘要: Aho-Corasick算法是多模式匹配中的经典算法,目前在实际应用中较多。Aho-Corasick算法对应的数据结构是Aho-Corasick自动机,简称AC自动机。搞编程的一般都应该知道自动机FA吧,具体细分为:确定性有限状态自动机(DFA)和非确定性有限状态自动机NFA。普通的自动机不能进行多模式匹配,AC自动机增加了失败转移,转移到已经输入成功的文本的后缀,来实现。1.多模式匹配 多模式匹配就是有多个模式串P1,P2,P3...,Pm,求出所有这些模式串在连续文本T1....n中的所有可能出现的位置。 例如:求出模式集合{"nihao","hao" 阅读全文

posted @ 2013-11-20 14:25 旭东的博客 阅读(42603) 评论(3) 推荐(5)

2013年11月19日

标准C++中的string类的用法总结

摘要: [转自]http://www.cnblogs.com/xfreedom/archive/2011/05/16/2048037.html要想使用标准C++中string类,必须要包含#include // 注意是,不是,带.h的是C语言中的头文件using std::string;using std::wstring;或using namespace std;下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。string和wstring的用法是一样的,以下只用string作介绍:string类的构造函数:string(const char *s); //用 阅读全文

posted @ 2013-11-19 21:28 旭东的博客 阅读(667) 评论(0) 推荐(0)

2013年11月18日

STL队列 之FIFO队列(queue)、优先队列(priority_queue)、双端队列(deque)

摘要: 1.FIFO队列 std::queue就是普通意思上的FIFO队列在STL中的模版。 1.1主要的方法有: (1)T front():访问队列的对头元素,并不删除对头元素 (2)T back():访问队列的末尾元素,并不删除末尾元素 (3)void pop():删除对头元素。 (4)void push(T):元素入队 1.2代码实例 1 #include 2 #include 3 using namespace std; 4 int main() 5 { 6 std::queue myqueue; 7 myqueue.push(11); ... 阅读全文

posted @ 2013-11-18 21:50 旭东的博客 阅读(3670) 评论(0) 推荐(1)

linux下文件合并、分割、去重

摘要: 1.文件合并1.1文件上下合并 cat f1 f2> muti (将文件f1、f2合并成文件muti,f1在上,f2在下)1.2左右合并 paste f1 f2 > muti(将文件f1、f2合并成文件muti,f1在左,f2在右,默认使用tab键隔开)2.文件分割2.1按行数分割 split -l 5 file (将文件file进行分割,每个分割后的小文件,行数不大于5)2.2按大小切割 spilt -C 20M file (将文件file进行分割,每个分割后的文件最大为20M)3.文件去重3.1 可以使用sort命令 sort -u mm(对mm文件进行排序,重复的行只取一次) 阅读全文

posted @ 2013-11-18 15:41 旭东的博客 阅读(1369) 评论(0) 推荐(0)

2013年11月17日

设计模式之观察者模式(Observable与Observer)

摘要: 好久没有写博客啦,之前看完了《设计模式之禅》也没有总结一下,现在回忆一下设计模式之观察者模式。1.什么是观察者模式 简单情形:有A、B、C、D等四个独立的对象,其中B、C、D这三个对象想在A对象发生改变的第一时间知道这种改变,以便做出相应的响应或者对策。 上面的这种情形,就是观察者模式。 当然可以有多个观察者,多个被观察者。 观察者与被观察者也不是对立的,一个对象可以观察其他对象,也可以被其他对象观察。2.观察者模式的应用 为了更好的理解什么是观察者模式,下面我举一些可能用到该模式的情形或例子: (1)周期性任务。比如linux中的周期性任务命令crontab命令,win7下的定时... 阅读全文

posted @ 2013-11-17 19:48 旭东的博客 阅读(24335) 评论(4) 推荐(5)

2013年10月16日

访问者模式讨论篇:java的动态绑定与双分派

摘要: java的动态绑定 所谓的动态绑定就是指程执行期间(而不是在编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。java继承体系中的覆盖就是动态绑定的,看一下如下的代码:class Father { public void method(){ System.out.println("This is Father's method"); }}class Son1 extends Father{ public void method(){ System.out.println("This is Son1's method") 阅读全文

posted @ 2013-10-16 11:29 旭东的博客 阅读(712) 评论(0) 推荐(0)

2013年10月9日

java面试题:写代码使得分别出现StackOverflowError和OutOfMemoryError

摘要: 今天做了个笔试,这是其中的一道题目:写代码使得分别出现StackOverflowError和OutOfMemoryError。1.StackOverflowError 堆栈溢出错误一般是递归调用嘛。下面的代码就可以出现:package T20131009;public class StackOverflowTest { public static void main(String[] args) { method(); } public static void method(){ for(;;) method(); }... 阅读全文

posted @ 2013-10-09 21:56 旭东的博客 阅读(21091) 评论(2) 推荐(7)

2013年9月5日

Java使用jxl.jar包写Excel文件的最适合列宽问题基本实现

摘要: 以前用jxl.jar包,读写过Excel文件。也没有注意最适合列宽的问题,但是jxl.jar没有提供最适合列宽的功能,上次用到写了一下,可以基本实现最适合列宽。注意,这个只是基本可以实现,基本针对中文电子报表。1.实现思路 (1)一般的中文汉字占位长度是英文字母的2倍,“方块字”很统一。 (2)对于要写入Excel中的数据统计每一列的最大列宽,最后直接将这一列的列宽设置为这个列的最大值即可。2.实现代码import java.io.File;import java.util.ArrayList;import java.util.List;import java.util.regex.Mat.. 阅读全文

posted @ 2013-09-05 23:39 旭东的博客 阅读(7181) 评论(1) 推荐(1)

2013年9月2日

一致性哈希算法应用与分析

摘要: 一致性哈希算法主要使用在分布式数据存储系统中,按照一定的策略将数据尽可能均匀分布到所有的存储节点上去,使得系统具有良好的负载均衡性能和扩展性。感觉一致性哈希与数据结构中的“循环队列”还是有一点联系的。 1.简单哈希算法 哈希(hash)计箅是常见的数据分布技术,其通过求模运算来计算哈希值,然后据此将 阅读全文

posted @ 2013-09-02 21:15 旭东的博客 阅读(5472) 评论(0) 推荐(0)

2013年9月1日

身份证号码验证算法

摘要: 做项目的时候需要对拿到的数据进行“清洗”,比如剔除一些不可能存在的身份证号码。查阅了网上的身份证号码验证算法,自己也总结一下。(一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 1、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。2、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 3、顺序码 表示在同一地址码所标识的区域范围内,对同年、同月、同日... 阅读全文

posted @ 2013-09-01 00:26 旭东的博客 阅读(38482) 评论(9) 推荐(7)

导航