26 / 10 / 2011 buling

有的时候可能为了服务平滑过渡,需要做端口转发,介绍一下xinetd的用法,先新建一个配置文件:test.conf:

service test
{
    type = UNLISTED
    disable = no
    socket_type = stream
    protocol = tcp
    wait = no
    user = service
    port = 60011
    #only_from = 192.168.0.0
    redirect = 192.168.0.120 60022
}

使用xinetd的方法是:$ /usr/sbin/xinetd -f test.conf -filelog test.log -pidfile test.pid,需要停止转发时,kill掉test.pid中的进程id就ok了。

      学习java也有一段时间了,怎么说呢,有所成,在这里,我要感谢google,偶尔感谢baidu,谢谢你们在我无助的时候给了我建议。今天终于把ems做的像模像样了,也该对这次项目做一个总结了,虽然对后续还有很多需要完善。
      学习java其实很快,比python要多花了几天,主要是不太习惯强类型的要求。下面说一下再这个过程中的心得,给java有兴趣的新人一点点建议,也给自己做点记录标记标记。
     1、如大部分语言,上来就是变量申明,定义啥的,如int型:int i = 3;其它类型类推,最低级入门。
     2、有一个必学的数据类型,那就是数组,申明一个数组:String[] a = new String[]{“a”};,升级版数组-hash数组:Map<String, String> = new HashMap<String, String>();,遍历hashmap的方法:

Map hash_map;
Iterator> hiter = hash_map.entrySet().iterator();
while(hiter.hasNext()){
    Map.Entry hent = (Map.Entry)hiter.next();
    System.out.println(hent.getKey()+"_"+hent.getValue);
}

      好啦,几乎java入门了,是不是很简单,现在要开始提升了。
      3、学会写公用框架,对class相关基础要扎实过硬,比如,可以自己写一些:File、Mail、Url、Logging、Xml等等,java比起其它语言有一个好用的东西,举例来说:

      SimpleLayout layout = new SimpleLayout(){
            public String format(LoggingEvent event){
                Date date = new Date();
                SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String d = sd.format(date);
                return "[" + d + "]"  + "[" +event.getLevel() + "]:" + event.getMessage()+"\n";
            }
      };

      4、类库都能编写了,说明基础知识来说对你已经不是问题了,即便是问题不由google么,码代码已经不是你该考虑的问题了,说架构吧,写web不知道是什么结构,我只说服务。跟大部分服务差不多,大体都分bin、etc、var等等,以这次ems为例,我贴一下目录结构:

‖bin #主程序存放目录
‖bin/ems.sh #主执行程序:ems.sh demo start
‖bin/setup.sh #主安装程序:setup.sh .
‖etc #配置文件目录
‖etc/db.xml #数据库配置
‖etc/ems.xml #ems相关配置
‖etc/ems_build.xml #ant编译包配置
‖src #主.java文件存放目录
‖src/Ext #app存放目录
‖src/Ext/Demo #app demo
‖src/Ice #第三方中间件类库
‖src/Lib #公共类库目录
‖src/Lib/Common #公共类库,与业务无关
‖src/Lib/Db #数据库操作目录
‖src/Lib/Ems #ems服务相关类库
‖src/Run/ #ems主入口main类
‖ext #第三方扩展包,如log4j、email
‖var #日志目录
‖var/log #相关日志
‖var/run #主服务的一些信息

      5、java代码需要编译,如果是一个应用,用eclipse的ide就能搞定,如果是提供框架,那么就不应该依靠ide了,我们用apache提供的ant来编译服务:ant -f etc/ems_build.xml。那这个build文件到底长什么样子呢:



    
    
    
    
        
    
    
        
            
                
                    
                
            
        
    
    
        
    

      我就不多解释这段代码的意思了,网上教程很多,随便瞅瞅就会了。附:ant -f etc/ems_build.xml clean清除生成的.class文件。
      6、创建一个服务时目的,但仅仅是做出来还不够,还要考虑服务扩展性,强壮性思考。比如,这个ems服务是脱离应用而存在,即,跟之前的eas设计思想一样,框架只是启动服务的支架,不负责应用的处理。当服务成型时,不得不为服务的稳定性考虑,哪天服务down掉了,老板会把你怎么样,不敢想象,所以,监控是必须的,监控这块,可以看我之前写的文章,此处忽略。
      其实语言都是相通的,我现在很喜欢学习新语言,因为学的多,可以结合各个语言的特点提高自己代码的编写水平,当然编代码不是我的目的,学思想,了解世面才是王道,用最短时间了解一门语言,在以后的日子慢慢提升。有意见,多指点。

       之前学习本地存储的时候,就发现flash自带shareObject(Google Chrome、Mozilla Firefox、Microsoft Internet Explorer、Apple Safari的当前版本支持隐私浏览与Flash Player10.1和更高版本的集成);后来发现html5支持websocket,但websocket支持度很低,目前只发现chrome,但用flash的socket依然可以做到;昨天看百度写的多tab通信。目前FLASH播放器在PC机上达到了90%,觉得flash的扩展很有研究的必要。
知识点
   1、【Local Connection】ajax异步连续请求时,一个PC只会发送一次请求。主要优化同一用户开多窗口情况。
   2、【socket】支持web端连接服务端socket,达到即时消息。
   3、【shareObject】增强本地存储的兼容性。
应用
   1、在竞拍中,专业玩家一般会开多个tab,或多浏览器用同一账号或多账号出价,这时就会发起1*N个请求,可以使用多tab把多请求化一。
   2、本地存储在业务开发中应用越来越多,增强本地存储的兼容性、统一框架很有必要。
   3、如果将来做web chat,websocket的学习也是很有必要。
参考文档
   http://help.adobe.com/zh_CN/FlashPlayer/LSM/WS6aa5ec234ff3f285139dc56112e3786b68c-7fff.html
   http://stblog.baidu-tech.com/?p=835
   http://honkang.blog.163.com/blog/static/477953252009929112541159/
      后记:本来打算趁这段时间学习,但最终被java_ems搁浅了,没事,总有一天要学会。

      前几天一发奋把mini_eas硬是更新换代到xeas,主要是为了向axing的ems靠齐,到也不是说他的设计比mini_eas的设计好,而是为了大家使用的时候不用迷惑,减小学习成本。本来在谋划写个公司的php框架,但框架这个东西不是一时就能成就出来的,主要是在看别人框架的设计,结果那天晚些时候看见http://stblog.baidu-tech.com/?p=835 多tab通信的问题,晚上回来折腾一下,结果没有成功,晚上睡觉思想再三,第二天一早到公司写了个设计规划:多tab通信、web socket、local storage的研究必要性,想争取点时间学习,结果老大虽然是同意了,但没给时间,这就没办法了。学习的最佳时机莫过于你对那种技术欲望强烈的时候,有的时候这种机会很难得,如果不争取只能错过。
      虽然想做的没有做成,但开晨会时星哥说到数据中心的后期,我对这个真没好感,一点好感都没有,还方案,主要是跟业务有关,现在对业务相关的一概不感冒,即便是有天大的技术含量。而且以前数据中心是我写的,那时候我刚进部门,那服务代码写的,为了炫技术,把代码写的里三层外三层,不是代码乱,而是为了封装而封装。所以我就提议重新数据中心,星哥又提到了java,之前我们部门一直想推行,但因为大家都不怎么会,而且还有人反感,但我是个例外,我很喜欢(凡事我不会的我都喜欢),星哥说先搭框架,我说两天,他带着怀疑,但事实证明两天足够,今天下班前几乎完成,除了db模块没有封好,这就是java版的ems了。以前没有写过java,因为之前写java_eas,所以这次写到也比较快,但还是遇到了问题,如log4j,有FileAppender的配置,在配置完所有属性后,但始终运行不了,折腾了N久,才发现它提供了一个ative配置的方法,扯蛋吧,我很想打个电话给这哥们,搞个这个方法有意思吗?
       之前在玩jj德州的时候发现他们的模式很好玩,所以就跟运营推荐引用这种方式开发德州,用乐豆来玩。中午的时候他们讨论了半天放弃了,原因是因为移动部已经在开始做了。其实我很想写德州服务,我想玩自己的游戏,海涛后来也过来一起讨论,他想我们部门自己搞定,用flash来做,不太靠谱,flash没有专业人才很难搞,用js是完全可以实现的,但我还是想写服务端的思想。多好的一个机会,错过了。
    好吧,说点私人的事情,下班走前,默默跑过来问我和qq怎么了,感觉好纳闷,怎么突然会问这个。事情起因是那晚德州,我不想玩,他们让我做荷官,答应了,结果因为看电视没有发牌,qq随口就来了句粗话,来,找人来当,闪人。我有个毛病,那就是脾气稀烂,对事情态度非常分明,喜欢就喜欢,不喜欢就是不喜欢,也不喜欢勉强,管你什么人。对女生更是,最忌讳以下两种女生:讨论成人笑话、爆粗口。
     明天要去拓展,真要疯掉,huangjn过生,但我还没准备生日礼物呢,到现在还欠着两个生日礼物呢(chenf,momo),等着。

        周杰伦(Jay)2011新专辑《惊叹号》随着首播主打歌曲《皮影戏》的推出,海报已随后放出,本博将第一时间给大家更新最新歌曲资源,目前只推出《皮影戏》这一首歌曲,由于下载量比较大,大家悠着点,如果有一个链接下不了,请点另一个,我会随时更新,下载地址:


【1】《皮影戏》:下载1   下载2  下载3
【2】《惊叹号》:下载1  下载2
【3】《Mine Mine》:下载1    下载2(完整版)
【4】《水手怕水》:下载1   

《惊叹号》

无标签信息 1 条

       一早爬起来就看见周董出了一首歌,昨晚是一个demo版,早上就看见完整版了,真是太兴奋了,找了半天终于弄到一个空间,来,(注意:由于下载量比较大,现增加了下载资源地址,大家珍惜)一起下: 下载地址1   下载地址2
歌词就不上传了,直接文本,拷贝,保存为.lrc就可以了,忘了,下面给个移动的宣传地址:http://music.10086.cn/newweb/zq/2011/jay_pyx/jay_pyx.html
周杰伦2011新专辑

[ti:皮影戏]
[ar:周杰伦]
[al:]
[by:zicw.com]
[00:00.01]周杰伦 - 皮影戏
[00:04.50]
[00:05.14]作词:方文山 作曲:周杰伦
[00:07.14]
[00:08.14]lrc制作:zicw.com
[00:18.14]
[00:37.72]微薄的身躯 刻划出厚实尊严
[00:39.83]小小屏幕 撑起大大一片天
[00:41.79]观众静候在我的眼前 灯光闪耀在后面 我碎碎念
[00:46.34]唱念做打喜怒哀乐 让你妈妈扭一下
[00:50.88]记得跟着锣鼓点 哇勒点点点点点点点
[00:54.93]我们的表演向左边 向右边
[00:57.43]左右都逢源不恐后或争先
[00:59.56]筋斗云就算在十万八千里
[01:01.71]看我只需要翻三圈
[01:03.82]近在咫尺 远在天边
[01:05.79]笑我疯癫 凭你的脸?
[01:07.98]还是快去排队买票看我的表演
[01:10.41]大声点我听不见
[01:12.35]皮影似神仙 我身轻如燕
[01:14.85]你面前忽隐又忽现
[01:17.03]飘逸在云和雾里面
[01:19.28]傲气贯山巅
[01:21.21]随性唱一遍变世代传承的经典
[01:27.93]
[01:31.23]皮影似神仙 我身轻如燕
[01:32.67]你面前忽隐又忽现
[01:34.65]飘逸在云和雾里面
[01:36.80]傲气贯山巅
[01:38.55]随性唱一遍变世代传承的经典
[01:45.43]
[02:04.91]剧力万千惊叹声连连
[02:06.83]动静掌控全在绕指间
[02:09.06]透明的眼 纯净的笑脸 只看颜色就能辩忠奸
[02:13.56]唱念做打喜怒哀乐 让你妈妈扭一下
[02:17.72]记得跟着锣鼓点 哇勒点点点点点点点
[02:22.22]哥说的故事 百善孝为先
[02:24.55]哥说的不是吃的虾味先
[02:26.69]筋斗云就算在十万八千里
[02:28.95]看我只需要翻三圈
[02:31.07]近在咫尺 远在天边
[02:32.95]笑我疯癫 凭你的脸?
[02:35.18]还是快去排队买票看我的表演
[02:37.63]大声点我听不见
[03:19.31][02:39.51]皮影似神仙 我身轻如燕
[02:41.59][03:21.60]你面前忽隐又忽现
[03:23.69][02:44.33]飘逸在云和雾里面
[03:25.89][02:46.56]傲气贯山巅
[03:27.65][02:48.72]随性唱一遍变世代传承的经典
[03:33.50][02:53.01]
[03:35.42]lrc制作:www.zicw.com
[03:45.30]

11 / 10 / 2011 buling

好久没有写过日志了,过了一个国庆节(去西冲露营了一晚,玩了两天,同学来了两天),这周竟然要上7天班。不过还好,我对上班没有反感情绪,反倒很愿意到公司去。
上班第一天就加班到11点过,500wan咨询页过关页面性能很低,经常打不开页面,这次对页面做优化,我感觉到的有两点,一是模板引擎,用了一个没有编译缓存的模板引擎,速度很低下,第二,页面读取数据时where条件和order一起使用速度异常慢。后来axing试出了一种建中间表(对where加order过的主键排序表)left join 主表,速度很快,一开始他们提出在页面改,后来我建议做服务:1、服务可以控制,如果请求过多,可以复制多个节点供访问,2、服务可以异步建中间表,且能控制请求数,不至于把apache挂满。忙了两天终于上线了。今天整理了一个下阶段优化的设计思路,等实现了再说吧。
然后还做了一个把eas加入到监控服务。对于监控我做点点统计吧。一般来说,一个服务的成长会分这么几个阶段;1、观察日志,定期上去看一下,服务还在不在,有没有什么异常。2、写个shell脚本,定时检查服务pid是否还活着,死掉拉起。3、对服务的except做捕获,并控频率告警。4、监控数据队列,这种情况只针对有队列异步处理的情况,定时检查数据是否被处理。5、主动创造条件检查服务的处理情况是否正常。
针对第5个阶段,服务的可靠性就很高了,对这种情况举两个例子吧。1、【消息中心】目标:监控一个消息中心和消息处理服务的运行状态;做法:见监控服务,处理服务启动时向监控中心注册,监控中心定时广播测试消息,处理服务接收到测试消息后向监控中心报到,对服务的响应称为心跳。当心跳超出心跳时间可控时间段,监控服务告警。2、【应答服务】目标:监控一个应答服务是否能正常响应外部发出的请求;做法:当应答服务启动时向监控中心注册,监控中心定时向应答服务发出处理测试请求,应答服务收到请求后向监控中心报到,当心跳超出可控时间段,则视为服务异常,告警。
技术到此段,写点生活吧。大学同学到深圳,她之前在家乡教了一年书,发现生活太平淡,想在深圳找工作,本来想推荐到我们公司,结果公司不接,面试机会都没拿到,我想是不是我们学校出身不好。中间有个插曲,那天XX来我们部门,我让她帮忙给dengj推荐一下,她被我直呼dengj有点吃惊,我也很纳闷,为什么?就因为她是个高管我就要低她几等…..无语。如果我发现一个人值得尊重,我会很恭敬,如果很熟,就随意了;否则就当我们陌生人,该怎么来怎么来。
本来接了一个小项目,没有钱,但做了一个静态页面把我累着了就有点淡下来了,当你有激情的时候需要速战速决,找对人,速度完成,否则耗不起,以前自己折腾的东西,一旦完成就扔一边了,没有力气去维护了,所以最后都不了了之,前不久花了320买了一个域名:fenchu.com,长相不错的域名,今天看见renmo网,宣传页做的不错,看来有一个很强大的团队,买了个域名:renme.cn,com和com.cn都被注册了。
好吧,写到这里,现在21:58分,场上82:46,中国0:1伊拉克……..