自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 【文本分类】 特征抽取之χ2统计量

全文转载:http://www.blogjava.net/zhenandaci/archive/2008/08/31/225966.html作者:Jasper  大家应该还记得,开方检验(χ2,又称Chi-square)其实是数理统计中一种常用的检验两个变量独立性的方法。开方检验最基本的思想就是通过观察实际值与理论值的...

2010-09-24 19:44:14 466

原创 【文本分类】 特征抽取之信息增益

 全文装载:http://www.blogjava.net/zhenandaci/archive/2009/03/24/261701.html作者:Jasper (from BlogJava) 在前面的《文本分类概述》文章中,我们讲到了基于统计学习的方法进行分类的关键在于对训练集语料的特征选择的好坏。那么训练集中哪些词可以作为特征,哪些词则不能呢?我们必须对训练...

2010-09-19 16:12:58 1084

原创 【文本分类】文本表示 --- VSM

要使得计算机能高效的处理真实文本,就必须找到一种理想的形式化表示方法,这种表示一方面能真实的反映文档内容(主题、领域或结构等),另一方面也要有对不同文档的区分能力。 目前文本表示通常采用向量空间模型(vector space model, VSM)。VSM是20世纪60年代末期由G. Salton等人提出的,是当前自然语言处理中常用的主流模型。 下面首先给出VSM设计的基本概念...

2010-09-17 14:22:55 1045

原创 【文本分类】 概述

部分转载: http://www.blogjava.net/zhenandaci/archive/2008/05/31/204646.html作者:Jasper      文本分类(text categorization) 问题就是将一篇文档归入预先定义的几个类别中的一个或几个,而文本的自动分类则是使用计算机程序来实现这样的分类。通俗点说,就好比你拿一篇...

2010-09-17 12:16:48 299

原创 Java内存泄露问题

内存泄露      所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。java中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉。由于Java 使用有向图的方式进行垃圾回收管理,可以消除引用循环的问题,例如有两个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以回收它们的,例如下面的代码可以...

2010-08-29 08:49:56 114

原创 Java面试过程中会遇到的问题

1、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!abstract的method 不可以是native的,native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子...

2010-08-28 09:37:13 159

原创 JVM加载class文件的原理

     当Java编译器编译好.class文件之后,我们需要使用JVM来运行这个class文件。那么最开始的工作就是要把字节码从磁盘输入到内存中,这个过程我们叫做【加载 】。加载完成之后,我们就可以进行一系列的运行前准备工作了,比如: 为类静态变量开辟空间,将常量池存放在方法区内存中并实现常量池地址解析,初始化类静态变量等等。这篇文章我们要好好谈谈JVM是如何加载class文件的? ...

2010-08-26 11:30:15 141

原创 JVM垃圾回收机制总结(8) :反思和参考资料

垃圾回收的悖论    所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。    当然,上面是从技术角度出...

2010-08-26 11:25:09 96

原创 JVM垃圾回收机制总结(7) :调优方法

JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功能强大,与JProfiler类似。推...

2010-08-26 11:23:17 107

原创 JVM垃圾回收机制总结(6) :透视Java的GC特性

全文转载: http://topic.csdn.net/u/20091211/12/c79a9293-fdd5-4f81-b18f-a4a29c8d9be2.html 作者: yang677888 (from CSDN)   1、 使用 System.gc() 可以不管JVM使用的是哪一种垃圾回收的算法,都可以请求 Java的垃圾回收。 在命令行中有一个参数-verbose...

2010-08-26 11:21:34 100

原创 JVM垃圾回收机制总结(5) :JDK垃圾收集器的配置命令

全文转载:http://pengjiaheng.iteye.com/blog/548472作者:和你在一起 [from JavaEye] 以下配置主要针对分代垃圾回收算法而言。堆大小设置年轻代的设置很关键JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。3...

2010-08-24 15:48:02 103

原创 JVM垃圾回收机制总结(4) :新一代的垃圾回收算法

全文转载: http://pengjiaheng.iteye.com/blog/548472作者:和你在一起 (from JavaEye)   垃圾回收的瓶颈    传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Fu...

2010-08-23 16:02:54 100

原创 JVM垃圾回收机制总结(3) :按代垃圾收集器

全文转载:http://pengjiaheng.iteye.com/blog/524024作者:和你在一起 [from JavaEye]为什么要分代    分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。     在Java程序运行的过程中,会产生大...

2010-08-23 15:42:33 104

原创 JVM垃圾回收机制总结(2) :基本算法概述

1、引用计数收集器(Reference Counting)       引用计数是垃圾收集的早期策略。在这种方法中,堆中每一个对象都有一个引用计数。一个对象被创建了,并且指向该对象的引用被分配给一个变量,这个对象的引用计数被置为1。当任何其他变量被赋值为对这个对象的引用时,计数加1。当一个对象的引用超过了生存期或者被设置一个新的值时,对象的引用计数减1。任何引用计数为0的对...

2010-08-23 13:47:46 96

原创 JVM垃圾回收机制总结(1) :一些概念

全文转载:http://pengjiaheng.iteye.com/blog/518623作者:和你在一起 [from JavaEye]数据类型    Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个...

2010-08-23 09:30:51 102

原创 tomcat源码—redirect和forward的实现

全文转载:http://luckaway.iteye.com/blog/557980作者:luckaway [from javaeye] 网上已经有很多关于redirect和forward区别的文章,更多的都是只是一些概念上的描述,虽然在大多情况下,知道这些就已经足够了。但也有例外:forward not working for struts2,why?我也是在工作中碰到了这个问题,才...

2010-08-22 11:58:26 310

原创 信号量解决经典线程同步问题

      信号量是E. W.Dijkstra在l965年提出的一种方法,它使用一个整型变量来累计唤醒次数,以供以后使用。在他的建议中引入一个新的变号类型,称作信号量(semapore)。一个信号量的值可以为0,表示没有积累下来的唤醒操作;或者为正值,表示有一个或多个被积累下来的唤醒操作。      Dijkstra建议设两种操作:Down和Up。对一信号量执行Down操作是检查其值是...

2010-08-17 15:14:23 480

原创 ★经典问题—链表中的环问题

转载:http://www.cppblog.com/humanchao/archive/2008/04/17/47357.html作者:胡满超 from:C++博客  有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如果找到...

2010-06-29 14:43:00 130

原创 Class文件内容及常量池

  当JVM运行Java程序的时候,它会加载对应的class文件,并提取class文件中的信息存放在JVM开辟出来的方法区内存中。那么这个class文件里面到底有些什么内容呢? 一、class文件内容概述 class文件是由8bits的字节流组成,全部字节构成了15个有意义的项目。这些项目之间没有任何无意义的字节,因此class文件非常紧凑。占据多字...

2010-06-09 09:10:18 98

原创 Java 虚拟机体系结构

众所周知,Java源代码被编译器编译成class文件。而并不是底层操作系统可以直接执行的二进制指令(比如Windows OS的.exe文件)。因此,我们需要有一种平台可以解释class文件并运行它。而做到这一点的正是Java 虚拟机(JVM)。 实际上,JVM是一种解释执行class文件的规范技术。各个提供商都可以根据规范,在不同的底层平台上实现不同的JVM。 下面...

2010-05-26 20:43:05 73

原创 ★经典问题—元素选择问题

元素选择问题 : 给定线性序集中n个元素和一个整数k(1<=k<=n),要求找出这n个元素中第k小的元素(第n-k大)。这一问题可以演化成找最大最小值、找中位数等。 最简单思想:如果是直接找最大最小值,则可以通过N次比较来完成,其时间复杂度为O(N),空间复杂度为O(1)。除此之外,对于一般的k值,可以考虑对序列N先进行排序,然后直接定位第k个位置上的数即可...

2010-05-24 10:53:35 335

原创 <算法书>子数组换位问题

子数组换位问题        设a[0:n-1]是一个有n个元素的数组,k(0&lt;=k&lt;=n-1)是一个非负整数。 试设计一个算法将子数组a[0:k]与a[k+1,n-1]换位。要求算法在最坏情况下耗时O(n),且只用到O(1)的辅助空间  (来自《计算机算法设计与分析》- 王晓东 - 第三章 - 递归与分治策略 - 课后习题) 初步思考:...

2010-05-21 13:48:45 422

原创 <游戏> 取石子

Tang和Jiang非常喜欢玩一种有趣的小游戏: 有N个石子,两人轮流从中取出1个, 3个或4个石子,当石子被取空时,游戏结束。最后一个取石子的人获胜, 第一次总是Tang取. 当然,他们俩都足够聪明,总会采取最优的策略。Input每行会有一个正整数N(N&lt;=100000), 代表石子的个数, N=0 代表输入结束Output输出获胜人的名字。Sample...

2010-05-18 14:05:31 132

原创 【总结】Java线程同步机制深刻阐述

全文转载:http://www.iteye.com/topic/164905作者: buaawhl  我们可以在计算机上运行各种计算机软件程序。每一个运行的程序可能包括多个独立运行的线程(Thread)。 线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。 当多个线程同时读写同一份共享...

2010-05-16 10:21:00 76

原创 【分词】正向最大匹配中文分词算法

中文分词一直都是中文自然语言处理领域的基础研究。目前,网络上流行的很多中文分词软件都可以在付出较少的代价的同时,具备较高的正确率。而且不少中文分词软件支持Lucene扩展。但不管实现如何,目前而言的分词系统绝大多数都是基于中文词典的匹配算法。 在这里我想介绍一下中文分词的一个最基础算法:最大匹配算法 (Maximum Matching,以下简称MM算法) 。MM算法有两种:一种...

2010-05-15 16:02:21 291

原创 【JDK优化】java.util.Arrays的排序研究

作者题记:JDK中有很多算法具有优化的闪光点,值得好好研究。 【java.uti.Arrays】包含用来操作数组(比如排序和搜索)的各种方法。这篇文章我们就来研究一些大师们写的排序算法。(1) 基本数据类型数组的排序,如Arrays.sort(int[])等。采用了一种经过调优的快速排序。该算法改编自 Jon L. Bentl...

2010-05-12 21:06:27 173

原创 找一个数组中的主元素

问题:在一个规模为N的数组array[N]中,所谓主元素就是出现次数大于N/2的元素,例如                                             3.3.4.2.4.4.2.4.4  有一个主元素为4。          给出一个算法,如果过半元素存在,就找出来,否则给出报告,要求给出O(N)的算法。  常规想法...

2010-05-12 09:24:39 303

原创 J2SE 四大技术体系

讲到Java,很容易就想到程序设计语言。实际上,Java技术包含的内容远不止一种编程语言怎么简单。我们通常说的J2SE(java 2 标准版)就是在全局上对Java技术的一种称呼。1、J2SE技术体系结构下图包含了J2SE体系结构的全部重大相关技术,也描述了java程序运行不可缺少的过程。 要精通J2SE,必须对J2SE的四大重要技术有深入的了解。(1)...

2010-05-10 17:12:04 213

原创 【Google】25匹马的角逐

问题是这样的:一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马。 注意:"假设每匹马都跑的很稳定" 的意思是在上一场比赛中A马比B马快,则下一场比赛中A马依然比B马快。 稍微想一下,可以采用一种竞标赛排序(Tourn...

2010-05-10 08:25:43 531 1

【腾讯】快速找到未知长度单链表的中间节点

普通的方法很简单,首先遍历一遍单链表以确定单链表的长度L。然后再次从头节点出发循环L/2次找到单链表的中间节点。算法复杂度为O(L+L/2)=O(3L/2)。 能否再优化一下这个时间复杂度呢?有一个很巧妙的方法:设置两个指针* fast、*slow都指向单链表的头节点。其中* fast的移动速度是* slow的2倍。当* fast指向末尾节点的时候,slow正好就在中间了。 C...

2010-05-09 15:21:24 120

【Lucene3.0 初窥】索引文件格式(2):文件结构总体框架

Lucene使用文件扩展名标识不同的索引文件。如.fnm文件存储域Fields名称及其属性,.fdt存储文档各项域数据,.fdx存储文档在fdt中的偏移位置即其索引文件,.frq存储文档中term位置数据,.tii文件存储term字典,.tis文件存储term频率数据,.prx存储term接近度数据,.nrm存储调节因子数据,另外segments_X文件存储当前最新索引片段的信息,其中X为...

2010-05-02 16:44:09 115

【Lucene3.0 初窥】索引文件格式(1):预备知识

注意,本专题内容参见《http://lucene.apache.org/java/3_0_1/fileformats.html》 深入了解Lucene的磁盘索引文件,可以使我们对IR系统底层数据存储结构有一个深刻的认识。在《索引文件格式》这一专题中,我们将详细探讨Lucene 3.0索引数据在磁盘上的存储格式,并通过一个实例进一步理解这些格式。但首先,我们必须准备点Luce...

2010-05-02 16:26:28 115

【Lucene3.0 初窥】索引文件格式(5):posting数据[.frq/.prx]

★ .frq  词语频率数据文件    .prx  词语位置数据文件 1、frq 保存了词语所在文档的文档列表(docID)和该词语出现在文档中的频率信息。 FreqFile (.frq) --&gt; &lt;TermFreqs, SkipData&gt; ...

2010-05-02 12:34:00 235

【Lucene3.0 初窥】索引文件格式(4):dictionary数据[.tii/.tis]

Terms数据磁盘文件存储细节 从这篇开始,已经涉及到倒排索引表的信息存储问题了。我们都知道倒排索引表中的Dictionary有许多不同的terms组成,Lucene关于这些terms数据的存储,就放在磁盘的.tii和.tis文件中。 ★ .tii  词典索引文件    .tis  词典数据文件 1、tii 保存了tis中每隔...

2010-04-30 10:57:01 212

【腾讯】1亿个数据取前1万大的整数

数据规模分析  不考虑操作系统的区别,通常将C++中的一个整型变量认为4bytes。那么1亿整型需要400M左右的内存空间。当然,就现代PC机而言,连续开辟400M的内存空间还是可行的。因此,下面的讨论只考虑在内存中的情况。为了讨论方便,假设M=1亿,N=1万。  用大拇指想想略微考虑一下,使用选择排序。循环1万次,每次选择最大的元素。源代码如下:...

2010-04-29 08:05:21 224

【串和序列处理 8】最长平台问题

1、经典最长平台算法 已知一个已经从小到大排序的数组,这个数组中的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,在1,2,2,3,3,3,4,5,5,6中[1]、[2,2]、[3,3,3]、[4]、[5,5]、[6]都是平台。是编写一个程序,接受一个数组,把这个数组中最长的平台找出来。在上面的例子中3,3,3就是该数组中最长的...

2010-04-28 16:41:12 553

【Linux】linux下gcc编译器的使用

GCC介绍  在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一 位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值...

2010-04-25 21:15:16 187

【Lucene3.0 初窥】索引文件格式(3):Field数据[.fdx/.fdt/.fnm]

注意:以下文章是参见http://lucene.apache.org/java/3_0_1/fileformats.html#Fields和实践中读取文件内容概括总结出来的。 Fields数据磁盘文件存储细节 Lucene 的数据域在内存中组织成Document和Field数据结构。每次建立索引的Document对象都可能拥有不同的Fields,而查询的时候...

2010-04-23 15:12:08 216

【Lucene3.0 初窥】索引创建(6):关闭IndexWriter

1.5 IndexWriter的关闭细节 IndexWriter索引器创建内存索引的整体流程在前几篇文章中已经详细阐述了,当我们利用IndexWriter创建完内存索引表之后,剩下的工作就只剩下关闭IndexWriter了。IndexWriter在关闭的时候除了清理内存中的对象之外,还有一个非常重要的工作,就是把内存要存储的信息(需要保存的Fields信息,倒排索引表等)写入Luc...

2010-04-23 15:09:05 354

【腾讯】10G整数文件中寻找中位数

题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。  分析:既然要找中位数,很简单就是排序的想法。那么基于字节的桶排序是一个可行的方法(请见《桶排序》):思想:将整形的每1byte作为一个关键字,也就是说一个整形...

2010-04-21 21:15:32 2812

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