自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(35)
  • 收藏
  • 关注

转载 C中宏展开问题

C中宏展开问题简单记录一下碰到的问题。#define STR(x) #x我们知道使用上面的宏可以将x转换为字符串"x"。但是如果这样用:#define NUM 3#define STR(x) #xSTR(NUM) --> 实际输出为:"NUM".这是为啥呢?C99标准中有一段话:... After the arguments for the invocation...

2014-12-09 16:48:00 118

转载 C语言中的命名空间

C语言中的命名空间命名空间是为了解决 “在相同作用域内如何区分 相同的标识符”。说明:①只有在相同作用域的情况下才能使用到命名空间去区分标识符,在嵌套的作用域、不同的作用域区分标识符都用不到命名空间的概念。②在相同的作用域内,如果命名空间不同,标识符可以使用相同的名称。否则,即如果命名空间不同,编译器会报错,提示重复定义。按照C99(章节6.2.3),命名空间可以分为四种:...

2014-12-09 14:36:00 324

转载 c语言中赋值语句的结果

c语言中赋值语句的结果最近在看《C语言接口与实现》,在第一章就发现一个以前很少用到的用法。在实现strcpy函数时,书中给出了两种实现。//version 1, 使用数组实现(新手惯用)char *strcpy(char dst[], const char src[]){ int i; for(i=0; src[i]!='\0';i++) dst[...

2014-12-08 12:40:00 653

转载 Python一些难以察觉的错误

Python一些难以察觉的错误今天把微博的收藏夹打开,发现以前很多收藏的好文章还没有细细研究,今天开始要慢慢研究总结总结。今天看的这篇文章地址:http://blog.amir.rachum.com/blog/2013/07/06/python-common-newbie-mistakes-part-1/http://blog.amir.rachum.com/blog/2013/0...

2014-11-25 10:11:00 130

转载 C语言中的内存压缩技术

C语言中的内存压缩技术前言在整个研究生阶段我都在参与一个LTE协议栈实现的项目,在这个项目中,我们利用一个自己编写的有限状态机框架将协议栈中每一层实现为一个内核模块。我们知道,在编写内核代码时需要考虑内存的使用情况,如果使用内存超出了限制会导致Linux内核崩溃。在我负责的模块中,有的结构体定义非常庞大(几k到十几k),这么大的结构体对于内核编程来说显然有点太大了(在使用内核栈时,有...

2014-11-21 00:12:00 376

转载 简述数据结构:二叉查找树

二叉查找树的性质当一棵二叉树满足下面条件的时候就成了二叉查找树:对于树的任意一个节点,左儿子的值比右儿子小(或者反过来也行)。二叉查找树本质还是二叉树,因此也具有二叉树的性质。二叉查找树的操作1. 判断某元素是否在树中:contains这个操作比较简单,递归查找树根.//公有函数contains通过调用私有函数contains递归查找。bool contains(const...

2014-08-10 20:32:00 56

转载 指针与指针的引用、指针的指针

指针与指针的引用、指针的指针本文简单辨析一下C/C++中的几个概念。指针在C和C++中都存在指针的概念。指针的本质:一个变量。指针的类型:指针类型(与指向的类型有关)。指针的内容:地址。如:int a = 1;int *pa = &a;简单来说,指针也是一个变量,如上中的pa是一个指针变量,这个变量所存的内容是变量a的地址,pa的值如果输出出来大概是这个样...

2014-08-10 20:30:00 67

转载 C++ 中的virtual关键词

C++ 中的virtual关键词动态绑定所谓动态绑定,我的理解就是一个函数在调用之前无法得知参数的具体类型(基类还是派生类)。C++ Primer上描述了两种动态绑定的情况:要触发动态绑定,必须满足两个条件:一、指定为虚函数的成员函数。二、通过基类类型的引用或指针进行函数调用。基类和派生类的关系派生类是由基类派生而来,其包含基类的所有内容,并进行扩展和修改(覆盖)。比如对基...

2014-08-05 19:41:00 49

转载 C++中模板函数或模板类中关键词class和typename

##区别基本上来说,class和typename几乎没有区别。在可以使用class的地方都可以使用typename,在使用typename的地方也几乎可以使用class。可以看出我加黑了两个子:几乎,这说明二者还是有一定区别的。先看下面的代码:template <class T> class Collection{ public: bool c...

2014-08-04 19:21:00 225

转载 【开源马拉松】写在前面

最近一段时间一直在看有关Nginx的资料以及Nginx的源码。看开源源码的目的主要是学习,学习别人的设计思想,学习别人的编码技巧。另外也开始自己的个人开源项目的规划。 我给自己划定的开源软件学习集中在C/C++和Python语言。因为我想泛不如精吧,集中精力把这几个搞好,以后接触其他语言的项目也应该可以游刃有余了。 C语言目前的开源项目就是Nginx,Python项目先看看与Ngin...

2014-05-19 16:38:00 52

转载 C中的回调函数

C语言中应用回调函数的地方非常多,如Nginx中: struct ngx_command_s { ngx_str_t name; ngx_uint_t type; char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *co...

2014-04-24 11:11:00 70

转载 C语言有关数组的几点

动态大小数组 先来看一段代码: int n = 3; int a[n]; int i; for(i=0;i<n;i++) { a[i]=i; printf("%d\n",a[i]); }我在声明数组a时,使用了一个变量n,这看起来似乎有问题,但是实际上C99中支持这...

2014-04-19 19:45:00 86

转载 C语言预处理操作符

在看《深入剖析Nginx》时看见一个非常少见的C语言知识点:预处理操作符。 #define conn(x,y) x##y //将子串x和y连接形成新的串#define tochar(x) #@x //将x用单引号包裹,形成一个const字符#define tostring(x) #x //将x用双引号包裹,形...

2014-04-16 20:33:00 133

转载 Python 中使用optparse进行参数解析

使用过Linux/Unix的人都会知道,命令行下的很多命令都需要参数,在C语言中添加和解析参数比较繁琐。Python中提供了optparse模块可以非常方便地处理命令行参数。 1 命令行参数的样子 我们一般在使用命令行程序的时候,可能会看到大约这样的样子(这是我写的一个简单命令行帮助列表): Usage: run.py [options] argsOptio...

2014-04-12 21:42:00 134

转载 zlib导致Ubuntu登录管理器失效

ubuntu版本:10.04 现象:开机之后无法启动登录管理器。 原因:zlib与登录管理器冲突。 解决:卸载zlib。转载于:https://www.cnblogs.com/jaletech/p/3654986.html...

2014-04-09 20:06:00 1092

转载 算法导论:二叉堆

1、二叉堆的定义。二叉堆是按照二叉树进行组织和操作的数组对象。二叉堆节点i的左儿子为节点2i,右儿子为节点2i+1,且i节点值总是大于等于它的两个儿子。二叉堆是数组的一部分,堆大小heap_size<=length[A],heap_size之后的数组元素不属于二叉堆。计算左右子节点的过程可通过移位操作来完成,且一般用宏或内联函数完成。2、...

2014-04-01 23:21:00 102

转载 【Nginx 1】Nginx 的下载和安装

今天正式开始学习Nginx。Nginx是一个著名的轻量级Http服务器,目前已经有很多知名网站使用Nginx作为服务器。因为Nginx是开源的软件,因此对于开发人员和学习者来说都是一个大宝藏。 首先,下载Nginx源码。我使用的是Ubuntu 10.04,当然Nginx现在有windows版本,但是其实在工程中大多都是用Linux版本。 $ wget http://nginx....

2014-03-28 14:09:00 66

转载 <Think Complexity> 用字典实现图

今天在图书馆闲逛的时候偶然看见《Think Complexity》(复杂性思考)这本书,下午看了一会儿觉得很有意思。本书第二章讲的是用Python实现的图,特别写篇博客记录。 首先,图有两大元素:顶点和边。分别用Vertex和Edge类来描述顶点集和边集。 顶点集:Vertex class Vertex(object): """A Vertex is a...

2014-03-07 21:33:00 110

转载 终于又可以用WLW了.

前面有一段时间没有写博客,然后过完年想继续用WLW的时候,出现问题了。 An unexpected error occurred while attempting to detect weblog settings:Unable to cast COM object of type ‘mshtml.HTMLMetaElementClass’ to interface type ‘msh...

2014-02-24 22:11:00 81

转载 Python 的列表解析和生成表达式的异同

Python中的列表解析和生成表达式是非常好的特性,他们的形式相似,但是应用场景不太一样。 相似点 列表解析和生成表达式最大的相似点是使用形式: [expr for iter_var in iterable if cond_expr] #列表解析 (expr for iter_var in iterable if cond_expr) ...

2014-02-20 16:52:00 70

转载 用yunio网盘搭建git私有仓库

研究生开始奔波于教研室和寝室之间,于是想搭建一个git私有仓库来管理自己在做的项目或者学习资料。一来可以很方便的管理项目,二来可以学习使用git。我的主要工作平台是Linux,这也是我选择yunio网盘的原因,因为它能比较完美地支持多平台。话不多说,开始….. 安装git,很简单。 $sudo apt-get install git-core 下...

2014-02-20 15:16:00 108

转载 git 学习笔记1

目前我属于粗放型的【学习者】,接下来需要做一些改变,让自己更加规范。首先需要学习的就是版本控制系统,本科在工作室的时候使用过一点Subversion,不过到现在已经基本没有印象了。git现在越来越成为一种潮流,这也是我选择学习git的原因。 首先,在ubuntu下安装git非常简单。 $ sudo apt-get install git-core创建一个目录用来试用...

2014-02-19 16:38:00 72

转载 select函数

axel中的axel_do函数中使用了select()函数,碰巧我正在看UNP的第六章讲的也是select函数,所以简单总结一下。 这里先列出axel_do函数中使用的select。 FD_ZERO( fds ); hifd = 0; for( i = 0; i < axel->conf->num_connections; i...

2013-10-28 22:29:00 87

转载 axel源码学习(1)——重要流程细节

前面一篇文章的流程太过于简单,基本没有触及到axel的核心,因此本文将要把axel中的几个重要的主要的操作流程单独弄出来看看,还是按照main函数的执行顺序来展开,略去错误处理之类的流程仅仅着眼于最重要的内容。 命令参数解析 命令参数解析的源码用switch-case语句实现非常清晰明了,只要对照axel的用法很容易看懂,因此这里不再详细分析了。 search 前面说过,a...

2013-10-27 11:13:00 164

转载 axel源码学习(0)——程序逻辑

axel简介 axel是一个命令行下的轻量级http/ftp 下载加速工具,支持多线程下载和断点续传,支持从多个镜像下载同一文件。 axel的用法如下: 图 0.1 axel usage axel 粗读 一、源码阅读准备 首先需要了解axel的用法,实际上参数选项比较少,简单看一下就能明白。在阅读源码的时候有时候需要回过头看一看选项的作用,使得代码更加容易看懂。另...

2013-10-26 11:05:00 188

转载 Unix网络编程(3)——C/S模型几种情况

UNP第五章描述了在客户端和服务器连接建立之后会出现的几种情况,并给出了解决方案,做一个简单的总结。 先给出这个简单的回射C/S程序的模型如下图。 1、客户端和服务器正常终止连接 客户端从标准输入键入EOF便可以正常终止客户端程序,此间发生了几件事。 客户TCP向服务器TCP发送FIN,服务器TCP向客户TCP回送ACK。 客户程序调用exit终止,...

2013-10-24 23:06:00 81

转载 【转】程序员技术练级攻略

月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得...

2013-10-23 13:09:00 101

转载 C语言结构体的强制类型转换

陈浩师兄03年的一篇博客《用C写有面向对象特点的程序》描述了用C语言来实现类似C++类继承的方法,这样方法的核心要点就是结构体的强制类型转换,让我来简单分析分析C语言中的结构体强制类型转换,还是用陈浩师兄原博的结构体来举例吧。两个结构体如下: /* 双向链表 (类似于父类)*/typedef struct hLinks{ struct hLinks *bwLink;...

2013-10-23 00:31:00 790

转载 桶式排序和基数排序

桶式排序(bucket sort) 对于一组有界的整数,比如有N个数,它们的取值为[1,M],那么对于这样的一组数的排序,可以使用桶式排序。假设这一组整数存储在一个数组A中,桶式排序的基本思想是维护一个count数组,这个数组有M个单位(相当于M个桶),在读入A中的数据A[i]时,count[A[i]]加1,也即是把A[i]放进count的一个桶里,数据读取完成排序即完成。扫描coun...

2013-10-16 23:44:00 138

转载 makefile 学习笔记

参考资料:陈浩,《跟我一起写makefile》 :http://blog.csdn.net/haoel/article/details/2886/ Makefile的格式和规则 target ... : prerequisites ... command ... ... ...

2013-10-15 22:36:00 67

转载 Unix 网络编程(2)——TCP API

TCP C/S套接口函数一般调用过程及基本函数 如上图所示的TCP连接的基本过程。一般来说,服务器先于客户端运行,服务器程序运行的基本过程是: socket()函数创建服务器段socket。 bind()函数进行端口绑定,或者不调用bind()函数而在调用listen()或者connect()函数时,内核为套接口分配一个临时端口。 list...

2013-10-11 20:22:00 58

转载 Unix网络编程(1)——socket一窥

套接口地址结构 IPv4的套接口地址结构为: struct sockaddr_in{ uint8_t sin_len; sa_family_t sin_family; struct in_addr sin_addr; char sin_zero[8];};其中最重要的部分当属sin_addr结构体。这个结构体只有一个元...

2013-10-10 22:57:00 50

转载 数据结构与算法分析(2)——表、栈和队列

抽象数据类型 抽象数据类型(ADT)是一系列操作的集合。诸如表、集合、图和他们的操作一起可以看做是抽象数据类型 表 List 表的实现有两种:数组和链表。数组实现的表在插入和删除操作上的花费十分惊人,最坏的情况为O(N),而且数组的大小必须事先指定,意味着表的大小有一个固定的上限,如果这个值很大的话会浪费很大的空间,很小的话又不能满足使用要求,因此表的实现一般采用链表...

2013-10-08 21:04:00 53

转载 数据结果与算法分析(1)——算法分析

在确定一个算法正确的同时,也要保证算法的有效性。算法分析的最重要的标准时运行时间T(N),运行时间与输入元素个数N有关。 数学基础 T(N) = O(f(N)) 表示T(N)以不快于f(N)的速度增长,也就是说,f(N)是T(N)的上界。f(N) = Ω(T(N)) 表示T(N)是f(N)的下届。 例:N3增长快于N2,因此N2 = O...

2013-10-08 19:37:00 268

转载 数据结构及算法分析(0)——引论

引论提到算法递归的概念,递归在很多算法中都会出现。所谓递归,当一个函数用它自己来定义的时候就称为递归。 递归调用有两大要素: 基准情况。 递归调用。 并非所有的数学递归函数都能有效地由C语言的递归模拟来实现。一般来说,递归调用并非循环逻辑,它与其它的调用在处理上没什么不同,只是递归调用将反复进行直到基准情况出现。 递归调用有...

2013-10-08 19:01:00 77

空空如也

空空如也

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

TA关注的人

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