源码阅读
文章平均质量分 89
m_vptr
80摩羯座,ISTJ性格。
趁着年轻,不图安逸。
内修其身,外修形象。
刻苦钻研,勤俭理财。
展开
-
Argo源码阅读(六):ArgoDispatcher
回到最顶层的调用ArgoFilter.init(),Argo.init()初始化了ArgoDispatcher,ArgoFilter初始化完毕。 ArgoFilter.doFilter实现过滤功能 @Override public void doFilter(ServletRequest request, ServletResponse response, Filte原创 2013-05-27 18:53:45 · 2715 阅读 · 0 评论 -
ZooKeeper源码阅读(六):JUTE
JUTE是跨语言序列化/反序列化工具,类似Thrift用于产生java/c版本的消息类原创 2013-10-09 10:33:52 · 6803 阅读 · 0 评论 -
ZooKeeper源码阅读(五):Leader选举
ZooKeeper中的Leader选举也不是Paxos, 实现相关的类包括FastLeaderElection, LeaderElection.FastLeaderElection: Leader选举初始投票选自己,收到别人的投票之后判断是否更优,如果是则更新自己的投票,最终zxid最大的follower将收到多数派的投票,等待finalizeWait微秒后仍无更优投票,则转为LEADING状态.LeaderElection: 向所有VotingView中的Server建立socket,发送/接收v原创 2013-10-09 10:15:21 · 2624 阅读 · 0 评论 -
Argo源码阅读(二):Controller的使用
以附带的Hello world为例view/index.html 内容如下 Argo sample pageSamples 根据url获得参数的hello world 静态文件显示 区分queryString和form参数 文件上传展示当点击第一个链接的时候,跳转到hello/world路径,这是Argo做了什么处理?原创 2013-05-09 20:32:59 · 5334 阅读 · 0 评论 -
Argo源码阅读(三):Google-guice依赖注入框架
在Argo中用到了Google-guice依赖注入框架:http://code.google.com/p/google-guice/Google-guice 依赖注入框架主要由@Inject注解、AbstractModule基类组成 RealBillingService类构造时依赖CreditCardProcessor和TransactionLog接口,添加@Inject注原创 2013-05-27 10:28:31 · 4320 阅读 · 0 评论 -
Argo源码阅读(五):Convention
在ArgoDispatcherFactory.init()中创建了ArgoDispatcher实例,然后再执行ArgoDispatcher的init。以后所有都将交给ArgoDispatcher处理。 //File ArgoFilter.init() dispatcher = ArgoDispatcherFactory.create(ser原创 2013-05-27 16:27:06 · 2186 阅读 · 0 评论 -
ZooKeeper源码阅读(四):选举后过程
Zookeeper选出Leader后,在对外提供服务之前,需要对Follower的状态进行同步。我想搞清这个过程,以及zookeeper解决之前提到的两个问题的细节:1) Never forget delivered messagesLeader在COMMIT投递到任何一台follower之前宕机,只有它自己commit了。新Leader必须保证这个事务也必须commit。2) Let go of messages that are skippedLeader产生某个proposal,但是在宕机之原创 2013-09-26 11:31:04 · 3623 阅读 · 0 评论 -
Gaea源码阅读(三):服务端启动流程
相对于客户端,服务器端工作就比较多了。服务器端需要load jar包,利用fliter实现方法级的权限控制 // load service config logger.info("load service config..."); ServiceConfig sc = loadServiceConfig(gaeaConfigDefaultPath, gaeaConfigP原创 2013-06-24 16:34:34 · 2128 阅读 · 0 评论 -
Argo源码阅读(一):Jetty
Argo:58同城开源的轻量级web框架 https://github.com/58code/Argo作为仅有Java语言背景,从没接触过web容器,Spring、Servlet,tomcat、jetty的门外汉,我心中最大的疑惑是Argo是如何工作的?附带的例子samples/hello-world,我找不到Main函数。从文档Readme中看到,运行就一条指令mav原创 2013-03-29 17:29:41 · 7513 阅读 · 0 评论 -
Storm源码阅读(三):Thrift
Thrift指南:http://diwakergupta.github.io/thrift-missing-guide/Defining Servicesservice Twitter { // A method definition looks like C code. It has a return type, arguments, voidping(),原创 2013-08-14 19:50:27 · 2842 阅读 · 0 评论 -
Storm源码阅读(二):客户端
ClojureClojure指南http://java.ociweb.com/mark/clojure/article.html Eclipse插件CounterclockwiseEclipse提供了专门的Clojure 语言开发插件CounterClockwise,在源代码编辑,代码调试,REPL 支持方面也有独到之处,适合于习惯于Eclipse的开发者使用。http://c原创 2013-08-14 15:37:34 · 4919 阅读 · 0 评论 -
Argo源码阅读(四):Servlet过滤器
Filter通常在一个web应用上的主要功能之前或之后执行一小段功能,比如判断用户是否有访问的权限。 Filter实现javax.servlet.Filter接口,由方法doFilter实现过滤功能。 Filter指南:http://www.avajava.com/tutorials/lessons/what-is-a-filter-and-how-do-i-use-it.ht原创 2013-05-27 13:35:14 · 3084 阅读 · 0 评论 -
Gaea源码阅读(五):C客户端
除了Java客户端外,Gaea还提供了C语言和.NET实现。基本都是相同的,只是序列化/反序列化用C语言重新实现了。遵循相同的格式,原创 2013-07-05 11:17:24 · 1272 阅读 · 0 评论 -
Gaea源码阅读(一):使用
Gaea:58同城开源的中间层服务框架 https://github.com/58code/Gaea中间件Gaea是支持跨平台具有高并发、高性能、高可靠性,并提供异步、多协议、事件驱动的中间层服务框架。相对于其它重量级的中间件,比如淘宝的dubbo,Gaea只做一件事,因此没有过多的项目依赖。在学校的时候学过CORBA,因此对中间件有所了解。在CORBA中,接口通过ID原创 2013-06-21 17:23:48 · 5212 阅读 · 0 评论 -
Gaea源码阅读(四):服务端通讯
在(三)中加载server时,将根据配置建立tcp/http/telnet服务。如demo中这三个服务中enable了tcp和telnet。 以tcp服务为例,实现类在gaea.server.tcp.implement中配置gaea.server.tcp.implementcom.bj58.spat.gaea.server.core.communication.tcp.Socke原创 2013-06-24 17:33:48 · 1665 阅读 · 0 评论 -
ZooKeeper源码阅读(一):ZAB协议
A simple totally ordered broadcast protocol causal relationship指的是同一个发送者发送的两个消息,或者leader改变前发送的消息和改变后发送的消息。 怎么保证casual order?当重选Leader时,前一个Leader发送的消息先于当前Leader发送的消息。 Leader在开始broadcast之前原创 2013-07-14 18:49:26 · 20404 阅读 · 2 评论 -
ZooKeeper源码阅读(二):客户端
源代码:http://svn.apache.org/repos/asf/zookeeper/trunk/ 导入eclipse:在包含build.xml目录下执行ant eclipse将产生.classpath文件 目录结构:src/recipes:提供了各种Zookeeper应用例子src/c:提供了c版客户端。zookeeper_st,zookeeper_原创 2013-07-23 12:43:22 · 5601 阅读 · 0 评论 -
ZooKeeper源码阅读(三):服务器端
服务端入口:org.apache.zookeeper.server.QuorumPeerMain.main(调用ZooKeeperServerMain.main) 运行参数:配置文件如:QuorumPeerMain /opt/zookeeper/zookeeper-3.4.3/bin/../conf/zoo.cfg 读取配置文件 QuorumPeerC原创 2013-08-08 16:03:27 · 6272 阅读 · 1 评论 -
Storm源码阅读(一):使用
Storm项目主页http://storm-project.net/,github主页https://github.com/nathanmarz/storm storm源码是clojure和java的混合体 安装JREClojure 运行在 JRE (JAVA Runtime Environment) 之上,因此,你需要先安装 JRE。 安装leinClojure项原创 2013-08-14 13:01:53 · 23966 阅读 · 4 评论 -
Gaea源码阅读(二):客户端流程
以GaeaClientTest为入口 GaeaInit.init("conf/gaea.config"); /** * 调用URL 格式:tcp://服务名//接口实现类 * 备注: * 服务名:需要与gaea.config中的服务名一一对应 * 接口实现类:具体调用接口的接口实现类 */ final String url = "tcp://d原创 2013-06-21 17:58:45 · 2089 阅读 · 0 评论