自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FreeeLinux's blog

没有迷路的人

  • 博客(63)
  • 资源 (3)
  • 收藏
  • 关注

原创 线程安全的Mysql数据库连接池

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。本文中数据库连接池采用单例模式,数据结构采用list,当然你也可以用queue等数据结构。主要支持预分配连接,获得连接,释放连接,执行数据库语句

2016-11-30 10:20:37 3682

原创 STL拾遗之map操作

1.构造 template map(); // 默认构造函数 map(const map& m) // 拷贝构造函数 map(iterator begin, iterator end ); //区间构造函数 map(iterator begin, iterator end, const traits& _

2016-11-29 02:04:05 407

原创 C++操作mysql

1.首先需要安装mysql连接库,不知道为什么,网上都不说这个,害得我不知道连接库名字,找了半天。sudo apt-get install libmysql++-dev不过我这里默认你已经装过了mysql服务器。2.然后就可以写代码验证一下:#include #include int main(){ return 0;}未报错,就说明安装好了。

2016-11-26 15:44:19 629

原创 Makefile进阶

再也不能忍受自己写的无力的Makefile了,我昨天写的是这样子的:PS:为什么图中的字都是斜的,难道最近代码敲多了,近视了?虽然以前还学过一点依赖,但是忘了。我用上图中的水平编译上面几个文件,经常出现undefined reference,所以我今天就来治治它。下面我要分步骤进阶了:1.让make自动推导make很强大,他可以自动推导文件以及文件依赖关系后面的

2016-11-26 14:57:46 718

原创 C++使用jsoncpp解析json

jsoncpp的安装jsoncpp有依赖包,那就是scons。1.安装sconssudo apt-get install scons即可。2.安装jsoncpp 网址:http://sourceforge.net/projects/jsoncpp/files/步骤:tar -zxf jsoncpp-src-0.5.0.tar.gz cd jsoncpp-src-

2016-11-26 01:00:56 1057

原创 XML学习以及python解析xml笔记

一:什么是XMLXML是指可扩展标记语言(eXtensible Markup Language)。XML被设计用来传输和存储数据。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它是无标记语言,即定义了用于定义其他与特定领域有关的,语义的,结构化的标记语言的句法语言。三个属性分别是:version:版本en

2016-11-25 23:43:07 581

原创 tcpdump输出内容分析

我们就针对上图中所抓的这个包来进行分析。1.“tcpdump: verbose output suppressed, use -v or -vv for full protocol decode”这是说你命令没有用到-v和-vv,如果你用了这两个选项,输出就会有更多内容。2.“listening on eth0, link-type EN10MB (Ethernet), c

2016-11-25 14:26:21 11406

原创 tcpdump的基本用法之过滤表达式

上篇博客写了tcpdump选项的用法, 这篇博客我们来看一下过滤表达式。过滤表达式的man手册:man pcap-filtertcpdump在使用过滤表达式时,如有用了shell的通配符,需要用单引号引起来。情形1:只抓udp的包#tcpdump -i eth0 -c 10 'udp'情形2:只想查看源机器和目的机器的包# tcpdump

2016-11-25 14:06:16 13814

原创 tcpdump的基本用法之选项

tcpdump基本用法需要在root用户下使用,非root用户可用sudo。tcpdump -i eth1 -nn -X port 8080 -c 1-i:i 是interface的含义,是指我们有义务告诉tcpdump希望它去监听哪一个网卡。用ifconfig可以看到,一般不是eth0就是eth1。-nn:是当tcpdump遇到协议号或端口号时,不要将这些号码转换成对

2016-11-25 13:34:32 4349

原创 大型网站架构演变过程理解

web动静资源分离浏览器的请求分为静态资源请求,与动态资源请求。静态有:html文件,js脚本,css等。动态有:jsp,php等http服务器用来处理静态请求,应用服务器处理动态请求。分别可以称为前端服务器,后端服务器。随着网站访问量变高,可以采取缓存处理。1.客户端(浏览器)缓存,浏览器访问,先从缓存中获取页面。2.前端页面缓存,前端服务器可

2016-11-24 17:33:25 531

原创 高性能大并发服务器架构

一个典型的服务器结构主要由三部分组成网络I/O+服务器高性能编程技术+数据库一:网络I/O网络I/O方面,linux下面使用epoll,windows上面有IOCP,其他平台还有kqueue,dev/poll等机制。二:服务器及数据库的负载均衡1.数据库数据库可能会有以下几点需要解决:1.超出数据库连接数    假

2016-11-24 14:55:04 6973

原创 vagrant配置多机多节点

首先注意:在配置之前先把你的原来的虚拟机打包成box备份。否则你可能面临惨痛的代价。下一步,修改配置文件:# All Vagrant configuration is done below. The "2" in Vagrant.configure# configures the configuration version (we support older styles

2016-11-24 14:11:47 2093

原创 vagrant package打包box详解

首先,我们需要的到虚拟机的真实名称,因为虚拟机的真实名称可能和你起的名字是不一样的,方法如下:进入virtualbox安装目录,是virtualbox不是vagrantbox,我在这个问题上因为一眼之差浪费了老半天。那一长串字符串就是你的虚拟机真实名称了。vagrant package -hUsage: vagrant package [options] [name]O

2016-11-24 08:08:18 10769

原创 redis事务及锁应用、发布订阅模式

事务mysql和ridis事务对比:redis事务时执行命令放到了队列里。注:rollback与discard的区别如果已经成功执行了2条语句,第三条语句出错rollback后前2条语句影响消失。discard只是结束本次事务,前2句造成的影响还在。注:在multi后面的语句中,语句出错可能有2中情况1.语法就有问题这种exec时,所有语

2016-11-23 19:10:30 656

原创 reids的hash哈希数据类型操作

Hash哈希数据类型相关类型hset key field value把key中field域的值设为value注:如果没有field域,直接添加,如果有,则覆盖原field域的值hmset key field1 value1 field2 value2 field3 value3 ....设置field->N个域,对应的值是value->Nhget k

2016-11-23 18:17:42 661

原创 redis有序集合orderset操作

无序集合操作zadd key score1 value1 score2 value2 ...添加元素,score就是排序的依据zrange key start stop [withscores]将集合元素排序后,返回名次[start stop]的元素,默认升序排序withscores是取出的元素显示scoreszrangebyscore key mi

2016-11-23 17:51:23 1930

原创 redis集合set操作

单个集合操作sadd key value1 value2向集合中增加元素smembers key查看集合中的元素,由于集合的无序性,查看的元素可能和插入式顺序不一样srem value1 value2...删除集合中名为value1,value2...的元素返回值:忽略不存在的元素,返回真正删除元素的个数spop key返回并删除集合ke

2016-11-23 13:15:47 754

原创 redis的链表list操作

lpush key value将值插入到链表头部同理rpush。rpop key返回并删除链表尾元素,同理lpop。lrange key start stop返回链表中[start, stop]中的元素规律:左数从0开始,右数从-1开始所以查看所有元素可以使用:lrange key 0 -1lrem key count value从k

2016-11-23 12:05:08 712 1

原创 redis字符串string类型的操作

redis的SET命令是用来设置在redis键部分的字符串值。下面是我记录了大部分常用的字符串操作的命令:set key value [ex 秒数]/[px 毫秒数] [nx]/[xx]如:set a 1 ex 10,10秒有效注:如果ex px同时写,以后面有效期为准nx:表示key不存在时,执行操作xx:表示key存在时,执行操作mset mul

2016-11-23 11:19:02 787

原创 redis的通用key操作

一:查询获得键值:get keykey 操作主要有3个通配符,*  ?  [],*通配任意字符,?通配单个字符,[]通配括号内某一个字符例如:某键名site1.keys *查看所有的key,通配方式2.key s*3.key sit[ey]以上三种方式,都可以返回key site。还有一些key的基本操作:

2016-11-23 09:23:39 801

原创 Mysql索引概念和存储过程

索引索引算法1.二叉树索引,时间复杂度O(lgN)。2.哈希表,时间复杂度O(1)。索引原则:1.不过度索引2.索引条件列(where后面最频繁的条件比较适宜索引)3.索引散列值,过于集中的值不要索引。例如:给“男”“女”索引,意义不大。索引缺点:降低了增删改的速度(update/delete/insert)增大了表的文件大小(索引文件甚至可能比

2016-11-22 21:26:16 1294

原创 Mysql备份与恢复

备份系统运行中,整体备份、增量备份例如:每周日整体备份一次,周一到周六备份当天如果周五出了问题,可以用周日的整体备份 + 周一、二、三、四来恢复。备份的工具:有第三方收费备份工具及系统自带工具->mysqldump。mysqldump可以导出库,也可以导出表。导出方法:mysqldump -u用户名 -p密码 库名 表1 表2 表3  >

2016-11-22 19:59:48 348

原创 Mysql存储引擎与事务

存储引擎:数据库对同样的数据,有着不同的存储方式和管理方式。在Mysql中,称为存储引擎。常用的表的引擎:Myism   InnoDB    BDB   Memory  Archive、常见存储引擎特点:Myisam:批量插入速度快,不支持事务Innodb:批量插入速度较慢,支持事务声明举例:mysql> create t

2016-11-22 18:52:12 1406

原创 Mysql触发器用法

触发器(trigger)触发器(trigger)是个特殊的存储过程,它的调用不是由程序员调用,而是由事件触发的。比如insert --> 触发 update 操作。触发器可以用来监视某表的变化。当发生变化时,触发某个操作。应用场景,一般用在业务逻辑不可分割的场景。比如下了订单,库存就必须减少。相当于这些操作是原子的。触发器能监视:增、删、改触发操作:增、删、改

2016-11-22 17:16:10 445

原创 Mysql视图用法

视图:view如果某个查询结果出现的非常频繁,也就是,靠这个结果当做进行子查询出现的非常频繁。类似于下面这两句的思路,我们想把结果保存到表里,供下次查询用。create table g2 like goods;insert into g2 select ....视图的定义:视图是由查询结果形成的一张虚拟表。视图的创建关键在于select语句上

2016-11-22 12:26:01 397

原创 Mysql数据表管理之列的增删改

回顾建表语句create table 表名 (列名称 列类型 [列属性] [默认值],      //例如primary key auto_increment列名称 列类型 [列属性] [默认值],      //建表就是一个列声明的过程列名称 列类型 [列属性] [默认值],);先说修改表名:alter table 表名 rename 新表名;

2016-11-22 02:28:50 429

原创 Mysql连接查询

关系数据库,是建立在关系模型的基础上的数据库,借助于集合代数等数学概念上的方法来处理数据库中的数据。集合相乘,笛卡尔积,起始就是两个集合的完全组合。设集合A有M个元素,M个元素各不相同。设集合B有N个元素,N个元素各不相同。 A*B得到的积,M*N个元素,不可能重复。集合相乘用逗号表示:select * from ta,tb;      ta表*tb表。下面进入正题:左

2016-11-22 02:06:55 423

原创 Mysql子查询、UNION操作

子查询:1.WHERE型子查询指把内层查询的结果作为外层查询结果的比较条件。例如:我们查询一个货物id的最大的那一个值可以通过order by来查询,如:那么,如果不能用order by呢,我们可以用where子查询来解决:和group by组合成的子查询:select goods_id,cat_id,goods_name from go

2016-11-21 23:16:32 2048

原创 Mysql查询命令select以及子句分析

查询:(1)where子句select name from 表名 where 表达式select name from 表名 where name like 'Nokia%‘;       //再次强调like 模糊匹配只有%和_,分别表示多个个一个,所以正则表达式更强大!(2)group子句一般用在统计场合。和聚合函数一起用。select max(shop_

2016-11-21 19:56:17 1069

原创 mysql增删改命令

1.首先创建一张表:create table php313 ( id int primary key auto_increment,      //设置id为主键自增长          name char(3) not null default '',          //name设为char(3),指的是字符,不论是汉字和是字母,都只能有三个

2016-11-21 14:17:54 408

原创 Mysql常用命令及数据类型

一:入门语句1.创建数据库  (数据库名字不能修改)create database php;  创建一个名为php的数据库2.创建数据表create table class ( stu int, name varchar(6), age int );      创建了一个class表,学生int型,名字varchar型,年龄int型。3.删除数据库drop

2016-11-21 01:32:11 752

原创 Mysql快速复习(四)--分组数据

一.分组数据MySQL如果要返回特定检索的数据怎么办?或者只返回特定供应商所提供的产品怎么办?那就分组吧!1.创建分组在具体使用GUOUP BY子句前,需要知道一些重要的规定。(1)GROUP BY子句可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更细致的控制。(2)如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组上进

2016-11-20 17:19:12 476

原创 Mysql快速复习(三)--计算字段、处理函数、汇总数据

一:创建计算字段1.拼接:将值联结到一起构成单个值了用concat()函数来拼接两个列,

2016-11-20 16:27:01 698

原创 C++调用Python的工具类

最近参考了别人的C++调用python方法,我把它封装成了一个pyinit的工具类。这样可以使我们在主函数中,只需很少的几步就可以完成python的调用。pyinit.h#ifndef _PYINIT_H#define _PYINIT_H#include typedef PyObject py_object; //这个替换是我的个人习惯,我很少用大写的class

2016-11-20 12:48:58 630

原创 Mysql快速复习(二)正则表达式

本文使用的表还是上一个表:一:使用mysql正则表达式mysql的like只有%和下划线_,regex功能更强大。其中like要求整个数据都要匹配,而REGEXP只需要部分匹配即可。也就是说,用Like,必须这个字段的所有内容满足条件,而REGEXP只需要有任何一个片段满足即可。1.select id from elec where id regex

2016-11-20 00:39:57 657

原创 Mysql快速复习(一)基础

下文数据库名选用meter,表名选用elec。如图:一:基础1.选择数据库  use meter;  分析:use语句并不返回任何结果,依赖于使用的客户机,显示某种形式的通知。2.显示数据库  show databases;  显示数据表:show tablels;3.显示表列  show columns from elec;

2016-11-19 23:30:13 512

原创 自己关于C++多线程中对象生命的总结

这几天在写自己项目的日志组件,但是遇见了一个很严重的问题。就是关于多线程中对象生命周期的问题。问题是这样的:首先说明我的日志组件一共有两个类:block_queue、log,block queue是用来支持日志异步写日志的。在我打算写一个自己用的日志组件的时候,我想用到我之前已经封装好的thread类,以及用mutex和condition类来实现线程同步。在我把代码大概写好了之后。日志

2016-11-19 20:41:11 1868

原创 valist、vsnprintf、snprintf、localtime分析

今天写一个日志类,不过目前还有bug。condition的destroy不知道怎么的死锁了,之前测试很好的,并入其他模块就不能工作了,我的想办法调试一下,毕竟多线程程序不好调试。先来分析一下今天用的这几个函数,其实以前看libevent,muduo这些函数都出现过,不过学了又忘了,这次总结一下。1.valistC语言标准库中头文件stdarg.h声明了一组能够变长参数的宏。主要

2016-11-17 01:28:01 1413

原创 62. Unique Paths

A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the

2016-11-16 00:10:26 401

原创 102. Binary Tree Level Order Traversal

PS:这是我真正意义上一次AC的第一道题,以前出现过的虽然程序没问题,但是可能有手误打错出现编译错误,然后轻松修改提交。这次连手抖都没有了:)Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).Fo

2016-11-15 20:27:20 331

muduo网络库

如果你用其他的编译不通过,就用这个吧。

2016-12-01

MySQL-python-1.2.5.win64-py2.7.exe

有效解决安装mysql-python时遇到的error: Unable to find vcvarsall.bat问题,以及 %1 win 32 问题

2016-09-20

valgrind-3.10.1

Linux内存泄漏检测工具

2016-08-11

空空如也

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

TA关注的人

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