- 博客(33)
- 收藏
- 关注
转载 TCP长连接和Keepalive详解
http://blog.csdn.net/huangjin0507/article/details/52396580TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会自己断开,长连接在发包完毕后,会在一定的时间内保持连接,即我们通常所说的Keepalive(存活定时器)功能。默认的Keepalive超时需要7,200,000 milliseconds,即2小时,探测
2017-08-30 10:27:42 17256
转载 socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少
http://blog.csdn.net/huangjin0507/article/details/52396621常识一:文件句柄限制在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是“Socket/File:Can'topen so many files”。
2017-08-30 10:23:36 1157
原创 mysql慢查日志分析工具:自带的mysqldumpslow
root@ubuntu:~# mysqldumpslow -hOption h requires an argumentERROR: bad optionUsage: mysqldumpslow [ OPTS... ] [ LOGS... ]Parse and summarize the MySQL slow query log. Opt
2017-08-29 18:21:41 1025
转载 mysql慢查日志分析神器:pt-query-digest查询日志分析工具
pt-query-digest查询日志分析工具:http://blog.csdn.net/seteor/article/details/24017913
2017-08-29 18:20:50 678
原创 使用mysql慢查日志监控有效率问题的SQL语句
1、show variables like ‘slow_query_log’2、设置变量set global slow_query_log_file='/var/lib/mysql/mysql_slow_20170829.log'; //慢查日志的记录路径,变量路径一定是mysql用户和组有权限,否则设置失败set global log_queries_not_using_ind
2017-08-29 16:41:56 3194
原创 安装演示数据库Sakila
zjy@ubuntu:~$ mysql -uroot -prootmysql> SOURCE /home/zjy/sakila-db/sakila-schema.sql;mysql> SOURCE /home/zjy/sakila-db/sakila-data.sql;mysql> show databases;+--------------------+
2017-08-29 15:11:48 511
原创 数据库优化目的和方向
数据库优化的目的:一、避免出现页面出现访问错误:1、由于数据库连接timeout产生页面5xx错误2、由于慢查询造成页面无法加载3、由于阻塞造成数据无法提交二、增加数据库的稳定性很多数据库问题都是由于低效的查询引起的三、优化用户体验1、流畅页面的访问速度2、良好的网站功能体验 优化的方向:SQL及索引,数据库表结构,系统配置,硬件1、从左到右成本
2017-08-29 09:31:58 1223
原创 基于面向对象的编程的优势与劣势
一句话总结:利用boost::bind可以让回调函数更加灵活易用,不局限于函数类型及参数个数;然后无法像面向对象的虚函数那样可以一类功能中灵活扩展。#include #include #include #include typedef boost::functionvoid ()> FunCallback_;cla
2017-08-26 12:23:01 3079
原创 Mac安装boost库
1、下载对应Mac系统版本的macports软件,安装https://www.macports.org/install.php2、安装完毕后打开终端,输入sudo port install boost,软件就会自动下载安装Boost库,注意此处需要root权限。3、安装好后,如果Xcode的项目中还是找不到Boost,是因为还没有将Boost的路径导入进去。打开Xcode的菜单
2017-08-25 18:19:22 1300
原创 简单例子测试Ubuntu安装的mysql开发包SDK,附编译选项说明
首先确认环境已经安装好了。1、创建一个数据库,并创建几个表。2、修改代码里面数据库名称,编译运行。终端命令:zjy@ubuntu:~/code$ mysql -uroot -prootmysql: [Warning] Using a password on the command line interface can be insecure.Welcome
2017-08-25 16:28:42 472
原创 vector的reserve和resize的区别
一句话总结:reserve是设定的容量空间,resize是可使用的空间。 std::vectorint> vec; vec.reserve(200); printf("vec cap:%d\n", vec.capacity());//结果是200 printf("%d\n", vec[99]); //16472
2017-08-24 22:57:46 428
转载 二十种实战调优MySQL性能优化的经验
转载于:http://www.educity.cn/wenda/399538.html 本文将为大家介绍的是二十条MySQL性能优化的经验,这些小经验有助于大家更好的使用MySQL进行WEB开发。今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库
2017-08-24 20:21:21 406
转载 MySQL 调优/优化的 100 个建议
转载于:http://blog.jobbole.com/87989/MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境,但是思路是相通的。我已经将它们分成了几类以帮助你理解。MySQL监控MySQL服务器硬件和OS(操作系统)调优:1、有足够
2017-08-24 20:19:11 278
转载 mysql数据库开发常见问题及优化
mysql数据库开发常见问题及优化mysql 数据库是被广泛应用的关系型数据库,其体积小、支持多处理器、开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高。在使用 mysql 的过程中不规范的 SQL 编写、非最优的策略选择都可能导致系统性能甚至功能上的缺陷。 恰巧就在前几天,本人所在公司的云事业部举办了一场关于 mysql 的技术交流会
2017-08-24 20:17:46 398
原创 mysql基本操作
1、创建数据库:CREATE DATABASE {IF NOT EXISTS} test;注:{}表示可选查看数据库:SHOW DATABASES;使用数据库:USE test;2、创建表:CREATE TABLE {IF NOT EXISTS} table(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT);REATE TABLE
2017-08-24 19:50:03 278
原创 mysql常用命令
1、查看版本:select version();2、查看当前用户:select user();3、查看当前日期:select now();
2017-08-24 19:11:37 217
原创 mysql语句规范
一句话总结:虽然大小写不影响命令执行,但为了方便清晰查看,还是要遵守规范。1、关键字与函数名称全部大写2、数据库名称、表名称、字段名称全部小写3、sql语句必须以分号结尾
2017-08-24 18:56:00 378
原创 mysql提示符命令prompt
一句话总计:prompt命令可以在mysql提示符中显示随心所欲信息\h: 服务器名称\u: 用户名\d: 数据库名称\D: 日期例子:zjy@ubuntu:~$ mysql -uroot -proot --prompt '\h'mysql: [Warning] Using a password on the command line int
2017-08-24 18:42:43 2556
原创 善用__thread——每个线程都有一份独立实体
一句话总结:__thread修饰的全局变量每个线程各有一份实体,互不影响。下面例子有两个变量,__thread修饰的变量不受线程时序影响,每个线程拿到的都是初始值;而int全局变量则不同,两个线程是并发运行的,哪一行代码谁前谁后不清楚,所以fun2()打印出的g_var的值可能是10也可能是11.#include #include __thread int g_own_var
2017-08-21 10:44:01 1605
原创 Ubuntu安装mysql
1、sudo apt-get update2、sudo apt-get install mysql-server mysql-client3、sudo service mysql start4、登录:mysql -u root -p
2017-08-20 21:33:13 299
原创 网络编程文件描述符超过限制的解决办法
一句话总结:采用一个空闲的文件描述符来解决accept函数头文件:函数形式int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);返回值成功:返回新的套接字文件描述符失败:返回-1,记录错误信息errnoEAGAIN:套接字处于非阻塞状态,当前
2017-08-17 18:55:31 1219
原创 忽略SIGCHLD信号来避免僵尸进程
一句话总结:仔细处理子进程死后的信息,如果不想处理就需要交给系统处理。僵尸进程:一个进程执行了exit系统调用退出时会向父进程发送SIGCHLD信号,而其父进程并没有为它收尸(调用wait或waitpid来获得它的结束状态,如进程ID、终止状态等等)的进程。
2017-08-17 15:54:19 1804 1
原创 SIGPIPE信号导致进程退出
一句话总结:网络编程中需要处理SIGPIPE信号,防止进程退出。客户端关闭套接字后,如果服务器调用一次write,服务器会接收到RST segment(TCP传输层),如果服务器再次调用write,这个时候就会产品SIGPIPE信号(在无读者的管道上写),导致整个进程退出。如果我们不想服务器退出,需要忽略SIGPIPE,交给系统处理,如: signal(SIGPIPE,SIG_IG
2017-08-17 15:46:29 465
原创 最高效的进(线)程间通信机制: eventfd
一句话总结:用于进程/线程间通信,效率比pipe高#include int eventfd(unsigned int initval, int flags); 常用的进程(线程)间通信机制有管道、信号量、消息队列、信号、共享内存、socket等等,其中主要作为进程(线程)间通知/等待的有管道pipe和socket。从Linux 2.6.27版本开始增加了eventfd,主
2017-08-10 20:38:59 2393
原创 fork()时缓冲区注意事项
fork()调用时,整个父进程空间会原模原样复制到子进程中,包括指令、变量值、程序调用栈、环境变量和缓冲区等等。#include #include #include int main(){ int i; for (i=0; i1; ++i) { fork(); p
2017-08-04 20:53:15 687
原创 set -x 作用
一句话总结:显示脚本运行是的冗余输出,在set命令之后执行的每一条命令以及加载命令行中的任何参数都会显示出来,每一行都会加上加号(+),提示它是跟踪输出的标识。set -x 开启 zjy@ubuntu:~/code/25/jmuduo$ ./build.sh + pwd+ SOURCE_DIR=/home/zjy/code/25/jmuduo+
2017-08-03 18:46:25 14078
原创 智能指针——auto_ptr、shared_ptr、weak_ptr、scoped_ptr
一句话总结:1、auto_ptr 能够拷贝,能够转移所有权2、scoped_ptr 不能拷贝,不能转移所有权#include #include #include using namespace boost;using namespacestd;class Test{public: T
2017-08-03 01:36:31 10154
原创 cmake——效率高跨平台的makefile生成神器
在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:编写 CmakeLists.txt。执行命令“cmake PATH”或者“ccmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。使用 make 命令进行编译。1、单源文件目录zjy@ubuntu:~/cmkTes
2017-08-02 16:57:29 1199
原创 如何区别UML中的聚合与组合
一句话总结:聚合中的整体和部分都是相互独立的个体,而组合是组成一个个体。聚合和组合都属于关联,都指的是整体与部分的关系。如房间是整体,里面包括床、沙发、凳子、桌子等部分,它们有各自的生命周期,删除了房间,床、沙发等这些还在,属于“has-a”的关系,而对于凳子来说,凳子是一个整体,凳子腿是一个个体,它们拥有相同的生命周期,删除了凳子,凳子腿也就不存在了,属于“contain
2017-08-02 09:52:43 750
原创 Vim常用快捷键
1、移动在命令模式时,用 h、j、k、l 来分别实现左、下、上、右箭头的功能。快速定位:数字键(1+9)后再按下 h、j、k、l。w:光标往后移动一个词。0:移动光标到当前行首。(是数字0)^:移动光标到当前行的第一个字母位置。$:移动光标到行尾。:向下移动一屏。:向下移动半屏。:向上移动一屏。:向上移动半屏G:到文件尾gg:到文件首H:移动
2017-08-02 00:49:57 367
原创 boost::non copyable常用于单例模式
一句话总结:C++类中4个自动生成的函数需为私有,注意线程安全。看下boost::non copyable的定义,当继承时构造函数、析构函数、赋值函数、拷贝构造函数均默认变成私有,注意构造函数和析构函数不能为private,否则子类不可见,不能继承:#ifndef BOOST_NONCOPYABLE_HPP_INCLUDED#define BOOST_NON
2017-08-01 11:54:40 563
原创 Thread-Specific Data(TSD)线程私有数据
一句话总结:线程共享一个全局变量key,但对应的value每个线程都有一份,互不影响。表面上看起来这是一个全局变量,所有线程都可以使用它,而它的值在每一个线程中又是单独存储的,这就是线程存储的意义。1、首先需要创建一个类型为pthread_key_t类型的变量。2、调用pthread_key_create()来创建该变量。该函数有两个参数,第一个参数就是上面声明的p
2017-08-01 09:46:14 477
原创 不完整类型incomplete type
不完整类型是一种用于描述标识符而无法确认该描述符大小的类型。如一个类只有声明没有定义,一个数组没有指定大小等。还有一种情况就是类有定义,但是所在头文件没有被包含文件A中,仅仅在A中声明了,也属于不完整类型。在编码过程中可以利用“无法确认该描述符大小”的特点来保证代码安全,如typedef char T_must_be_comlete_type[(0
2017-08-01 00:41:33 15736
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人