<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[edwardpro]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/edwardpropro</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; edwardpropro]]></copyright><item><title><![CDATA[Thread In Ruby]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/84057862</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/84057862</guid><author>edwardpropro</author><pubDate>Wed, 02 Nov 2011 00:24:03 +0800</pubDate><description><![CDATA[今日终于把原来留下来的ios notify给整了，由于用户数据的增加这个库显然力不从心，过程就不说了。
这个东西原来是rails 3写的，APN发送也有现成的库用gem装下就能用了，关键在于原来的发送任务，由于rails 3中提供了一个基于redis的分布式任务系统，但这个东西自从我升级了redis后就再跑不起来，调试了几下也没有太多成果，时间来不及了，于是用了ruby下的Thread包。
 ...]]></description><category></category></item><item><title><![CDATA[thrift-1-2-3]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/84043308</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/84043308</guid><author>edwardpropro</author><pubDate>Fri, 07 Oct 2011 20:24:00 +0800</pubDate><description><![CDATA[国庆前后玩了一下thrift，下面是一些入门级的体会和心得：
 
1 在linux 64位下的编译过程，之前已经写过一个文章了：http://edwardpro.iteye.com/blog/1172064
 
 
2 客户端体系结构：
 
thrift在客户端中几个大的部分：
 
TTransport -&amp;gt; TTProtocol -&amp;gt; {生成的业务代码}
 
这...]]></description><category></category></item><item><title><![CDATA[lexer html解析一个js过滤的改进]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/84021065</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/84021065</guid><author>edwardpropro</author><pubDate>Thu, 22 Sep 2011 11:07:28 +0800</pubDate><description><![CDATA[问题描述，使用htmlparser的lexer解析器进行页面解析时发现类似如下的页面会有问题：
 
 
&amp;lt;script&amp;gt;
for(i=0;i&amp;lt;a;i++){

}
&amp;lt;/script&amp;gt;

解析后代码变成了：
&amp;lt;script&amp;gt;
for(i=0;i&amp;lt;a;i++){

}
&amp;gt;&amp;lt;/script&amp;gt;
 
 通过le...]]></description><category></category></item><item><title><![CDATA[在linux下删除大文件的好方法]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/84018014</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/84018014</guid><author>edwardpropro</author><pubDate>Fri, 16 Sep 2011 09:36:04 +0800</pubDate><description><![CDATA[上次在linux书上看到的，我们平时删除日志可能会用：
 
rm -rf xxxxx
 
其实这个不好，有的比较傻的日志系统会生成不了文件的，所以比较好的做法应该是：
 
cat xxxx &amp;gt; /dev/null
 
效果看到文件直接变成0字节了，对于当前在打的日志很好使的。...]]></description><category></category></item><item><title><![CDATA[thrift 在ubuntu 11.04下的编译过程一两点心得]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/84017232</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/84017232</guid><author>edwardpropro</author><pubDate>Wed, 14 Sep 2011 21:46:30 +0800</pubDate><description><![CDATA[今天需要使用thrift于是随手下载下来了，下载过程很简单，但是编译工程有点血泪史，小分享一下，声明下问题不是我解决的，是同事帮助下搞定的。
 
一些先决条件：
 
1 java 的库需要装好ant
2 c++版本需要装上boost库
3 openssl要装上libssl-dev
 
环境ok了现在可以来编译了，首先./configure下，看看是不是ok的了？
 
接下来ma...]]></description><category></category></item><item><title><![CDATA[StringBuilder和String中的subString方法的细微差别]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83844411</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83844411</guid><author>edwardpropro</author><pubDate>Wed, 23 Feb 2011 20:19:23 +0800</pubDate><description><![CDATA[昨天改了一个很小的地方，但是在线上跑的时候突然感觉内存消耗差别很多，而代码中仅仅增加了这么一句话：


int indexOfNocheck = linkBuffer.indexOf(NOCHECK_TAG);
ret.append(linkBuffer.substring(0, indexOfNocheck));

 ret也是一个Stringuilder，实际上我的直觉问题就应该出在...]]></description><category></category></item><item><title><![CDATA[用枚举来作为配置]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83602896</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83602896</guid><author>edwardpropro</author><pubDate>Tue, 20 Apr 2010 21:39:59 +0800</pubDate><description><![CDATA[一个简单的需求需要自动抓取一些http request参数到上下文中,传统的做法就是写一堆过程,好一点加一个list或者map之类的容器,其实可以用枚举来做配置的:
 


public enum RequestParam {

	V(&quot;v&quot;), API(&quot;api&quot;), PARAMS(&quot;data&quot;), KEY(&quot;auth&quot;), KEYTYPE(&quot;authType&quot;), UA(
			&quot;.]]></description><category></category></item><item><title><![CDATA[装箱操作需注意]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83482157</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83482157</guid><author>edwardpropro</author><pubDate>Sat, 24 Oct 2009 15:25:04 +0800</pubDate><description><![CDATA[近期在工作里发现一个代码bug，主要是装箱上的问题，我们知道在JDK5以后开始有了装箱所谓的装箱就是把普通类型装载成他的对象形式或者还原。实际上按照我的理解这就是java原来对于String的处理，考虑下面两者的不同点：
//这会在堆里生成一个空间
String a = new String(&quot;aaa&quot;);
//只生成在栈
String b = &quot;aaa&quot;;
 
实际上String一直...]]></description><category></category></item><item><title><![CDATA[在JTIDY中对于inline标签的这行问题]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83463775</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83463775</guid><author>edwardpropro</author><pubDate>Thu, 24 Sep 2009 16:40:33 +0800</pubDate><description><![CDATA[在一个项目中需要使用jtidy格式化页面,一开始感觉不错,但是上线后发现一些样式的问题,原因是inline的标签在折行以后会自动多个空格,如:
&amp;lt;a href=&quot;&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;a href=&quot;&quot;&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;a href=&quot;&quot;&amp;gt;&amp;lt;/a&amp;gt;
 这样看到的标签之间就会有空格,一般]]></description><category></category></item><item><title><![CDATA[JAVA7的不兼容表现]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83457335</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83457335</guid><author>edwardpropro</author><pubDate>Sun, 06 Sep 2009 17:49:57 +0800</pubDate><description><![CDATA[今天有时间玩一下JAVA7,却发现有点小问题:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceConfig' defined in resource loader resource [/galaxy/biz/persisten...]]></description><category></category></item><item><title><![CDATA[用SPRING AOP实现主动缓存]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83408769</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83408769</guid><author>edwardpropro</author><pubDate>Sun, 21 Jun 2009 13:05:30 +0800</pubDate><description><![CDATA[缓存的实现最简单的模式,我称作为get set invalid 法,这也是缓存中最常用的一种模式,以前实现缓存(特别是后加)一般都会写一大堆诸如:
 
Object target = cache.get(KEY)
if(target!=null){
//do something
}else{
//do set
}
 这个其实很不好看,代码很不优雅.当然你可以使用一些设计模式去解决比...]]></description><category></category></item><item><title><![CDATA[gson使用感受]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83406319</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83406319</guid><author>edwardpropro</author><pubDate>Sat, 13 Jun 2009 08:27:02 +0800</pubDate><description><![CDATA[google的东西向来以简洁唯美gson也是如此:
 


private static Gson gson = new GsonBuilder().setDateFormat(
			&quot;yyyy-MM-dd HH:mm:ss&quot;).disableHtmlEscaping().create();
 
接下来:
 


return gson.toJson(src);
return...]]></description><category></category></item><item><title><![CDATA[数据对象化的思考]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83406317</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83406317</guid><author>edwardpropro</author><pubDate>Sat, 13 Jun 2009 07:51:17 +0800</pubDate><description><![CDATA[以前曾经想利用json作为字段数据存储格式,这样当我们扩展表属性时可以不增加数据字段,只需要在逻辑端做一些改造即可完成比如 数据字段如下:


{&quot;name&quot;:&quot;test&quot;,&quot;logo&quot;:&quot;1234.jpg&quot;,&quot;desc&quot;:&quot;test also&quot;}

 但这样的设计有个缺点,我称之为无法索引值,也就是说如果你想查找其中的某个值的时候就不行了,它只合适做单条数据的查询,并且数据量也要]]></description><category></category></item><item><title><![CDATA[用json作为配置存储介质的讨论]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83368559</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83368559</guid><author>edwardpropro</author><pubDate>Thu, 02 Apr 2009 20:57:13 +0800</pubDate><description><![CDATA[为什么会考虑json:
有没有这样的场景,当需要增加一个新配,假设配置存储在数据库中,会有什么问题?一般的做法大概就是增加一个字段,修改下映射,或者修改sql语句,然后需要回归所有功能同样在前端需要修改你的数据bean....一个浩大的工程似乎....
那么我们进阶下,假设现在换一种思路我们把数据映射到hashmap,那么首先数据库层的变动逃不掉的,接下来bean可以逃掉,但是带来的问题就是没有了...]]></description><category></category></item><item><title><![CDATA[JAVA学习笔记之泛型接口   ]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83335702</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83335702</guid><author>edwardpropro</author><pubDate>Mon, 02 Feb 2009 22:58:22 +0800</pubDate><description><![CDATA[应该是我很久没有好好学技术了,有时候想用的时候却发现不会写,比如今天遇到了泛型接口,所以要记录一下,这样才能更明白...在这里我并不想说泛型接口怎么写,这个很简单,后面会写的,只是想说我为什么要用.泛型接口的意图是什么?请看如下的问题:
abstract class BaseBean{
//略
}

Interface IA{
public BaseBean doSomething();
}
 下...]]></description><category></category></item><item><title><![CDATA[lucene 2.4 变化修炼之 IndexerReader]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83297907</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83297907</guid><author>edwardpropro</author><pubDate>Mon, 10 Nov 2008 17:57:03 +0800</pubDate><description><![CDATA[大家用的最多的就是IndexReader上的open,其实在lucene里有DirectoryIndexerReader,关系如下:
 
abstract class DirectoryIndexReader extends IndexReader{}
 
其中定义的几个方法,请注意2.4和2.3.2的open方法的差别:
 
2.3.2:
static DirectoryIndexReader ...]]></description><category></category></item><item><title><![CDATA[lucene 2.4 变化修炼之前言]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83297898</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83297898</guid><author>edwardpropro</author><pubDate>Mon, 10 Nov 2008 17:20:17 +0800</pubDate><description><![CDATA[升级lucene到2.4是最近几天的事情,但是升级发现很多东西改变了,最直接的:
1 hits没有了
2 copy函数变化了
 
我相信还有很多看看changelogs就知道了,所以怀着很大兴趣准备看看源码看看变化.
Changes in backwards compatibility policy   (1) 
LUCENE-1340: In a minor change to Lucene's...]]></description><category></category></item><item><title><![CDATA[lucene中的filter器群组及其缓存大盘点 ]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83257250</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83257250</guid><author>edwardpropro</author><pubDate>Fri, 04 Jul 2008 02:13:39 +0800</pubDate><description><![CDATA[lucene中的filter其实并不起眼,大家对其对性能的影响也不是很关注,但实际上filter是除了单纯搜索以外,其他搜索附加功能的必选组件,其性能很大程度上会直接影响搜索的性能,之前我一直认为filter的性能比query高,但事实说明并不完全如此(这里所说的负荷是指io消耗并不是cpu),实际上在lucene中充满着各种io流,也就是说很多东西都无法从根本上保存,这也给缓存带来了很大难度(这...]]></description><category></category></item><item><title><![CDATA[<![CDATA[杭州行照片一]]>]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83249391</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83249391</guid><author>edwardpropro</author><pubDate>Tue, 27 May 2008 14:33:41 +0800</pubDate><description><![CDATA[
 
	这次才匆忙了,虽然带上了所有装备,但身体在炎热的疲劳下不是很好,照片拍得也稀里哗啦,大家随便看看.

]]></description><category></category></item><item><title><![CDATA[<![CDATA[zend select小议]]>]]></title><link>https://blog.youkuaiyun.com/edwardpropro/article/details/83248853</link><guid>https://blog.youkuaiyun.com/edwardpropro/article/details/83248853</guid><author>edwardpropro</author><pubDate>Sat, 24 May 2008 23:05:28 +0800</pubDate><description><![CDATA[
 
	因为最近一直在做zend ext的工作,因此花了不少时间读了zend framework的代码,也比较深入地在使用这个东西.下面有些小小的个人体会.首先是select对象的一些小问题.select中有很多组语句的函数,但这些函数却不会判断是否传入是空字符串,导致输出变成两个单引号,这就要求开发人员在自己的函数里判断,这点不是太灵活.接下来select的毛病是不支持外连接,实际上这个有些让我...]]></description><category></category></item></channel></rss>