随笔分类 -  C/C++

Something about C/C++
nginx模块开发入门
摘要:1、编写源文件 2、在源文件的相同目录下编写config文件 3、执行configure脚本,并指定自定义模块的位置 4、执行make && make install 5、在nginx.conf的server{}配置块中增加以下配置: 6、启动nginx 7、模拟HTTP请求: 参考资料: 《深入理 阅读全文

posted @ 2016-12-02 18:31 han'er 阅读(2901) 评论(0) 推荐(0)

nginx源码解析之常用数据结构
摘要:1、基础数据结构(src/core目录) 1)ngx_list_t(ngx_list.h) 相关接口: ngx_list_create():创建新的链表。 ngx_list_init():初始化一个已有的链表。返回NGX_OK表示成功,返回NGX_ERROR表示失败。 ngx_list_push() 阅读全文

posted @ 2016-11-27 22:18 han'er 阅读(505) 评论(0) 推荐(0)

fcntl函数介绍
摘要:1、fcntl:manipulate file descriptor 1)简介:fcntl(file control)函数可执行各种描述符控制操作。 2)正确的使用方法(以设置“非阻塞”标记为例): 3)常用用法: (1)把一个套接字设置为非阻塞型:cmd为F_SETFL,flags“包含”O_NO 阅读全文

posted @ 2016-08-18 22:41 han'er 阅读(6224) 评论(0) 推荐(0)

C++11新特性之move与forward
摘要:1、左值与右值 一个备选的定义(有争议的地方):左值是可以用取址运算符&取得其内存地址的表达式;不是左值的表达式则为右值。 2、move:返回arg的右值引用。 template <class T> typename remove_reference<T>::type&& move (T&& arg 阅读全文

posted @ 2016-02-15 20:18 han'er 阅读(579) 评论(0) 推荐(0)

strace命令入门
摘要:1、strace:trace system calls and signals 1)简介:strace拦截并记录进程调用的系统调用,以及进程收到的信号。它是一个非常有用的程序诊断和调试工具。 2)用法: (1)示例1: 编译成a.out之后,再执行strace -T -tt ./a.out > /d 阅读全文

posted @ 2016-02-04 00:35 han'er 阅读(2283) 评论(0) 推荐(0)

Boost.Asio使用入门
摘要:1、概述:Boost.Asio是一个跨平台的C++库,用于网络和底层I/O编程,可以在I/O对象(如socket)上执行同步和异步操作。 2、简略的过程分析。以socket的连接操作为例: 你的程序中需要至少定义一个io_service对象:boost::asio::io_service io_se 阅读全文

posted @ 2016-01-27 00:13 han'er 阅读(30463) 评论(0) 推荐(4)

C/C++运算符进阶
摘要:1、转换运算符:一种特殊的类成员函数。定义该运算符后,编译器将在可以使用内置转换的地方自动调用它: 另外,“语言只允许一次类类型转换”。比如,对于Base1 b1(可转换为int)、Base2 b2(可转换为Base1)、Base3 b3(可转换为Base2),有: 1)b1 = b3; 不允许,需 阅读全文

posted @ 2016-01-16 19:11 han'er 阅读(168) 评论(0) 推荐(0)

valgrind使用入门
摘要:valgrind:a suite of tools for debugging and profiling programs 1)简介:Valgrind用于调试、分析Linux的可执行文件。 2)安装:yum install valgrind.x86_64 # yum search valg... 阅读全文

posted @ 2015-12-24 00:26 han'er 阅读(1430) 评论(0) 推荐(0)

C++11新特性之智能指针
摘要:1、shared_ptr:一种计数指针,被指向的对象在引用计数为0时删除。它表示共享的所有权(负责对象的删除销毁)。需要包含<memory>,下同。 // 定义删除器 struct Deleter { public: void operator() (Base *p) { cout << "[del 阅读全文

posted @ 2015-12-06 01:31 han'er 阅读(411) 评论(0) 推荐(0)

使用CppUnit进行单元测试
摘要:1、CppUnit:C++单元测试库。它是知名单元测试框架JUnit的C++版本。 2、下载和安装:从http://sourceforge.net/projects/cppunit/files/cppunit获取cppunit-1.12.1.tar.gz -> 解压得到cppunit-1.12... 阅读全文

posted @ 2015-09-06 22:01 han'er 阅读(1252) 评论(0) 推荐(0)

C++11新特性
摘要:0、使用C++11新特性,编译时需指定-std=c++11。 1、auto与decltype:自动类型推导。 如auto x = 7;,则推导x是int类型的。auto在类型难以确切知道或难以表达时很有用: auto的另一个好处是,使用它定义的变量都必须初始化。 decltype操作符用于取得操作数 阅读全文

posted @ 2015-07-24 00:33 han'er 阅读(496) 评论(0) 推荐(0)

C/C++内存分配
摘要:1、brk()和sbrk()// 成功时返回0,出错时返回-1并设置errno为ENOMEMint brk(void *addr);// 成功时返回先前的堆结束位置。出错时,返回(void *)-1并设置errno为ENOMEMvoid *sbrk(intptr_t increment); ... 阅读全文

posted @ 2015-06-02 02:47 han'er 阅读(6772) 评论(0) 推荐(0)

C/C++函数及函数指针
摘要:1、main函数的参数extern char **environ;int main(int argc, char **argv){ // 这里忽略对argc值的检查 printf("argv: %p, %s\n", argv[0], argv[0]); printf("argv... 阅读全文

posted @ 2015-06-01 17:42 han'er 阅读(762) 评论(0) 推荐(0)

C++ Boost入门
摘要:1、简介: Boost是一个同行评审、提供源代码、可移植的C++库。它可以与C++标准库完美地共同工作,并为其提供扩展功能。目前,有一部分Boost库已经被包含在C++标准委员会的程序库技术报告TR1中,并在即将到来的C++标准修订版本中加入。 2、下载、安装: 从http://www.boost. 阅读全文

posted @ 2015-03-12 20:51 han'er 阅读(6588) 评论(0) 推荐(0)

Linux系统的资源使用限制
摘要:1、getrlimit和setrlimit 每种资源都有相应的软限制和硬限制,如以下结构所定义的: 普通进程只能不可逆地降低它的硬限制(且不能小于软限制)。超级用户进程或具有CAP_SYS_RESOURCE能力的进程可以随意改变它的两个限制值。 RLIM_INFINITY值表示在一个资源上没有使用限 阅读全文

posted @ 2015-03-11 00:59 han'er 阅读(3884) 评论(0) 推荐(0)

C/C++链接过程相关
摘要:1、dlclose(), dlerror(), dlopen(), dlsym()等:动态链接加载器的编程接口。链接时需要指定-ldl。 1)dlopen():// 加载由filename指定的动态库文件,并返回其“句柄”// 程序中使用dlopen()多次加载同一个库时,返回相同的句柄// ... 阅读全文

posted @ 2014-04-08 20:39 han'er 阅读(1094) 评论(0) 推荐(0)

ELF文件格式及相关命令介绍
摘要:1、ELF文件简介 ELF(Executable and Linkable Format):一种对可执行文件、目标文件和库使用的文件格式。它在Linux下成为标准格式已经很长时间。由于ELF文件的存在,对所有体系结构而言,程序本身的相关信息以及程序的各个部分在二进制文件中编码的方式都是相同的。 EL 阅读全文

posted @ 2014-04-07 20:48 han'er 阅读(1586) 评论(0) 推荐(0)

中断及信号
摘要:0、部分参考自http://lexandros.blog.163.com/blog/static/1855665882012830058151/ 1、(1)中断:计算机在执行程序的过程中,当出现异常情况或特殊请求时,中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,再返回被中断程序的间断处,继续执行原程序。 硬件中断导致CPU通过一个上下文切换来保存执行状态(如程序计数器和程序状态字等寄存器信息);软件中断则通常作为CPU指令集中的一个指令,以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。 (2)中断的作用:中断在计算机多任务处理,... 阅读全文

posted @ 2014-03-10 22:17 han'er 阅读(3542) 评论(0) 推荐(1)

CPU亲和力
摘要:1、taskset:retrieve or set a processes's CPU affinity 1)CPU亲和力是一种调度特性,它将一个进程“绑定”到某个CPU集合上。当然,调度程序也支持天然的CPU亲和力,这意味着进程通常不会在CPU之间频繁迁移。 CPU亲和力可用位掩码表示,如0x3表 阅读全文

posted @ 2014-03-07 01:11 han'er 阅读(1627) 评论(0) 推荐(0)

深入探究C/C++基本数据类型
摘要:1、有符号数与无符号数之间在运算之前,会先把有符号数都“转换”成/当成无符号数。例子:int main(){ int a = -1; unsigned int b = 2; cout b) 2) #define ELEMENT_COUNT (sizeof(array) / ... 阅读全文

posted @ 2013-10-27 02:14 han'er 阅读(233) 评论(0) 推荐(0)

导航