- 博客(98)
- 问答 (1)
- 收藏
- 关注
使用位图做整型ID去重的一种方法
什么是位图算法英文叫做bitmap,也有叫做bitset,Java SDK的util包中就包含一个BitSet的实现。《编程珠玑》中提到一个位图算法的例子:输入:一个文件,里面大约有1千万行数据,每个数据是7位整数,同时每个数是唯一的,即不允许有2个数相同,这些整数不与其他任何数产生关联。输出:将这个整数按升序排列,并生成到一文件中限制:能够使用内存为1M,但是附存足够大...
2012-01-29 11:54:15
288
Storm的第一份作业
去年在公司做一些实时数据分析的程序,基本上依靠的是分布式缓存系统(像我们公司的tair或者使用MongoDB这样的kv数据库),他们具备的原子递增功能可以用来作实时的计数。这种方式要是遇到复杂的统计规则,那么设计所需的key就变得异常困难。还有个最大的缺点,一旦分布式缓存系统发生异常或者重启的时候,你的计数就完全不准确了。很早开始关注storm了,本来想山寨一个。最近找了几个公司里比较关...
2012-01-29 11:52:50
203
用emacs的org-mode做时间管理
根据只管去做(GTD)的理念,你需要一个可靠的外部系统来接管所有可能扰乱你心绪的事情,而你的心中应该是无所牵挂,可以"只管去做"的。在这里,org-mode自然就是那个可靠的外部系统了,这在emacs23下是自带的,稍稍在.emacs下加点配置(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))(define-key global-ma...
2010-05-02 19:29:48
254
浏览器缓存机制
Cache-ControlCache-Control 是最重要的规则。这个字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令。这些指令指定用于阻止缓存对请求或响应造成不利干扰的行为。这些指令通常覆盖默认缓存算法。缓存指令是单向的,即请求中存在一个指令并不意味着响应中将存在同一个指令。 cache-control 定义是:Cache-Control = "Cache-Control"...
2010-03-02 15:06:36
147
原创 hibernate启动时的一个小问题
测试时报错但测试可正常运行javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.in...
2010-01-07 21:39:40
160
原创 Reconfiguring FreeBSD Ports
make rmconfig optionThe simplest one is type command make rmconfig. First login as root; go into the directory containing the port and type:# cd /usr/ports/www/apache22# make rmconfigOutput:...
2009-10-31 11:34:00
203
原创 使用Portsnap更新Freebsd port tree
portsnap从Freebsd 6.0之后成为ports的默认部分, 从效率上来说比cvsup要快的多,因为它是一次性下载压缩包.首先找个国内速度快的镜像 vi /etc/portsnap.confSERVERNAME=portsnap.cn.FreeBSD.org直接更新 portsnap fetch updateLooking up portsnap.hshh.o...
2009-10-31 10:29:15
213
原创 优化FreeBSD ports下载速度
使用axel来替换fetch来进行多线程下载FETCH_CMD=axelFETCH_BEFORE_ARGS= -aFETCH_AFTER_ARGS=DISABLE_SIZE=yes或者只写一行FETCH_CMD=axel -a 添加更快的port下载站点 在make.conf文件中使用配置MASTER_SITE_OVERRIDE参数,可自行增加软件镜像以...
2009-10-31 10:17:15
324
原创 Makefile学习教程
0 Makefile概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写mak...
2009-09-07 18:45:19
132
原创 四国程序员的比较
最近以裁判的身份参加了公司举办的编程大赛,发现高手云集,对公司内部的程序员能力也有了更深入的了解。我觉得编程能力对程序员而言,虽然很重要,但并不是全部。那么作为一个程序员,到底应该具备什么样的能力呢?这个话题显然太大。不过我觉得可以看看其它国家的程序员,也许可以得到一些借鉴。我有幸和中国,美国,印度和日本四国程序员有比较深入的合作过。虽然他们不一定有代表性,但我觉得他们的共...
2009-08-26 14:03:48
140
原创 使用一行命令实现tree功能
使用ls, grep, and sed实现tree命令功能,如下:ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
2009-08-18 11:41:04
243
原创 Latex制作Slide的工作流程
这里简单介绍一下使用Beamer制作Slide的流程,以及制作Slide时一些要注意的问题。第0步:明确时间限制;按每分钟一张制作Slides第1步:给每个Slide建一个子目录,目录名以演讲的日期开头.这样便于排序和将属于同一个Slide的文件放到一个目录中。第2步:组织文字结构。使用\section和\subsection命令。如果内容比较多也可以分成几个部分(\part)。每一部分一般有2-...
2009-08-17 14:13:07
953
原创 emacs命令
emacs命令emacs中的每一个命令都有一个命令名,命令名就是该命令所对应的LISP函数的函数名。在emacs中,我们可以为这些命令配置快捷键,从而达到快速调用命令的目的。.使用emacs来执行命令的方法有两种:(1).使用Ctrl键 (2).使用Meta键。所有emacs命令都可以用Meta键表示出来,键盘上如果没有Meta键,则可以用Alt键或ESC键来代替。常用的emacs命令通...
2009-08-13 16:11:24
189
发布简陋版xweb
花业余时间捣鼓了一个pythonic web framework,目前我把它称为xweb,还比较简陋,欢迎大家和我一起探讨。 页面模板采用jinja2 ORM采用SQLAlchemy 在项目目录下 ./gen.py run #运行项目 ./gen.py syncdb #同步数据模型到数据库 ./gen.py app APP_NAME #创建一个应用 xweb的...
2009-05-24 13:32:32
183
原创 构架方面的一些Url
Flickr Architecturehttp WikiPedia 技术架构学习分享http://www.dbanotes.net/opensource/wikipedia_arch.htmlYouTube 的架构扩展http://www.dbanotes.net/opensource/youtube_web_arch.htmlInternet Archive 的海量存储浅析http://www....
2009-05-14 17:23:14
119
原创 代码量等于树叶量
我在上学期和清华的同学讨论了代码量的问题。 因为许多相似课程都有“代码量”的要求,就是说软件工程的项目选题如果没有到一定量的代码,就不能算合格的选题。 我对教学没什么经验,我认为 - 软件工程课上写的软件只要解决实际问题,就至少是及格的选题。我后来顺口胡诌了一段:清华园有两棵果树,春天长芽,抽条,夏天开花,秋天结果。清华软件科学试验班的同学去采摘,发现果树A 的果实比...
2009-05-07 17:03:16
145
原创 水煮互联网创业
鞋厂理论:世界上有无数家鞋厂,制造着各自的鞋子,销售给各自的客户。在网络上,当某个生意已经有人在做的时候,就想想皮鞋理论,你会发现:在大多数情况下,即使有很多人在做鞋子,也并不意味着你就不能再去做鞋子了,别人做了耐克,你可以做李宁,不行就做安踏啥的,即使不知名的杂牌也在三线城市卖的不错。如果其他的鞋厂都在赚钱,那么你也有机会在这个市场里分一杯羹;如果其他鞋厂都在亏钱,那么你要想办法把他们亏...
2009-05-05 09:30:53
168
原创 IPMItool简介
IntroductionIPMItool is a utility for managing and configuring devices that support the Intelligent Platform Management Interface (IPMI) version 1.5 and version 2.0 specifications. IPMI is an op...
2009-04-29 21:42:42
277
原创 Google Code支持Mercurial了
我也是在前段时间python开始使用Mercurial才开始关注这个版本控制系统,很多我们所熟悉的程序包括:AdiumPythonapp-engine-patch等都采用Mercurial进行版本控制。 支持向https://projectname.googlecode.com/hg发送pushing和pulling支持ema...
2009-04-26 10:45:28
165
JBoss目录结构说明
jboss-as 目录结构(Directory Structure)Directory Description bin Contains startup, shutdown and other system-specific scripts. Basically all the entry point JARs and start script...
2009-04-16 09:33:40
155
Python Expect模块
Python中有一个pExpect模块,和TCL中的expect命令差不多,通过expect可以使你的脚本和shell命令之间进行交互。下面python脚本,使用了expect与ssh和scp交互来完成任务。 #!/usr/bin/pythonimport pexpectimport sysimport timeimport osnow = time.strftime("%m...
2009-04-06 13:52:25
269
从GAE datastore联想到key-value database的应用
随着google app engine的推广,google的bigtable越来越得到重用。当然使用GAE的时候是感觉不到bigtable的存在的,因为我们直接使用的是封装好的google.appengine.datastore。GAE的datastore使用起来很像大多数的orm,对于现在使用怪了orm的程序员来说非常的friendly(定义model and properties就可...
2009-03-31 18:06:38
136
wget very cool!!!
wget不仅能抓取某个页面,还能对网站做镜像,貌似很不错。这个不就是爬虫吗?而且速度也很快,用来抓取网页格式的文档是不错的。 让我们看这条命令:wget --mirror –w 2 –p --HTML-extension –-convert-links –P ~\wget_files\example1 http://www.yourdomain.com --mirror(-m):指定要...
2009-03-26 10:31:52
97
原创 JRobin简介
做过网络管理的人,对于MRTG应该不算陌生。MRTG可以不断收集来自SNMP的数据,保存这些数据,并且按照日、周、月、年的方式生成4幅图像及相关说明,很直观的显示出要检测数据的趋势信息。MRTG是比较早的技术了,后来又出现了RRD技术,是在MRTG技术的基础上发展起来的,更加灵活、更加方便。其应用也不在局限在主要监测网络数据上了。你可...
2009-03-20 10:49:56
124
原创 Java中assertion的使用
assertion的使用是一个复杂的问题,因为这将涉及到程序的风格,assertion运用的目标,程序的性质等问题。通常来说,assertion用于检查一些关键的值,并且这些值对整个程序,或者局部功能的完成有很大的影响,并且这种错误不容易恢复的。assertion表达式应该短小、易懂,如果需要评估复杂的表达式,应该使用函数计算。以下是一些使用assertion的情况的例子,这些方式可以...
2009-03-18 16:06:23
351
原创 JVM调优总结
堆大小设置JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置: java -Xmx3550m -Xms3...
2009-03-03 10:40:12
92
JS代码的管理机制
问题随着AJAX的流行,JS在web应用中的比重越来越大。随之而来,对JS代码的维护和重用就需要有一套机制来管理。Java中除了对象、类这些概念外,还有一个灵活的包机制。众所周知,JS本身并没有内建这样的机制,所以像一些JS框架,如DOJO,就自己实现了一套。在我们当前的项目里,评估了几个JS框架,然后决定了采用Mootools,主要是因为它更加OO,更有利于重用。遗憾的是Mootools并...
2009-03-01 21:55:06
126
原创 jQuery和MooTools的真正区别
自己一直在用MooTools框架,偶然看见这篇文章,作者是MooToolsTeam的成员之一,讲解了jQuery和MooTools的一点点区别,主要是我觉得他写JavaScript代码和他的思维方式很值得学习。另外,对JavaScript的编程思想和对框架的选择都有很多很好的建议,对于犹豫在各种框架上的人有很好的指导作用,另外对于想深入对框架进行研究或者想自己开发框架的人也有很好的建议...
2009-02-25 15:33:07
454
企业级应用集成的几种方式
企业级应用集成简单的说就是将分散的应用程序集合到一起,提供一个统一的功能集合。一个企业中可能有很多个独立实现的应用程序,使用了不用的语言不同的平台。企业需要一个统一的方式来共享数据和处理过程。企业级集成主要有几个方式:文件传输(File Transfer):让每个应用都生成共享数据的文件供其他应用消费,同时也消费其他应用生成的文件。共享数据库(Shared Database):让每个应用...
2009-02-23 17:23:57
1070
Java Reference的简单总结
介绍Java 2平台中引入java.lang.ref包(其中包含SoftReference、WeakReference、PhantomReference和ReferenceQueue类)。SoftReference、WeakReference、PhantomReference都是弱引用,他们的强弱程度依次是...
2009-02-18 10:45:49
107
Java5 Concurrent包中的锁机制
JDK1.5以后加入了concurrent包,主要是为了提高多线程的开发效率,其中提供了很多支持并发的集合类,其中包括:ConcurrentHashMap。大家知道HashTable也是支持并发环境的,也就是说多线程安全的,那两者有什么区别呢?分析 其实简单的说是同步机制有区别,具体区别又在那里呢? 请看HashTable的put方法:/** ...
2009-02-16 16:19:24
149
更好的代码:使用单元测试
什么是单元测试 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。 程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和期望的一致。为什么要使用单元测试 如果是编译没有通过的代码,没有任何人会...
2009-02-14 13:48:50
105
原创 程序员的十层楼(搞笑篇)
第一层:菜鸟 形如你我经常在Javaeye发贴提问的人。 第二层:大虾 经常在Javaeye上回帖的人。 第三层:牛人 Javaeye上解决难题的人。 第四层:大牛 Linus TorvaldsBill GatesDave WinerDavid H.Hansson第五层:专家Richard StallmanUdi ManberJohnathan Sachs第六层:学...
2009-02-09 10:59:54
186
原创 程序员的十层楼(1~3层)
自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,...
2009-02-09 10:29:55
93
原创 该选择哪个Java Map对象?
HashMap, Hashtable, LinkedHashMap and TreeMap are all classesimplementing the Map interface. All of them will have keys and values.The keys are unique. To find out whether the keys are same, they m...
2009-01-04 16:48:36
97
原创 Java编码规范
1 介绍(Introduction)1.1 为什么要有编码规范(Why Have Code Conventions)编码规范对于程序员而言尤为重要,有以下几个原因:- 一个软件的生命周期中,80%的花费在于维护- 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护- 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码- 如果你将源码作为产品发...
2008-12-08 11:21:02
100
安装和熟悉我们的开发环境
[b]1.安装Ubuntu linux操作系统[/b]安装ubuntu相当的简单,首先你可以从http://www.ubuntu.com.cn获取ubuntu的镜像文件。推荐下载x.04版的,如8.04。安装方式推荐通过刻录成光盘的方式安装,具体安装方法,可以看这篇文章http://wiki.ubuntu.org.cn/Newcomer安装设置请参考如下链接http://wiki....
2008-12-08 10:44:40
133
原创 学习软件设计指南--注重基础
相信对于很多程序员来说,架构师是他们为之努力的方向,他们希望有一天可以为一个大的系统来设计框架,架构。但在些之前,还需要付出许多,包括时间和精力,更重要的要知道自己的方向。与以前的程序员相比,现在的程序员无疑是幸福了很多,扑天盖地的资料,可以让人很容易得到自己所需要的内容,但是知道自己想要的内容,却成为另外一个难题。在下文中,希望能够结合我个人的一些学习经验来为大家解决一些学习上的问题。学...
2008-11-23 22:48:15
164
原创 Web 设计:实现干净代码的12条定律
漂亮的代码是漂亮网站的基础,优秀的 CSS 只存在与同样优秀的 HTML 之上,干净的,语义的 HTML 代码让一个网站更健壮。本文讲述了12个实现干净Web设计代码的定律,适合于任何从事Web设计的人。1. Strict DOCTYPE要做就做对的。不管是 HTML 4.01 还是 XHTML 1.0,它们都提供 Strict 模式,使用 Strict 模式可以保证我们的代码不隐...
2008-11-18 14:46:32
91
空空如也
很多Java开源项目中都有一个spi的package
2009-02-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人