自定义博客皮肤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

没有迷路的人

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

原创 红黑树的插入与删除算法

一:旋转操作将几种情况之前先看一下旋转操作。1.rotate_left代码如下:void rb_tree::rotate_left(node_type* x) //x is the rotate point{ assert(x != nil_); node_type *y = x->right_; x->right_ = y->lef

2016-10-29 22:43:33 880

原创 redis入门笔记

我将自己今天一天所学到关于redis的重点写在这里。1.expire name 2   设置2秒过期,单位为seconds2.ttl name  查看生命期3.exists name查看是否存在4.expire name 1477571450利用时间戳设置过期,上面后面的数字是从1970年到目标时间的时间戳,通过命令行输入date +%s -d "Oct 2

2016-10-27 22:47:11 421

原创 muduo库的ThreadPool剖析

先上代码,然后分析:ThreadPool.h#ifndef MUDUO_BASE_THREADPOOL_H#define MUDUO_BASE_THREADPOOL_H#include #include #include #include #include #include #include #include namespace muduo{class T

2016-10-26 20:03:25 2235

原创 google的protobuf用法

一:安装地址是:https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz,wget一下就可以了。然后就是安装三部曲:1. ./configure  2.make   3.make check   4.sudo make install (额,多了第三步)不过安装后可能会报错,pro

2016-10-25 19:06:29 728

原创 muduo的Mutex类剖析

muduo的mutex_lock_guard()就是利用C++的RAII机制,完成互斥锁锁的自动加锁,解锁操作,解放双手。我们只需要用一堆大括号的控制互斥锁的范围就可以了。RAII(Resource Acquisition Is Initialization),也称为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析

2016-10-25 00:53:37 1704

原创 muduo库Thread类剖析

muduo库中的Thread类集合了所有线程的操作,其中还运用了线程安全的观察者模式。运用shared_ptr和weak_ptr做到了生命周期的管理。代码加注释如下:Thread.h#ifndef MUDUO_BASE_THREAD_H#define MUDUO_BASE_THREAD_H#include #include #include #include #in

2016-10-24 22:49:13 2491

原创 利用backtrace函数打印函数调用栈

我们一般打印函数调用栈可以选择GDB的backtrace命令,简写bt命令都可以。这里有一个新的方法,那就是利用backtrace函数打印,不过还要加上backtrace_symbols()函数。int backtrace(void **buffer, int size)该函数用于获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针列表。参数 size 用来指

2016-10-24 13:05:17 4694 1

原创 TCP_NODELAY和KEEP_ALIVE

TCP_NODELAY和Nagle算法有关,关系如下:TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据块来发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许

2016-10-23 22:10:44 911

原创 Docker入门笔记

一:什么是DockerDocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是Docker提出的"Build once,Run anywhere"Docker: 开

2016-10-23 10:16:47 584

原创 libevent的bufferevent剖析

1.什么是buffereventlibevent为输入输出缓冲区做出了一个抽象,这个抽象就是bufferevent。用来自动管理输入输出缓冲区,我们要输入输出就可以对bufferevent操作了。有数据写入bufferevent时,添加数据到输出缓冲区。bufferevent有数据供读取的时候,从输入缓冲区抽取数据。2.bufferevent结构体struct bufferevent

2016-10-21 18:59:16 2163

原创 vagrant配置linux以及nginx开发环境

一:安装VagrantVagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。所以,为了不想让我的vmware累死我的电脑,不想一遍又一遍的配置环境,我决定用vagrant了。1.安装vagrant首先要安装vitrualbox,网站是:https://www.virtual

2016-10-20 19:32:48 3070

原创 libevent的min_heap剖析

libevent到现在我已经剖析了8天了,有的心得写到了博客,有的没写,以后会慢慢更新。这次剖析libevent的min_heap,用来存放定时时间,它是一个最小堆构成的优先级队列,这样能保证我们每次取得超时时间最小的事件,按顺序处理。一切尽在不言中,给上代码,有注释。#ifndef _MIN_HEAP_H_#define _MIN_HEAP_H_#include "event.

2016-10-17 21:21:51 1341

原创 libevent的epoll模式剖析

接着上次的进度,上次剖析了事件处理框架,这次来剖析一下libevent的epoll模式是怎样实现的。首先来看evepoll结构体:struct evepoll { //epoll的读写操作 struct event *evread; struct event *evwrite;};这个结构体将I/O的读事件和写事件封装为一个结构体。epoll操作的结构体是epo

2016-10-17 14:17:10 3391

原创 libevent的event处理框架剖析

前几次剖析了libevent的tail queue和evbuffer,今天来剖析一下它的事件处理框架。这个在剖析evbuffer之前已经大致走过几遍,但思路不是很清晰,是因为我没有用实例去测试event流程。通过这次我学习到了剖析源码不仅要去看源码,而且你要测试它这项接口是怎么用的,不然只会似懂非懂。首先来看一下event结构体:struct event { TAILQ_ENTR

2016-10-14 13:33:49 5068 1

原创 libevent的evbuffer详解(含源码详细注释+测试用例)

前天剖析了libevent的事件链表tail queue,今天来剖析一下它的evbuffer。evbuffer是libevent中的缓冲区模块,支持读写数据,尤其是可以按行读取。特别是TCP这种基于字节流的数据,需要从字节流解析自己的通讯协议,借助缓冲区保存多余的数据,以便和下一次独到的数据合并分析。evbuffer对外提供的一系列接口函数简介,可以参考这篇博客:http://

2016-10-12 20:44:10 6681

原创 libevent中的tail queue详细分析

libevent库中第一个出现的问题就是它的event结构体用了tail queue,这个结构是在linux的/usr/include/sys/queue.h有定义,libevent库中防止未定义又定义了一遍。queue.h定义如下:#define TAILQ_HEAD(nam

2016-10-10 21:13:34 2222

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关注的人

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