mysql 占用的内存大小
摘要:1、mysql执行查询计划,key_len表示索引使用的字节数,这个字节数和三个条件有关。mysql> create table t1(v1 char(10));Query OK, 0 rows affectedmysql> create index index_v1 on t1(v1);Query...
阅读全文
posted @
2015-06-28 15:54
Andy Niu
阅读(10093)
推荐(0) 编辑
mysql 执行计划的理解
摘要:1、执行计划就是在sql语句之前加上explain,使用desc 也可以。2、desc有两个选项extended和partitions,desc extended 将原sql语句进行优化,通过show warnings 可以看到优化后的sql语句。 desc partitions 可以查看使用分...
阅读全文
posted @
2015-06-28 15:49
Andy Niu
阅读(351)
推荐(0) 编辑
mysql 性能问题的解决
摘要:场景:模拟一天的数据,每个10秒,遍历1000个设备,每个设备模拟一个实时数据,总的数据量为:24*60*60/10*1000 = 864万条记录。----------------------------------------------------------------------------...
阅读全文
posted @
2015-06-27 20:50
Andy Niu
阅读(232)
推荐(0) 编辑
mysql 性能问题
摘要:1、场景,模拟一天的数据,每个10秒,遍历1000个设备,每个设备模拟一个实时数据,总的数据量为:24*60*60/10*1000 = 864万条记录。2、采用策略,对时间分段,拼接sql语句查询,对于一个设备,查询一天每个小时的平均值,时间开销186.757秒。3、现在考虑简单的情况,求一个小时的...
阅读全文
posted @
2015-06-27 20:49
Andy Niu
阅读(241)
推荐(0) 编辑
mysql 查询开销 sending data
摘要:1、执行一个查询,发现时间开销都在sending data,为什么?2、sending data容易误导,让人以为只是发送数据给客户端,实际上sending data包含两个过程:读取数据并处理,发送给客户端,而时间开销都在读取数据并处理的过程中。
阅读全文
posted @
2015-06-27 20:48
Andy Niu
阅读(436)
推荐(0) 编辑
mysql 索引的原理
摘要:1、考虑下面的情况,mysql> desc student;+----------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-----...
阅读全文
posted @
2015-06-27 20:46
Andy Niu
阅读(1101)
推荐(0) 编辑
mysql 大数据量的处理
摘要:insert 1、过滤一段时间内重复的数据2、数据缓存起来,批量写入select1、使用分区表2、主主复制,连接不同的mysql3、建立索引4、定时求平均值,写入一个新的表中
阅读全文
posted @
2015-06-27 20:45
Andy Niu
阅读(988)
推荐(0) 编辑
mysql 理解 int(11)
摘要:1、这里的int(11) 与int的大小和存储字节,没有一毛钱关系,int的存储字节是4个字节,最大值为 65536*65536 = 40多亿,对于有符号的int,是20多亿。2、那么这里的(11) 表示什么意思? 考虑下面的需求,ID字段显示宽度为2,宽度不够的补充0。3、测试如下:mysql> ...
阅读全文
posted @
2015-06-27 20:44
Andy Niu
阅读(1472)
推荐(0) 编辑
mysql 特殊字符
摘要:1、倒引号,比如表中有一个字段为desc,在mysql中desc是关键字,如何表明desc是字段呢? 有两种办法:desc使用倒引号引起来,或者在desc前面加上表名,如下:mysql> select desc from student;1064 - You have an error in y...
阅读全文
posted @
2015-06-27 20:42
Andy Niu
阅读(4993)
推荐(0) 编辑
mysql 聚集函数需要注意的问题
摘要:1、当没有记录的时候,使用聚集函数,会导致出现一条记录,记录的取值都是NULL,如下:mysql> select name from student where name='David';Empty setmysql> select name,avg(age) from student where ...
阅读全文
posted @
2015-06-27 20:41
Andy Niu
阅读(381)
推荐(0) 编辑
协议的字段和打包解包要分离
摘要:1、考虑下面的需求,经过网络发送数据,协议可能打包成xml也可能打包成json等其他格式,怎么解决?2、协议的字段和打包解包要分离,协议本身只是载体,派生出xml子类,用于打包解包xml格式,派生出json子类,用于打包解包json格式。3、应用程序只关心协议的字段,而底层网络库,发送数据的时候,需...
阅读全文
posted @
2015-06-27 20:40
Andy Niu
阅读(445)
推荐(0) 编辑
memory拷贝与string拷贝的区别
摘要:1、memory拷贝,根据拷贝的字节个数,从src一个一个字节拷贝到dst,拷贝过程不管src的取值,也不管dst是否能容纳。2、因此,对于memory拷贝,src中NULL字符(取值为0的字符)后面的字符也能拷贝过去。不管dst是否能容纳,都拷贝过去,会存在踩内存。为了避免踩内存,拷贝的字节个数,...
阅读全文
posted @
2015-06-27 20:38
Andy Niu
阅读(3116)
推荐(0) 编辑
其原因可能是堆被损坏,这也说明 xxx.exe 中或它所加载的任何 DLL 中有 bug
摘要:1、代码如下: string src ="abcdabcd"; char* dst = new char[8]; strcpy(dst,src.c_str()); delete[] dst;2、在release模式下,报错 其原因可能是堆被损坏,这也说明 xxx.exe 中或它所加载的任何 DLL ...
阅读全文
posted @
2015-06-27 20:37
Andy Niu
阅读(2299)
推荐(0) 编辑
项目中的设计模式【工厂方法模式】
摘要:项目应用场景:协议本身只是载体,经过网络发送数据,协议可能打包成xml也可能打包成json等其他格式,协议的字段和打包解包要分离,应用程序只关心协议的字段,而底层网络库,发送数据的时候,需要打包解包,要知道对应的打包解包子类。怎么解决这个问题?建立工厂方法,根据协议的cmd对应打包解包子类。
阅读全文
posted @
2015-06-27 20:32
Andy Niu
阅读(252)
推荐(0) 编辑
项目中的设计模式【适配器模式】
摘要:项目应用场景:我们的服务会接入不同的设备,比如大华设备,海康设备,这些设备sdk的接口不同。需要根据不同的设备类型进行适配。下层有适配器管理器和一组适配器,服务告诉适配器管理是哪一种设备,适配器管理器创建出一个适配器。这个odbc的道理一样。odcb可以认为是适配器管理器,mysql的odbc驱动是...
阅读全文
posted @
2015-06-27 20:31
Andy Niu
阅读(335)
推荐(0) 编辑
项目中的设计模式【观察者模式】
摘要:项目应用场景:dmu会从设备收到告警,不可能全部都传给客户端,因为网络压力太大。采取的策略是:客户端订阅,dmu才发送。为了进一步减少网络开销,订阅的策略是订阅的范围尽可能小,订阅的时间尽可能短。查看一个设备,只订阅一个设备,进入页面订阅,离开页面取消订阅。
阅读全文
posted @
2015-06-27 20:30
Andy Niu
阅读(400)
推荐(0) 编辑
项目中的设计模式【单例模式】
摘要:项目应用场景:配置文件的信息和数据库中的数据,这些数据只有一份,并且多个线程共享,记录在DataCenter,DataCenter是一个单例类。
阅读全文
posted @
2015-06-27 20:29
Andy Niu
阅读(222)
推荐(0) 编辑
mysql 查询开销
摘要:1、select @@profiling;2、set @@session.profiling=on;3、show profiles;4、show profile for query 2;
阅读全文
posted @
2015-06-27 20:28
Andy Niu
阅读(264)
推荐(0) 编辑
mysql 循环控制
摘要:1、使用whileDROP PROCEDURE IF EXISTS `addstudent`;DELIMITER ;;CREATE PROCEDURE `addstudent`(iNum int)BEGIN declare vI int default 0; start transaction; ...
阅读全文
posted @
2015-06-27 20:27
Andy Niu
阅读(483)
推荐(0) 编辑
struct的初始化
摘要:1、struct的初始化可以使用类似数组的方式,如下:struct Student{ int _Age; string _Name;};Student stu = {26,"Andy"};2、有两个地方需要注意: a、顺序要保持一致,如下: Student stu = {"Andy",26...
阅读全文
posted @
2015-06-27 20:26
Andy Niu
阅读(486)
推荐(0) 编辑
C++ 多态的原理
摘要:1、多态解决什么问题? 面向抽象编程,用户不需要关心引用或者指针的真实类型,已经内部实现。2、C++ 要具备多态的性质,满足两个条件:表面类型和真实类型不一样,方法是虚方法。3、多态是如何实现的? 实现多态就是要解决下面的问题,把子类对象当做父类对象来解释,还要保证调用的是子类的方法。4、实现原理是...
阅读全文
posted @
2015-06-14 19:52
Andy Niu
阅读(672)
推荐(0) 编辑
stl 迭代器失效
摘要:1、对于基于连续内存的容器,容器元素的增删,有可能会导致迭代器的失效。考虑:int main(int argc, char* argv[]){vector intVec;intVec.push_back(1);intVec.push_back(2);intVec.push_back(3);vecto...
阅读全文
posted @
2015-06-14 19:51
Andy Niu
阅读(475)
推荐(0) 编辑
C++ 容器元素的存储和获取
摘要:1、存储对象,存储的是对象的副本,并不是原对象。2、获取对象,获取的是对象的引用,为什么要这样设计?a、存储对象只发生一次,而获取对象往往会有多次,获取对象,如果每次都返回对象的副本,这个开销很大。b、考虑下面的情况,修改容器中的对象,如果获取对象,返回的是副本而不是引用,没有办法修改容器中元素的值...
阅读全文
posted @
2015-06-14 19:50
Andy Niu
阅读(2552)
推荐(1) 编辑
【C++沉思录】代理类
摘要:1、考虑下面的需求,把一组类型不同,但是相互关联的对象放入容器中,比如Animal,Dog,Cat对象。2、容器只能包含一组 类型相同的对象,Animal,Dog,Cat对象是没有办法放入容器中的。3、怎么解决上面的问题?假设容器为vector,可以使用vector,这会导致一个新问题,因为vect...
阅读全文
posted @
2015-06-14 19:49
Andy Niu
阅读(337)
推荐(0) 编辑
mysql 编码测试
摘要:insert into t1(v1) values('cn中国'); select * from t1; 1、输入gbk,交互latin1,数据库latin1 insert,客户端把gbk的输入当成latin1来解释,传给服务,服务不需要转码,把gbk当成latin1存入数据库,显示乱码。 ...
阅读全文
posted @
2015-06-12 22:18
Andy Niu
阅读(275)
推荐(0) 编辑
理解字符编码
摘要:1、可以这样理解,字符编码就是对于字符集合,每个字符设置一个id,第几个表示某个字符。2、举例来说,有两个编码,编码A只有三个字符 甲a1,编码B只有六个字符 abcd12,他们的编码分别是: 甲[00] a[01] 1[10];a[000] b[001] c[010] d[011] 1[10...
阅读全文
posted @
2015-06-12 22:17
Andy Niu
阅读(252)
推荐(0) 编辑
linux mount
摘要:挂载 mount //10.65.200.168/linux_bj /home/linux_bj -t cifs -o username=niu,password=ruanxiaopang取消挂载 umount //10.65.200.168/linux_bj
阅读全文
posted @
2015-06-12 22:16
Andy Niu
阅读(213)
推荐(0) 编辑
mysql delimiter
摘要:默认情况下,mysql遇到分号; 就认为是一个命令的终止符, 就会执行命令。而有些时候,我们不希望这样,比如存储过程中包含多个语句,这些语句以分号分割,我们希望这些语句作为一个命令,一起执行,怎么解决这个问题?使用delimiter,告诉mysql解释器,换一个标识符,作为执行命令的终止符。 如下:...
阅读全文
posted @
2015-06-12 22:15
Andy Niu
阅读(293)
推荐(0) 编辑
mysql 求时间段平均值
摘要:考虑下面的需求,在一段时间内,间隔一段时间,取一个平均值,把所有的平均值取出来,怎么办?思路:在存储过程中,拼接sql语句。根据起始时间和结束时间,while循环每次加一段时间。DROP PROCEDURE IF EXISTS `get_avg`;DELIMITER ;;CREATE DEFINER...
阅读全文
posted @
2015-06-12 22:13
Andy Niu
阅读(9593)
推荐(0) 编辑
mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
摘要:错误原因:/var/lib/mysql目录中socket文件不存在。连接mysql服务器有两种方式:tcp连接,通过socket文件连接。通过socket文件,启动mysql服务,mysql服务会自动生成一个sock文件,生成的sock文件默认放在 --datadir=/var/lib/mysql,...
阅读全文
posted @
2015-06-12 22:12
Andy Niu
阅读(6784)
推荐(0) 编辑
mysql字符集
摘要:gb2312 简体中文已经常用符号,双字节编码gbk 中日韩字符,是gb2312的超集,也是双字节编码utf8 多字节编码。包含中日韩法俄字符, 特别注意,还包含英文字符,对于英文字符,使用一个字节,其他字符使用三个字节。
阅读全文
posted @
2015-06-12 22:11
Andy Niu
阅读(177)
推荐(0) 编辑
mysql 内连接 左连接 右连接 外连接
摘要:mysql> desc student;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------...
阅读全文
posted @
2015-06-12 22:07
Andy Niu
阅读(10498)
推荐(0) 编辑
mysql 聚集函数和分组
摘要:1、sc表的内容如下:mysql> select * from sc order by sid asc;+----+-------+-----+-------+| ID | SID | CID | SCORE |+----+-------+-----+-------+| 1 | 10001 |...
阅读全文
posted @
2015-06-12 22:06
Andy Niu
阅读(570)
推荐(0) 编辑
mysql 大数据量求平均值
摘要:需求是:对于一个设备,求一天内每个小时的平均值,一个月内每天的平均值,更通用的需求是,从起始时间到结束时间,每隔一段时间,求一个平均值。目前的解决策略是:在存储过程中进行处理,从起始时间到结束时间,切割成段,求出每一段的平均值,合并起来。存在问题:数据量很大的时候,会存在严重的性能问题。比如:一个月...
阅读全文
posted @
2015-06-12 22:05
Andy Niu
阅读(5387)
推荐(0) 编辑
C++ 纯虚方法
摘要:1、纯虚方法解决什么样的问题,为什么要设计出纯虚方法? 考虑下面的需求,基类声明了一个方法,这个方法只针对具体的子类才有意义,比如Animal的Eat()方法,调用Animal的Eat方法是没有意义的。比如Dog吃肉,Cat吃鱼,而Animal吃什么呢,没有意义。2、既然Animal调用Eat没有意...
阅读全文
posted @
2015-06-12 22:04
Andy Niu
阅读(1620)
推荐(0) 编辑
Windows xcopy
摘要:1、考虑下面的需求,把aaa目录下面的111.txt 拷贝到 bbb,如下:echo onxcopy .\aaa\111.txt .\bbb\ /ypause2、注意这里表示路径要用右斜杠,因为左斜杠表示命名的选项,如test.exe /f cfg.xml3、考虑下面的需求,把aaa目录下面的111...
阅读全文
posted @
2015-06-12 22:03
Andy Niu
阅读(1044)
推荐(0) 编辑