自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (6)
  • 收藏
  • 关注

原创 一份简单的代码演示缓冲区溢出的危害

最近学习到《深入理解计算机系统》这边书的3.12节的缓冲区溢出,于是写了个简单的测试代码演示了一下通过缓冲区溢出是如何神不知鬼不觉的运行一段代码的。先上代码运行后再分析:#include void hit(){ unsigned char buff[ 100 ] = { 0,0,0,0, //返回地址 'B','O','M','B','\0', 0x83,0xc4,0x80

2014-01-19 14:08:07 2780

原创 C语言左值和右值,以及操作符属性总结

《C和指针》这本书上讲到左值和右值,概念有点含糊据我自己的理解:左值:标识的应该是个存储位置,内存中的位置,左值可以是个变量名,或者是个表达式,但表达式必须表示的是个内存位置右值:就是个值,变量的值,表达式的值操作符的属性有3个因素:操作符的优先级,操作符的结合性,操作符是否控制执行顺序。操作符的优先级:决定含有多个操作符的表达式的求值顺序,每个操作的优先级不同操作符的结合

2013-08-21 13:48:04 8219

原创 shell脚本学习总结

看完了书《shell脚本学习指南》,顺便总结一下:

2013-08-20 17:21:13 1803

原创 读书方法论:经验的哲学观

最近一直在思考经验,什么是经验?摘自百度百科的经验:经验,在哲学上指人们在同客观事物直接接触的过程中通过感觉器官获得的关于客观事物的现象和外部联系的认识。辩证唯物主义认为,经验是在社会实践中产生的,是客观事物在人们头脑中的反映,是认识的开端。但经验有待于深化,有待上升到理论。经验的动态观念是要同客观事物的直接接触,经验本身是接触的过程中获得的对事物的认识,根据这个概念,经验是个能动的操

2013-08-14 15:59:50 1000

原创 shell命令的执行顺序问题·拓扑排序的扩展

shell命令操作文件时有些特殊的顺序问题:比如:1. 管理员修改用户的问题:useroldnewu1200300u2300400u1用户要从原先的uid:200改为uid:300,要将文件系统内所有属于200的文件全部改为300u1改为300后与u2用户相同,就造成冲突,u2却要从

2013-08-10 16:57:35 1094

原创 fopen函数的type字段

标准库中打开文件函数的原型:#include FILE *fopen(const char *restrict pathname, const char *restrict type);FIEL *freopen(const char *restrict pathname, const char *restrict type, FILE *restrict fp);FILE *fd

2013-08-10 13:44:38 3049

原创 shell脚本实现查找文件夹下重复的文件,并提供删除功能

Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件。然而shell脚本却可以使用几行的命令完成与此相同的工作,借助windows下的shell脚本工具Cygwin,可以实现扫描Windows下的目录,原理简述如下:1.首先借助find命令扫描文件夹下类型为普通文件的所有文件,find命令的输

2013-07-31 22:35:18 7300

原创 解决C语言自加的问题:(a++)*(++a)*(a++)*(++a);

void main(){ int a=5; int b; b = (a++)*(a++); printf("%d\n",b);}面试时的这个题目:这无疑就是在考察自加的问题,类似的问题还有许多:(a++)*(a++)*(++a);(a++)*(++a)*(a++);(a++)*(++a)*(a++)*(++a);(a++)*(a++)+(++a

2013-07-30 21:23:07 6320 1

原创 最小-最大堆的实现

最小-最大堆的实现:/*最小最大堆的性质:1. 对于在偶数深度上的任意节点X,存储在X上的关键字小于它的父亲但是大于它的祖父2. 对于在奇数深度上的任意节点X,存储在X上的关键字大于它的父亲但是小于它的祖父从其中可以推理出:1.任意节点X,其关键字的值必定在它的父亲和其祖父之间,也就是说X所在的层上所有关键字 的值必定处于它的父亲层和它的祖父层之间2.所有偶数层从

2013-01-29 14:57:56 4828 2

原创 用户级线程和内核级线程

根据在用户空间还是在核心实现多线程机制,线程又被分为用户级线程(User Level Thread)和内核级线程(Kernel Level Thread)。      有关线程的所有管理工作都有在用户级实现的线程库来支持。用户级线程库是用于用户级线程管理的例程包,支持线程的创建、终止,以及调度线程的执行并保存和恢复线程的上下文,这些操作都在用户空间运行,无需内核的支持,所以用户级线程的创建和管

2012-10-10 10:43:33 3455

原创 unix环境编程·信号特性

1. 启动一个程序对信号的影响执行一个程序时候,信号状态是默认或忽略的则exec时不改变动作,若在exec前捕获了一个信号,那么exec时将还原此信号为默认动作,信号捕获函数的地址在新程序中已无意义。例如:signal(SIGINT,SIG_IGN);execlp("sol",NULL);在shell内部编译此代码运行时,会启动sol游戏,但在shell中按下ctrl+c无法使游戏中断,因为S

2012-09-19 17:46:07 580

原创 针对unix环境编程的一些提问!

1. 为什么会把文件的权限管理和在程序中进行权限管理分开。一个用户或root安装了一套软件,那么管理员就可以直接更改文件系统的权限位以决定其他用户是否可以执行我安装的软件,而不是让软件启动后其自身再判断当前用户是否可以执行此软件,这就给root用户管理所安装软件的执行功能,而一旦软件安装完成,软件的执行文件将不可更改,那么要更改软件代码来判断权限的功能将是不可行的。2. 进程组的作用?

2012-09-13 17:34:52 681

原创 《unix环境编程》解释器文件

书上介绍的,是否一定需要解释器文件,说的很好。解释器确实使用户得到效率方面的好处,其代价是内核的额外开销,因为识别解释器文件的是内核。解释器文件的必要性:1. 有些程序是用脚本编写的,解释器文件可以将这一事实隐藏起来,也就是说解释器文件本身是个程序,可以用exec装入执行。2. 解释器脚本在效率方面也提供了好处。例如一个awk脚本,将其包装在shell脚本中:awk 'BEGI

2012-09-10 14:54:13 2299

原创 《unix环境编程》笔记-文件访问安全

文件的设置用户ID位和设置组ID位,会使进程拥有某个用户的权限来进行执行,这给系统造成很多安全性的考虑,但设置这两个位也是必须的,可以使某些进程暂时拥有其他用户的权限,执行一些操作。设置用户ID位和设置组ID位会使文件拥有特殊权限,因此某些操作会强制关闭这两个位。1. 非超级用户特权的进程对一个可写的文件写操作后,则设置用户ID位和设置组ID位被自动清除。使不怀好意的用户丢失对此文件的特殊

2012-08-23 15:08:26 493

原创 《unix环境编程》笔记-文件访问权限

文件访问权限是多用户系统的复杂机制,如何实现自己的文件不让其他用户访问,如何实现代替管理员用户实现对无权限的文件进行访问,有些文件夹不能打开是什么原因。与每个文件相关的东西,目录看做是目录文件:每个文件都记录所属的文件类型(普通文件、目录文件、块特殊文件、字符特殊文件、FIFO、套接字、符号链接)每个文件都有所属的用户和组,分别使用用户ID和组ID表示,指明文件所属的用户。每个文件

2012-08-21 21:24:06 823

原创 《unix环境编程》笔记-文件IO

1. lseek函数返回的新的文件偏移量通常文件的当前文件偏移量是个非负整数,但是某些设备也可能允许负的偏移量,所以在笔记lseek的返回值时,应该测试其是否等于-1,不判断是否小于02. IO的效率在BUFFSIZE=4096时效率最高3. ./a.out 5 5子句54. fcntl函数在修改文件描述符标志或文件状态标志时,先要取得文件标志,然后修改,然后再设置新标志,

2012-08-20 09:58:45 588

原创 文件IO的原子操作

设计多个进程共同操作一个文件的,就需要原子的操作下面几个问题:1.添加至一个文件多个进程都要添加数据到一个文件的尾端if(lseek(fd,0,SEEK_END)>=0){    write(fd,buff,100);}对单个进程而言,这个程序能正常工作,若多个进程同时调用,则会出现问题。每个进程都有它自己的文件表项,但共享同一个i节点。假定A进程调用lseek,它

2012-08-17 11:18:45 2209

200个C程序

220个经典C语言源码 从简单到难的220来个经典C程序 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自减运算 008 数列求和 009 乘法口诀表 010 猜数字游戏 011 模拟ATM(自动柜员机)界面 012 用一维数组统计学生成绩 013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计文件的字符数 038 同时显示两个文件的内容 039 简单的文本编辑器 040 文件的字数统计程序 041 学生成绩管理程序

2013-08-21

fat32文件系统

详细的介绍了FAT文件系统的中两个重要的结构:文件分配表和目录项

2012-07-23

Makefile编程

Makefile编程,包含了 规则,变量,函数 等的详细解释

2012-07-16

PE文件格式

Windows可执行文件格式(.dll .exe)

2012-07-16

ELF文件格式

Linux可执行文件格式,ELF文件格式

2012-07-16

汇编器指南

RealView® 编译工具4.0 版《汇编器指南》

2012-07-16

空空如也

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

TA关注的人

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