自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (3)
  • 收藏
  • 关注

原创 自引用结构体及其陷阱

结构的自引用:struct self_ref{int a ;struct self_ref b;int c ; };上面的自引用是非法的,因为成员b是一个完整的结构,器内部还将包含它自己的成员b.这样会导致无限重复包含自身.struct self_ref{int a;struct self_ref

2014-01-26 20:12:28 1569

转载 史上最全设计模式导学目录(完整版)

圣诞献礼!          2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式学习相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 +  简单工厂模式),为了方便大家学习,现将所有文章的链接进行了整理,希望能给各位带来帮助!       祝大家圣诞节快乐! 花絮:本文的工作量大大超过之前的估计,几乎整个平安夜都花在它身

2014-01-25 14:39:07 1064 1

转载 当今世界最受人们重视的十大经典算法

当今世界最受人们重视的十大经典算法作者:July、二零一一年三月七日。--------------------------本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/v_JULY_v/archive/2011/03/07/6228235.aspx    当今世界,已经被发现或创造的经典算法数不胜数。如果,一定要投票选出你最看重

2014-01-24 18:37:06 1507

原创 FILE,文件句柄,打开文件列表和内核文件对象的关系

对于计算机来说,I/O代表了计算机与外界的交互,交互的对象可以是人或其他设备.而对于程序来说,I/O涵盖的范围更广.一个程序的I/O指代了程序与外界的交互,包括文件,管道,网络,命令行.I/O指代任何操作系统理解为文件的事务.许多操作系统都将各种具有输入和输出该鸟的实体—包括设备,磁盘文件,命令行等统称为文件.C语言文件操作通过一个FILE结构的指针来进行.fopen()函数返回一

2014-01-16 21:19:25 2286

原创 Huffman 编码树

Huffman 编码树像SCAII这样即那个每个字符表示为一个7为二进制的序列的编码方式称为定长编码,它们采用同样数目的二进制位表示消息中的一个字符.与之相对应的是变长编码,即用可变的二进制位数表示不同的字符.一般而言,如果在我们的消息中,某写符号出现得比较频繁,而另一些比较少见,那么就可以通过为这些出现比较频繁的字符指定比较短的二进制位编码来达到节省空间的目的.但是采用二

2014-01-16 21:15:59 2539

转载 Linux Shell 编程实战技巧

目前,越来越多的企业应用会部署在 Linux 系统上的,而 Linux Shell 脚本可以极大地帮助我们完成这些应用的运维任务。这使得 Linux Shell 开发技能成为开发人员的一项重要的、有竞争力的技能。本文就笔者的实际开发经验,以 Korn Shell 为例分享了脚本开发中的常见问题及相关避免定时任务脚本的常见问题很多脚本在实际使用的时候往往是以定

2014-01-14 23:46:50 799

转载 Scheme 程序语言介绍之一

Scheme 是差不多三十年前诞生在 MIT 人工智能实验室的一门程序语言。它是 Lisp 语言的发展。今天的 Scheme 在程序语言的理论研究和工程应用两方面都发挥着持久和越来越重要的影响。本文作者在 IBM developerWorks 中国网站 Linux 技术专区上的另一个系列,专门介绍 Scheme 在 UNIX 上的应用。本文介绍 Scheme 的语言特性,不涉及具体的应用。在本文最

2014-01-14 23:28:36 1505

转载 [转载]我眼中的Common Lisp

原文链接:我眼中的Common Lisp第一次遇到Lisp这个名字,也许是在大一上计算机科学导论的时候,从书上介绍编程语言的那一章中看到的。那时候记得是在纠结过程式语言与函数式语言的区别,当时总觉得C语言也是函数式的,因为C语言也是有一个个的函数组成的,殊不知道编程语言的范式并不是以这么简单的方式进行区分的。因为好奇,当时还对着书上描述Lisp的短短一段文字看了一会儿,心里很好奇,

2014-01-14 16:27:22 1074

原创 什么是堆

光有栈对于面向过程的程序设计还远远不够,因为站上的数据在函数返回的时候就会被释放掉,所以无法将数据传递到函数外部.而全局变量没办法动态的产生,只能在编译的时候定义,缺乏表现力.在这种情况下,堆是唯一的选择.堆是一块巨大的内存空间,常常占据整个虚拟空间的绝大部分.在这片空间里,程序可以请求一块连续内存,并自由使用,这块内存在主动释放前都一直有效.通过malloc可以为程序申请分配堆空

2014-01-13 10:01:41 1244

原创 源程序的编译过程

内容来自> 非常好的书.编译过程一般分为6个步骤:扫描:源代码程序被输入到扫描器(Scanner),扫描器的任务很简单,他只是进行词法分析,将源码中的字符序列分割成一系列记号;词法分析产生的记号一般可以分为如下几类: 关键字,标识符,字面量(数字字符串等),和特殊符号(如 加号 ,减号等).在扫描器识别记号的同时,也完成了其他的工作.比如将标

2014-01-12 21:20:33 3023

原创 大牛们是这样解释程序的存储空间和内存分配的

一直堆进程的存储区分配和堆栈认识比较模糊,今天看了下>,> ,还有>有关这方面的解释.综合综合这三本书的解释,对C程序的内存分配才有了更清楚的认识. 我把这些内容贴出来和大家一起分享.(这三本书的中英文版我都有,需要的朋友可以留下邮箱)>的解释一个标准C程序的数据对象占据一下三种类型的存储空间:①: 程序开始执行前分配静态存储空间并进行初始化.如果没有指定一个数

2014-01-10 21:51:33 3497 1

原创 <<C标准库>>: <math.h>

本文的内容参考> math函数的目标和使用指南一每个函数产生的结果都要具有56位的精度二每一个函数都应该能接受定义域内的所有参数值.对于其它所有参数都应该报告定义域错误,并返回一个表示非数字的特殊编码NaN三 对于一个具体的值,函数应该产生一个确定的结果.对于所有太大或者太小而不能表示的值,报告值域错误.结果数值过大,函数返回一个表示正无穷大的编码+Inf

2014-01-10 14:26:39 1082

原创 <<C标准库>>:<limits.h>

本文的内容参考>该标准库规定了整形数字的取值范围,浮点形的数字的取值范围在头文件中规定.可以通过两种方式来使用一 假设要表示某个值在VAL_MIN 和VAL_MAX 之间的有符号数据,可以通过如下代码来防止程序出现翻译错误:#include #include #if VAL_MIN INT_MAX#error values out of range#endif然后就可以

2014-01-10 13:13:24 893

原创 C中的字符类型

(图片来自> 2.1)

2014-01-10 10:16:09 877

原创 shell的特殊字符

(1) * 代表0到无穷个任意字符(2)?代表任意一个字符(3)代表括号内任意一个字符(4)[ - ] 代表一个范围中的任意一个字符 如[0-9] 即是代表0-9之间的一个数(5)[^] 反向选着, 即代表不包含括号内字符的任意一个字符(6)#注释符号(7) 转义符号,即将特殊字符还原成一般的字符(8) | 管道符 (9) ; 连续指令下达分隔符,即连续命令的界定(10) ~

2013-12-31 22:12:47 838

原创 Linux的dd命令创建指定大小文件(空洞文件)的一种实现可能

我们知道在Linux中可以通过dd 这条指令创建一个制定大小的文件; 在创建文件是我们并没有写入任何数据,其中的空间都被填充为0; 具体的创建方法为:dd if = input_file of = output_file bs=block_size count=number如果其中的input_file是一个普通的文件,那么该文件的内容将被复制到output_file把其中的inpu

2013-12-31 22:09:48 6363

原创 C标准库定义的UNIX系统的基本数据类型

基本系统数据类型:某些UNIX系统变量与C的数据类型联系在一起.在头文件中定义了某些与实现有关的数据类型,它们被称为基本数据类型.还有很多这种数据类型定义在其它头文件中.在头文件中,这些数据类型都是用C的typedef来定义的.它们大多数以_t结尾:类型   ==== > 说明caddr_t ===> 核心地址clock_t ===>时钟滴答计数器(进程时间)com

2013-12-31 22:09:14 1384

原创 系统的文件访问权限测试

文件访问权限测试当open函数打开一个文件是,内核以进程的有效用户ID和有效组ID为基础执行有效权限的访问测试.access函数按照实际用户ID和实际组ID进行访问权限测试:#include int access(const char * pathname ,int mode); 返回0(成功) 或者返回-1(失败)mode常量的说明 (在头文件中定义)R_OK ====>测试读

2013-12-31 22:08:21 1172

原创 stat函数和文件类型

文件和目录stat ,fstat , lstat#include stat 函数int stat (const char * restirct pathname ,struct stat * restrict buf)int fstat(int filedes , struct stat * buf)int lstat(const char *restrict pathn

2013-12-31 21:42:39 1606

原创 ThinkPHP的数据表操作

对数据的读取 Read$m=new Model('User');$m=M('User');select$m->select();//获取所有数据,以数组形式返回find$m->find($id);//获取单条数据getField(字段名)//获取一个具体的字段值$arr=$m->where('id=2')->getField('use

2013-12-30 23:21:53 904

原创 Linux的计划任务

at的运作方式我们用at这个指令来产生工作,并将这个工作以文本文件的方式写入到/var/spool/at目录中,这个工作就能等待atd这个服务的取用与执行了.并非每个人都可以使用at,我们可以在/etc/at.allow  和/etc/at.deny 中配置那些用户可以使用atat 的用法:at -c 工作号码-m : 当

2013-12-30 23:18:00 814

原创 Linux 身份切换工具

su [ -lm ]  [ -c 指令 ]  [ username ]- : 使用 -  如 su -  代表使用login-shell 的变量档案得去方式来登入系统如使用者身份没有加上去,则代表切换为root身份-l : 与 - 类似,但后面需要跟欲切换的使用者账号.-m : 与-p是一样的,表示使用目前的环境设定,而不读取

2013-12-30 23:15:27 821

原创 C语言的文件操作

“文件”是指存储在计算机外部存储器中的数据的集合。计 算机根据⽂文件的名字,完成对⽂文件的操作C语⾔言将⽂文件看作是字符构成的序列,即字符流。其基本 的存储单位是字节。⽂文件的读写操作函数,它们都在头⽂文 件stdio.h定义的:• 按字符读写的函数fgetc()、fputc()• 按字符串读写的函数fgets()、fputs()• 按格式要求读写的函数fprintf()、

2013-12-30 23:11:20 1055

原创 fgets 和fputs函数

/* * 库函数fgets * char *fgets(char *line ,int maxline , FILE *fp) ; *fp指向的从文件读取下一个输入行(包括换行符) ,并将它存放在字符数组中; * 一行最多可读取maxline-1个字符,读取的行以'\0'结尾保存在字符数组中 * */char * fgets(char *s, int maxline ,FILE *

2013-12-29 23:50:27 1261

原创 grtline.c

#include #define MAXLINE 1000 // getline : read a line into s , return length of the line int _getline(char s[], int lim){ int c, i ; for ( i = 0 ; i < lim-1 && (c = getchar()) != EOF && c !=

2013-12-29 21:45:33 751

原创 C语言mini版grep程序

#include #include #define MAXLINE 1000int _getline(char *line ,int max);int main(int argc , char ** argv){ char line[MAXLINE]; int found = 0 ; if(argc !=2 ) printf("Usage: find pattern:

2013-12-29 21:44:13 1233

原创 C语言版cat小程序

#include #include void _filecopy(FILE *fp_in, FILE * fp_out);int main(int argc , char * argv[]){ FILE * fp; char *prog = argv[0] ; //指定的错误输出文件名; if( argc == 1 ) //没有指定打开文件,把标准输入复制到标准输出 _fi

2013-12-29 21:40:00 848

原创 vim

vim环境的设置~/.viminfo 这个文件保存了我们使用vim是的一些信息;当我们在次使用vim时,更具这个文件vim就知道我们之前使用的一些信息; 如果我们使用过vim这个文件会自动在我们的家目录中生成d (删除 ) +要删除的行数或字母的个数(+上下方向键或者左右方向键)或v (可视化的选择)gU (变大写) 操作和d一样gu (变小写)等等0 → 先到

2013-12-28 23:31:06 805

原创 vim 配置文件

source $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbehave mswin"设置vim外观colorscheme elflord"set guifont=Monaco\ 10set guifont=Monaco\ for\ Powerline\ 10set nuset ai "设置自动缩进set t

2013-12-28 00:03:40 1307

原创 ANSI C语言中的全部转义字符

\a  =====>响铃符\r =====>回车符\f ======>换页符\b ======> 回退符\t =====>制表符(横向)\v =====>制表符(纵向)\\ ======>反斜杠\? ======>问号\' =======>单引号\" =======>双引号\ooo =====>八进制数\xhh ======>十六进制数

2013-12-27 22:29:40 1659

转载 如何学好C语言

原文链接:http://coolshell.cn/articles/4102.html我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子。比如:你长期地使用Java和.NET ,这些有虚拟机的语言对于开发便利是便利,但是对于程序员来说可能并不太好,原因有两个:虚拟机屏蔽了操作系统的系统调用,以及很多底层机制。

2013-12-27 16:30:58 649

转载 如何学习C语言

漫谈C语言及如何学习C语言原文链接:http://sunxiunan.com/?p=1661漫谈C语言及如何学习C语言云风最近写了一篇博客《C语言的前世今生》。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对C语言学习方式方法的理解。分别

2013-12-27 16:15:20 1307

原创 MySQL 的数值数据类型

MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL允许我们指定数值字段中的值是否有正负之分或者用零填补。  表列出了各种数值类型以及它们的允许范围和占用的内存空间。类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,

2013-12-22 21:38:33 749

原创 程序的局部性

局部性通常分为两种形式:时间局部性和空间局部性,在一个具有良好时间局部性的程序中,被引用过一次的存储位置很可能在不久的将来在被多次引用.在一个具有良好的空间局部性的程序中,如果一个存储器位置引用了一次,那么程序很可能在不要的将来引用附近的一个存储器位置. 步长:访问一个连续向量的每一个元素,具有步长为1的引用模式;访问一个连续向量的每第K个元素,就被称为步长为K的引用模式,步长为1

2013-12-22 21:33:10 2319 1

原创 传输层: 选择重传协议

选择重传协议返回N协议简化了接收方的处理过程.接收方只需跟踪一个变量,并且不需要对失序到达的分组缓存,而是简单地把失序到达的分组它们丢掉.但是如果低下的网络层协议丢失了很多分组,那么返回N协议的效率就会很低.每当一个分组损坏,发送方就需要重传所有待确认的分组,虽然其中有些分组实际上已经完好地 被接收了.选择重传协议(Selective-Repeat, S

2013-12-21 22:06:57 25873 1

原创 运输层协议:(2)Go-Back-N 协议

返回N协议(GO-Back -N)为了提高效率填满管道,在发送方等待确认时,应当有多个分组正在传送中.也就是说我们需要让多喝分组处于等待确认的状态,以便在发送方等待确认的同时,信道也能保持忙碌状态.返回N协议(GO-Back -N  GBN)的关键是发送方能够在收到确认之前发送多个分组,但接收方只能缓存一个分组.发送方为发送出去的分组保留副本,直到来自接收方确认达到.

2013-12-21 22:06:40 28284 2

原创 运输层:有限状态机(finite state machine FSM)

有限状态机(finite state machine  FSM)无论是提供无连接的服务还是面向连接的服务,,一个运输层协议的行为都可以很好地用一个有限状态机来表示.运输层的发送方和接收方都可以被看做是一个具有有限状态的机器.有限状态机总是处于某一种状态中,直到有一件事情发生.对每个时间的响应有两种 : (1)定义要执行的动作列表(可能为空),并决定下一个状态(可能与当前

2013-12-21 21:04:31 1739

原创 运输层:面向连接的服务和无连接的服务

无连接的服务和面向连接的服务:像网络层一样,运输层也可以提供两种类型的服务:无连接的服务和面向连接的服务.不过这两种服务在本质桑与网络层不同.在网络层,无连接非服务意味着同一报文的多个数据采取了不同的路径(并且是失序抵达的),而面向连接的服务意味着属于同一报文的多个数据报采取相同的路径(并且是顺序抵达的).而在运输层,我们并不关心分组采取什么样的物理路径(我们假设在两个运输层之间有一条

2013-12-21 21:02:21 6289

原创 IP分组的交付和转发 : (5) 路由器的构件

一个路由器与四个主要构件:(1) 输入端口(Input port)(2)输出端口 (output port)(3)路由选择处理器(routing processor)(4)交换结构(switching fabric)1 输入端口 :输入端口执行路由器的物理层和数据链路层的功能.它从接收到的信号中 得

2013-12-20 19:52:59 1584

原创 IP分组的交付和转发:(4)基于标记的转发

基于标记的转发在一个无连接的网络中,路由器根据分组首部的目的地址来转发该分组.另一方面,在一个面向连接的网络(虚拟电路)中,交换机则根据附加在分组上的标记来转发该分组.路由选择通常基于对路由表的内容的搜索,而交换机则可以用一个索引访问交换表来完成.即路由选择涉及到搜索过程,而交换机则涉及到直接访问.当转发算法的到分组的目的地址后它就埋头在掩码列表中开始搜索.对于每一个表项,

2013-12-20 19:52:25 1497

最好的vim使用参考手册

最好的vim使用参考手册

2013-12-30

the C programming (K&R)

学习C语言必备圣经 .这个不用多介绍了吧! 好好看吧! 肯定或收获很多的

2013-12-02

空空如也

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

TA关注的人

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