Java I/O

最近在看Tomcat 7.0的源码,一直对Tomcat以下几块比较感兴趣: 容器的架构和各组件的启动过程 容器Deploy一个Servlet webapp的过程 容器接受并处理客户端请求 而最后一块是我最感兴趣的部分,Tomcat 7.0提供了BIO(blocking I/O)和NIO(non-blocking I/O)及AJP协议的实现, 不过默认启用BIO和AJP,大家可以通过修改Tomcat安装目录下的conf/server.xml来启用NIO ,只需把protocol="HTTP »

Metrics简介

Metrics是一个用于代码监控的开源工具包,通过在Java代码中嵌入Metrics的一些组件,实现对业务代码的监控。Metrics提供了对 Jetty,Logback,HttpClient,Ehcache等支持模块。Metrics还可以和Ganglia、Graphite集成提供图形化界面。 详细介绍请参见官方网站。 Metrics Maven setup 只需要在pom文件里加入metrics-core依赖就可以了,目前最新稳定版为3.0.1。 <dependency> <groupId>com.codahale »

2013总结

2013对我而言是个特别的年份,这一年发生了许多事,也想明白了一些东西。一些感悟: 兴趣真的真的很重要。如果工作是你的兴趣,那么恭喜你,你是你自己的老板。 人生本无常,不如意十之八九;平和的心态去面对人生。 也许做好一件事只有1%的可能,但不去做毫无可能。 专注、极致、开放、敏捷 拖延症对于我来说是最大的敌人,怎么打败它是我接下来首先需要考虑的问题 其实根本没必要去做到不以物喜,不以己悲,人生起伏不平,本应喜怒哀乐 看到一段话:当你坚持不下去的时候 »

Cloud Foundry之gorouter源码剖析

Router是Cloud foundry里很重要的一个组件,最初的Router是由Nginx作为入口,调用Lua代码连接一个由Ruby写的Server,根据客户端请求Header决定由不同的后端去处理。这种架构的局限在于:Nginx是个Web服务器,它不支持非HTTP请求,例如TCP或者Websocket;而且由于HTTP必须要一个Request/Response来回导致效率低下。因此从Cloud foundry v2版本开始,Router开始用Go语言实现从而解决了上述局限;总所周知,Go语言是为多线程、高并发而生的语言。为了突出与v1版的router不同,取名gorouter。gorouter提供了对Websocket的支持,并且整个组件由单进程实现,从而减少了不必要的延迟。 gorouter核心源码并不庞大,我统计了下不到3000行。算上所有依赖库等代码 »

Web service based on Hessian

这几天项目上线碰到了一个的问题:手机后端应用部署在一台有公网IP的服务器A上,后端应用访问的数据库部署在与A在同一子网的服务器B上,考虑到安全性等问题,B没有公网IP。现在有另一个同样需要访问数据库服务器B的应用部署在服务器C上,C与A有着相同的DAO,但是C与A、B不在同一子网内,也就是说C无法访问B。该如何解决这个问题? 很明显,C只能通过A来访问B;同时考虑到A与C有着相同的数据库访问接口,所以思考能否把数据库访问层剥离出来,以Web service的形式对外提供服务。这样A与C上的应用都通过这个web service访问B上的数据库。 由于基于XML/JSON的ws涉及到marshal/unmarshal,而我们A、C上的应用使用同样的DAO和data model,这样看来 »

关于本博客

一直想建个网站写写博客、发布点小破应用玩玩,但是一直没有去做。昨天下午突然心血来潮,从了解建站过程到注册域名再到租服务器,折腾了好久,这才懂得搞个网站还是相当麻烦的。 由于国内的政策大家都懂的,搞个破网站都需要备案;至于备案嘛,各种麻烦各种折腾,再加上国内申请个域名就死贵,租个服务器(还是那种虚拟共享的垃圾)都狠狠宰你一刀,所以还是打算去自由的美利坚注册吧,把服务器也选在美利坚。本以为latency会比较大,结果发现在200ms以内不免有些欣喜。 关于租服务器,了解了下,美利坚果然很牛,提供了国内较少的VPS,就是给你一台虚拟的服务器(类似IAAS),你拥有root权限 »