上一页 1 2 3 4 5 6 7 8 ··· 29 下一页

2012年12月17日

latex 引用section [转]

摘要: 1 \section{Greetings} 2 \label{sec:greetings} Hello! 3 \section{Referencing} 4 I greeted in section~\ref{sec:greetings}.[转] http://19542002.blog.163.com/blog/static/1339323822012741265687/ 阅读全文

posted @ 2012-12-17 20:29 龙豆 阅读(14559) 评论(1) 推荐(1)

2012年12月15日

深入浅出Java的访问者模式 [转]

摘要: 一、引子 对于系统中一个已经完成的类层次结构,我们已经给它提供了满足需求的接口。但是面对新增加的需求,我们应该怎么做呢?如果这是为数不多的几次变动,而且你不用为了一个需求的调整而将整个类层次结构统统地修改一遍,那么直接在原有类层次结构上修改也许是个 不错 的主意。 但是往往我们遇到的却是:这样的需求变动也许会不停的发生;更重要的是需求的任何变动可能都要让你将整个类层次结构修改个底朝天……。这种类似的操作分布在不同的类里面,不是一个好现象,我们要对这个结构重构一下了。 那么,访问者模式也许是你很好的选择。 二、定义与结构 访问者模式,顾名思义使用了这个模式后就可以在不修改已有程序结构的... 阅读全文

posted @ 2012-12-15 17:27 龙豆 阅读(262) 评论(0) 推荐(0)

2012年12月11日

静态,动态,强类型,弱类型 [转]

摘要: 对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed。“动”或“静”,强调的是实施类型的时间,编译里就要确定类型的是静态类型,比如C/C++/JAVA/C#,运行时才实施类型的则是动态类型,比如VB/Python。而“强”或“弱”刚强调实施类型的强度,强类型的语言,如C++等,变量的类型不可随意转换;而弱类型的语言,变量的类型可以随需要任意转换,而且通常都是隐式的。静态类型语言是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导 阅读全文

posted @ 2012-12-11 19:17 龙豆 阅读(270) 评论(0) 推荐(0)

2012年12月4日

linux内存管理浅析 [转]

摘要: [转]http://hi.baidu.com/_kouu/item/4c73532902a05299b73263d0[地址映射](图:左中)linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。想一下,地址映射还是一件很恐怖的事情。当访问一个由虚拟地址表示的内存空间时,需要先经过若干次的内存访问,得到每一级页表中用于转换的页表项(页表是存放在内存里面的),才能完成映射。也就是说,要实现一次内存访问,实际上内存被访问了N+1次(N=页表级数),并且还需要做N次加法运算。所以,地址映射必须要有硬件支持,mmu(内存管理单元)就是 阅读全文

posted @ 2012-12-04 10:12 龙豆 阅读(536) 评论(0) 推荐(0)

2012年12月2日

令人迷惑的AT&T的jmp:直接跳转和间接跳转 [转]

摘要: 最近看链接器源码中,对位置无关代码PIC(共享库)的链接问题,发现对call和jmp很多不常用的用法,这里试验并总结了一下各种用法。我们最常用的jmp形式,就是 jmp后面跟个标签!这个没什么可说的!假如标签叫做mylabel,它的地址是0x8048377,而且有个全局变量b,b存储的内容就是mylabel的地址,而b的地址是0x80494A8。即有这样的赋值(加载)语句:movl$mylabel,%eax//把mylabel的地址加载到eax寄存器中movl%eax,b//把mylabel的地址加载到b中movl$b,%ebx//把b的地址加载到ebx寄存器中我们考虑下面的语句:1.jmpm 阅读全文

posted @ 2012-12-02 13:25 龙豆 阅读(9138) 评论(0) 推荐(0)

2012年11月29日

linux硬链接与软链接 [转]

摘要: 1. Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引 阅读全文

posted @ 2012-11-29 15:46 龙豆 阅读(309) 评论(0) 推荐(0)

Linux的inode的理解 [转]

摘要: 一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比 阅读全文

posted @ 2012-11-29 15:45 龙豆 阅读(293) 评论(0) 推荐(0)

2012年11月25日

优先级反转 [转]

摘要: 优先级反转1、什么是优先级反转? 优先级反转是指一个低优先级的任务持有一个被高优先级任务所需要的共享资源。高优先任务由于因资源缺乏而处于受阻状态,一直等到低优先级任务释放资源为止。而低优先级获得的CPU时间少,如果此时有优先级处于两者之间的任务,并且不需要那个共享资源,则该中优先级的任务反而超过这两个任务而获得CPU时间。如果高优先级等待资源时不是阻塞等待,而是忙循环,则可能永远无法获得资源,因为此时低优先级进程无法与高优先级进程争夺CPU时间,从而无法执行,进而无法释放资源,造成的后果就是高优先级任务无法获得资源而继续推进。2、解决方案:(1)设置优先级上限,给临界区一个高优先级,进入临界区 阅读全文

posted @ 2012-11-25 19:44 龙豆 阅读(280) 评论(0) 推荐(0)

2012年11月23日

栈溢出攻击 [转]

摘要: 本文的实验来源于《Computer Systems A Programmer's Perspective》(深入理解计算机系统》一书中第三章的一个实验。 作者给出了一个含有缓冲区溢出的程序bufbomb.c,你需要做的,就是注入给缓冲区些特殊的数据,到底利用缓冲区的目的。 1 //bufbomb.c 2 /* Bomb program that is solved using a buffer overflow attack */ 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <ctype.h& 阅读全文

posted @ 2012-11-23 10:28 龙豆 阅读(630) 评论(0) 推荐(0)

2012年11月15日

GCC __attribute__ 详解 [转]

摘要: 1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ char ch; int a;} sizeof(int)=2;sizeof(my)=3;(紧凑模式)在GCC下:struct my{ char ch; int a;} sizeof(int)=4;sizeof(my)=8;(非紧凑模式)在GCC下:struct 阅读全文

posted @ 2012-11-15 13:07 龙豆 阅读(13547) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 ··· 29 下一页

导航