服务端数据库的操作如何不阻塞
摘要:1、业务服务器进程中包含多个线程,每个线程处理的业务不一样,master负责请求的转发,slave负责具体的事情,订阅线程负责把数据通知给订阅者。2、这些线程都有数据库操作的业务,不同线程之间的数据库操作,操作的数据不一样,如何不阻塞呢? 建立一个db类,每个线程包含db对象,都与数据库建立一个连...
阅读全文
posted @
2015-05-31 17:15
Andy Niu
阅读(678)
推荐(0) 编辑
分布式系统业务服务器的设计
摘要:1、业务服务器是一主多从,负载均衡。2、对于客户端的请求,负载均衡的模式是NAT(Netwotk Address Translation),网络地址转换模式,和linux中LVS的NAT道理一样。客户端只向Master进程发请求,Master根据负载均衡算法,找出哪个Slave负责,发给对应的Sla...
阅读全文
posted @
2015-05-31 17:01
Andy Niu
阅读(552)
推荐(0) 编辑
mysql 查询执行的流程
摘要:1、客户端发送一个请求给服务器。2、服务器先检查查询缓存,命中了缓存,直接返回缓存中的数据,否则进入下一个阶段。3、服务器进行sql解析,预处理,再由优化器生成对应的执行计划。4、mysql根据执行计划,调用存储引擎的API来执行查询5、将结果返回给客户端。
阅读全文
posted @
2015-05-31 16:31
Andy Niu
阅读(357)
推荐(0) 编辑
mysql 逻辑架构
摘要:1、mysql是基于网络的客户端/服务器架构,服务器上层是连接线程,解析器,查询缓存,下层是存储引擎。2、每个客户端连接,服务器都有一个对应的线程,这个线程只为这个连接查询服务,高版本的mysql支持线程池,使用少量的线程服务大量的连接。3、服务器收到请求,会解析查询,建立解析树,然后对其优化,包括...
阅读全文
posted @
2015-05-31 16:07
Andy Niu
阅读(274)
推荐(0) 编辑
mysql 并发控制
摘要:1、多个线程同时修改数据,存在数据不一致的情况,也就是并发控制的问题。2、mysql提供读锁和写锁,读锁之上可以再加读锁,不能加写锁,而写锁之上不能加任何锁。也就是说,读锁是共享的,写锁是排他的。3、锁粒度,为了更好的并发控制,锁的粒度应该尽可能小,也就是只锁定修改的数据。但是,锁本身也有一定的开销...
阅读全文
posted @
2015-05-31 15:54
Andy Niu
阅读(10426)
推荐(0) 编辑
mysql 事务隔离级别
摘要:read-uncommitted(未提交读)测试流程:1、A设置read-uncommitted, start transaction2、B执行start transaction,修改一条记录,3、A查询记录,得到了以为正确的记录4、B回滚。问题:A读到了B没有提交的记录,也就是脏读。read-co...
阅读全文
posted @
2015-05-30 18:06
Andy Niu
阅读(1468)
推荐(0) 编辑
windows命令行的使用,去掉"半"字
摘要:1、新启动一个命令行,如果当前sogou是中文输入法,输入之后,下面出现一个"半"字。切换到英文输入法,这个"半"字,也不会消失,怎么办? 先切换到英文输入法,再输入,就不会出现"半"字。2、清屏 cls 退出 exit 重新启动一个 start cmd3、windows下面cmd命令行...
阅读全文
posted @
2015-05-30 17:54
Andy Niu
阅读(1145)
推荐(0) 编辑
使用otl,报错:mysql Commands out of sync; you can't run this command now
摘要:1、代码如下:void TestCache(otl_connect& otlConn){ try { char sql[1024] = {0}; sprintf(sql,"call test1(1)"); otl_stream stream(10...
阅读全文
posted @
2015-05-30 17:52
Andy Niu
阅读(8208)
推荐(0) 编辑
windows 环境变量
摘要:1、考虑下面的需求,进入cmd之后,我就想执行mysql客户端命令,而这需要转到mysql安装目录,找到mysql可执行文件,在这个目录下执行mysql命令。这样太麻烦,有没有好的解决办法?2、使用环境变量,变量名为MYSQL_HOME,变量值为C:\Program Files (x86)\MySQ...
阅读全文
posted @
2015-05-30 17:41
Andy Niu
阅读(304)
推荐(0) 编辑
C++ 构造与析构的执行顺序
摘要:1、代码如下:class A{public: int _Id; A():_Id(0) { printf("A[%d]\n",_Id); } ~A() { printf("~A[%d]\n",_Id); }};class B{public: A _A; A* _PA; B() { printf...
阅读全文
posted @
2015-05-30 17:40
Andy Niu
阅读(875)
推荐(0) 编辑
shell <<EOF
摘要:1、考虑下面的需求,在主shell执行命令,进入其他的命令,后面的输入,想作为命令的输入,而不是主shell的输入,怎么办?2、使用111.txtabcd1234[root@localhost ~]# more 111.txtabcd1234使用EOF[root@localhost ~]# cat ...
阅读全文
posted @
2015-05-30 17:38
Andy Niu
阅读(14250)
推荐(0) 编辑
mysql 存储过程中limit
摘要:1、mysql的高版本(5.5),存储过程中的limit可以使用变量,如下:select * from student limit iStart,iNum;2、mysql的低版本(5.1),存储过程中的limit不能使用变量,编译报错,如下:You have an error in your SQL...
阅读全文
posted @
2015-05-30 17:36
Andy Niu
阅读(4447)
推荐(0) 编辑
mysql 变量
摘要:用户变量1、用户变量,用户变量和数据库连接有关,连接后声明变量,连接断开后,自动消失。2、用户变量以@开头,select一个没有赋值的用户变量,返回NULL,也就是没有值,注意取值为NULL与取值为0或者""的区别。mysql> select @var;+------+| @var|+------+...
阅读全文
posted @
2015-05-27 00:04
Andy Niu
阅读(490)
推荐(0) 编辑
mysql 权限控制
摘要:1、mysql的权限是,从某处来的用户对某对象的权限。2、mysql的权限采用白名单策略,指定用户能做什么,没有指定的都不能做。3、权限校验分成两个步骤: a、能不能连接,检查从哪里来,用户名和密码,常见错误 ERROR 1045 (28000): Access denied for user ....
阅读全文
posted @
2015-05-22 00:49
Andy Niu
阅读(3970)
推荐(0) 编辑
mysql 选择性高
摘要:选择性高是指能够过滤掉更多不需要的记录。举例来说,在一个公司里,使用性别只能过滤掉一半的人,而使用姓名一般可以过滤掉99%以上的人,因为会有重名情况,而使用员工号,选出一个,其他的全部过滤掉。也就是说,员工号的选择性最高。
阅读全文
posted @
2015-05-17 20:04
Andy Niu
阅读(936)
推荐(0) 编辑
mysql 事件调度器
摘要:1、mysql事件调度器,也就是计划任务,计划做某事,有两种方式:2、在某个时间点做某事,AT TIMESTAMP [+ INTERVAL INTERVAL] 某个时间点加上偏移。3、定时地做某事,也就是在一个时间段内,设置间隔,周期性做某事,EVERY INTERVAL [STARTS TIMES...
阅读全文
posted @
2015-05-17 19:57
Andy Niu
阅读(275)
推荐(0) 编辑
Windows 抓取本地环路包
摘要:1、cmd,ipconfig查看自己的ip地址。2、执行命令:route add 10.36.65.89 mask 255.255.255.255 10.36.65.1 metric 1,其中10.36.65.89 是本地ip,255.255.255.255 是掩码,10.36.65.1 是网关,m...
阅读全文
posted @
2015-05-17 19:50
Andy Niu
阅读(1166)
推荐(0) 编辑
同步 互斥体和信号量
摘要:1、互斥体和信号量都是为了实现同步,但是二者解决的问题不一样,也就是说应用场景不一样。2、互斥体通过加锁,对于共享的资源,大家排队,依次去访问,一个一个来。也就是说,任何时刻只有一个线程访问,其他的线程等待。3、互斥体加锁存在的问题:无法控制线程的访问顺序。考虑两个线程A,B,访问顺序可能是A-B,...
阅读全文
posted @
2015-05-17 19:45
Andy Niu
阅读(2070)
推荐(1) 编辑
【羽毛球】跳起杀球
摘要:要点如下:1、左臂张开,引拍,屏住呼吸,定住。2、球在最高点起跳,身体成弓形,从背后抽出球拍。3、击球之前,手腕放松,击球瞬间,紧握球拍,靠爆发力杀球。4、杀球是一把双刃剑,给对方造成大的威胁,如果对手防守反击,会给自己造成大的威胁,特别是跳起杀球。因为跳起杀球,在空中延迟比较久,你还没落地,对手的...
阅读全文
posted @
2015-05-17 18:42
Andy Niu
阅读(486)
推荐(0) 编辑
【羽毛球】反手假动作 网前勾对角
摘要:1、与正手假动作 网前勾对角类似。2、要点: (1)右脚在前,球拍持平 (2)球拍随球下沉 (3)勾对角3、动作(2)和(3)要连贯,快速。
阅读全文
posted @
2015-05-17 17:07
Andy Niu
阅读(307)
推荐(0) 编辑
【羽毛球】正手假动作 网前勾对角
摘要:1、要想赢球,必须想办法控制对手,让对手处于被动状态。2、正手假动作 网前勾对角的要点是: (1)球拍持平 (2)球拍和球一起下降,延长控球的时间 (3)将球勾对角3、在动作(3),有两种选择:如果对手在后场,勾对角,如果对手移到准备接对角,将球挑到对方后场。4、动作(2)和(3)要连贯,快速...
阅读全文
posted @
2015-05-17 16:32
Andy Niu
阅读(401)
推荐(0) 编辑
rapidxml修改节点的值
摘要:1、rapidxml修改节点的value,修改之后,序列化还是原来的值,具体原因是什么,要看rapidxml是怎么实现的。如下:void TestRapidXml(){ char* xmlContent = new char[1024]; sprintf(xmlContent,"aaab...
阅读全文
posted @
2015-05-17 10:45
Andy Niu
阅读(3170)
推荐(0) 编辑
rapidxml 节点加入另一个xml
摘要:void TestRapidXml(){ char* xmlContent = new char[1024]; sprintf(xmlContent,"aaabbb"); xml_document xmlDoc; xmlDoc.parse(xmlContent); ch...
阅读全文
posted @
2015-05-16 19:23
Andy Niu
阅读(389)
推荐(0) 编辑
rapidxml 序列化
摘要:void TestRapidXml(){ char* xmlContent = new char[1024]; sprintf(xmlContent,"aaabbb"); xml_document xmlDoc; xmlDoc.parse(xmlContent); ...
阅读全文
posted @
2015-05-16 18:54
Andy Niu
阅读(559)
推荐(0) 编辑
rapidxml 解析修改内存的值
摘要:1、使用rapidxml解析的时候,也就是 调用xmlDoc.parse(xmlContent),特别注意,rapidxml会修改内存的值,把右尖括号>修改为'\0',因此特别注意,如果char指针指向的内容还要使用,需要做个备份。2、如果char指针指向的内容,不再使用,不需要做备份,rapidx...
阅读全文
posted @
2015-05-16 18:31
Andy Niu
阅读(826)
推荐(0) 编辑
mysql删除重复记录,保存Id最小的一条
摘要:方法1:1、创建一个临时表,选取需要的数据。2、清空原表。3、临时表数据导入到原表。4、删除临时表。mysql> select * from student;+----+------+| ID | NAME |+----+------+| 11 | aa || 12 | aa || 13 |...
阅读全文
posted @
2015-05-01 13:38
Andy Niu
阅读(46455)
推荐(7) 编辑
mysql 倒引号
摘要:1、在mysql中,保留字不能作为表名,字段名等用处,如下:mysql> alter table student add column desc varchar(16) after name;1064 - You have an error in your SQL syntax; check the...
阅读全文
posted @
2015-05-01 11:46
Andy Niu
阅读(459)
推荐(0) 编辑
数据库模式
摘要:1、我们知道数据库和表是描述和存储用户数据的,那么问题来了,对于数据库和表,谁来描述和存储它们呢?2、这就是模式做的事情。mysql安装之后,有一个默认的数据库,information_schema,这个里面保存了数据库和表的内容,需要注意的是,information_schema还包含了自身的内容...
阅读全文
posted @
2015-05-01 09:34
Andy Niu
阅读(592)
推荐(0) 编辑
分布式系统设计和架构
摘要:1、两台设备,分别部署两组服务。2、主服务器一主一备,主备热切换。业务服务器,一主一备,负载均衡。数据库主主复制。3、主服务器主备热切换,使用心跳服务器监视,一边挂了,另一边自动启动。4、对于业务服务器,由主服务指定主备,监视主的业务服务器,主的业务服务器挂了,重新指定一个主的业务服务器。5、对于业...
阅读全文
posted @
2015-05-01 08:51
Andy Niu
阅读(594)
推荐(0) 编辑