自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

转载 python getopt使用

python中 getopt 模块,该模块是专门用来处理命令行参数的函数getopt(args, shortopts, longopts = [])参数args一般是sys.argv[1:]shortopts 短格式 (-) longopts 长格式(--) 命令行中输入:python test.py -i 127.0.0.1 -p 80 55 66python test.py -

2013-12-21 02:46:03 356

原创 thunderbird邮箱备份方法

1.      所有的邮件信息都保存在~/.thunderbird/*.default,更换电脑时备份这个就可以了。2.      有时可能多个default,通过vim  ~/.thunderbird/profiles.ini查看具体指定的是哪个default,所有的邮件内容都保存在这个default里面。下面是一个root用户的profiles.ini。它指定的是普通用户的邮箱内容,由

2013-08-01 10:13:31 2098

转载 删除代码中的注释

#define N 1024void delete_notes(char infilename[],char outfilename[]){ FILE* infp = fopen(infilename, "r+"); FILE* outfp = fopen(outfilename, "w+"); int flag = 0, flag1 = 1; char ch

2013-07-03 17:04:21 619

原创 链表操作

1.单链表逆序typedef struct node{ int data; struct node *next;}NODE;NODE *reverse(NODE * head){ NODE *p = head; NODE *q = head->next; NODE *r = NULL; while(q) { r =

2013-06-27 17:58:24 332

转载 Malloc内存泄露和内存越界问题的研究

Malloc内存泄露和内存越界问题的研究------内存跟踪与检测篇1.     引言熟悉c语言的人都知道,内存泄露,特别是内存越界是软件界非常棘手,甚至防不胜防的问题。由于这种问题一般为概率问题,时而出现时而不出现,这样给问题的定位分析带来很大的困难,后期排查的代价也比较大,因此,这个问题一直困扰着软件开发人员和软件界。不管多牛的技术高手,甚至技术专家都不敢拍着胸脯说,他负责

2013-06-18 19:29:16 1274

原创 二级指针的使用实例

/*main函数将一个空指针的地址(二级指针)传入多个子函数,每个子函数都需要添加新节点,形成链表,要求不改变首节点所指向的地址,*/typedef struct id_node_t{ int id; struct id_node_t *next; } ID_NODE_T;void test1(ID_NO

2013-06-17 17:39:46 570

转载 多线程编程

简单的多线程编程  Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。顺便说一下,Linux下pthread的实现是通过系统调用clone()来实现的。clone()是Linux所特有的系统调用,它的使用方式类似fork,关于clone()的详细情况,有兴趣的读者可以去查

2013-06-16 20:17:36 322

转载 volatile变量

volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 使用该关键字的例子如下: int volatile nVint; >>>>当要求使用volatile 声明的变量的值的时候,系统总是

2013-06-16 19:55:20 422

转载 编译宏

如果表达式BUFSIZE >= 1024成立,则…code…被编译。#if BUFSIZE >= 1024…code…#endif如果BUFSIZE被定义且BUFSIZE >= 1024,则…code…被编译。#if defined BUFSIZE && BUFSIZE >= 1024…code…#endif#if defined 等价于 #ifdef#if

2013-05-31 13:23:44 490

转载 可变参数函数和宏函数

格式化字符串,可变参数函数需要借助于va_list va_start va_arg va_end宏,可变参数宏需要借助于##.变参1:最后一个可见参数类型是intint add(int n, ...);int main(){ printf("%d\n", add(4,1,2,3,4)); /* 计算 1 + 2 + 3 + 4,第一个4,是4个数的意思 */ pr

2013-05-31 13:20:35 419

原创 指针强转

一级指针强转成二级指针,如void*到char**,用一句话理解,就是把一级指针所指的内存强转成char*.void main(){    void    *p = malloc(20);    memset(p,0,20);    char    **typed_p = (char **)p;        printf("p is 0x%08x\n",(unsi

2013-05-24 15:09:07 1148

转载 linux的补丁管理工具--quilt

2.1 基本概念quilt是一个帮助我们管理补丁的程序。quilt的命令格式类似于cvs:quilt 子命令 [参数] 0.46版的quilt有29个子命令。掌握quilt的关键是了解使用quilt的流程。使用quilt时,我们会在一个完整的源代码树里工作。只要我们在源代码树里使用了quilt命令,quilt就会在源代码树的根目录建立两个特殊目录:patches和.pc。quilt

2013-04-09 14:21:50 4297

转载 补码和取反

在计算机中,数值是以其补码保存的: 正数的补码和原码相同; 负数的补码:将该数的绝对值(即除符号位)的二进制形式按位取反再加1。举例:~0 = -1 (~运算符指对所有位取反,包括符号位)0 的机器码(原码):0|0000000000000000000000000000000-1的机器码(补码):1|1111111111111111111111111111111很明显,1|

2013-03-22 16:37:31 2139

跟我学makefile

跟我一起学makefile,写好mk文件,是软件开发大型工程的必备条件,清洗的pdf格式,书写详细。

2013-08-17

空空如也

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

TA关注的人

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