暂无个人介绍
1. 什么样的代码让你想骂娘? 什么样的代码最想让你骂娘,是这样的,代码层层嵌套 或者是这样的密密麻麻,舍不得多一行免费空格 又或者是那种又臭又长的代码呢? 代码除了用来运行外,还有很重要的就是阅读,给自己阅读,或者给他人阅读,如果几个月后你自己都看不下去自己以前写的代码,呵呵… 2. 我们需要漂亮的代码 爱美之心,人皆有之。漂亮的代码,也是我们程序猿的追
1.干货写在前面 协程是一种用户态的轻量级线程。本篇主要研究协程的C/C++的实现。 首先我们可以看看有哪些语言已经具备协程语义: 比较重量级的有C#、erlang、golang* 轻量级有python、lua、javascript、ruby 还有函数式的scala、scheme等。 c/c++不直接支持协程语义,但有不少开源的协程库,如: Protothr
Zookeeper如何正确设置和获取watcher Watcher 设置是开发中最常见的,需要搞清楚watcher的一些基本特征,对于exists、getdata、getchild对于节点的不同操作会收到不同的 watcher信息 state=-112 会话超时状态 state= -113 认证失败状态 state= 1 连接建立中 state= 2
我心中的协程 最近在研究网络服务框架方面的东西,发现了一个神奇的东西-协程。 一句话说明什么是线程:协程是一种用户态的轻量级线程。 一句话并不能完全概括协程的全部,但是起码能让我们对协程这个概念有一个基本的印象。 从硬件发展来看,从最初的单核单CPU,到单核多CPU,多核多CPU,似乎已经到了极限了,但是单核CPU性能却还在不断提升。server端也在不断的发展变
本篇是Thrift官网安装文档的翻译,原地址点击这里。Thrift之前是不支持Windows的。但是似乎0.9版本以后已经支持Window了。介绍了Thrift安装的环境要求以及在centos,Debian/Ubuntu,OS X和Windows下的安装过程。并提出了一些安装过程中可能遇到的问题和解决办法。适用于thrift0.9版本。 1 Thrift的环境要求
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。 有人认为ZooKeeper之于分布式的意义正如同lex/yacc之于编译的意义。我们知道lex/yacc是一套强大的语法编译工具。使用lex/yacc可以很轻松的完成许多语法规则的编写。同样道理,Zookee
1.基本介绍 按照ZooKeeper典型应用场景一览里的说法,分布式队列有两种,一种是常规的先进先出队列,另一种是要等到队列成员聚齐之后的才统一按序执行。 第二种队列可以先建立一个/queue,赋值为n,表达队列的大小。然后每个队列成员加入时,就判断是否达到队列要求的大小,如果是可以进行下一步动作,否则继续等待队列成员的加入。比较典型的情况是,当一个大的任务可能需要
1.基本介绍 分布式锁是控制分布式系统之间同步访问共享资源的一种方式,需要互斥来防止彼此干扰来保证一致性。利用Zookeeper的强一致性可以完成锁服务。Zookeeper的官方文档是列举了两种锁,独占锁和共享锁。独占锁保证任何时候都只有一个进程能或者资源的读写权限。共享锁可以同时有多个读,但是同一时刻最多只能有一个写,读和写是互斥的。 2.场景分析 我们
1.基本介绍 通知/协调机制通常有两种方式。 系统调度模式:操作人员发送通知实际是通过控制台改变某个节点的状态,然后Zookeeper将这些变化发送给注册了这个节点的Watcher的所有客户端。 工作汇报模式:这个情况是每个工作进程都在某个目录下创建一个临时节点,并携带工作的进度数据。这样汇总的进程可以监控目录子节点的变化获得工作进度的实时的全局情况。 总的
1.基本介绍 命名服务是指通过指定的名字来获取资源或者服务的地址,提供者的信息。利用Zookeeper很容易创建一个全局的路径,而这个路径就可以作为一个名字,它可以指向集群中的集群,提供的服务的地址,远程对象等。简单来说使用Zookeeper做命名服务就是用路径作为名字,路径上的数据就是其名字指向的实体。 阿里巴巴集团开源的分布式服务框架Dubbo中使用ZooKee
1. 基本介绍 在分布式的环境中,可能会有多个对等的程序读取同样的配置文件,程序可以部署在多台机器上,如果配置采用文件的话,则需要为部署该程序的机器也部署一个配置文件,一旦要修改配置的时候就会非常麻烦,需要修改多个配置文件,而且容易产生不一致。 集中式配置管理的思路是,将配置数据集中发布到ZooKeeper的节点上,供订阅者动态获取数据。实现配置的集中式管理和动态更
图解各种SQL连接 连接的分类 内连接 等值连接(INNER JOIN) 自然连接(NATURAL JOIN) 交叉连接(CROSS JOIN) 不等连接 外连接 左外连接(LEFT OUTER) 右外连接(RIGHT OUTER) 全外连接(FULL OUTER) 连接类型 说明 图例 SQL示例
----《大规模分布式存储系统:原理解析与架构实战》读书笔记 这篇依然是学习《大规模分布式存储系统:原理解析与架构实战》一书之外的一个话题。通过学习本书,知道了分布式键值系统,通常使用SSTable(一个无序的键值对集合容器)作为其磁盘上的布局。这不禁让人产生联想,传统数据库使用的是什么存储布局来存储数据呢?这就是今天要探讨的主题----HeapFile. Heap
c++编译时如何把private属性变成public? 在做一些已经写好的代码的单元测试的时候,有时候需要使用到类私有的成员方法或变量。我们不想改动原来的代码,但是又能访问这些私有或者受保护的方法,遇到这种情况怎么办? 1.手工替换 在原有代码中将private手工替换成public,将protected手工替换成public. 这种方法是我们最
inifile 一个轻量级的INI文件解析库 ini文件是一种常见的配置文件。它以简单的文字与简单的结构组成.INI文件会以不同的扩展名,如".ini.",".cfg",".conf"等。 INI文件的格式 INI文件由3个重要的部分组成:参数(parameters),段(sections)和注释(comments).其格式如下: 段(sectio
字符串分割在我们在开发过程中经常遇到的问题。根据一个标记串,将输入的字符串分割成多个子串。实际编码当中,我们发现使用不同的函数得到的结果也会有区别。 为了方便比较,我们定义一个统一的输入输出比较方式:vector<string> parsetoken(const string &str, const string& delim); 输入源字
算法很简单,直接贴代码啦 #include <iostream> using namespace std; template<typename T> int binary_search(const T s[],const int size,const T &m) { if(size <= 0){ return -1;
----《大规模分布式存储系统:原理解析与架构实战》读书笔记 在了解了 Bitcask存储模型后,又开始研究LSM树存储引擎。LSM在实现的过程中使用了一个很有意思的数据结构:跳跃表。之前在《算法导论公开课》中听过这一节。当时感觉这种结构和二叉树简直是殊途同归,但是一直没有亲自动手实现过。这次又遇到了,就来实现试试看。话说跳跃表和各种平衡树一样,都是用来加速
在安装Axis C++之前有两个组件是必须安装的,分别是Apache HTTP Server以及用于处理XML的程序Xerces;为了编译Axis以及Apache HTTPD,你的Linux机器还应该装有gcc编译器。 3个部件的都采用源码安装,它们都有类似的步骤: 上传并解压安装包 设置环境变量 利用configure生成Makefile 编译安装到u
1. 屏蔽“未使用参数”警告 在OceanBase中ob_define.h中就使用了这种宏,将传入的数据强制转化为void型。 #ifndef UNUSED #define UNUSED(v) ((void)(v)) #endif 这种宏主要是为了屏蔽“未使用参数”的警告,如下面这个函数用两个参数,但是一个都不用的话,某些编译器就会报出警告
安装好gtest后,编写第一个测试案例test_main.cpp #include <iostream> #include <gtest/gtest.h> using namespace std; int Foo(int a,int b) { return a+b; } TEST(FooTest, ZeroEqual) { ASSERT_E
自己实现一个SQL解析引擎 功能:将用户输入的SQL语句序列转换为一个可执行的操作序列,并返回查询的结果集。 SQL的解析引擎包括查询编译与查询优化和查询的运行,主要包括3个步骤: 查询分析: 制定逻辑查询计划(优化相关) 制定物理查询计划(优化相关) 查询分析: 将SQL语句表示成某种有用的语法树. 制定逻辑查询计划: 把语法树转换成一个关系代数表达式或
淘宝数据库OceanBase SQL编译器部分 源码阅读--Schema模式 什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User?我们可以可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的柜子,行和列就是柜子
SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理执行计划。前两个步骤请参见我的博客<<淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树>>和<<淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划>>.这篇博客主要研究第三步,生成物理查询计划。 一、 什么是
淘宝数据库OceanBase SQL编译器部分 源码阅读--生成逻辑计划 SQL编译解析三部曲分为:构建语法树,生成逻辑计划,指定物理执行计划。第一步骤,在我的上一篇博客淘宝数据库OceanBase SQL编译器部分 源码阅读--解析SQL语法树里做了介绍,这篇博客主要研究第二步,生成逻辑计划。 一、 什么是逻辑计划? 我们已经知道,语法树就是一个树状的结
OceanBase是阿里巴巴集团自主研发的可扩展的关系型数据库,实现了跨行跨表的事务,支持数千亿条记录、数百TB数据上的SQL操作。在阿里巴巴集团下,OceanBase数据库支持了多个重要业务的数据存储,包括收藏夹、直通车报表、天猫评价等。截止到2013年4月份,OceanBase线上业务的数据量已经超过一千亿条。 看起来挺厉害的,今天我们来研究下它的源代码。关于
xpipe-无名管道的C++封装类 无名管道的C++封装类,用于父子进程进行通信 基础介绍 unix下一切皆文件,管道也不例外。无名管道pipe定义在<unistd.h>中。 #include <unistd.h> int pipe(int fd[2]);其中fd[0]是读端,fd[1]是写端,fd[1]的输出是fd[0]的输入,因此管道是一个
PyLucence的官方包没有提供windows的安装版,安装步骤真麻烦 需要按照下面的顺序安装: 1. 确认安装了JDK 1.1 通常下载一个JAVA的安装包就可以安装。 1.2 判断java路径是否写入环境变量Path,在DOS下输入java确定能运行就说明可以,不能运行就要把JAVA的路径添加到环境变量Path中去。 1.3
http://rainbird.blog.51cto.com/211214/40892/ 错误信息: tar: Skipping to next header tar: Archive contains obsolescent base-64 headers gzip: stdin: invalid compressed data--format violated
查询任何函数和结构使用 man string; 如 # man list_head; 可以返回他的定义,描述,所谓头文件位置,相关函数,实例的内容 struct list_head *head; 注意要有*;
闹钟的设计原理与实现(一) 华中科技大学 陈学友 2012年5月18日 内容摘要 现在很多人由于需要处理各种事物,但是由于某些原因可能会忘记在某个时间段需要完成的工作和其他事情,因此需要一个闹钟来提醒自己,避免忘记这些应该做的事情。如果只有一个提醒事件,情况非常简单,但是对于多事件提醒的闹钟来说,如何解决提醒不冲突,如何使资源占据最小是一个迫切需要解决的问题。本文
转载自:http://www.cnblogs.com/yjmyzz/articles/1021058.html 托盘程序的制作: 1.把NotifyIcon控件拉一个到窗体上,并设置NotifyIcon的Icon(很重要!否则运行后看不到效果) 2.窗体关闭时,将程序最小化到系统托盘上 private void Form1_FormClosing(object sender
新浪天气预报API http://php.weather.sina.com.cn/xml.php?city=武汉&password=DJOYnieT8234jlsK&day=0 其中,city后的城市可用java.net.URLEncoder.encode(“武汉”,” gb2312”);也可以直接写”武汉”;但不能用”wuhan”。 Password固定 Day为
public static string InitChineseUrl(string chineseUrl) { Uri url = new Uri(chineseUrl); System.Collections.Specialized.NameValueCollection nv = System.Web.
//添加启动项 /// <summary> /// 开机随系统启动 /// </summary> public void start_with_windows() { if (start_with_win1.Checked) {
添加panel的paint事件,然后在panel上面画出图片 例子:this.panelMain.Paint += new System.Windows.Forms.PaintEventHandler(this.panelMain_Paint); private void panelMain_Paint(object sender, PaintEventArgs e) {
在VC6中编写可在XP中显示XP风格界面的程序方法一: 1.插入自定义资源(Custom),将资源类型(Resource Type)设为“24”。 2.将资源ID“IDR_DEFAULT1” 改为“1”。 3.将下列文本复制到该资源的十六进制编辑器中。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
欧拉项目【ProjectEuler】系列-第二题 ----人既无名 Problem2:Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2
欧拉项目【ProjectEuler】系列-第一题 ----人既无名 既然是第一次,当然要写个基本的介绍咯。 欧拉项目是一系列挑战数学/计算机编程的问题. 需要的不仅仅是数学见解,还要利用计算机编程技巧,需要解决大多数问题,当然,数学帮助你运用优雅而有效的方法,实现漂亮而快速的代码。 欧拉项目的网站是http://projecteuler.net,只要上去注册一个账号就可以开