c/c++
Alps
这个作者很懒,什么都没留下…
展开
-
大端小端
Big Endian 低地址 高地址 -----------------------------------------> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 12 | 34 | 56原创 2015-09-01 14:37:00 · 615 阅读 · 0 评论 -
动态库与静态库
一,区别静态链接是指在链接阶段直接把静态库加入到可执行文件中去,这样可执行文件会比较大。当程序与静态库连接时,库中目标文件所含的所有将被程序使用的函数的机器码被copy到最终的可执行文件中。这就会导致最终生成的可执行代码量相对变多,相当于编译器将代码补充完整了,这样运行起来相对就快些。不过会有个缺点: 占用磁盘和内存空间. 静态库会被添加到和它连接的每个程序中,而且这些程序运行时,原创 2013-02-27 12:52:47 · 576 阅读 · 0 评论 -
ar命令
ar1,使用 ar rv liba.a a.o b.o生成静态库2,之后需要使用ranlib liba.a来更新静态库的符号表。如果我们使用 GNU ar 工具来维护、管理静态库,我们就不需要考虑这一步。 GNU ar 本身已经提供了在更新库的同时更新符号索引表的功能ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照原创 2013-07-01 18:59:30 · 1317 阅读 · 0 评论 -
apue编译
准备:1,修改Make.defines.linux中的WKDIR2,std目录下面,修改linux.mk,将里面的nawk全部改为awk(有点不懂)编译问题:1,在ipp/ipp.h中定义了一个宏定义status和 /usr/include/i386-linux-gnu/bits/timex.h中的成员status冲突,修改ipp.h中的为Staus; 然后将apu原创 2013-07-01 19:14:36 · 961 阅读 · 0 评论 -
redis介绍相关资源
https://github.com/springside/springside4/wiki/Redis资料 ,最好的入门小册子,可以先于一切文档之前看,免费。作者Antirez的博客Redis 命令中文版, huangz同学的翻译。Redis设计与实现 ,又是huangz同学的巨作,深入了解内部实现机制。Redis 2.6源码中文注释版 ,继续是huangz同学的大功德。No原创 2013-07-01 10:02:27 · 898 阅读 · 0 评论 -
define可变参数
gcc支持:#define debug(format,args...) fprintf (stderr, format, args)c99中规定:#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)通常可写成:#define debug(format,args...)原创 2013-07-11 18:45:37 · 1274 阅读 · 0 评论 -
命名管道
当设置了O_NONBLOCK读open()会马上返回;写open()在没有读连接的情况下会直接返回出错。当没设置O_NONBLOCK时读open()会阻塞到写open()出现;写open()也会阻塞到读open()出现才返回原创 2013-06-19 13:24:28 · 670 阅读 · 0 评论 -
vimdiff
基本开启方式:vimdiff file1 file2vim –d file1 file2小技巧:~、在两个分隔的窗口之间切换快捷键:Ctrl+w ~、如果是想把另外一个文件中的内容复制到当前行,使用do快捷键,或者命令: :diffget~、如果想把当前差异段复制至另外一文件中,使用dp快捷键,或者命令 :diffput~、在比较和合并告一段落原创 2013-06-02 23:34:19 · 1195 阅读 · 0 评论 -
一些nginx资料
Emiller的Nginx模块开发指南中文版http://code.google.com/p/emillers-guide-to-nginx-module-chn/http://blog.codinglabs.org/articles/intro-of-nginx-module-development.htmlhttps://github.com/simpl/ngx_d原创 2013-04-08 13:22:55 · 737 阅读 · 0 评论 -
c library-stdio.h
文件操作:int remove(const char * filename ) 删除文件,成功返回0,错误返回errorno,可以从perror()获取详情int rename ( const char * oldname, const char * newname ); 重命名文件,若新文件已存在,运行结果取决于环境。返回同上。FILE * tmpfile ( void )原创 2013-02-28 22:13:18 · 560 阅读 · 0 评论 -
c-typedef
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。typedef char * pstr;typedef char Line[81];Line text, secondline;要点一typedef struct tagNode { char原创 2013-02-28 22:11:41 · 612 阅读 · 0 评论 -
makefile
http://www.cnblogs.com/liyanwei/archive/2010/04/29/1723931.html$@表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。$%仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就原创 2013-02-27 12:47:06 · 443 阅读 · 0 评论 -
TCP连接建立与关闭
http://hi.baidu.com/psorqkxcsfbbghd/item/70f3bd91943b9248f14215cdTCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的。建立一个 TCP 连接 TCP使用三次握手 ( three-way handshake )转载 2013-08-21 18:58:55 · 871 阅读 · 0 评论 -
rpm打包spec文件
http://www.php-oa.com/2010/05/11/linux-rpm-build.htmlrpm 说明:http://www.rpm.org/max-rpm/rpm macroshttp://fedoraproject.org/wiki/Packaging:RPMMacrosspec结构说明spec文件包含8部分The Preamble原创 2013-08-23 14:18:53 · 1659 阅读 · 0 评论 -
gcc 去除符号表
读取符号表readelf -p .dynstr mylib.so通过gcc控制可见性__attribute__((visibility("hidden"))) int foo(int a, int b);__attribute__((visibility("default"))) int foo(int a, int b);ndk中控制NDK_ROOT/原创 2015-07-03 17:41:02 · 12579 阅读 · 0 评论 -
内存布局
代码区:程序(函数)代码所在,由编译而得到的二进制代码被载入至此.代码区是只读的!有执行权限.代码区一般都从0x08048000地址开始(linux下).值得注意的是,字符串字面值(如"Hello World")就存储在这个区. 数据段和BSS段:合称静态区(全局区),用来存储静态(全局)变量.区别是 前者(数据段)存储的是已初始化的静态(全局)变量,可读写. 后者(BSS段)存储的原创 2014-05-26 19:12:17 · 660 阅读 · 0 评论 -
fflush与fsync的关系
#include int fflush(FILE *stream); #include int fsync(int fd); 1 fflush为C标准库函数, fsync为系统函数。2 参数fflush的参数为FILE*,fsync为文件描述符。3 功能fflush:把C标准库中的缓冲写到内核缓冲区fsync:将内核缓冲区的内容写入磁盘,所有的内容写入磁盘后才返转载 2014-03-23 22:22:46 · 1122 阅读 · 0 评论 -
c问题之交换两变量
方法1Template Void mySwap_1(T& a, T& b) { a = a+b; b = a -b; a = a-b; } 有可能溢出,但结果会是正确的,可用于浮点数或者整数方法2 Template Void mySwap_1(T& a, T& b) {原创 2014-03-20 08:53:14 · 578 阅读 · 0 评论 -
sizeof总结
1,求字符数组长度strlen只计算到\0为止,sizeof即使不关心\0,返回数组占用内存长度2,若是数组,返回内存长度,若是指针,只返回指针值长度(通常是8)int a[]={2,3,4}sizeof(a)输出12void func(int * a){sizeof(a)输出8}3,sizeof是操作符, 不是函数。如果是类型必须加括弧,如果是变量原创 2014-03-20 08:28:52 · 594 阅读 · 0 评论 -
如何学好C++语言
http://coolshell.cn/articles/4119.html昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相转载 2014-03-29 21:13:33 · 510 阅读 · 0 评论 -
strncpy
char *strncpy(char *s1, const char *s2, size_t n);但 strncpy 其行为是很诡异的(不符合我们的通常习惯)。标准规定 n 并不是 sizeof(s1),而是要复制的 char 的个数,不足用\n填充。一个最常见的问题,就是 strncpy 并不帮你保证 \0结束。char buf[8];strncpy( buf, "abcd原创 2013-02-23 16:06:21 · 468 阅读 · 0 评论 -
c语言字符类型总结
1,C中的字符串总是以\0结束,所以字符串的长度=字符数多+1char saying[]="Hello" 数组的长度为6 2,strcpy操作会包括终止\0 strncpy当源字符串大于要复制的字符数时,需要手动补\0 3,strlen不会包括\0,即strlen+1 5,输入scanf适合读取直到空格gets会原创 2013-02-20 12:17:59 · 713 阅读 · 0 评论 -
vfork相关问题
进程D状态说明:D:不可中断的深度睡眠,一般由IO引起,同步IO在做读或写操作时,cpu不能做其它事情,只能等待,这时进程处于这种状态,如果程序采用异步IO,这种状态应该就很少见到了.1,父进程执行vfork()后,父进程将进程D状态。直到子进程执行exec或者exit2,exec执行时,若可执行程序应权限问题,也会导致D状态。原创 2013-09-03 16:59:48 · 807 阅读 · 0 评论 -
c编译CPU优化资料
http://www.agner.org/optimize/原创 2013-08-23 14:54:50 · 969 阅读 · 0 评论 -
nginx开发
http://www.oschina.net/question/12_4180配置解析配置设定函数一般用来将配置文件中的参数传递给程序,并保存在配置结构体中。设定函数有三个入参: 1. 指向结构体 ngx_conf_t 的指针, 这个结构体里包含需要传递给指令的参数 2. 指向结构体 ngx_command_t 的指针 3. 指向模块自原创 2013-02-28 22:11:18 · 477 阅读 · 0 评论 -
nginx开发-数据结构
ngx_str_ttypedef struct { size_t len; u_char *data;} ngx_str_t;ngx_string(str)初始化一个字符串为str,str必须为常量字符串, 一般只用于声明字符串变量时顺便初始化变量的值。ngx_null_string声明原创 2013-02-28 22:10:49 · 638 阅读 · 0 评论 -
c-stdlib.h
字符串转换:double atof ( const char * str );int atoi ( const char * str );long int atol ( const char * str );double strtod ( const char * str, char ** endptr );除转换成double外,将数字后字符用endp原创 2013-02-28 22:09:50 · 485 阅读 · 0 评论 -
Linux 让进程后台运行的几种方法
http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作?我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本原创 2013-02-27 12:48:32 · 472 阅读 · 0 评论 -
C语言小知识
1,fprintf(stdout,"hello-std-out"); fprintf(stderr,"hello-std-err");stdout和stderr是不是同设备描述符。stdout是块设备,stderr则不是。对于块设备,只有当下面几种情况下才会被输入,1)遇到回车,2)缓冲区满,3)flush被调用。而stderr则不会。2,int a原创 2013-02-23 16:10:59 · 452 阅读 · 0 评论 -
c语言数字类型总结
C语言中的整型数据类型int、short int 和 long int 名称全称类型说明符缩写类型说明符 位数 范围整型intint16位 -32768至+32767 无符号整型unsigned int unsigned16位0 至 65,535 短整型short int short16位-32768至原创 2013-02-23 16:10:20 · 1064 阅读 · 0 评论 -
守护进程
1,创建子进程,父进程退出在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程时,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成init进程的子进程。2,在子进程中创建新会话进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,转载 2013-02-23 16:06:37 · 400 阅读 · 0 评论 -
指针与数组名的区别
1,每当用到数组名这个指针的时候,系统都会传入数组的信息,而普通的指针只是一个4字节的整数,例如:char a[5];char *p = a;//指针a和指针p都指向数组a的首地址cout 2,不能进行指针运算char a[];a = a+1;不行char *p = a;p = p+1是合法的指针能够进行加减法,原因并不是因为它是指针,加减法则不是属于指针这种原创 2013-02-20 13:46:41 · 595 阅读 · 0 评论 -
C++ namespace
命名空间成员的外部定义的格式为:命名空间名::成员名 // out.hnamespace Outer { // 命名空间Outer的定义 int i; // 命名空间Outer的成员i的内部定义 namespace Inner { // 子命名空间Inner的内部定义 void f() { i++原创 2013-02-20 13:44:56 · 545 阅读 · 0 评论 -
c++笔记
1,数组不能用另外一个数据初始化,如s1=s2;int ia2[](ia)2, 释放数组空间。delete [] pia原创 2013-02-20 13:17:03 · 449 阅读 · 0 评论 -
Visual Studio 2008快捷键
Shift + Alt + Ente - 全屏显示Shift + Alt + F10 - 打开用于实现接口的选项,继续按I可实现接口,按R则重命名Ctrl + R + E - 封装字段(VS 2008已经基本不需要该快捷键了,因为C# 3.0的自动属性 – Auto-Implemented Properties)Ctrl + J - 列出成员,仅包括代码提示Tab(原创 2013-02-20 13:23:44 · 572 阅读 · 0 评论 -
gcc
1,基本语法-o filename 输出文件-c 只编译或者汇编,但不链接,产生目标文件(一般用file.o) -E 预处理后即停止 -S 编译后即停止,不进行汇编,输出汇编文件 -Ldir 在`-l'选项的搜索路径列表中添加dir目录.-llibrary 连接名为library的库文件 -static 阻止连接共享库原创 2013-02-20 13:44:01 · 555 阅读 · 0 评论 -
ab测试结果说明
ab -n 1000 -c 50 http://www.baidu.comRequests per second: 108.61 [#/sec] (mean) #每秒请 求数(平均)//大家最关心的指标之一,相当于LR中的每秒事务数,后面括 号中的mean表示这是一个平均值即QPSTime per request: 460.381 [ms] (mean原创 2013-02-20 13:17:28 · 727 阅读 · 0 评论 -
c library-ctype.h
所有函数参数都为int c,c代表ascii里的值,函数再对这个值做出判断。isalnum 判断是否是字符+数字isalpha 判断是否是字符iscntrl 判断是否是控制字符isdigit 判断是否是数字isgraph Check if character has graphical representation (function) islowe原创 2013-02-27 12:51:22 · 505 阅读 · 0 评论 -
opencv安装
一,linuxhttp://opencv.willowgarage.com/wiki/InstallGuide_Linux依赖软件,按需所取:prerequisite-CMake 2.6 or higherprerequisite-pkgconfig 编译使用prerequisite-libpng, zlib, libjpeg, libtiff, lib原创 2013-02-27 12:52:10 · 684 阅读 · 0 评论 -
c library-stdarg.h
读取函数的可变参数列表可变参数函数:代表性的声明为: int check(int a, double b, ...); 可变参数函数最少要有一个命名的参数,所以 char *wrong(...); 在C中是不被允许的(在C++中,这样的声明是合理的)。C中,省略符号之前必须要有逗号;而在C++中,则没有这种强制要求。定原创 2013-02-27 12:50:39 · 626 阅读 · 0 评论