1. CLRS 算法导论
2. Algorithms 算法概论
3. Algorithm Design 算法设计
4. SICP 计算机程序的构造和解释
5. Concrete Mathematics 具体数学
6. Introduction to The Design and Analysis of Algorithms 算法设计与分析基础
7. 编程之美–微软技术面试心得
8. Fundamentals of Algorithmics 算法基础
9. How to solve it 怎样解题
10. Programming interviews exposed 程序员面试攻略
11. Programming Pearls 编程珠玑
12. 算法艺术与信息学竞赛
13. An Introduction to Probability Theory and Its Applications
14. Numerical Analysis by Richard L. Burden,J. Douglas Faires
数值分析,讨论各种数值算法,比如插值、拟合、积分、微分方程的求解、线性和非线性方程组求解等。
15. TAOCP http://www-cs-faculty.stanford.edu/~uno/taocp.html
Category: Programming
1.Jprofile找到程序性能的瓶颈
2.需要很长时间完成的过程由单线程转多线程或线程池。假如是IO之类的问题(普遍IO是系统的瓶颈),采用NIO即rector模式处理
3.大量小文件压缩后存入内存,定量写入硬盘。大量中间变量存入内存,或序列化压缩后存入内存,后解压反序列化调用
4.使用Queue进行不同过程的缓冲
5.Linux下普遍有打开文件个数限制,消除1024限制:ulimit -n 8192
6.JVM普遍内存限制,消除内存限制:增加运行参数 -Xms20m -Xmx200m
另:
1.如何执行jar中某个类的main方法: java -cp test.jar com.acosys.clawer.GetContent
2.如何让java程序在linux后台运行: nohup … &
3.如何查看linux后台运行的nohup程序列表: jobs
4.后台FTP上传下载工具: ncftpget ncftpput
5.如何查找linux后台程序列表 ps aux | grep …
6.强行终止linux程序: kill -9 …
7.查某文件夹下文件数目: ls -l |grep “^-”|wc -l
8.执行多个依赖库的java程序:java -cp nutch-1.0.jar:commons-logging-1.0.4.jar:hadoop-0.19.1-core.jar:xerces-2_6_2.jar org.apache.nutch.tools.DmozParser content.rdf.u8 > domz/urls

N-Gram有很多应用,但是我们只用来做相似分析。基本思路来自Grzegorz Kondrak 2005年的一篇论文。http://webdocs.cs.ualberta.ca/~kondrak/papers/spire05.pdf
最近在做Translation memory的时候用到比较字符串相似度的算法。在机器翻译或者语言识别领域之所以能使用相似度算法其实是基于一种假设,相似的词具有相似的意义。
什么是N-Gram算法?
N-Gram 模型基于这样一种假设,第n个词的出现只与前面n-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。在拼写检查里即是一个字母的出现概率只和前n-1个字母的出现概率相关,并且是前n-1个字母出现概率的乘积。
如何比较2个字符串的相似度?
一般情况我们会考虑用edit distance 或者LCS。前边的论文证实了这两种算法都是N-Gram的简化版本。
在搜索引擎里一般是用来做拼写检查或者提示,比如你在百度或者google输入一个词就会有相关的词提示出来。


