自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(132)
  • 收藏
  • 关注

转载 twemproxy分片处理原理--剖析twemproxy代码正编

twemproxy在redis上能处理多命令流程只有mset,mget,del的命令,例如mset的话是mset k1 v1 k2 v2 k3 k3,mget的话是mget k1 k2 k3,del的话是del k1 k2 k3。twemproxy在memcache上能处理多命令流程只有get\gets命令,例如get的话是get k1 k2 k3但是由于twemproxy是redi...

2018-11-18 18:49:00 364

转载 robot framework的使用说明

robot framework安装说明1.安装python2.7.15运行安装包python-2.7.15.amd64.msi2.robot framework(1)解压最新的压缩包如robotframerwork-3.0.4.tar.gz到python安装目录如C:\Python2.7(2)进入robotframerwork-3.0.4,键入命令python setup.py in...

2018-11-11 14:43:00 334

转载 网络故障模拟,cpu高压以及docker中的实现

利用tc进行丢包通过网络丢包来模拟网络故障,是测试中一个重要的测试项目。这对服务来说可以测试其在网络故障时的异常处理的能力,对于服务的可靠性是一个相当严苛的测试。网卡名为$netcard,丢包率为$Packet_loss,异常时间为$interval1.注入网络异常,使用robot framework关键字实现通过ssh命令执行tc qdisc add dev $netcard ...

2018-11-11 14:41:00 339

转载 我眼中的robot framework

由于近期公司需要,需要一个测试框架对于公司的服务做自动化测试。由于服务的复杂性,人工测试的方式越来越复杂,体现在以下方面:1.人工测试步骤复杂,容易出错。服务的复杂性会使人工测试的准备工作,测试条件以及测试反馈都越来越复杂。2.人工测试难以重复。随着产品的迭代越来越快,人工测试需要不断重复测试,此时人力投入成本很高。自动化测试框架优点1.测试步骤自动化,不像...

2018-11-04 14:58:00 150

转载 twemproxyMemcache协议解析探索——剖析twemproxy代码正编补充

memcache是一种和redis类似的高速缓存服务器,但是memcache只提供键值对这种简单的存储方式,相对于redis支持的存储方式多样化,memcache就比较简单了。memcache通过tcp或者udp连接来实现memcache客户端和服务端的交互。memcache的协议是自定的,也分为两种:一种是文本协议(这是我们今天讨论的重点),另一种是二进制协议(在我们今天讨论的范围),...

2017-07-09 20:28:00 118

转载 twemproxy代理主干流程——剖析twemproxy代码正编

在twemproxy的发送和接收流程剖析中,我们已经完全弄清楚twemproxy如何将客户端以及服务端发来的包切分成msg,获得一个独立的msg后twemproxy应该如何处理?这是本文这次需要重点介绍的内容。twemproxy的主干流程图1 twemproxy的主干流程如图1所示,twemproxy主要通过3个队列进行模块间的数据交互:客户端连接conn的发送队列...

2017-06-26 10:42:00 132

转载 Leetcode 617 Merge Two Binary Trees 二叉树

题意: 给定两棵树,将两棵树合并成一颗树 输入 Tree 1 Tree 2 1 2 / \ / \...

2017-06-14 19:58:00 80

转载 Leetcode 494 Target Sum 动态规划 背包+滚动数据

这是一道水题,作为没有货的水货楼主如是说。题意:已知一个数组nums{a1,a2,a3,.....,an}(其中0<ai <=1000(1<=k<=n, n<=20))和一个数S c1a1c2a2c3a3......cnan = S, 其中ci(1<=i<=n)可以在加号和减号之中任选。 求有多少种{c1...

2017-06-12 21:32:00 129

转载 twemproxy发送流程探索——剖析twemproxy代码正编

本文想要完成对twemproxy发送流程——msg_send的探索,对于twemproxy发送流程的数据结构已经在《twemproxy接收流程探索——剖析twemproxy代码正编》介绍过了,msg_send和msg_recv的流程大致类似。请在阅读代码时,查看注释,英文注释是作者对它的代码的注解,中文注释是我自己的感悟。函数msg_send 1 rstatus_t 2 ...

2017-06-11 18:17:00 124

转载 twemproxyRedis协议解析探索——剖析twemproxy代码正编

这篇文章会对twemproxyRedis协议解析代码部分进行一番简单的分析,同时给出twemproxy目前支持的所有Redis命令。在这篇文章开始前,我想大家去简单地理解一下有限状态机,当然不理解也是没有问题的,有限状态机仅仅能帮助我们更好地理解twemproxyRedis协议解析代码部分。redis 协议这边我们首先需要简单介绍一下redis协议。参考自https://r...

2017-01-31 18:54:00 105

转载 twemproxy接收流程探索——剖析twemproxy代码正编

本文旨在帮助大家探索出twemproxy接收流程的代码逻辑框架,有些具体的实现需要我们在未来抽空去探索或者大家自行探索。在这篇文章开始前,大家要做好一个小小的心理准备,由于twemproxy代码是一份优秀的c语言代码,为此,在twemproxy的代码中会大篇幅使用c指针。但是不论是普通类型的指针还是函数指针,都可以让我们这些c语言使用者大饱眼福,生出一种“原来还可以这样写!!!”的快感。...

2017-01-12 11:17:00 120

转载 twemproxy代码框架概述——剖析twemproxy代码前编

本篇将去探索twemproxy源码的主干流程,想来对于想要开始啃这份优秀源码生肉的童鞋会有不小的帮助。这里我们首先要找到twemproxy正确的打开方式——twemproxy的文件结构,接着介绍twemproxy程序代码框架,最后介绍twemproxy程序的主干流程。主干流程是本章节的重中之重。这次主要是为了能将这份代码较为复杂的流程进行一些简单的模块分解和流程分解,以方便我们后面的阅...

2017-01-09 23:25:00 119

转载 twemproxy架构分析——剖析twemproxy代码前编

twemproxy背景在业务量剧增的今天,单台高速缓存服务器已经无法满足业务的需求, 而相较于大容量SSD数据存储方案,缓存具备速度和成本优势,但也存在数据安全性的挑战。为此搭建一个高速缓存服务器集群来进行分布式存储是十分必要的。目前主流的高速缓存服务器是redis和memchache。而twemproxy是支持memcached和redis协议的轻量级代理中间件,能用于高...

2017-01-09 15:38:00 115

转载 剖析twemproxy前言

又是喜闻乐见的新坑,前面的mysql协议,当我在解读go-mysql包的时候,会重新讲到,至于Leetcode的更新会与go语言同步。关于这个redis的新坑,目前打算通过剖析twemproxy源码来间接介绍redis的协议,实现手段等等。下面先介绍一下我们的主角——twemproxy。twemproxy是由twitter(推特)公司在2012年在github上开源轻量级的高速缓存服...

2017-01-04 20:12:00 87

转载 mysql交互协议解析——mysql包基础数据、mysql包基本格式

mysql交互协议是开发mysql周边组件常用的协议,如JDBC,libmysql等等。在此我们要认识到mysql交互协议其实是半双工的交互协议,至于为什么,这里就先挖个小坑,以后再填。在探讨mysql交互协议的格式之前,我们要理清一个小问题,就是mysql交互协议会用到的基本数据类型。1.整数类型这里的整数类型可以用来表示mysql数据类型中的整数类型、日期时间类型、D...

2016-11-17 12:33:00 210

转载 有关binlog的那点事(三)(mysql5.7.13)

这次我们要探索更精细的binlog内容,上次讨论的Query_event和Rows_event肯定有让你疑惑不解的问题。Query_event中的status-vars环境变量有哪些,Rows_event的数据类型是什么,元数据又是个什么鬼东西,今天我们就来一一解答。一、Query_event中的令人费解的status-varsstatus-vars据说是为了兼容低版本的mysq...

2016-11-09 18:32:00 92

转载 有关binlog的那点事(二)(mysql5.7.13)

上次,我们仅仅把binlog做了一个概述,并没有去深入探索(1)binlog file究竟是怎么构成的?(2)binlog file的单元binlog events是怎么构成的?(3)我们能不能伪造出一个mysqlbinlog识别的binlog file? 当然,第三个问题看起来很cool,蛮有挑战性的。这次我们讨论的是第4版本的binlogfile, 一般5.0.x以上的mysql...

2016-11-08 16:38:00 121

转载 slave IO流程之二:注册slave请求和dump请求

slave IO流程已经在http://www.cnblogs.com/onlyac/p/5815566.html中有介绍这次我们要探索注册slave请求和dump请求的报文格式和主要流程。一、注册slave请求在slave IO连接完数据库后,slave IO接着在主库里注册自己,以便后续不需要提供slave IO登陆的信息如用户名密码等。1.注册slave请求的报文格...

2016-08-29 14:54:00 345

转载 slave IO流程之一:mysql登陆过程(mysql_real_connect)

最近看了slave IO的源码,发现slave IO的写relay log貌似是单线程单连接的,这让我有点小失望。slave IO的主函数是handle_slave_io,处理流程如下:图1 handle_slave_io处理流程我们这次主要要完成safe_connect以及try_to_reconnet用到的核心函数mysql_real_connect流程的探索。...

2016-08-29 11:23:00 113

转载 show master/slave status求根溯源

show master/slave status分别是查看主数据库以及副数据库的状态,是一种能查看主从复制运行情况的方式。这里仅仅讨论linux下的nysql5.7.13版本的执行情况一、show master status开始与show global status类似,都是分配一个线程去处理该连接的命令(图1)                        图1 ...

2016-08-22 12:25:00 667

转载 Mysql命令show global status求根溯源

近来,发现好多公司对mysql的性能监控是通过show global status实现的,因此对于这个命令想要探究一番,看他是否是实时更新的。在此之前,我们必须搞明白mysql对于这个命令的执行过程来确认它所显示的数据究竟是什么、是否实时更新以及是否准确。借这个机会,我们也可以了解客户端与mysql服务器是如何交互的以及对于SQL命令的一般执行过程。为此,我觉得这是一个很好的契机,当...

2016-08-18 09:57:00 966

转载 Mysql5.7.13主从同步(复制)配置

主从同步是分布式mysql数据库相当重要的配置,现在我在虚拟机上完成主从配置,系统是CenterOS6.5,mysql版本是5.7.13主服务器的ip是192.168.19.139 副服务器的ip是192.168.19.1421.主服务器配置(1)修改my.cnf(注意使用root) 1 vim /etc/my.cnf 2 3 4 sql_mode=N...

2016-08-17 12:25:00 79

转载 有关binlog的那点事(mysql5.7.13)

binlog作为mysql中最重要的日志之一,能实现异常恢复以及主从复制。我们主要讨论的是主从复制中的binlog,这里将以mysql5.7.13的源码为主要依据来分析binlog。在主从复制中,binlog一般使用row模式,在主服务器上是binlog,在副服务器上是relaylog,在sql\binlog.h中is_relay_log这个变量来区分该情况.在整个mysql...

2016-08-16 17:56:00 248

转载 MySQL5.7.13源代码阅读心得

1.使用gdb这个调试工具。在linux使用该调试工具非常简单。它的价值非常大,可以告诉你函数相互调用的逻辑(bt命令),告诉你函数执行的情况(通过br命令以及n,c命令单步跟踪函数每一个语句的执行),告诉你每个函数变量的值(p命令)。(1)首先打开mysql服务器./mysqld(2)重新开始一个客户端,打入mysql -uroot -p,输入密码进入mysql,以下称m...

2016-08-16 14:35:00 67

转载 MySQL5.7.13源码编译安装指南

系统 CenterOs 6.51.安装依赖包(cmake make gcc等,其实好多都有了,不需要更新,为了防止世界被破坏,就装下)yum install gcc gcc-c++ -yyum install -y ncurses-devel.x86_64yum install -y cmake.x86_64yum install -y libaio.x86_64yum in...

2016-07-21 14:11:00 79

转载 linux epoll模型使用注意点

1.默认使用的水平触发方式会多次触发回调函数,但是事实上这时并不需要回调,会浪费系统性能,就是在注册转载于:https://www.cnblogs.com/onlyac/p/5623752.html...

2016-06-28 15:48:00 66

转载 C++11模板类使用心得

1.推荐使用std::shared_ptr<TaskT>代替指针TaskT*使用,shared_ptr是一种智能指针,能自主销毁释放内存,在c++11中被引入,在多线程编程中有很大的用处,它可以统计有多少指针指向同一个对象。该类被包含在<memory>中。2.在模板类中要使用某一容器的iterator类型,需要在该iterator类型前加上typename,才...

2016-06-14 18:10:00 133

转载 Linux下MakeFile初探

make是linux下的编译命令,用于编译和生成Linux下的可执行文件。这个命令处理的对象是Makefile,makefile等。由于make的强大解析能力,makefile文件的编写也变得极为简单。以下是一个makefile的例子 1 objects = main.o kbd.o command.o display.o \ 2 inse...

2016-06-14 18:01:00 75

转载 Leetcode 35 Search Insert Position 二分查找(二分下标)

基础题之一,是混迹于各种难题的基础,有时会在小公司的大题见到,但更多的是见于选择题。。。题意:在一个有序数列中,要插入数target,找出插入的位置。楼主在这里更新了《二分查找综述》第一题的解法,比较类似,当然是今天临时写的。知道了这题就完成了leetcode 4的第二重二分的写法了吧,楼主懒。。。 1 class Solution { 2 public: 3...

2016-06-14 17:32:00 60

转载 Leetcode 4 Median of Two Sorted Arrays 二分查找(二分答案+二分下标)

貌似是去年阿里巴巴c++的笔试题,没有什么创新直接照搬的。。。题意就是找出两个排序数组的中间数,其实就是找出两个排序数组的第k个数。二分答案,先二分出一个数,再用二分算出这个数在两个排序数组排序第几,然后和k做比较,最后以这个比较为依据接着二分直到求出第k个数。本来这是两重二分,由于楼主的懒已经没有办法治疗了,用库函数upper_bound()代替了第二重二分,有志者可以自己...

2016-06-14 17:01:00 65

转载 Leetcode 69 Sqrt(x) 二分查找(二分答案)

可怕的同时考数值溢出和二分的酱油题之一,常在各种小公司的笔试中充当大题来给你好看。。。题意很简单,在《二分查找综述》中有描述。重点:使用简单粗暴的long long来避免溢出,二分均方根的答案来得到准确解。当然这里的溢出不止是相乘的溢出,还有第六行那段代码的溢出,每次都会有几个解决问题的斗士牺牲在这里。。。 1 class Solution { 2 public:...

2016-06-14 16:44:00 68

转载 二分查找综述

其实二分查找是一种很简单的搜索方法,它在有序的数据查找中有着不可思议的力量,甚至在某些数学领域有着出乎意料的表现,这都是因为一个原因。这个原因是二分查找实现简洁而且算法复杂度仅为O(log(n))。在我看来,所有的二分查找解题方式分为两种形式:一种是二分答案,另一种是二分下标。至于这两个有什么不同,容我买个关子,等下看具体例子的时候,你就明白了,请看下列三题,题目按照难易度排列:...

2016-06-12 18:09:00 69

转载 linux下编译安装curl

linux下编译安装curl1.下载curl1 git clone https://github.com/curl/curl.git2.在curl目录下生成configure文件1 cd curl 2 ./buldconf3.编译生成curl1 ./configure 2 make 3 make install4.在src下生成了curl1 ...

2016-05-30 11:17:00 639

转载 这样leetcode简单题都更完了

这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺序来更新题目了。转载于:https://www.cnblogs.com/onlyac/p/5512016.html...

2016-05-20 14:32:00 76

转载 Leetcode 8 String to Integer (atoi) 字符串处理

题意:将字符串转化成数字。前置有空格,同时有正负号,数字有可能会溢出,这里用long long解决(leetcode用的是g++编译器),这题还是很有难度的。 1 class Solution { 2 public: 3 int myAtoi(string str) { 4 int sign = 1,i = 0; 5 f...

2016-05-20 14:31:00 43

转载 Leetcode 189 Rotate Array stl

题意:将数组旋转k次,如将数组[1,2,3,4,5]旋转1次得到[2,3,4,5,1],将数组[1,2,3,4,5]旋转2次得到[3,4,5,1,2].....本质是将数组分成两部分a1,a2,...ak以及ak+1....an两部分,然后将两部分进行交换。我的解法是将数组分成两部分a1,a2,.....an-k-1以及an-k,.....an,然后将两部分分别反转得到数组ank...

2016-05-20 14:07:00 63

转载 Leetcode 165 Compare Version Numbers

题意:比较版本号的大小有点变态,容易犯错本质是字符串的比较,请注意他的版本号的小数点不知1个,有的会出现01.0.01这样的变态版本号class Solution {public: int cmp_num(string a, string b){ if(a.size() < b.size()) return -1; ...

2016-05-16 12:39:00 66

转载 Leetcode 168 Excel Sheet Column Title 进制数转化

题意:将数字转化成excel表中的行中的项目本质是10进制转化为26进制,但是在中间加入了一个不一样的操作,在每次操作前都需要n-- 1 class Solution { 2 public: 3 string convertToTitle(int n) { 4 string s(""); 5 for(; n--; n/=...

2016-05-16 12:04:00 95

转载 Leetcode 155 Min Stack

题意:设计一个能输出栈内最小值的栈该题设计两个栈,一个栈是正常的栈s,而另一个是存最小值的栈sm在push时要判断sm是否为空,如果为空或者非空但是栈顶元素大于等于插入值的 需要在sm中插入x同样地在pop时,s的元素被删除了,那么sm中的也应该被删除。通过这些操作维护sm能很巧妙在O(1)复杂度得到最小值。 1 class MinStack { 2 publ...

2016-05-16 11:54:00 82

转载 Leetcode 278 First Bad Version 二分查找(二分下标)

题意:找到第一个出问题的版本二分查找,注意mid = l + (r - l + 1) / 2;因为整数会溢出 1 // Forward declaration of isBadVersion API. 2 bool isBadVersion(int version); 3 4 class Solution { 5 public: 6 int f...

2016-05-07 21:47:00 90

空空如也

空空如也

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

TA关注的人

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