<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[badonly的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/badonly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; badonly]]></copyright><item><title><![CDATA[JAVA异常设计原则]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83805652</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83805652</guid><author>badonly</author><pubDate>Sat, 01 Jan 2011 20:39:04 +0800</pubDate><description><![CDATA[异常是面向对象语言非常重要的一个特性，良好的异常设计对程序的可扩展性、可维护性、健壮性都起到至关重要。
JAVA根据用处的不同，定义了两类异常
    * [b]Checked Exception: [/b]Exception的子类,方法签名上需要显示的声明throws，编译器迫使调用者处理这类异常或者声明throws继续往上抛。
    * [b]Unchecked Exception: ...]]></description><category></category></item><item><title><![CDATA[多线程编程的经验总结]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83731918</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83731918</guid><author>badonly</author><pubDate>Thu, 14 Oct 2010 22:40:39 +0800</pubDate><description><![CDATA[本人对多线程的认识是非常浅薄的，尤其是线程间的交互，都还没实践过的，但至少写过一些简单的多线程程序，还是能总结出一点经验出来。

    1. 给线程设置一个能说明它工作内容的名字，这对调试和排错都非常有帮助。比如“send-sms-thread”比默认的“thead-1，thread-2”直观多了。
    2. 线程的一定要catch所有的异常，如果不希望出现异常就终止线程，那就在循环体...]]></description><category></category></item><item><title><![CDATA[装饰器模式实现检索模块]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83606707</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83606707</guid><author>badonly</author><pubDate>Wed, 28 Apr 2010 12:22:04 +0800</pubDate><description><![CDATA[
[img]http://dl.iteye.com/upload/attachment/241398/dd68339b-af94-3845-bfdd-14af6019ddb3.jpg[/img]
]]></description><category></category></item><item><title><![CDATA[安装java--error while loading shared libraries: libstdc++.so.5]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83553226</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83553226</guid><author>badonly</author><pubDate>Mon, 01 Feb 2010 21:08:20 +0800</pubDate><description><![CDATA[error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory 

apt-get install libstdc++5 ]]></description><category></category></item><item><title><![CDATA[Servlet的Filter实现页面缓存]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83553129</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83553129</guid><author>badonly</author><pubDate>Mon, 01 Feb 2010 16:36:01 +0800</pubDate><description><![CDATA[java有多个开源的缓存系统都支持页面缓存的，如OScache、Ehcache。
这个例子就是从Ehcache里挖出来的，并做了些改造和简化，但原理在此例子中都是完全体现出来了。该例子只供大家学习用，企业应用还是需要做一些修改的。因为页面数据只是直接存放到HashMap里。

CacheFilter.java
页面数据就是存放到HashMap里，key是url。
[code=&quot;java&quot;...]]></description><category></category></item><item><title><![CDATA[常用正则表达式（转）]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83534510</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83534510</guid><author>badonly</author><pubDate>Wed, 27 Jan 2010 10:35:21 +0800</pubDate><description><![CDATA[[b]PS:某些正则表达式不是很严格，只能做个简单的验证[/b]

　正则表达式用于字符串处理、表单验证等场合，实用高效。现将一些常用的表达式收集于此，以备不时之需。

匹配中文字符的正则表达式： [\u4e00-\u9fa5]
评注：匹配中文还真是个头疼的事，有了这个表达式就好办了

匹配双字节字符(包括汉字在内)：[^\x00-\xff]
评注：可以用来计算字符串的长度（一个双...]]></description><category></category></item><item><title><![CDATA[linux下安装nutch-1.0--内部网络爬虫和检索的实现]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83528361</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83528361</guid><author>badonly</author><pubDate>Tue, 12 Jan 2010 15:56:27 +0800</pubDate><description><![CDATA[Nutch是一个完整的开源全文检索软件，它是建立在lucene java之上增加，增加了一些web特性,
如网络爬虫,link-graph数据库,HTML文本解析和其他格式文档解析,等等。

[b][size=large]下载nutch[/size][/b]

1.选择安装nutch的目录，我就直接安装到/home/admin下
[code=&quot;java&quot;][root@search-te...]]></description><category></category></item><item><title><![CDATA[tomcat源码—redirect和forward的实现]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83522370</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83522370</guid><author>badonly</author><pubDate>Sun, 27 Dec 2009 22:19:05 +0800</pubDate><description><![CDATA[网上已经有很多关于redirect和forward区别的文章，更多的都是只是一些概念上的描述，虽然在大多情况下，知道这些就已经足够了。但也有例外：forward not working for struts2，why？我也是在工作中碰到了这个问题，才特意看了下tomcat有关这部分的源代码。深刻的了解下也无妨。
redirect和forward都是属于servlet规范的，不同的servlet容...]]></description><category></category></item><item><title><![CDATA[junit4入门]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83521200</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83521200</guid><author>badonly</author><pubDate>Thu, 24 Dec 2009 14:07:06 +0800</pubDate><description><![CDATA[转载自：[url]http://www.ibm.com/developerworks/cn/java/j-junit4.html[/url]


    JUnit 是 Java? 语言事实上的 标准单元测试库。JUnit 4 是该库三年以来最具里程碑意义的一次发布。它的新特性主要是通过采用 Java 5 中的标记（annotation）而不是利用子类、反射或命名机制来识别测试，从而简化测试...]]></description><category></category></item><item><title><![CDATA[lucene管理IndexReader和IndexWriter的最佳实践]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83497575</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83497575</guid><author>badonly</author><pubDate>Thu, 03 Dec 2009 16:09:33 +0800</pubDate><description><![CDATA[实例化IndexReader需要加载索引文件，所以实例化它是非常耗资源的。

IndexReader是线程安全的，通常一个索引目录，我们只实例化一个IndexReader就够了。

当索引数据足够大（G的数量级）的时候，一般把索引资源按照某种规则散列到多个文件目录里（如：index-0,index-1,index-2.... 或者 blog,posts....），当然这些文件目录应该放在同...]]></description><category></category></item><item><title><![CDATA[Berkeley DB]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83487176</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83487176</guid><author>badonly</author><pubDate>Sun, 08 Nov 2009 11:08:38 +0800</pubDate><description><![CDATA[   Berkeley DB(简称dbd)是oracle下一款开源的、高效的、可靠的、持久存储的、无管理界面的嵌入式数据库。一般作为应用程序“边缘”数据库，“边缘”是相对主数据库来说的，bdb只是存一些关键性的数据。 因为它的结构简单，不支持sql查询。所以他的效率是非常之高，可扩展性和可用性也非常好。

   dbd有三个产品
1.Berkeley DB 4.8
2.Berkeley D...]]></description><category></category></item><item><title><![CDATA[md5的java实现]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83485292</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83485292</guid><author>badonly</author><pubDate>Tue, 03 Nov 2009 12:02:17 +0800</pubDate><description><![CDATA[[code=&quot;java&quot;]

public class MD5Util {
	public final static String getMD5(String s) {
		char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
		Messa...]]></description><category></category></item><item><title><![CDATA[memcachedb的性能测试]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83484918</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83484918</guid><author>badonly</author><pubDate>Mon, 02 Nov 2009 12:49:06 +0800</pubDate><description><![CDATA[memcachedb是新浪工程师开发的持久的分布式存储系统。前端用memcache作缓存，后端用Berkeley DB做持久存储，支持事务。存储方式简单，只支持key-value存取方式，所以效率非常高。适合存储高流量网站的点击率、浏览量等。

memcachedb的官网：[url]http://memcachedb.org/[/url]


测试环境

Memachedb sere...]]></description><category></category></item><item><title><![CDATA[网站前台页面优化]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83482539</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83482539</guid><author>badonly</author><pubDate>Mon, 26 Oct 2009 10:51:40 +0800</pubDate><description><![CDATA[    1.样式、动作、数据的分离，采用外部文件的方式引入javascript和css可以缩短加载时间，而且浏览器都会缓存外部文件。

    2.压缩静态资源文件，包括css、javascript和图片，通常全站都引用相同的css和js，所以压缩会较大程度提高网站的性能。图片的压缩前后大小变化是非常明显的，特别是大图片（几M的）位于全站首页，很有可能导致服务器挂掉。如果有必要也可以压缩HTM...]]></description><category></category></item><item><title><![CDATA[用js对象模拟HashMap的部分功能]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83467403</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83467403</guid><author>badonly</author><pubDate>Fri, 09 Oct 2009 13:46:29 +0800</pubDate><description><![CDATA[var jsMap=new Object();
//put元素：key是js对象的属性名，value是属性名对应的值
jsMap[key1]=new Person(&quot;zhangshan&quot;);
jsMap[key2]=new Person(&quot;lishi&quot;);
//判断是否存在
if(jsMap[key])
    return true;
//遍历Map
for(key in jsM...]]></description><category></category></item><item><title><![CDATA[为什么产生“Too many open files”]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83462220</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83462220</guid><author>badonly</author><pubDate>Sun, 20 Sep 2009 21:25:45 +0800</pubDate><description><![CDATA[操作系统都会限制一个进程同时打开文件的最大数量，通常linux默认的是1024.lucene有可能会导致“Too many open files”的异常，这取决于你是否正确使用lucene。

1.总是要确保打开的文件句柄关闭掉，特别是出现错误的情况，捕获该异常，并在finally块释放持有的文件句柄。请记住，java没有拆构器，不要在finalize方法里处理文件句柄，该方法不会确保都被执行...]]></description><category></category></item><item><title><![CDATA[两台linux服务器建立无密码通道]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83456944</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83456944</guid><author>badonly</author><pubDate>Fri, 04 Sep 2009 19:36:04 +0800</pubDate><description><![CDATA[[b]服务器A-&gt;服务器B建立无密码通道[/b]

[quote]
1.服务器A：ssh-keygen -t rsa
  Generating public/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa): 
  Enter passphrase (empty for no ...]]></description><category></category></item><item><title><![CDATA[javascript的命名空间]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83454616</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83454616</guid><author>badonly</author><pubDate>Thu, 27 Aug 2009 16:14:07 +0800</pubDate><description><![CDATA[JavaScript里并不存在“命名空间”的概念，但是JavaScript所有的对象都有自己的属性，属性又可以是对象，这样层层包装起来就能创造出像其他的语言的命名空间的效果。

[code=&quot;JavaScript&quot;]
//创建一个默认的全局的命名空间
var JAVAEYE={}
//使用对象设置一些子命名空间
JAVAEYE.blog={}
JAVAEYE.forum={}
//...]]></description><category></category></item><item><title><![CDATA[根据文件最后修改时间来读取文件]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83454453</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83454453</guid><author>badonly</author><pubDate>Thu, 27 Aug 2009 08:30:20 +0800</pubDate><description><![CDATA[[code=&quot;java&quot;]

public class ForumCategoryDaoImpl implements ForumCategoryDao {
	private String forumCategoryFilePath = null;

	private final Map forumCategoriesMap = new HashMap();
	// Volatile修...]]></description><category></category></item><item><title><![CDATA[带你深入了解Web站点数据库的分布存储]]></title><link>https://blog.youkuaiyun.com/badonly/article/details/83441273</link><guid>https://blog.youkuaiyun.com/badonly/article/details/83441273</guid><author>badonly</author><pubDate>Fri, 14 Aug 2009 14:07:56 +0800</pubDate><description><![CDATA[在Web 2.0时代，网站将会经常面临着快速增加的访问量，但是我们的应用如何满足用户的访问需求，而且基本上我们看到的情况都是性能瓶颈都是在数据库上，这个不怪数据库，毕竟要满足很大访问量确实对于任何一款数据库都是很大的压力，不论是商业数据库Oracle、MS sql Server、DB2之类，还是开源的MySQL、PostgreSQL，都是很大的挑战，解决的方法很简单，就是把数据分散在不同的数据库上...]]></description><category></category></item></channel></rss>