- 博客(68)
- 资源 (12)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 C++好网站及其他网站收录
C++好网站及其他网站收录** C++ 灵魂人物(Spirit)Bjarne Stroustrup http://www.research.att.com/~bs/Stanley B. Lippman http://people.we.mediaone.net/stanlipp/index.htmlScott Meyers
2014-04-04 17:04:59
1049
原创 数据库连接池DBPool分析(九):Theron库+gtest来测试
国庆节在家里面学习了Theron这个高并发的库的使用方法,获益良多。 Theron的官网:http://www.theron-library.com/最特别的就是Theron 是Actor的模型,而不是object。这一点由于我并非是从JAVA转向的C++语言,所以没有万物皆是对象这个强烈的观点。 一般面向对象的三个特性:组合,继承,和多态。从组合上来说,就是一个class A为了调用c
2015-10-18 17:02:10
765
原创 数据库连接池DBPool分析(八):redis连接池 redis_connection_pool
更新完上一篇博客的时候恰逢十一黄金周,回家休息了一会。现在补充DBPool的Redis连接池。 我刚开始写mysql_connnection_pool的时候,用的是map这个数据结构来保存连接,每次从池当中取出连接的时候都需要遍历一边map,根据map的第二个参数的bool值来判断是否可用。这样的话效率很低,所以我在这里改用list来保存。每次取出连接的时候都pop_front出来,没次释放连接的
2015-10-18 15:38:57
4049
原创 数据库连接池DBPool分析(七):Redis连接控制 RedisObj
因为这个连接控制的class当中使用了大量的引用,所以设置一个宏IN和OUT,仅仅只是一个标志,标记是输出还是输入。 这个class的设计和MysqlObj的设计非常像,但是不同的是这里并不需要一个对象来专门保存查询值,就因为Redis是key-value的,查询是直接返回一个字符串或者数字。 所以这里只需要一个成员变量来保存查询值,就是redisReply* r_pResult; redis
2015-09-26 19:58:29
779
原创 数据库连接池DBPool分析(六):gtest
gtest是google的C++测试框架,很好用。 我借鉴了http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html里面的教程来使用gtestgoogle test的单元测试仅需要TEST()和TEST_F()两个宏, TEST:定义一次测试 第一个参数是测试用例名,第二个参数是测试名通过RUN_ALL_TESTS()来运行它
2015-09-26 19:56:19
555
原创 数据库连接池DBPool分析(五):Makefile
Makefile的设计思想是编译MysqlObj和RedisObj,并将它们链接成静态库和动态库,供外部调用。这里是供gtest来调用。这里参考了leveldb的Makefile的设计思想。这里有个需要小心的地方,因为用到了gtest,所以编译的时候需要链接-lgtest,-lgtest必须要放在-lpthread前面,否则编译会错误还有一个Makefile的magic,我把它称为安静模式,这是我公
2015-09-26 19:54:29
760
原创 数据库连接池DBPool分析(四):mysql连接池 mysql_connection_pool
这个class的设计和MysqlObj不一样了,不会像MysqlObj提供Connect函数来进行连接,这里我直接就在构造函数当中创建好池,因为如果再提供一个init之类的函数来创建池的话我觉得与这个class的设计语意违背,毕竟池创建好就能直接使用了。在构造函数当中使用到了boost的property_tree,目的就是从config里面读取database.xml或者database.json配
2015-09-26 19:50:31
2436
原创 数据库连接池DBPool分析(三):Mysql连接控制:MysqlObj
这个class的设计是这样的,初始化的时候并不建立连接,仅仅简单地初始化成员变量(IP地址,User,password等),而是单独提供一个Connect函数来建立连接,连接的时候把mysql的编码设置为gb2312,关闭连接也有一个Close函数,析构的时候会调用Close. Dump函数是用来debug用的,将m_pMysql指针指向的值打印出来。MysqlObj并不使用QueryResult
2015-09-26 19:48:59
749
原创 数据库连接池DBPool分析(二):存放Mysql的查询结果 QueryResult.h
这个class的设计参考了xPool当中的QueryResult.h,我觉得这个设计足够用了。 毕竟这个class的设计思想只有一个,一般来说存放Mysql的查询结果是使用的是二维vector,也就是vectorQueryResult.h#ifndef _QUERYRESULT_H#define _QUERYRESULT_H#include <vector>#include <string>u
2015-09-26 19:47:09
997
原创 数据库连接池DBPool分析(一):简介
刚刚毕业的本科生,在研究了公司的框架之后,自己花了三天的时间用C++实现了简单的数据库连接池,包括了Mysql。正在加入Redis的支持。请访问我的github:https://github.com/adairjun/DBPool概述所谓池的概念,就是一次性向系统申请多个资源并保存下来,等到程序需要向系统申请资源的时候,就直接向池当中去申请。相当于在执行程序和系统资源之间加了一层。 有高人云:“计
2015-09-26 19:45:03
3393
1
原创 Ubuntu一键配置脚本
经常在网上看到安装完Ubuntu之后应该做的十件事情之类的文章,于是我自己写了一个Ubuntu的配置脚本: 我的Ubuntu版本是14.04LTS参见我的github地址首先获取当前的目录:#!/bin/bash# 需要sudo来执行dir=`pwd`1,脚本需要sudo来执行,所以需要判断是否具有root权限:function rootness { if [[ $EUID -ne 0
2015-09-06 18:24:03
1094
转载 软件版本GA,RC,alpha,beta,Build 含义
(1)RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本。Release.Candidate.就是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错! 是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,就是正式版之前的最后一个
2015-06-15 18:01:26
491
原创 apache一键安装脚本
最近在玩apache,首先安装apace要配置apr,apr-util,pcre,而配置这些基本都是千篇一律。所谓程序员的精神就是减少重复性的劳动,下面请看我写的apache安装脚本: 这个脚本我也放到我的github上#!/bin/bash# 需要sudo执行dir=`pwd`#要安装pcre先要安装gcc, g++if [[ `ls /etc|grep redhat-release` !=
2015-06-11 15:41:59
1364
原创 openTSDB ConnectionManager: Unexpected exception from downstream java.io.IOException: Broken pipe
openTSDB有这样的错误:ConnectionManager: Unexpected exception from downstream for [id: 0xf85323a8, /10.65.30.12:3874 => /10.65.150.117:4242] java.io.IOException: Broken pipe at sun.nio.ch.FileDispatch
2015-06-04 16:05:32
3061
1
原创 hbase shell删除没有用
用Xshell登陆linux主机后,在hbase shell下不能使用backspace和delete删除误输的指令,这是Xshell的配置问题: 在File->Properties->Terminal->Keyboard下,把DELETE/BACKSPACE key sequence选为ASCII 127. 如此以来,就能使用backspace了
2015-06-04 15:55:10
1075
原创 nodejs保存文件问题
从前端那里拿到的jar包出现问题: 保存到本地管理机的jar包的md5sum值与上传的正确md5sum值不相等,而上传 过程 没有错误,说明保存过程中错误: 前端是通过base64转码之后再将jar包内容放进request.body[reqType]里面:先是错误代码:先用base64解码:var jar_content = new Buffer(request.body[reqType].ja
2015-06-04 15:39:00
2207
原创 hive:Access denied for user 'root'@'%'
配置hive全分布模式时候,在mysql里面创建用户:create user ‘hive’ identified by ‘hive’; 然后给hive帐号分配所有权限: grant all privileges on . on ‘hive’ with grant option;结果出现了Access denied for user ‘root’@’%’。后来我先创建数据库hive:create
2015-06-04 15:27:54
1846
原创 c++头文件与cpp的关系
经常在工程中看到的使用头文件的方法就是: 先写一个write函数的cpp:#include <iostream>using namespace std;void write(char* str){ cout<<str<<endl;}再写一个write函数的头文件,而头文件只需要包含write的声明就可以 write.h:#ifndef _WRITE_H#define _WRIT
2015-06-04 15:16:52
1017
原创 .pb.h:9:42: fatal error: google/protobuf/stubs/common.h: No such file or directory
看这个就应该知道是没有找到头文件,那么可以使用g++ 的-I 参数: -I/usr/local/lib/protobuf/include来命令g++在/usr/local/lib/protobuf下查找头文件 以上/usr/local/lib/protobuf/是我的protobuf的安装地址,请替换成你的
2015-06-03 22:09:08
10860
2
原创 预编译,编译,汇编,链接
预编译的文件扩展名是ii gcc -E hello.c -o hello.i 预编译过程主要处理源代码文件当中的以#开头的预编译指令,比如#include就是把头文件插入到这个位置 #define就是把所有的宏定义展开,还有就是删除所有的注释编译就是把i文件编译成为汇编代码文件,汇编代码扩展名是.s gcc -S hello.i -o hello.s但是现在版本的gcc把预编译和编译两个步骤合
2015-06-03 22:04:28
894
原创 leveldb的makefile剖析
首先出现在眼前的是这个:OPT ?= -O2 -DNDEBUG-O0 -O1 -O2 -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高 至于-DNDEBUG我不知道什么意思,麻烦知道的同学告诉我。 然后是这个:$(shell CC="$(CC)" CXX="$(CXX)" TARGET_OS="$(TARGET_OS)" \./bu
2015-06-03 21:58:53
1517
转载 terminator快捷键
The following keybindings can be used to control Terminator://第一部份:关于在同一个标签内的操作Ctrl+Shift+OSplit terminals Horizontally. //水平分割终端Ctrl+Shift+ESplit terminals Vertically. //垂直分割终端Ctrl+Shift+Righ
2015-05-26 18:35:32
613
转载 快速找到你想要的jar包
原文链接: http://zhaozhiming.github.io/blog/2014/09/14/find-your-jar-quickly/快速找到你想要的jar包在做Java开发时,经常遇到Class not found的错误,一般的做法就是在google上搜索class名字,然后再搜索这个class所在的jar包是哪个,最后才找到可以下载jar包的链接。过程比较繁琐,有没有更好的方法可以
2015-04-28 11:16:46
910
原创 CDH安装官方教程
rpm下载: http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_cdh5_install.htmlFairScheduler: http://hadoop.apache.org/docs/r2.5.1/hadoop-yarn/hadoop-yarn-site/FairSchedu
2015-04-28 11:08:31
1294
原创 mysql使用总结
1,mysql唯一性约束: 用alter命令,代码如下:(表名为user,字段为name)alter table user add unique key(`name`);2,mySQL中删除一个表中的某字段的unique key的语法:ALTER TABLE `table123212` DROP INDEX `name1233221`;3,mysql增加一个字段:alter table `tabl
2015-04-28 10:50:01
851
转载 linux iconv 文件编码转换脚本
在source insight 建立工程时,有些代码中的注释有中文,这时候就有问题了,全成了乱码。查到是由于文件编码的问题导致的。 应该用gb2312 格式的才能看到汉字。我需要的是将 utf-8 转换为 gb2312 ,整个文件夹,还存在多层次。查了相关资料,写了 一个脚本,实现了此功能 。使用方法: ./conv.sh folder utf-8 gb23121:要转换的文件夹名1
2015-04-28 10:21:36
597
原创 xshell配色方案comfort color
[comfort color]text=dce2e2text(bold)=dce2e2cyan=2ad1b8cyan(bold)=2ad1b8magenta=dd3682magenta(bold)=dd3682green=55bb55green(bold)=55bb55background=002b35red=dc322fred(bold)=dc322fyellow=e5d900
2015-04-28 10:02:41
921
转载 Hadoop2.5.0完全分布式配置(1主3从)
core-site.xml:<configuration><property><name>fs.defaultFS</name><value>hdfs://192.168.8.184:9000</value><description>same as fs.default.name</description></property><property><name>hadoop.tmp.di
2015-04-28 09:56:39
486
原创 vim保存折叠信息的方法
我经常使用的是手工折叠方式,就是 :set foldmethod=manual vim常用的折叠命令有: zf:折叠选定的行 zo:打开折叠 zR:打开所有折叠 zM:关闭所有折叠 zd:删除折叠 我个人最最常用的折叠方法是先将光标移动到左括号或者右括号,然后使用zf%来折叠一段代码有个常见的问题是:你打开了一个文件,做了很多折叠然后关闭文件,再次打开之后这些折叠信息都不见了。 在
2015-04-28 00:12:02
2368
原创 linux编译gcc-5.1.0
最新的gcc-5.1.0才发布出来,迫不及待地装上试一试。 在http://ftp.gnu.org/gnu/gcc/下载gcc-5.1.0 然后解压到目录gcc-5.1.0/ 运行 ./contrib/download_prerequisites 下载编译所需的依赖包 gcc依赖包有:m4-1.4.17.tar.gz,gmp-5.1.3.tar.gz mpfr-3.1.2.tar.gz
2015-04-28 00:04:00
1626
1
转载 酷睿i3、i5、i7 一代 二代 区别对比
酷睿i3和i5以及i7有什么区别?先来一起关注下i3与i5的区别:酷睿Core i3 i5 i7针脚区别 酷睿Core i3 i5 i7针脚区别酷睿i3和i5的区别是什么, 酷睿i3和i5哪个好?酷睿 i3可看作是酷睿i5的进一步精简版,将有32nm工艺版本(研发代号为Clarkdale,基于Westmere架构)这种版本。Core i3最大的特点是整合GPU(图形处理器),也就是说Core i3
2015-04-26 11:16:20
2028
转载 vi 排序
:[range]sor[t][!] [i][u][r][n][x][o] [/{pattern}/] 给 [range] 里的行排序。如果没有给出行范围,给所有行排 序。 带 [!] 则反向排序。 带 [i] 则忽略大小写。
2015-04-26 11:15:25
823
转载 shell 快捷键
| ctrl+x ctrl+a(ahead) | ctrl+e(end) ctrl+b(back) | ctrl+f(forward) 移动<<—————————————————
2015-04-26 11:14:37
436
原创 实现关闭ssh继续运行程序---tmux
问题1:为什么ssh一关闭,程序就不再运行了 元凶:SIGHUP 信号让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。 在Linux/Unix中,有这样几个概念: 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。 会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session lead
2015-03-15 21:33:40
2885
转载 将java源码打成jar包
方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files … 选项包括: -c 创建新的归档文件 -t 列出归档目录 -x 解压缩已归档的指定(或所有)文件 -u 更新现有
2015-03-15 20:37:17
453
原创 zsh命令提示符
在.zshrc中加入:PROMPT=$'[%{$fg[white]%}%n@%m%{$reset_color%} %~]%# '命令提示符为: [root@10-9-57-162 ~]# 或者:PROMPT=$'%{$fg[cyan]%}%* %D%{$reset_color%}|%{$fg[white]%}%U%n%u@%U%m%u%{$reset_color%}|%{$fg[yellow]%}
2015-03-15 20:21:03
1603
原创 .vimrc配置文件
set history=200000set autoindentset smarttabset pasteset nocompatible " 关闭 vi 兼容模式syntax on " 自动语法高亮set number " 显示行号set ruler " 打开状态栏标尺set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4set softtabstop
2015-03-15 20:17:58
638
原创 利用linux shell自动顶贴
在论坛上面发帖问个什么东西的话,一旦不顶,帖子就秒沉了,但是又实在不想每时每刻都去顶,怎么办?下面展示了如何利用shell 的crontab实现自动顶贴。闲话不多说了,以豆瓣为例—– 1: 用chrome打开豆瓣网页: 2: 利用右键–审查元素或者直接按F12来打开审查元素界面: 3: 随便写些什么话,然后点击”加上去” 可以看到审查元素的network界面上面有很多链接,最主
2015-03-15 15:34:31
1232
Effective TCP/IP
2014-08-25
C++网络编程 卷2
2014-08-25
C++网络编程,卷1
2014-08-25
programming ruby中文版PDF
2014-08-20
数学在程序设计中的应用(c++版)
2014-05-06
程序员的数学
2014-05-04
算法心得,高效算法的奥秘
2014-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人