log4cxx安装
log4cxx是apache基金会的log开源项目,log4j的c++实现,安装的时候遇到一个小问题:
首先正常安装:
wget http://mirrors.cnnic.cn/apache/logging/log4cxx/0.10.0/apache-log4cxx-0.10.0.tar.gz
tar zxvf apache-log4cxx-0.10.0.tar.gz
cd apache-log4cxx-0.10.0
./configure
make
报错libdb-4.3.so 格式错误。开始以为是文件损坏了,查了一下这个文件
yum provides */libdb-4.3.so
提示在db4里面,重新安装db4
yum reinstall db...
关于group commit
最近突然想到这个东西,以前Oceanbase的UpdateServer提交的时候是做了group commit的。基本思路如下:
并发小的时候,超过一个时间窗口就直接提交
并发大的时候,等请求填满一个buffer再一起提交。
实现上可以考虑如下伪代码:
while true:
start timer
if buffer full or timer reach limit:
commit
reset timer
else
wait and receive
广泛运用在一些需要组合请求的地方,比如一些rpc因为历史原因(嗯)一直单条请求,不能改协议的情况下,可以考虑转发一下,做个缓冲。当然这种情况下一般是通过队列...
带小团队的一点思考
事实上我也只是带实习生而已。但是感觉上之前更多的是把自己的任务分出去,而现在是开始跟一些人一起完成一个任务。主要的不同是之前做的事情是在个人工作量里面,自己做也只是慢一点,有时候甚至自己做反倒比分出去更快。现在做的事情已经超过一个人工作量了,必须发挥团队的能动性了,而且之前也只是对自己的工作负责,现在你要负责的是一个团队的KPI了。
主要有几点感觉:
分配好工作。需要能力的,需要经验的,需要稳定细心的,每个人的风格不一样,应该做的工作也不一样。
规范流程。大部分加班或者事故都是能从流程上避免的,在设计开发测试上省下来的时间最终都会在上线修bug处理问题的过程中补回来。
做好计划和项目管理。做一个包含不确定性和风险的事情最重要的是路线图。实现的过程就是把抽象的东西一点点...
通过父子关系构建话题树
一道题目,本来觉得挺简单的,后来卡在一个小问题上。mark一下:
给定一个数据库表,存了所有话题的关系,形式是:parent->child,表示前面是后面话题的父话题。根据这个关系构建出话题树并打印。
eg:
输入:
a b
c a
d e
e f
r c
r d
输出:
r
c
a
b
d
e
f
题目隐含:
1. DAG:有向无环
2. 节点不重复
直观看类似于Graphviz的算法,只不过保证了是棵树。C++实现上可以直接通过树来做,这里用了Python。
Phibricator搭建过程总结
Phibricator是Facebook开源的一体化项目管理、代码review工具,主要特点是集成度高、界面漂亮。根据搭建的经验看,确实做的非常完善,各种细节用起来像是商业产品,不会像其他的开源产品那么难以配置。这里把配置过程根据回忆写一下:
官方给出过一个一键安装的脚本,但是下载的时候感觉有点问题吧,下载完不是sh而是网页,而且我只有一台机器,环境都已经预先有了,也不想再搭一套LAMP。这里我们以centos5为例:
首先安装httpd + mysql + php,由于centos5的版本太低,yum源里的mysql和php均低于phibricator要求的版本,我们需要先升级yum源,参见参考文献, 不过好像安装的时候没有php53u,而是直接php53
之后把对应的扩展也装...
简历生成器(基于moderncv+latex)
项目地址: https://github.com/chenxiaohui/resume
说明
通过文本文件生成简历tex的generator。最终生成pdf还是要靠Latex+Moderncv,环境请自行配置。
windows下:http://www.ctex.org/HomePage
Linux下:https://www.tug.org/texlive/
Mac下:https://tug.org/mactex/
需要的包都通过sudo tlmgr install package来安装。字体主要使用了Times New Roman(西文)和 Kaiti SC(中文)。可根据喜好换。
模板配置
config.tex 定义了公共头文件,包...
基于zookeeper的配置管理客户端
名词解释:
SeviceConfig:
一个服务的所有配置存在一个目录下
BucketConfig:
Bucket的配置存在一个单独的子目录中
配置项类型:
Integer
Long
Short
Float
Double
Byte[]
Boolean
String
自定义配置项 ConfigObject
###使用说明:
####POM:
<dependency>
<groupId>com.sohu.adrd</groupId>
<artifactId>sohu-zk-client</artifactId>
<version>1....
一些python小技巧
生成一个重复列表可以通过如下语句:
[i] * n #这比[ i for _ in range(0,n) ]简洁太多
同样可以"i" * n来生成字符串
map函数。
可以用来分类函数和其调用参数,对于线程池比较有用。比如
import urllib2
from multiprocessing.dummy import Pool as ThreadPool
urls = [
'http://www.python.org',
# etc..
]
pool = ThreadPool(4)
results = pool.map(urllib2.urlo...
506 post articles, 64 pages.