摘要:
有时在tableview的头部会凭空多出一块空白区域,这是由于ios会"贴心"的多分配一些用于滑动的多余inset。消除这一空白的方法是,在tableview所在的controller里self.automaticallyAdjustsScrollViewInsets = NO; 阅读全文
2015年9月29日
2014年12月8日
摘要:
Centos kvm+ceph一. centos6.5 安装kvm1. disable selinux2. 确认支持intel虚拟化3. 安装需要的包4.设置桥接网络5.运行kvm instance(此步骤仅用于测试环境是否安装成功)6.连接到kvm二. centos安装ceph(firefly版本... 阅读全文
摘要:
数据分析算法决策树决策树用于对数据集中的记录进行分类。假设每条记录都含有若干条属性,决策树根据属性进行分类。ID3算法如何决定选取哪条属性来进行划分? 判断条件是根据该属性划分后数据集的信息熵最小(信息熵越小表明数据越整齐),也就是熵差值最大。假设A属性共有n个取值,按照A划分后将获得n个分支,每个... 阅读全文
摘要:
工具一:iops, 一个python写的脚本用法示例:sudo ./iops --num_threads 1 --time 2 /dev/md1出处:http://benjamin-schweizer.de/measuring-disk-io-performance.html代码:http://be... 阅读全文
2014年2月16日
摘要:
skip list, 渐进式hash,spin lock ,rw lock 很久前做的一个PPT,勉强看看http://prezi.com/ipvogacyoqje/test/ 阅读全文
2011年12月22日
摘要:
锁管理器LockManager用于解决这样的问题:我们需要一个锁对应一种资源,但是需要上锁的资源的种类可能非常的多,或者甚至是未知的。 这种情况下,我们不可能一次初始化所有的锁。如果不能对这些未知资源上锁的话,就不可能实现对这些资源的互斥访问了。举个例子,有一张无限的地图,玩家可以在在地图上按照坐标随意移动。需要对每个坐标锁对应的资源上锁。 解决办法如下:1. 首先对资源做唯一标识。我采用的是一个字符串来标识一个资源。 具体例子里就是坐标"x,y"2. 一个字符串对应一把锁,由lockManager来控制锁的创建。可以想见,主要是一个key=>lock的mapclas 阅读全文
2011年8月30日
摘要:
令牌环在计算机网络中有广泛的应用。在程序中有时也需要应用到令牌技术。 这里介绍一下令牌队列的实现。一个令牌队列是一系列需要执行的调用的集合,它的作用有两点:1. 保持调用的顺序2. 调用间互斥执行这两点都是通过令牌来实现的。规则是:只有获得令牌的调用才能执行,执行完毕后将令牌归还。令牌队列里最简单的情况是:只有一个令牌,任何时候只有一个调用处于执行状态。以下是典型的使用场景:1. 客户代码请求获得令牌以执行一个调用 2. 令牌队列接收该请求,将该请求放入待执行队列3. 当令牌不被其他调用占用时,令牌队列选取一个调用,赋予令牌并执行. 若令牌被占用,则退出4. 调用执行完毕,将令牌归还,回到步. 阅读全文
2011年6月11日
摘要:
async io 之iohandler实现iohandler的功能:1. 封装对fd的读写2. delegate读写到io manager 线程首先需要初始化iohandler.用一个预先得到的fd作为参数打开对应文件,并设置nonblocking。int open(int fd) { m_fd = fd; fcntl(m_fd, F_SETFL, O_NONBLOCK);}iohandler对外的读写接口不外乎read()和write(). 我们定义接口如下:void async_read(Buffer *buf, int len, CB cb);void async_write(Buffe 阅读全文
2011年6月5日
摘要:
asynchronous io的使用越来越普及。现在有相当多的类库,web服务器和网络编程框架使用了这一技术。比如python的tornado,twisted, c写的httperf, libevent, boost asyncIO。我所在的项目有一个c++开源库http://code.mozy.com/projects/mordor, 也用到了这一技术。顺便提一下,这是一个很强大的库,实现了很多很cool的特性(如fiber).这个系列的文章计划分为4部分:1,async io的基础,事件循环 2. 具体io回调处理的实现 3.如何用async io 实现一个socket stream 4. 阅读全文
2011年6月1日
摘要:
前几天遇到一个诡异的问题。base.h classBase1{public:virtualvoiddo_something();};classBase2{public:virtualvoiddo_something2();};classImpl:publicBase1,publicBase2{public:virtualvoiddo_something2();};void foo(Base1 &base1){ base1.do_something(); }在test.h中class Impl;void bar(Impl &impl); 在test.cc中void bar( &a 阅读全文