自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (3)
  • 收藏
  • 关注

原创 Atlas权重测试中的bug调试

一、 问题背景Atlas对slave进行负载均衡,每一台slave都有一个权重值,权重越大,负载的读请求越多。负载均衡的算法比较巧妙,代码如下:        guint max_weight = rwsplit->max_weight;        guint cur_weight = rwsplit->cur_weight;        guint next_ndx   =

2014-07-10 20:09:31 1065

原创 怎样避免“if”嵌套

前几日在浏览stackoverflow网站时,偶然看到别人提的“How to avoid ‘if’ chains” 的问题,觉得这是一个编程人员在编程时很容易就碰到的问题,而且我自己在看一些源码时也遇到过这种编程方式,因此,对这个问题进行一点总结。if嵌套的情况很多,下面列出一些情况,并给出了相对来说比较简洁的书写方式以供参考:1、使用一个guard来使用代码变得平坦a、代码如下:

2014-07-06 23:05:12 2184

原创 Problem 2 ---- euler

Even Fibonacci numbersProblem 2Each 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, 3, 5, 8, 13, 21,

2014-07-06 15:42:09 465

原创 mysql字符集设置

最近一直在弄一个有关mysql proxy的项目,中间涉及到对sql语句的解析。之前对mysql了解的并不是太多,随着项目的推进,不得不补补了。今天突然看到mysql的charset设置,自己很多地方都没法解释清楚,对一些相关的sql语句背后的工作机制一知半解,于是找了点资料补习下,顺便做点儿笔记。一、字符集和校对规则字符集是一套符号和编号。校对规则是在字符集内用于比较字符的一套规则。

2014-07-06 15:15:23 2370

原创 Problem 1 ---- euler

Multiples of 3 and 5Problem 1If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.Find the sum of all the multiples of

2014-07-05 22:26:27 483

原创 Atlas源码剖析(十一)

读写分离和负载均衡

2014-04-09 22:19:06 1050

原创 Atlas源码剖析(十)

SQL语句的解析和自动分表解析SQL语句:

2014-04-09 14:45:42 1198

原创 Atlas源码剖析(九)

Atlas主流程处理——状态转移在接收了client的请求后,Atlas的主线程会通过调用network_mysqld_con_accept初始化连接,并通过调用chassis_event_add来选择通知某一个工作线程来执行主流程处理;接收到通知的工作线程会调用network_mysqld_con_handle来执行主流程处理,状态的转移图如下所示:Atlas对mysql p

2014-04-01 16:06:53 1234

原创 Atlas源码剖析(八)

Atlas IP过滤Atlas实现了IP过滤,通过配置参数client-ips来指定有权限访问的IP。client-ips的配置如下所示,可以是精确IP,也可以是IP段,以逗号分隔,若不设置client-ips则允许所有IP连接,否则只允许列表中的IP连接:client-ips = 127.0.0.1, 192.168.1Atlas把配置的IP转换成整数,放入hash表中:

2014-04-01 15:22:10 1251

原创 Atlas源码剖析(七)

后台状态检测基本结构体:typedef struct {network_address *addr; //后台地址 backend_state_t state; /**< UP or DOWN */ //后台的状态 backend_type_t type; /**< ReadWrite or ReadOnly */ //后台的类型 GP

2014-03-27 17:24:38 1373

原创 Atlas源码剖析(六)

日志管理基本数据结构:typedef struct { GLogLevelFlags min_lvl; //glib中对应的日志级别,初始为critical, //后改赋为message gchar *log_filename; //日志文件名free gint log_file_fd; //打开的

2014-03-26 16:19:47 1234

原创 Atlas源码剖析(五)

后台连接池的管理Atlas为每个后台设置了一个pools,pools是一个数组,每一个线程都对应pools里的一个pool,一个pool管理着一个线程跟这个后台的连接。主要的数据结构如下:struct chassis_private { lua_scope *sc; network_backends_t *backends; //管理后台组};

2014-03-20 15:58:00 1311

原创 Atlas源码剖析(四)

线程模型基本数据结构struct chassis_event_threads_t {GPtrArray *event_threads; //线程组,用来保存各个线程;GAsyncQueue *event_queue; //事件队列,用来保存connection结构;};typedef struct {chassis *chas; //chassis指针 //i

2014-03-19 09:52:52 1232

原创 Atlas源码剖析(三)

keepalive进程的开启Atlas调用chassis_unix_proc_keepalive函数来keep process alive。调用fork创建子进程,其中子进程直接返回,处理接下来的任务,父进程将接收到的SIGINT、SIGTERM、SIGHUP、SIGUSR1和SIGUSR2信号发送给子进程进行处理,若系统支持wait4则调用wait4等待子进程结束,否则调用waitpid

2014-03-18 09:58:41 1362

原创 Atlas源码剖析(二)

以守护模式启动进程Atlas中通过调用chassis_unix_daemonize函数来开启守护模式。(a)   忽略SIGTTOU、SIGTTIN和SIGTSTP信号,忽略来自终端的信号。(b)   调用fork创建子进程,然后终止父进程。这样做实现了以下几点:第一,如果该守护进程是作为一条简单shell命令启动的,那么父进程的终止使得shell认为这条命令已经执行完毕;第二,子进程

2014-03-18 09:51:00 1245 1

原创 Atlas源码剖析(一)

信号设置在设置各种配置参数之前,如果支持sigaction,则使用sigaction来设置SIGSEGV信号,指定处理函数调用g_on_error_stack_trace获取相关的堆栈信息后,调用abort退出程序。此信号在程序结束前进行清除,修复默认处理方式。#ifdef HAVE_SIGACTION /* register the sigsegv interceptor

2014-03-18 09:04:52 2117

原创 Atlas架构及相关功能介绍

一、       Atlas的整体架构Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。Atlas的整体架构,可参考下面

2014-03-14 17:48:38 3244

原创 Atlas的安装及配置

一、       Atlas简介Atlas是Qihoo 360 Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。主要功能: 1、读写分

2014-03-14 17:45:18 7223

原创 Lattice paths——格子路径

这个题目是取自http://projecteuler.net/problem=15上,解决的方法挺简单的,但是我觉得思考方式可以当成一个范例来看待,因此写下点东西做点儿记录。    Starting in the top left corner of a 2×2 grid, and only being able to move to the right and down, there are

2014-01-25 23:36:50 2024

原创 构建mysql-proxy

一、 目标现有几台虚拟机,一台主机,多台从机,笔者所要做的是在这几台虚拟机中构建mysql-proxy,实现读写分离。如下图所示:mysql-proxy就是一个中间层代理,简单的说,mysql-proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,mysql-prox

2014-01-05 22:39:33 729

原创 mysql主从复制

一、 目标将多台虚拟机配置成一台主机、多台从机,通过主从复制的方式来同步数据。如下图所示:二、 基本步骤a) mysql的安装与配置每台虚拟机上都已经安装好了mysql,具体方法与步骤请参照:http://qiuzl.com/blog/?p=16b) 先在两台机器上实践主数据库服务器:172.30.204.71从数据库服务器:172.30.204.7

2014-01-05 22:34:44 563

原创 在linux下本地安装mysql

一、 目标笔者所要处理的问题是,在几台linux虚拟机上安装mysql,但虚拟机是共享的,不能破坏全局环境而影响到其他用户的使用,因此必须在特定的个人目录下安装mysql。另外有些虚拟机上已经安装有mysql,并且启动了服务,所以,安装的mysql的配置不能跟原有的mysql冲突,如监听的端口号、mysql.sock文件的位置、数据目录(datadir)等。mysql.sock是mysql

2014-01-05 22:30:16 1358

原创 在Linux下安装Tomcat

一、安装JDK* 从Oracle官方网站上下载最新的JDK,解压, tar -xvf jdk-7u10-linux-i586.tar.gz。* 将其拷贝到/usr/local/目录下,cp -r jdk1.7.0_10/ /usr/local/java* 配置环境,在/ect/profile文件中加入下列语句:export JAVA_HOME="/usr/local/java"

2012-12-24 19:54:37 294

原创 Linux使用apt-get安装软件时出现的问题

昨天在Linux下使用apt-get install 安装软件时,出现了:子进程 post-installation script 返回了错误号 1 在处理时有错误发生的错误,接着就是一连串的依赖,其实就是前面因上面这个问题没安装好的包导致的一连串依赖。因此,解决好上面这个问题是关键。采用了下面的方法,问题很快得到了解决,现在把方法记下,以备后用。1.$ sudo mv /va

2012-12-15 17:11:46 574

原创 二维数组与二级指针

室友编写了关于一个二级指针与二维字符串数组的程序,但是老是报段错误,不明就里,让我帮忙调试。我根据他的程序出理的问题,写了另外一个简单一点的程序,来了解问题所在,程序如下:运行gcc  -W  b.c -o  b,会产生警告信息:运行: ./b,果断报段错误了。之所以会报警告错误,原因在于c语言的多维数组实际上是数组的数组,a与b的类型并不匹配,a是一个具有

2012-05-06 23:04:09 1113 2

原创 在Linux下使用subversion搭建项目

项目管理是大型程序设计中必不可少的一部分。对于经常修改程序版本的程序员而言,项目管理的价值已远远超出软件开发的领域。在项目开始中,如果当前出现了失误,项目管理可以使用户代码自动恢复到一个已知的,工作正常的版本,从而避免重大的风险和损失。此外,在已经发布的老程序版本中如果发现了bug,用户也可以轻松地检出特定的版本,以确认和修订,并生成该bug的修补程序。如果没有版本控制和项目管理,用户在开发时必须

2012-04-22 15:22:53 1811

转载 云里雾里的云计算

有一次去开会,台上的人在讲云计算。我问身边的听众,“听懂了吗?感觉如何?”听众答,“云里雾里的,感觉特神秘。”我说,“这说明讲员讲得好。有没有注意到寺庙里的气氛也很神秘?不神秘,就没有崇拜。不崇拜,你怎么肯掏钱买香火?”【1】云计算要解决什么问题?

2011-09-15 19:10:25 1785

原创 C++中const的含义

在学习c++期间,一次偶然看到一篇文章,文提到一个问题:关键字const是什么含意?然后作者接下来又说到,如果对方回答说:“const意味着常数”,就知道正在和一个业余者打交道。这话使我震惊了,然后继续把文章看完了,并按文章所说的,下载了Dan Saks的const T vs. T const文章,并仔细看了一遍。现记录一下自己的理解。在说明问题之前,先来看一个小例子:typedef void *VP;const VP vectorTable[] = {.....};跟上面这段代码等价的是不是下面这段代码呢

2011-04-13 16:21:00 865

linux以及各大发行版本介绍

详细介绍了linux系统的各个版本及特性,linux爱好者值得拥有

2018-05-29

关于antlr的详细教材

ANTLR是ANother Tool for Language Recognition的缩写“又一个语言识别工具”。从名字上可以看出在ANTLR出现之前已经存在其它语言识别工具了(如LEX [1],YACC [2])。ANTLR的官方定义为:根据一种可以嵌入如Java, C++或C#等辅助代码段的文法,来构筑出相对该文法的识别器,编译器或翻译器的一种语言工具框架。这个定义说明了ANTLR的功能是根据给定文法自动生成编译器,其过程为先编写相应语言的文法然后生成相应语言编译器。定义提到的语言识别器,编译器和翻译器我们以后统称为语法分析器。

2009-09-24

数据库课程设计网上书店

此资源中包含数据库设计的各种原代码,文档以本项目所需的各种图片等,这是一个完整的小型项目设计。

2009-07-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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