`
edwardpro
  • 浏览: 312285 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论
文章列表

Thread In Ruby

今日终于把原来留下来的ios notify给整了,由于用户数据的增加这个库显然力不从心,过程就不说了。 这个东西原来是rails 3写的,APN发送也有现成的库用gem装下就能用了,关键在于原来的发送任务,由于rails 3中提供了一个基于redis的分布式任务系统,但这个东西自从我升级了redis后就再跑不起来,调试了几下也没有太多成果,时间来不及了,于是用了ruby下的Thread包。   今天想把自己使用Thread在ruby下进行多线程编程的内容分享一下:   1 base的使用非常简单:     Thread.new(args...){|args...|}     ...
国庆前后玩了一下thrift,下面是一些入门级的体会和心得:   1 在linux 64位下的编译过程,之前已经写过一个文章了:http://edwardpro.iteye.com/blog/1172064     2 客户端体系结构:   thrift在客户端中几个大的部分:   TTransport -> TTProtocol -> {生成的业务代码}   这三者是一个引用关系,简单说: TTransport:代表了用什么方式和远端通讯,在thrift官方包中我使用的是TSocket,本质上就是通过socket来进行通讯 TTProtocol:协议层,协 ...
问题描述,使用htmlparser的lexer解析器进行页面解析时发现类似如下的页面会有问题:     <script> for(i=0;i<a;i++){ } </script> 解析后代码变成了: <script> for(i=0;i<a;i++){ } ></script>    通过lexer代码发现,实际上只要js代码改成: <script> <!-- for(i=0;i<a;i++){ } --> </script> ...
上次在linux书上看到的,我们平时删除日志可能会用:   rm -rf xxxxx   其实这个不好,有的比较傻的日志系统会生成不了文件的,所以比较好的做法应该是:   cat xxxx > /dev/null   效果看到文件直接变成0字节了,对于当前在打的日志很好使的。
今天需要使用thrift于是随手下载下来了,下载过程很简单,但是编译工程有点血泪史,小分享一下,声明下问题不是我解决的,是同事帮助下搞定的。   一些先决条件:   1 java 的库需要装好ant 2 c++版本需要装上boost库 3 openssl要装上libssl-dev   环境ok了现在可以来编译了,首先./configure下,看看是不是ok的了?   接下来make,由于我的操作系统是64位的还是遇到一些问题,需要修改下几个地方:   1 /etc/ld.so.conf 中增加一行 /usr/lib64/ssl 2 修改下 thrift的Makefile ...
昨天改了一个很小的地方,但是在线上跑的时候突然感觉内存消耗差别很多,而代码中仅仅增加了这么一句话: int indexOfNocheck = linkBuffer.indexOf(NOCHECK_TAG); ret.append(linkBuffer.substring(0, indexOfNocheck));  ret也是一个Stringuilder,实际上我的直觉问题就应该出在了subString上。   于是翻出了StringBuilder和String中的subString的实现差别: StringBuilder.subString: public ...
一个简单的需求需要自动抓取一些http request参数到上下文中,传统的做法就是写一堆过程,好一点加一个list或者map之类的容器,其实可以用枚举来做配置的:   public enum RequestParam { V("v"), API("api"), PARAMS("data"), KEY("auth"), KEYTYPE("authType"), UA( "ua"), TYPE("type"),TIME("t ...
近期在工作里发现一个代码bug,主要是装箱上的问题,我们知道在JDK5以后开始有了装箱所谓的装箱就是把普通类型装载成他的对象形式或者还原。实际上按照我的理解这就是java原来对于String的处理,考虑下面两者的不同点: //这会在堆里生成一个空间 String a = new String("aaa"); //只生成在栈 String b = "aaa";   实际上String一直是一个特殊的对象,联想一下int和Integer也是这样的过程,所以平时零时变量用得多尽量使用下面的这种形式吧,这样可以省内存空间。   好了回到装箱上,实际 ...
在一个项目中需要使用jtidy格式化页面,一开始感觉不错,但是上线后发现一些样式的问题,原因是inline的标签在折行以后会自动多个空格,如: <a href=""></a> <a href=""></a> <a href=""></a>  这样看到的标签之间就会有空格,一般情况都没问题,但是有些场合就不行了...对于样式有影响....这个肯定是jtidy的问题...   经过无数次的试验终于发现了问题的关键:   tidyObj.setXHTM ...
今天有时间玩一下JAVA7,却发现有点小问题: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceConfig' defined in resource loader resource [/galaxy/biz/persistence/persistence.xml]: Cannot resolve reference to bean 'jndiDataSourceListener' while setting bean pro ...
缓存的实现最简单的模式,我称作为get set invalid 法,这也是缓存中最常用的一种模式,以前实现缓存(特别是后加)一般都会写一大堆诸如:   Object target = cache.get(KEY) if(target!=null){ //do something }else{ //do set }  这个其实很不好看,代 ...
google的东西向来以简洁唯美gson也是如此:   private static Gson gson = new GsonBuilder().setDateFormat( "yyyy-MM-dd HH:mm:ss").disableHtmlEscaping().create();   接下来:   return gson.toJson(src); return gson.fromJson(json, clazz);  分别是变成json或者来自json,是不是相当简单?   不过在使用当中也发现一些问题,当然也许是我不会用,就是 ...
以前曾经想利用json作为字段数据存储格式,这样当我们扩展表属性时可以不增加数据字段,只需要在逻辑端做一些改造即可完成比如 数据字段如下: {"name":"test","logo":"1234.jpg","desc":"test also"}  但这样的设计有个缺点,我称之为无法索引值,也就是说如果你想查找其中的某个值的时候就不行了,它只合适做单条数据的查询,并且数据量也要严格控制. 而一种改良的方法是在json中放置值,并且应用另外一张表单独放置这些值,这样 ...
为什么会考虑json: 有没有这样的场景,当需要增加一个新配,假设配置存储在数据库中,会有什么问题?一般的做法大概就是增加一个字段,修改下映射,或者修改sql语句,然后需要回归所有功能同样在前端需要修改你的数据bean....一个浩 ...
应该是我很久没有好好学技术了,有时候想用的时候却发现不会写,比如今天遇到了泛型接口,所以要记录一下,这样才能更明白...在这里我并不想说泛型接口怎么写,这个很简单,后面会写的,只是想说我为什么要用.泛型接口的意图是什么?请看如下的问题: abstract class BaseBean{ //略 } Interface IA{ public BaseBean doSomething(); }  下面我们继承这个BaseBean class ChildBean extends BaseBean{ }  接下来实现接口 class IAImpl implements IA{ public Base ...
Global site tag (gtag.js) - Google Analytics