- 博客(52)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Paxos算法学习笔记
学习了1个多月,现在回头看,觉得要理解paxos算法,需要阅读下面三篇论文:The part-time parliament [英文] [中文]Paxos Made Simple [英文] [翻译]Paxos Made Code [英文]前两篇更多的是理论,第三篇介绍了paxos的实现。阅读第三篇还是很有必要的,在看第三篇之前,我一直不理解一个paxos的instanc
2012-09-24 20:12:05
6397
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 软件人员推荐书目
软件人员推荐书目(一) 大师篇一、 科学哲学和管理哲学【1】 "程序开发心理学"(The Psychology of Computer Programming : Silver Anniversary Edition) 【2】 "系统化思维导论"(An Introduction to Systems Thinking, Silver Anniversary Edition)
2012-03-06 08:24:04
1302
1
原创 log4j未写日志排错
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包中是否包
2013-11-24 11:24:38
2078
原创 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
原创 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
3621
原创 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
2834
原创 Storm源码阅读(二):客户端
ClojureClojure指南http://java.ociweb.com/mark/clojure/article.html Eclipse插件CounterclockwiseEclipse提供了专门的Clojure 语言开发插件CounterClockwise,在源代码编辑,代码调试,REPL 支持方面也有独到之处,适合于习惯于Eclipse的开发者使用。http://c
2013-08-14 15:37:34
4907
原创 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
23949
4
原创 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
6254
1
原创 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
5589
原创 ZooKeeper源码阅读(一):ZAB协议
A simple totally ordered broadcast protocol causal relationship指的是同一个发送者发送的两个消息,或者leader改变前发送的消息和改变后发送的消息。 怎么保证casual order?当重选Leader时,前一个Leader发送的消息先于当前Leader发送的消息。 Leader在开始broadcast之前
2013-07-14 18:49:26
20383
2
原创 Gaea源码阅读(五):C客户端
除了Java客户端外,Gaea还提供了C语言和.NET实现。基本都是相同的,只是序列化/反序列化用C语言重新实现了。遵循相同的格式,
2013-07-05 11:17:24
1259
原创 Github搭建静态博客
Jekyll是一个ruby工具,可以根据静态文本搭建网站。 Github Pages功能的后端引擎就是jekyll,因此只要你的项目包含了jekyll配置,就可以在Github上免费建立博客。 jekyll 通过ruby安装工具gem安装sudo apt-get install rubygems 可以添加源gem sources -a http://ruby.tao
2013-07-01 14:51:54
2796
原创 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
1652
原创 Gaea源码阅读(三):服务端启动流程
相对于客户端,服务器端工作就比较多了。服务器端需要load jar包,利用fliter实现方法级的权限控制 // load service config logger.info("load service config..."); ServiceConfig sc = loadServiceConfig(gaeaConfigDefaultPath, gaeaConfigP
2013-06-24 16:34:34
2116
原创 Gaea源码阅读(二):客户端流程
以GaeaClientTest为入口 GaeaInit.init("conf/gaea.config"); /** * 调用URL 格式:tcp://服务名//接口实现类 * 备注: * 服务名:需要与gaea.config中的服务名一一对应 * 接口实现类:具体调用接口的接口实现类 */ final String url = "tcp://d
2013-06-21 17:58:45
2077
原创 Gaea源码阅读(一):使用
Gaea:58同城开源的中间层服务框架 https://github.com/58code/Gaea中间件Gaea是支持跨平台具有高并发、高性能、高可靠性,并提供异步、多协议、事件驱动的中间层服务框架。相对于其它重量级的中间件,比如淘宝的dubbo,Gaea只做一件事,因此没有过多的项目依赖。在学校的时候学过CORBA,因此对中间件有所了解。在CORBA中,接口通过ID
2013-06-21 17:23:48
5200
原创 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
2711
原创 Argo源码阅读(五):Convention
在ArgoDispatcherFactory.init()中创建了ArgoDispatcher实例,然后再执行ArgoDispatcher的init。以后所有都将交给ArgoDispatcher处理。 //File ArgoFilter.init() dispatcher = ArgoDispatcherFactory.create(ser
2013-05-27 16:27:06
2177
原创 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
3082
原创 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
4315
原创 Argo源码阅读(二):Controller的使用
以附带的Hello world为例view/index.html 内容如下 Argo sample pageSamples 根据url获得参数的hello world 静态文件显示 区分queryString和form参数 文件上传展示当点击第一个链接的时候,跳转到hello/world路径,这是Argo做了什么处理?
2013-05-09 20:32:59
5326
原创 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
7504
原创 Nginx监控请求lua脚本
当应答状态码不是200时,通过udp向服务器发送报告。monitor.lua-- -- Config Nginx.conf:---- set $str $uri;-- content_by_lua_file;-- -- location /proxy {-- proxy_pass http://{your-server}$str;-- }------ Ex
2013-03-21 12:46:36
4372
原创 Java词法分析器jflex
以表达式识别为例,包括标识符、and、or,括号例如:condi1=5 and condi6=6 and (condi7=7 or (condi8=8 and condi9=9))//Expr.javapublic abstract class Expr{ abstract void print();}//andExpr.javapublic class andEx
2013-03-17 21:14:36
2347
2
原创 构造器内部调用动态绑定方法
在(基类的)构造器内部调用某个动态绑定的方法时,C++和Java有不同的表现。C++ 在构造函数中调用虚函数时,虚函数机制不起作用,调用的将是基类的方法。http://blog.csdn.net/m_vptr/article/details/7039954Java在构造器内调用动态绑定的方法时,调用的将是子类的方法,而子类这是其实还没有完全构造完成。Java编程
2013-03-14 00:09:38
1016
原创 源码安装nginx并配置Lua模块
今天需要在测试机布置nginx测试环境,测试机不能联网。所以只能用scp上传nginx源码安装。期间遇到不少问题1.下载nginx源码$wget 'http://sysoev.ru/nginx/nginx-1.2.6.tar.gz'2.下载lua-nginx-module源码$git clone https://github.com/chaoslawful/lua-
2013-03-06 09:50:20
7034
原创 Libevent学习笔记一:异步IO
http://www.wangafu.net/~nickm/libevent-book/01_intro.html文章以一个HTTP服务为例,介绍并比较了几种处理高并发的方法。1.阻塞+轮询/* This won't work. */char buf[1024];int i, n;while (i_still_want_to_read()) { for (i=0; i
2013-01-17 15:40:24
1825
原创 C++访问SQLite
1.安装SQLite sudo apt-get install sqlite32.安装SQLite开发包sudo apt-get install libsqlite3-dev 3.创建表$sqlite3 Acceptor_0.db SQLite version 3.7.9 2011-11-01 00:52:41Enter ".help" for instructions
2013-01-07 18:53:35
1469
原创 C++访问MySQL
1.安装mysql sudo apt-get install mysql-server mysql-client安装过程中会提示设置用户名和密码2.启动mysql sudo /etc/init.d/mysql restart3.安装C++开发库 sudo apt-get install libmysqlclient-dev4.登录mysql,并创建表m
2013-01-07 13:59:52
3644
原创 M101 Homework 2.2
本人写的第一个python程序:# M101 Week2 - CRUD Homework 2.2import pymongoimport sys# establish a connection to the databaseconnection = pymongo.Connection("mongodb://localhost", safe=True)db = connection.s
2012-11-08 23:10:17
1071
原创 C++模板Gotcha
用到模板时遇到的两个错误1) 一个是模板函数链接错误//xxx.htemplate class A{public: T& getT();private: T t;}//xxx.cpptemplate T& A::getT(){ return t;}链接时报std::string A::getT()未定义参照C++
2012-11-07 16:25:34
552
原创 与排序后位置距离<k的数组的排序
阿里巴巴笔试题:一个含有n个互不相同的整数的数组,任意一个数a[i]的现有位置i和它排序后的位置j的距离不超过k(即i-j的绝对值小于等于k),2=要求:算法复杂度为O(nlogn)记0分,为O(nk)记2分。满分20分解法1:只对中间2k个元素划分,然后递归。第一层2k步,第二层2^2*k步,一直到第log(n/2k)层,一共2*(1 + 2 + ... 2^(l
2012-10-10 16:23:56
2145
原创 The part-time parliament笔记
另一篇更详细的Paxos笔记:http://blog.csdn.net/m_vptr/article/details/8014220每个议员手中有一本律簿所有律簿上的法令都是一致的,也就是第x条法令的内容是一致的,当然可能有的律簿上还没有这条法令律簿背面记录重要的笔记,不重要的笔记记在小纸条中,小纸条很有可能丢失。笔记代表机器在内存中的一些状态。可能出现的问题:一拨
2012-08-30 18:33:33
3026
原创 TortoiseSVN学习笔记
以前也了解过SVN,今天把帮助文档看了一遍,就当是查缺补漏吧。Repository:repository保存了每一次变动:对文件的每一次改动,对目录的改动,比如增加、删除,重新整理文件和目录。 import:将工程文件导入到repos中, add:工程内添加了新文件后,在工程的目录下,使用add功能,将使这个文件显示加号图标,并没有提交到库。 revert:工程
2012-07-27 11:10:39
4404
1
原创 Log4j学习笔记
log4j使得日志管理更加方便,通过配置文件可以实现在运行时控制。 通过log4j,可以在程序中指定每一条日志的级别(error,warn, debug, info),从而可以根据需求,只输出某个级别和该级别以下的日志。可以控制日志的附加目的地(Appender),可以是多个,包括控制台、文件、远程套接字服务器,NT事件记录器和远程UNIX Syslog守护程序。可以定制输出的
2012-07-24 14:38:40
670
转载 Java类加载原理解析
1 基本信息摘要:每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚拟机的连接模型和jav
2012-07-23 12:27:05
510
原创 XMLEventReader读取数据不全
alert.scheduler.Scheduler alert.control.HostAliveTask#repeat#100; alert.control.WebpageRespTask#repeat#180; alert.control.AlarmNumTask#daily#16:45:00 发现读取出的数据只有前面两行解决的办法是设置javax.xml.
2012-07-20 18:02:39
2109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人