自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 C++ 模板基础知识

1.  模板定义1.1   函数模板函数模板是一个独立于类型的函数,可作为一种方式产生函数的特定版本。模板定义以关键字template开始,后接模板形参表(不可为空)。模板的形参可以分为:类型形参和非类型形参,编译器会为我们推测出用什么类型绑定类型形参以及用什么值绑定非类型形参 函数模板可以声明为inline,说明符放在形参表之后,返回类型之前,不可放在template之前

2015-02-03 17:31:30 634

原创 自动化编译工具(autotools系列工具)使用实例

1. 引言我们在学习和使用很多开源软件的时候,会发现其源码中并不总是有现成的configure文件和makefile文件,而是需要先执行一个安装脚本。例如,SOHO-DBproxy中,使用build.sh完成编译安装:sh autogen.shbash ./configure --prefix=${MYSQL_PROXY_INSTALL_PATH} --with-mysql=${MYS

2015-01-19 12:17:59 1483

原创 SOHO-DBproxy源码分析-- proxy plugin配置加载

1.配置加载int network_mysqld_proxy_plugin_apply_config(chassis *chas, chassis_plugin_config *config);这是proxy plugin配置加载函数。proxy plugin的配置通过一个指针指向主配置config->chas = chas; //config的类型为chassis_plugin_conf

2015-01-16 11:43:39 1308

原创 epoll模型添加inotify事件的代码实现

#include #include #include #include #include #include struct inotify_data_type{ int fd; char self_type[16];};int main(int argc,char* argv[]){ if(argc < 2) { return 1;

2015-01-12 10:10:45 2425

原创 Posix管道基本知识

1. 基本信息管道是最早的IPC形式,一般可以分为管道和FIFO(命名管道)两类,使用通常的read和write进行读写。管道可以分为全双工和半双工管道。不同版本的Unix提供了不同的实现。SVR4的pipe创建的为全双工管道,而posix1标准则为半双工管道。一般是先全双工管道使用socketpair函数较为可靠。2. pipe、popen、pclose#include int p

2014-12-23 15:43:21 1231

原创 Posix共享内存区基础知识

1. 基本信息共享内存区是可用IPC中最快的,一旦其映射到共享它的进程的地址空间,进程间的数据场地就不再涉及内核(无需系统调用传递数据)。普通的客户-服务程序涉及的步骤:服务端读文件—》服务端写入IPC—》客户端读IPC—》客户端写入文件而使用共享内存:服务端将文件读入共享内存对象—》客户端从共享对象写入文件。2. mmap、munmap和msync函数#inc

2014-12-22 23:08:06 614

原创 EPOLL的内核实现

1. select/poll的缺点     A. 每次调用时重复的从用户态读入参数     B. 每次调用时全量的扫描文件描述符     C. 每次调用开始,将进程加入到每个文件描述符的等待队列,在调用结束后又把进程从等待队列中删除。     D. 在不修改内核的情况下,select最多支持1024个文件描述符。     2. 文件系统中的一些重要结构在linux中,进

2014-12-17 15:20:22 3246

原创 Posix信号量基本知识

1. 引言信号量包含一个非负整型变量,其包含一对原子操作,即P/V操作。P操作:若信号量非负,则P操作将信号量值减1;若信号量为0,则P操作将执行wait操作。V操作:将信号量值加1。Linux包含两类信号量:信号量可分为Posix信号量和System V信号量。今天我们主要学习一下Posix信号量,其有两类形式:命名信号量和无名信号量,其主要区别在于创建和销毁的形式。命名信号

2014-12-15 23:32:00 2447

原创 Linux进程基本知识

1.基本概念进程是资源管理的最小单位,而线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程的主要目的:更好的支持SMP以及减小(进程/线程)上下文切换的开销。针对线程模型的两大意义,分别开发出了核心级线程(For SMP)和用户级线程(For 上线文切换)两类线程模型,其分类标准主要是线程的调度者是核内还是核外。很多系统都着重于开发混合模型,而Linux没有这种打算。Linu

2014-12-07 21:39:17 554 1

原创 Libevent基本应用实例--专为懒人定制

本段代码不保证可编译,甚至不保证正确性,仅仅给出使用的简单示例,懒人各取所需:#define MAX_ARG_LENGTH 1024/** * Http server callback */void http_handle(struct evhttp_request *request,void *data){ if( EVHTTP_REQ_GET == request->t

2014-12-05 10:43:00 1021

原创 C++基础(五)

1. 顺序容器1.1 容器的定义和初始化

2014-11-03 14:41:24 345

原创 C++基础(四)

1. 类的定义编译器一般分两步处理类:首先编译成员的声明,然后

2014-11-01 19:59:08 470

原创 C++基础(三)

1.左值和右值当一个对象被用作右值时,用的是对象的值;但

2014-10-25 00:11:39 428

原创 C++基础(二)

1.命名空间的using声明

2014-10-23 17:47:03 405

原创 Memcached 基础知识

1. 基本信息 memcached是高性能的分布式内存缓存服务器,

2014-10-14 22:14:44 2700

原创 C++ 基础(一)

C++定义包括算数类型和空类型在内的一套

2014-10-12 20:28:44 417

原创 Atlas源码学习(五)

线程模型1. 基本的数据结构  Atlas通过

2014-09-28 15:10:34 713

翻译 hls协议中m3u8文件tag总结

1.  引言本文档主要描述了“如何传输无边界多媒体数据流的”的协议的规范和实现细节。该协议支持加密媒体流和统一流得多版本自适应(多码流自适应)。在该协议下,媒体数据在生成之后会立即进行传输,进而保证其具有接近实时播放的效果。数据的传输建立在HTTP协议的基础之上。 其他相关参考文档将在第11节中给出。 2.  总结任意多媒体流将由只想某播放列表文件的URI表示,该文件由一个

2014-08-22 17:07:06 8286

原创 Atlas源码学习(四)

部分数据结构描述:

2014-05-21 10:53:38 1356

原创 Atlas源码学习(三)

Atlas在基本的配置结束后,就进入到int chassis_mainloop(void *_chas)

2014-05-08 15:39:32 1060

原创 Atlas源码学习(二)

通过如下代码就可以得到key的值:GKeyFile* config = g_key_file_new();g_key_file_load_from_file(config,"config.ini",G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS,NULL);//此时,相应的数据已经加载到config对象中gchar* test

2014-05-08 14:40:41 1170

原创 Atlas源码学习(一)

最近手头的工作基本已经结束,zhunbei

2014-05-06 22:43:37 2864

原创 使用rpmbuild构建rpm安装包

RPM(Red Hat Package Manager)是用于 Linux分发版(distribution)的最常见的软件包管理器。因为它允许分发已编译的软件,所以用户只用一个命令就可以安装软件。  1、  基本概念RPM包命名方式:name-version-release.architecture.rpm ,如indent-2.2.6-1.x86_64.rpm,libeven

2014-03-04 13:22:52 7397

原创 UNIX环境编程速记-第三章

3.1 引言不带缓冲的I/O:每个read和write都调用内核中的一个系统调用。3.2 文件描述符文件描述符0对应标准输入,文件描述符1对应标准输出,文件描述符2与标准错误输出相关联。在POSIX的应用程序中,0、1、2对应符号常量STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,定义在头文件中。文件描述福的

2013-12-18 15:35:51 488

原创 shell命令行常用快捷操作

shell的一些快捷键1.自动补齐: Tab键2.查找和执行历史命令: Ctrl + R 检索历史命令(边输入边匹配);Ctrl + P 快速前滚查找一个命令;Ctrl + N 快速后滚查找一个命令3.取消本次命令输入:Ctrl + C (保留命令行已经输入字符,但不执行)4.光标跳转快捷键:Ctrl + A 跳转至命令行首部;Ctrl + E

2013-11-27 15:37:57 731

原创 linux系统下库函数和系统调用都对文件的基本操作

1.linux 系统调用linux系统调用的I/O操作主要涉及到五个函数,open、read、write、close 和lseek。涉及的头文件,linux系统的文件操作符为一个0-OPEN_MAX之间的非负整数,其中:0:STDIN_FILENO  标准输入1:STDOUT_FILENO 标准输出2:STDERR_FILENO 标准错误int op

2013-10-14 14:55:28 750 1

原创 libevent源码学习-第四天

该文件包含libevent内部处理http请求的相关定义。希望基于libevent建立一个http服务器对象,需要使用该文件中的部分定义。但是,相关的结构体在http.h中已经有了声明,因此对于该文件中的内容可以不必了解。 http服务器对象的结构如下: struct evhttp {    TAILQ_ENTRY(evhttp) next_vhost;     /

2013-08-13 00:08:40 642

原创 libevent源码学习-第三天

& 提供了各个接口函数void event_enable_debug_mode(void)打开debug模式,跟踪程序的运行。该函数会打印出:1,事件重复添加;2,函数在事件添加前执行。我们需要知道以下几个常用宏:__func__ ,指明当前执行的函数名;__FILE__ , 指明当前执行的文件;__LINE__ , 指明当前执行程序所在的行号。

2013-07-31 01:02:49 641

原创 libevent源码学习-第二天

该文件中包含了struct eventop,以及struct eventbase等结构。//封装了对event_base的操作struct eventop{const char* name;void* (*init)(struct event_base*);int (*add)(struct event_base*,evutil_socket_t fd,

2013-07-29 21:50:01 623

原创 libevent源码学习-第一天

定义了所需要的数据结构:struct event#define TAILQ_ENTRY(type)struct {struct  type  *tqe_next;struct  type  *tqe_pre;}#endif可以指向任意类型的的一个双向列表节点,避免用户使用头文件libevent通过双向链表管理全部的事件,包括三个链表结构:I/

2013-07-28 08:24:42 603

空空如也

空空如也

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

TA关注的人

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