人既无名的专栏

人既无名,便可专心编程

ucontext-人人都可以实现的简单协程库

协程是一种用户态的轻量级线程。本篇主要研究协程的C/C++的实现。利用ucontext提供的四个函数getcontext(),setcontext(),makecontext(),swapcontext()可以在一个进程中实现用户级的线程切换。本篇一步一步教你使用ucontext组件实现自己的协程...

2014-12-13 17:11:36

阅读数:34490

评论数:24

Thrift官方安装手册(译)

本篇是Thrift官网安装文档的翻译。介绍了Thrift安装的环境要求,以及在centos,Debian/Ubuntu,OS X和Windows的不同系统下的安装过程。并提出了一些安装过程中可能遇到的问题和解决办法。适用于thrift0.9版本。

2014-11-15 00:30:52

阅读数:29836

评论数:2

inifile 一个轻量级的INI文件解析库

inifile 一个轻量级的INI文件解析库:ini文件是一种常见的配置文件。它以简单的文字与简单的结构组成.INI文件会以不同的扩展名,如".ini.",".cfg".INI文件由3个重要的部分组成:参数(parameters),段(sections)和注...

2014-08-15 12:56:27

阅读数:17983

评论数:12

自己实现一个SQL解析引擎

SQL的解析引擎包括查询编译与查询优化和查询的运行,主要包括3个步骤: 查询分析: 制定逻辑查询计划(优化相关) 制定物理查询计划(优化相关) 查询分析: 将SQL语句表示成某种有用的语法树. 制定逻辑查询计划: 把语法树转换成一个关系代数表达式或者类似的结构,这个结构通常称作逻辑计划。 制定物...

2014-06-26 17:28:59

阅读数:27964

评论数:1

淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树

OceanBase是阿里巴巴集团自主研发的可扩展的关系型数据库,实现了跨行跨表的事务,支持数千亿条记录、数百TB数据上的SQL操作。在阿里巴巴集团下,OceanBase数据库支持了多个重要业务的数据存储,包括收藏夹、直通车报表、天猫评价等。截止到2013年4月份,OceanBase线上业务的数据量...

2014-06-05 18:38:39

阅读数:10798

评论数:3

我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

2016-05-21 10:01:26

阅读数:661

评论数:0

善用SourceMonitor+Astyle,让代码维护者不再骂娘

什么样的代码让你想骂娘,什么才是漂亮的代码,谁是编程界的没图秀秀,重构是不是体力活?这些问题,你都懂吗,赶紧看看别人怎么想的吧

2015-02-11 01:52:29

阅读数:6238

评论数:1

Zookeeper如何正确设置和获取watcher

Watcher 设置是开发中最常见的,需要搞清楚watcher的一些基本特征,对于exists、getdata、getchild对于节点的不同操作会收到不同的 watcher信息。对父节点的变更以及孙节点的变更都不会触发watcher,而对watcher本身节点以及子节点的变更会触发watcher...

2014-12-04 17:08:32

阅读数:13495

评论数:2

浅谈我对协程的理解

最近在研究网络服务框架方面的东西,发现了一个神奇的东西-协程。 一句话说明什么是线程:协程是一种用户态的轻量级线程。 一句话并不能完全概括协程的全部,但是起码能让我们对协程这个概念有一个基本的印象。 从硬件发展来看,从最初的单核单CPU,到单核多CPU,多核多CPU,似乎已经到了极限了,但是单核...

2014-12-03 17:09:42

阅读数:60188

评论数:11

ZooKeeper场景实践:(1)准备工作

ZooKeeper是一个高可用的分布式数据管理与系统协调框架。保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。 有人认为ZooKeeper之于分布式的意义正如同lex/yacc之于编译的意义。我们知道lex/yacc是一套强大的语法编译工具。使用...

2014-11-05 22:17:04

阅读数:3806

评论数:1

Zookeeper场景实践:(8) 分布式队列

按照ZooKeeper典型应用场景一览里的说法,分布式队列有两种,一种是常规的先进先出队列,另一种是要等到队列成员聚齐之后的才统一按序执行。 第二种队列可以先建立一个/queue,赋值为n,表达队列的大小。然后每个队列成员加入时,就判断是否达到队列要求的大小,如果是可以进行下一步动作,否则继续等...

2014-11-05 22:02:48

阅读数:2255

评论数:0

ZooKeeper场景实践:(7) 分布式锁

我们准备来实现互斥的锁,按照官网的思路,给定一个锁的路径,如/Lock,所有要申请这个锁的进程都在/Lock目录下创建一个/Lock/lock-的临时序列节点,并监控/Lock的子节点变化事件。当子节点发送变化时用get_children()获取子节点的列表,如果发现进程发现自己拥有最小的一个序号...

2014-11-05 21:59:57

阅读数:2516

评论数:0

ZooKeeper场景实践:(6)集群监控和Master选举

通常用于那种对集群中机器状态,机器在线率有较高要求的场景,能够快速对集群中机器变化作出响应。这样的场景中,往往有一个监控系统,实时检测集群机器是否存活。 利用ZooKeeper有两个特性(读可监控,临时节点),就可以实现一种集群机器存活性监控系统

2014-11-05 21:56:12

阅读数:10944

评论数:0

Zookeeper场景实践:(5)分布式通知/协调

总的来说,利用Zookeeper的watcher注册和异步通知功能,通知的发送者创建一个节点,并将通知的数据写入的该节点;通知的接受者则对该节点注册watch,当节点变化时,就算作通知的到来。

2014-11-05 21:52:41

阅读数:2667

评论数:0

Zookeeper场景实践:(4)命名服务

利用Zookeeper很容易创建一个全局的路径,而这个路径就可以作为一个名字,它可以指向集群中的集群,提供的服务的地址,远程对象等。简单来说使用Zookeeper做命名服务就是用路径作为名字,路径上的数据就是其名字指向的实体。

2014-11-05 21:49:18

阅读数:5492

评论数:0

ZooKeeper场景实践:(2)集中式配置管理

在分布式的环境中,可能会有多个对等的程序读取同样的配置文件,程序可以部署在多台机器上,如果配置采用文件的话,则需要为部署该程序的机器也部署一个配置文件,一旦要修改多个配置文件,而且容易产生不一致。集中式配置管理的思路是,将配置数据集中发布到ZooKeeper的节点上,供订阅者动态获取数据。实现配置...

2014-11-05 21:42:54

阅读数:13729

评论数:0

图解各种SQL连接

连接的分类 内连接 等值连接(INNER JOIN)自然连接(NATURAL JOIN)交叉连接(CROSS JOIN)不等连接 外连接 左外连接(LEFT OUTER)右外连接(RIGHT OUTER)全外连接(FULL OUTER) 连...

2014-09-29 11:01:47

阅读数:1702

评论数:0

数据库在磁盘上的存储布局HeapFile

这篇依然是学习《大规模分布式存储系统:原理解析与架构实战》一书之外的一个话题。通过学习本书,知道了分布式键值系统,通常使用SSTable(一个无序的键值对集合容器)作为其磁盘上的布局。这不禁让人产生联想,传统数据库使用的是什么存储布局来存储数据呢?这就是今天要探讨的主题----HeapFile.

2014-09-16 09:31:35

阅读数:3329

评论数:2

c++编译时如何把private属性变成public?

c++编译时如何把private属性变成public?在做一些已经写好的代码的单元测试的时候,有时候需要使用到类私有的成员方法或变量。我们不想改动原来的代码,但是又能访问这些私有或者受保护的方法,遇到这种情况怎么办?下面介绍3种办法解决这个问题

2014-08-15 13:07:18

阅读数:3221

评论数:0

字符串分割函数StringTokenizer与strtok,strsep的比较

StringTokenizer,strtok,trsep都用于分割字符串。但你注意到了吗?StringTokenizer和strtok都会主动过滤掉空字符串,而strsep则不会过滤空字符串。

2014-08-08 09:50:33

阅读数:3200

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭