<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m_vptr的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m_vptr</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m_vptr]]></copyright><item><title><![CDATA[记一次排查mbstowcs误用引发的bug]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/24322659</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/24322659</guid><author>m_vptr</author><pubDate>Tue, 22 Apr 2014 19:03:02 +0800</pubDate><description><![CDATA[运行]]></description><category></category></item><item><title><![CDATA[log4j未写日志排错]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/16917419</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/16917419</guid><author>m_vptr</author><pubDate>Sun, 24 Nov 2013 11:24:38 +0800</pubDate><description><![CDATA[log4j.properties是否放在 src/main/resources目录下, mvn install之后会放到jar包中.
http://stackoverflow.com/questions/5132389/if-using-maven-usually-you-put-log4j-properties-under-java-or-resources



检查jar包中是否包]]></description><category></category></item><item><title><![CDATA[ZooKeeper源码阅读（六）：JUTE]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/12494141</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/12494141</guid><author>m_vptr</author><pubDate>Wed, 09 Oct 2013 10:33:52 +0800</pubDate><description><![CDATA[JUTE是跨语言序列化/反序列化工具，类似Thrift
用于产生java/c版本的消息类]]></description><category></category></item><item><title><![CDATA[ZooKeeper源码阅读（五）：Leader选举]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/12492259</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/12492259</guid><author>m_vptr</author><pubDate>Wed, 09 Oct 2013 10:15:21 +0800</pubDate><description><![CDATA[ZooKeeper中的Leader选举也不是Paxos, 实现相关的类包括FastLeaderElection, LeaderElection.

FastLeaderElection: Leader选举初始投票选自己,收到别人的投票之后判断是否更优,如果是则更新自己的投票,最终zxid最大的follower将收到多数派的投票,等待finalizeWait微秒后仍无更优投票,则转为LEADING状态.

LeaderElection: 向所有VotingView中的Server建立socket，发送/接收v]]></description><category></category></item><item><title><![CDATA[ZooKeeper源码阅读（四）：选举后过程]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/11535189</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/11535189</guid><author>m_vptr</author><pubDate>Thu, 26 Sep 2013 11:31:04 +0800</pubDate><description><![CDATA[Zookeeper选出Leader后，在对外提供服务之前，需要对Follower的状态进行同步。我想搞清这个过程,以及zookeeper解决之前提到的两个问题的细节：
1)	Never forget delivered messages
Leader在COMMIT投递到任何一台follower之前宕机，只有它自己commit了。新Leader必须保证这个事务也必须commit。

2)	Let go of messages that are skipped
Leader产生某个proposal，但是在宕机之]]></description><category></category></item><item><title><![CDATA[Storm源码阅读（三）：Thrift]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9970369</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9970369</guid><author>m_vptr</author><pubDate>Wed, 14 Aug 2013 19:50:27 +0800</pubDate><description><![CDATA[Thrift指南：http://diwakergupta.github.io/thrift-missing-guide/

Defining Services

service Twitter {
    // A method definition looks like C code. It has a return type, arguments,
    voidping(),]]></description><category></category></item><item><title><![CDATA[Storm源码阅读（二）：客户端]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9965435</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9965435</guid><author>m_vptr</author><pubDate>Wed, 14 Aug 2013 15:37:34 +0800</pubDate><description><![CDATA[Clojure
Clojure指南http://java.ociweb.com/mark/clojure/article.html
 
Eclipse插件Counterclockwise
Eclipse提供了专门的Clojure 语言开发插件CounterClockwise，在源代码编辑，代码调试，REPL 支持方面也有独到之处，适合于习惯于Eclipse的开发者使用。
http://c]]></description><category></category></item><item><title><![CDATA[Storm源码阅读（一）：使用]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9962613</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9962613</guid><author>m_vptr</author><pubDate>Wed, 14 Aug 2013 13:01:53 +0800</pubDate><description><![CDATA[Storm项目主页http://storm-project.net/，github主页https://github.com/nathanmarz/storm
 
storm源码是clojure和java的混合体
 
安装JRE
Clojure 运行在 JRE (JAVA Runtime Environment) 之上，因此，你需要先安装 JRE。
 
安装lein
Clojure项]]></description><category></category></item><item><title><![CDATA[ZooKeeper源码阅读（三）：服务器端]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9835181</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9835181</guid><author>m_vptr</author><pubDate>Thu, 08 Aug 2013 16:03:27 +0800</pubDate><description><![CDATA[服务端入口：org.apache.zookeeper.server.QuorumPeerMain.main
(调用ZooKeeperServerMain.main)
 
运行参数：配置文件
如：QuorumPeerMain /opt/zookeeper/zookeeper-3.4.3/bin/../conf/zoo.cfg
 
 
读取配置文件
       QuorumPeerC]]></description><category></category></item><item><title><![CDATA[ZooKeeper源码阅读（二）：客户端]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9420659</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9420659</guid><author>m_vptr</author><pubDate>Tue, 23 Jul 2013 12:43:22 +0800</pubDate><description><![CDATA[源代码：

http://svn.apache.org/repos/asf/zookeeper/trunk/

 
导入eclipse：
在包含build.xml目录下执行ant eclipse将产生.classpath文件
 
目录结构：
src/recipes：提供了各种Zookeeper应用例子
src/c：提供了c版客户端。zookeeper_st,zookeeper_]]></description><category></category></item><item><title><![CDATA[ZooKeeper源码阅读（一）：ZAB协议]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9325405</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9325405</guid><author>m_vptr</author><pubDate>Sun, 14 Jul 2013 18:49:26 +0800</pubDate><description><![CDATA[A simple totally ordered broadcast protocol
 
causal relationship指的是同一个发送者发送的两个消息，或者leader改变前发送的消息和改变后发送的消息。
 
怎么保证casual order?
当重选Leader时，前一个Leader发送的消息先于当前Leader发送的消息。
 
Leader在开始broadcast之前]]></description><category></category></item><item><title><![CDATA[Gaea源码阅读（五）：C客户端]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9245763</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9245763</guid><author>m_vptr</author><pubDate>Fri, 05 Jul 2013 11:17:24 +0800</pubDate><description><![CDATA[除了Java客户端外，Gaea还提供了C语言和.NET实现。


基本都是相同的，只是序列化/反序列化用C语言重新实现了。遵循相同的格式，]]></description><category></category></item><item><title><![CDATA[Github搭建静态博客]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9213715</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9213715</guid><author>m_vptr</author><pubDate>Mon, 01 Jul 2013 14:51:54 +0800</pubDate><description><![CDATA[Jekyll是一个ruby工具，可以根据静态文本搭建网站。
 
Github Pages功能的后端引擎就是jekyll，因此只要你的项目包含了jekyll配置，就可以在Github上免费建立博客。
 
jekyll 通过ruby安装工具gem安装
sudo apt-get install rubygems
 
可以添加源
gem sources -a http://ruby.tao]]></description><category></category></item><item><title><![CDATA[Gaea源码阅读（四）：服务端通讯]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9163913</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9163913</guid><author>m_vptr</author><pubDate>Mon, 24 Jun 2013 17:33:48 +0800</pubDate><description><![CDATA[在(三)中加载server时，将根据配置建立tcp/http/telnet服务。如demo中这三个服务中enable了tcp和telnet。
 
以tcp服务为例，实现类在gaea.server.tcp.implement中配置


gaea.server.tcp.implement
com.bj58.spat.gaea.server.core.communication.tcp.Socke]]></description><category></category></item><item><title><![CDATA[Gaea源码阅读（三）：服务端启动流程]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9163319</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9163319</guid><author>m_vptr</author><pubDate>Mon, 24 Jun 2013 16:34:34 +0800</pubDate><description><![CDATA[相对于客户端，服务器端工作就比较多了。服务器端需要load jar包，利用fliter实现方法级的权限控制



		// load service config
		logger.info("load service config...");
		ServiceConfig sc = loadServiceConfig(gaeaConfigDefaultPath, gaeaConfigP]]></description><category></category></item><item><title><![CDATA[Gaea源码阅读（二）：客户端流程]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9147279</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9147279</guid><author>m_vptr</author><pubDate>Fri, 21 Jun 2013 17:58:45 +0800</pubDate><description><![CDATA[以GaeaClientTest为入口

		GaeaInit.init("conf/gaea.config");
		/**
		 * 调用URL 格式:tcp://服务名//接口实现类 
		 * 备注: 
		 * 服务名：需要与gaea.config中的服务名一一对应
		 * 接口实现类：具体调用接口的接口实现类
		 */

		final String url = "tcp://d]]></description><category></category></item><item><title><![CDATA[Gaea源码阅读（一）：使用]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/9145321</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/9145321</guid><author>m_vptr</author><pubDate>Fri, 21 Jun 2013 17:23:48 +0800</pubDate><description><![CDATA[Gaea：58同城开源的中间层服务框架 https://github.com/58code/Gaea


中间件
Gaea是支持跨平台具有高并发、高性能、高可靠性，并提供异步、多协议、事件驱动的中间层服务框架。相对于其它重量级的中间件，比如淘宝的dubbo，Gaea只做一件事，因此没有过多的项目依赖。


在学校的时候学过CORBA，因此对中间件有所了解。在CORBA中，接口通过ID]]></description><category></category></item><item><title><![CDATA[Argo源码阅读（六）：ArgoDispatcher]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/8981111</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/8981111</guid><author>m_vptr</author><pubDate>Mon, 27 May 2013 18:53:45 +0800</pubDate><description><![CDATA[回到最顶层的调用ArgoFilter.init()，Argo.init()初始化了ArgoDispatcher，ArgoFilter初始化完毕。
 
ArgoFilter.doFilter实现过滤功能

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, Filte]]></description><category></category></item><item><title><![CDATA[Argo源码阅读（五）：Convention]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/8980192</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/8980192</guid><author>m_vptr</author><pubDate>Mon, 27 May 2013 16:27:06 +0800</pubDate><description><![CDATA[在ArgoDispatcherFactory.init()中创建了ArgoDispatcher实例，然后再执行ArgoDispatcher的init。以后所有都将交给ArgoDispatcher处理。


            //File ArgoFilter.init()
            dispatcher = ArgoDispatcherFactory.create(ser]]></description><category></category></item><item><title><![CDATA[Argo源码阅读（四）：Servlet过滤器]]></title><link>https://blog.youkuaiyun.com/m_vptr/article/details/8979514</link><guid>https://blog.youkuaiyun.com/m_vptr/article/details/8979514</guid><author>m_vptr</author><pubDate>Mon, 27 May 2013 13:35:14 +0800</pubDate><description><![CDATA[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]]></description><category></category></item></channel></rss>