自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Simon的博客

专注于互联网后台架构开发

  • 博客(245)
  • 收藏
  • 关注

转载 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 1221

原创 基于面向对象的编程的优势与劣势

一句话总结:利用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 1299

原创 简单例子测试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 471

原创 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 427

转载 二十种实战调优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 277

转载 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 216

原创 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 2555

原创 善用__thread——每个线程都有一份独立实体

一句话总结:__thread修饰的全局变量每个线程各有一份实体,互不影响。下面例子有两个变量,__thread修饰的变量不受线程时序影响,每个线程拿到的都是初始值;而int全局变量则不同,两个线程是并发运行的,哪一行代码谁前谁后不清楚,所以fun2()打印出的g_var的值可能是10也可能是11.#include #include __thread int g_own_var

2017-08-21 10:44:01 1603

原创 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 1218

原创 忽略SIGCHLD信号来避免僵尸进程

一句话总结:仔细处理子进程死后的信息,如果不想处理就需要交给系统处理。僵尸进程:一个进程执行了exit系统调用退出时会向父进程发送SIGCHLD信号,而其父进程并没有为它收尸(调用wait或waitpid来获得它的结束状态,如进程ID、终止状态等等)的进程。

2017-08-17 15:54:19 1799 1

原创 SIGPIPE信号导致进程退出

一句话总结:网络编程中需要处理SIGPIPE信号,防止进程退出。客户端关闭套接字后,如果服务器调用一次write,服务器会接收到RST segment(TCP传输层),如果服务器再次调用write,这个时候就会产品SIGPIPE信号(在无读者的管道上写),导致整个进程退出。如果我们不想服务器退出,需要忽略SIGPIPE,交给系统处理,如: signal(SIGPIPE,SIG_IG

2017-08-17 15:46:29 462

原创 最高效的进(线)程间通信机制: 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 686

原创 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 14077

原创 智能指针——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 10153

原创 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 476

原创 不完整类型incomplete type

不完整类型是一种用于描述标识符而无法确认该描述符大小的类型。如一个类只有声明没有定义,一个数组没有指定大小等。还有一种情况就是类有定义,但是所在头文件没有被包含文件A中,仅仅在A中声明了,也属于不完整类型。在编码过程中可以利用“无法确认该描述符大小”的特点来保证代码安全,如typedef char T_must_be_comlete_type[(0

2017-08-01 00:41:33 15706

原创 pthread_once函数

一句话总结:保证仅初始化一次,线程安全,比用信号量效率更高。API:pthread_once_t once_control = PTHREAD_ONCE_INIT;int pthread_once(pthread_once_t* once_control, void (*init_routine)(void))简例:pthread_once_t

2017-07-31 23:35:10 504

原创 进程的终止方式

有8种方式使进程终止,其中前5种为正常终止,它们是1:从 main 返回2:调用 exit3:调用 _exit 或 _Exit4:最后一个线程从其启动例程返回5:最后一个线程调用pthread_exit异常终止有3种,它们是6:调用 abort7:接到一个信号并终止8:最后一个线程对取消请求做出响应

2017-07-31 23:02:46 598

原创 atexit函数

一句话总结:注册终止函数,在main函数结束后调用。仅能接受无参无返回类型的函数,可结合boost::bind灵活使用。函数名: atexit头文件:#include功 能: 注册终止函数(即main执行结束后调用的函数)用 法: void atexit(void (*func)(void));注意:exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如

2017-07-31 23:01:23 349

转载 muduo——有界队列和无界队列

http://blog.csdn.net/L979951191/article/details/48088969

2017-07-31 16:56:51 1227

原创 条件变量condition

一句话总结:////  main.cpp//  ThreadCondition////  Created by zhaojunyan on 17/7/31.//  Copyright © 2017年 zhaojunyan. All rights reserved.//#include #include

2017-07-31 12:12:33 455

原创 mutable的用法

一句话总结:突破const的限制使得被修饰的变量可变。如下图所示,在const修饰的成员函数中不能修改成员变量,如果要修改需要将变量cnt改为mutable int cnt;

2017-07-29 22:54:37 452

原创 尽量避免多进程多线程混用,当下死锁

一句话总结:父进程创建子进程时,子进程会复制父进程的内存(包括锁状态),需仔细处理。1、死锁例子#include #include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;void* doit(void* arg){

2017-07-29 20:19:06 1970

原创 基于对象的编程

一句话总结:将对象统一起来形成一个对象系统,不具备“多态、继承、重载”等功能。可以结合boost::function/bind一起使用。

2017-07-29 11:26:46 354

空空如也

空空如也

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

TA关注的人

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