- 博客(29)
- 收藏
- 关注
原创 文件流输出的例子
import java.io.*;public class FileInputStreamDemo { public static void main(String args[]) throws Exception{ int size; InputStream f = new FileInputStream("FileInputStreamDemo.java
2011-06-15 22:06:00 416
转载 C++实现Creational - Singleton模式
<br />Singleton设计模式经常被大家谈及,很多人认为该模式很简单。的确,从纯粹的设计模式的角度来看,它并不复杂,但是从实现的角度来看,其实非常不简单,尤其是用C++去实现它的时候。<br /> <br />一、Java版本的Singleton模式实现<br />我们不妨先看看在Java中实现Singleton模式的典型代码:<br />// Singleton设计模式典型代码<br />package Singleton;<br />publicclass Singleton <br />{<b
2011-01-10 19:25:00 555
转载 计算机经典书籍
计算机经典书籍 <br />各种计算机语言的经典书籍 1、Java <br /> <br />Java编程语言(第三版)---Java四大名著----James Gosling(Java之父) <br />Java编程思想(第2版)----Java四大名著----Bruce Eckel <br />Java编程思想(第3版)----Java四大名著----------------Bruce Eckel <br />JAVA 2核心技术 卷I:基础知识(原书第7版)---Java四大名著-----Cay Ho
2011-01-04 11:45:00 567
转载 关键字const的使用技巧
<br />const只是个限定符,用来表示这个符号不能赋值,意思为“只读的”!<br />例:<br />const int limit = 10; // limit不能被赋值,为只读的,始终为10;<br />【深入了解 const】<br />const int *p = &limit; // 我们定义了一个指向【整形常量】的指针p;<br />int i = 27; // 定义一个整形变量i,初值为27;<br />p = &i; // 将i的地址赋值给p,<br />
2010-12-30 15:55:00 671
原创 MSD对多个字符串的排序算法
<br />该程序#include <iostream>#include <string>using namespace std;char *a[20] = {"now","for","tip","ilk","dim","tag","jot","sob","nob", "sky","hut","ace","bet","men","egg","few","jay","owl","joy","rap"};#define d(x,y) (x*y)#define dia(a,b)
2010-12-29 16:57:00 901
原创 使用字符串作为函数模板的实参
<br /> 有时,把字符串传递给函数模板的引用参数会导致出人意料的运行结果,如:<br /> template <typename T><br />inline T const& max(T const& a,T const& b)<br />{<br /> return a < b ? a : b;<br />}<br /> <br />max("apple","peach"); // ok:相同类型的实参<br />max("apple","banana"); //error:不同类
2010-12-20 17:05:00 1522
原创 Effective c++学习笔记
1 尽量用const和inline而不用#define。 #define指令的另一个用法是用它来实现那些看起来象函数而又不会导致函数调用的宏。如 #define max(a,b) ((a) > (b) ? (a) :(b))2 头文件使用#include,得到的是置于名字空间std下的iostream库的元素;如果使用#include ,得到的是置于全局空间的同样的元素。3 尽量用new和delete而不用malloc和free。Malloc和free会产生问题的原因在于他们太简单:他们不知道构造函
2010-12-14 21:17:00 418
原创 两个字符串模式匹配的算法
<br /> 今天看了一下查找子串在某个文本中出现的位置的两个算法。一个是Karp-Rabin算法,另外一个是Knuth-Morris-Pratt算法。<br /> 先来说明一下这个Karp-Rabin算法。该算法提出了一个简单的子串位置查询的方法,区别于brute force方法的O(m*n)的时间复杂度,该算法在最坏情况下的时间复杂度是O(m*n),其平均复杂度为O(m+n)。其中m为子串的长度。n为文本的长度。该算法使用hash函数来检查两个序列。从而查找出子串在文本中出现的位置。
2010-12-13 20:45:00 750
转载 static_cast
static_cast 用法:static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。 ②用于基本数据类型之间的转换,如把in
2010-12-09 11:00:00 401
原创 编程总结
<br />最近在看一些论文的时候,我也会尝试着将其中的算法用c++实现一下,但是发现自己经常是还没有完全想好该如何实现就开始动手编程,这样看起来是在不停地练习编程,实际上却很浪费时间,以后自己要注意这一点。。确定90%的实现都已经想好了,在开始付诸实践。这样也会大大地提高效率。。
2010-12-07 18:12:00 348
原创 倒排索引(Inverted index)
<br />适用范围:搜索引擎,关键字查询<br /> <br /> 基本原理及要点:为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。<br /><br /> 以英文为例,下面是要被索引的文本:<br /> T0 = "it is what it is"<br /> T1 = "what is it"<br /> T2 = "it is a banana"<br /> 我们就能得到下面的反向文件索引:<br /> "a": {2}<br /
2010-12-07 15:52:00 866
原创 关于Manber-Mayer suffix array 构造算法
<br />文章首次提出了构造后缀数组的概念。并给出了时间复杂度为O(nlogn)的后缀数组构造算法。算法的思想具体如下:<br />排序分为log2(N+1)step,在第一步,字符串的所有后缀按照其第一个字符相同与否放入不同或相同的桶中。然后递归地,每一步都都按照上一步两倍的前缀字符来对后缀字符串进行划分并将其放入相应的桶中。即,每一步比较的前缀字符的个数分别是:1,2,4,8...。在第H步,后缀是按照<=H-Order来进行排序的。在H段后所有后缀被分入到了mH个桶中,每一个桶中存放的后缀们的前H个
2010-12-06 15:07:00 894
原创 死字符消息
<br />关于window程序设计中提到的死字符消息,书中是这样介绍的:<br />Windows程序经常忽略WM_DEADCHAR和WM_SYSDEADCHAR消息,但您应该明确地知道死字符是什么,以及它们工作的方式。 <br />在某些非U.S.英语键盘上,有些键用于给字母加上音调。因为它们本身不产生字符,所以称之为「死键」。例如,使用德语<br />键盘时,对于U.S.键盘上的+/=键,德语键盘的对应位置就是一个死键,未按下Shift键时它用于标识锐音,按下Shift键时<br />则用于标识抑音。
2010-12-05 20:34:00 1647
转载 SendMessage和PostMessage的区别
<br />1、首先是返回值意义的区别,我们先看一下 MSDN 里的声明:<br />LRESULT SendMessage(<br /> HWND hWnd,<br /> UINT Msg,<br /> WPARAM wParam,<br /> LPARAM lParam<br />);<br />BOOL PostMessage(<br /> HWND hWnd,<br /> UINT Msg,<br />
2010-12-05 17:59:00 396
原创 c++ string 类的对象的输出问题
<br />这几天一直在想没有用过string类的指针,那如果要输出string对象从第i个字符之后的所有字符该怎么办?当然,可以用string类的substr函数来进行输出。今天发现可以这样做:<br />string str = "mississippi";<br />cout<<&st[3];<br />这样就可以输出:sissippi。这样就可以地实现字符串的任意后缀字符串的输出了。
2010-12-05 09:48:00 911
原创 c语言的指针数组和数组指针
<br />这是一个有关指针数组和数组指针的代码:<br /><br />//********BEGIN<br />#include <stdio.h><br /><br />int main()<br />{<br />char aa[3][2]={{'f','i'},{'s','e'},{'t','h'}};<br />char *ap[3];<br />char (*pa)[2];<br /><br />int i;<br />for ( i=0;i<3;i++)<br />{ap[i]=aa[i];
2010-12-05 08:32:00 377
原创 听力练习
<br />再过几天有一个英语考试,晚上练听力,老是注意力无法集中。终于体会到那种能听懂文章却无法做对题的烦恼了。考前一定要休息好,有一个好的精神状态。然后注意力才能很好的集中。这样也就对得起自己交的那么多钱了。呵呵。加油了。<br />还记得自己在博客里面写的那些关于自己的梦想吧。加油奋斗吧。一如电视剧中所说:人生的道路都是自己选择得来的啊。种什么样的因,必然会收获什么样的果。天上掉馅饼的事嘛,那就属于小概率事件了,像我这样的倒霉蛋那是断然不会给碰上的啦。所以还是相信一分耕耘一分收获。像我这样的笨鸟就早早
2010-12-04 20:15:00 419
转载 三种线性排序算法:计数排序、桶排序与基数排序
[非基于比较的排序]在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简单证明如下:N个数有N!个可能的排列情况,也就是说基于比较的排序算法的判定树有N!个叶子结点,比较次数至少为log(N!)=O(NlogN)(斯特林公式)。而非基于比较的排序,如计数排序,桶排序,和在此基础上的
2010-12-03 14:27:00 3833 1
原创 radix sort 基数排序
<br /> 就目前所知,基数排序可以采用以下两种方法:一种是计数方式进行排序,另外一种就是桶排序。基数排序的优势在于其不需要对数据进行比较,所以就超越了一半排序时间复杂度O(nlogn)的下界。这里我们知道采用计数排序方式,radix sort的时间复杂度可以达到O(d*n)。其中d是排序数据的平均位数。n为待排序数据的个数。接下来的任务就是编码实现这两种方法的radix sort。 <br /> 另外,实现Mayer 文中提到的nlogn方式的后缀数组,还有就是DC3算法自己可以试着完整编
2010-12-01 20:49:00 695
原创 人啊,就要对自己狠一点!
<br />这段时间一直在看后缀数组的相关知识,现在对后缀数组的构造方法有了大致的了解。其中最著名的要数DC3算法了,总算把这个方法大致上搞清了,这个算法的优势就在于其时间复杂度是线性的。另外还有其他文章中提到的倍增算法,以及BWT算法,还有类似的复杂度为O(nlogn)的算法。这段时间需要掌握并实现一下。不过现在才发现自己的编程能力不是一般的差。好好加强了。今天huawei的人来实验室听同学们作报告。突然真的有一种莫名的危机感。觉得自己真的很差劲的。还不努力学习。哎。以后啊,就是要对自己狠一点,每天多花点
2010-11-30 22:02:00 562
原创 开博后第一个程序:radix sort
最近在看后缀数组和后缀树的相关知识,经常提到radix sort这种排序方法。在google上搜索了一下,radix sort排序方法主要分为两种:LSD(least significant digit)和MSD(most significant digit)。其中LSD是从低位向高位的逐步排序,MSD则是从高位向低位逐步排序。具体的例子可以自己找一下:下面是我参考网页上的相关算法自己实现的radix sort 方法对一个数组的排序,采用的是计数的方法。具体代码如下:#include #includ
2010-11-25 16:58:00 504
转载 关于函数指针数组的定义
关于函数指针数组的定义方法,有两种:一种是标准的方法;一种是蒙骗法。第一种,标准方法:分析:函数指针数组是一个其元素是函数指针的数组。那么也就是说,此数据结构是是一个数组,且其元素是一个指向函数入口地址的指针。 根据分析:首先说明是一个数组:数组名[];其次,要说明其元素的数据类型指针:*数组名[];再次,要明确这每一个数组元素是指向函数入口地址的指针:函数返回值类型 (*数组名[])().请注意,这里为什么要把“*数组名[]”用括号扩起来呢?因为圆括号和数组说明符的优先级是等同的,如果不用圆括号把指针数组
2010-11-25 16:36:00 379
原创 关于后缀数组
这几天一直在看关于后缀数组的问题:看的是"Simple Linear Work Suffix Array Construction(2003)",不明白文章中提到的"The Skew Algorithm"中第二、三步求解Suffix Array SA的解决方法。求解i mod 3 = 0时,求解SA的过程。已经好几天,还不是很明白这种算法是如何实现的,再好好加油看法。
2010-11-12 17:55:00 404
原创 盖茨送给年轻人的10句话
1.人生是不公平的,习惯去接受它吧。2.这个世界不会在乎你的自尊,这个世界期望你先做出成绩,再去强调自己的感受。3.你不会一离开学校就有百万年薪,你不会马上就是拥有移动电话的副总裁,两者你都必须靠努力赚来。4.如果你觉得你的老板很凶,等你当了老板就知道了,老板是没有工作任期保障的。5.在速食店煎个汉堡并不是作贱自己,你的祖父母对煎汉堡有完全不同的定义。6.如果你一事无成,不是你父母的错,所以不要只会对自己犯的错发牢骚,从错误中去学习。7.在你出生前,你的父母并不像现在这般无趣,他们变成这样是因为忙着付你的开
2010-11-12 10:26:00 347
转载 75道逻辑思维题(无聊时看看,锻炼思维也不错)(二)
【40】两个空心球,大小及重量相同,但材料不同。一个是金,一个是铅。空心球表面图有相同颜色的油漆。现在要求在不破坏表面油漆的条件下用简易方法指出哪个是金的,哪个是铅的。【41】有23枚硬币在桌上,10枚正面朝上。假设别人蒙住你的眼睛,而你的手又摸不出硬币的 反正面。让你用最好的方法把这些硬币分成两堆,每堆正面朝上的硬币个数相同。【42】三个村庄A、B、C和三个城镇A、B、C坐落在如图所示的环形山内。 由于历史原因,只有同名的村与镇之间才有来往。为方便交通,他们 准备修铁路。问题是:如何在这个环形山内修三条铁
2010-11-11 15:29:00 1082
转载 75道逻辑思维题(无聊时看看,锻炼思维也不错)(一)
【1】假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。【2】周雯的妈妈是豫林水泥厂的化验员。 一天,周雯来到化验室做作业。做完后想出去玩。 "等等,妈妈还要考你一个题目,"她接着说,"你看这6只做化验用的玻璃杯,前面3只盛满了水,后面3只是空的。你 能只移动1只玻璃杯,就便盛满水的杯子和空杯子间隔起来 吗?" 爱动脑筋的周雯,是学校里有名的"小机灵",她只想了一会儿就做到了。 请你想想看,"小机灵"是怎样做的?【3】三个小伙子同时爱上了一
2010-11-11 15:28:00 2218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人