自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (2)
  • 收藏
  • 关注

原创 设计模式-OOD的设计原则(2)-"里氏代换原则"

从上一篇的"开-闭"原则中可以看出,面向对象设计的重要原则是创建抽象化,并且从抽象化导出具体化.这个导出要使用继承关系和一个原则:里氏代换原则(Liskov Substitution Principle, LSP).      那么什么是里氏代换原则呢?有个严格的表述,绕口,不好记.还是比较白话的这个好记.说的是:一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它察觉不出基类对

2007-09-17 23:14:00 554

转载 设计模式-OOD的设计原则(1)-"开-闭原则"

 在继续这本书之前,我们来学习些OOD的一些设计原则.这些原则在提高一个系统可维护性的同时,提高这个系统的可复用性.他们是一些指导原则,依照这些原则设计,我们就可以有效的提高系统的复用性,同时提高系统的可维护性.      这些OOD原则的一个基石就是"开-闭原则"(Open-Closed Principle OCP).这个原则最早是由Bertrand Meyer提出,英文的原文是:Softw

2007-09-17 22:53:00 546

原创 源自《设计模式》的设计原则

Design Principles from Design Patterns    Copyright © 1996-2005 Artima Software, Inc. All rights reserved    http://www.artima.com/lejava/articles/designprinciples.html    源自《设

2007-09-17 22:44:00 539

原创 C++总结 ----- 友元类和友元函数(1)

《windows环境多线程编程原理与应用》中解释:  如果将类的封装比喻成一堵墙的话,那么友元机制就像墙上了开了一个门,那些得  到允许的类或函数允许通过这个门访问一般的类或者函数无法访问的私有属性和方     法。友元机制使类的封装性得到消弱,所以使用时一定要慎重。  ■ 友元类的说明   将外界的某个类在本类别的定义中说明为友元,那么外界的类就成为本类的“朋     友

2007-09-16 15:52:00 2714

原创 C语言中static用法介绍

 对于新手来说,很多东西的用法还不是很清除,我们今天一起来看看C语言中static用法介绍1、声明了static的变量称为静态变量,根据作用域的不同又分为静态局部变量与静态全局变量。其中静态局部变量是在函数内声明的static变量,静态全局变量是在函数外声明的static变量。虽然作用域不同,但是都是在编译期间分配内存,使用静态存储的方式(其值存放在静态存储区),在程序整个执行期间都是存在的。

2007-09-12 18:45:00 1075

转载 C语言缺陷与陷阱(笔记)

C语言缺陷与陷阱(笔记)C语言像一把雕刻刀,锋利,并且在技师手中非常有用。和任何锋利的工具一样,C会伤到那些不能掌握它的人。本文介绍C语言伤害粗心的人的方法,以及如何避免伤害。第一部分研究了当程序被划分为记号时会发生的问题。第二部分继续研究了当程序的记号被编译器组合为声明、表达式和语句时会出现的问题。第三部分研究了由多个部分组成、分别编译并绑定到一起的C程序。第四部分处理了概念上的误解:当

2007-09-11 21:04:00 566

原创 解读Java Class文件格式

1.目的大型软件系统开发时,某些Java组件可能涉及到多种数据库或中间件系统的连接和应用,例如一个数据传递组件需要从DB2中读取数据,并将数据通过中间件WebSphere MQ发送到其他系统,这类组件功能单一,但却需要连接多种第三方产品,使得程序员的单元测试变的非常不便,程序员不得不注视或修改部分源代码,或者在本地安装所需第三方产品。无疑这两种选择都是痛苦的。基于以上的不便,本文开发了解析

2007-09-08 00:24:00 723

原创 #include 和#include两个语句一样吗?

#include 和#include两个语句一样吗?在标准C++以前,都是用#include这样的写法的,因为要包含进来的头文件名就是iostream.h。标准 C++引入了名字空间的概念,并把iostream等标准库中的东东封装到了std名字空间中,同时为了不与原来的头文件混淆,规定标准C++使用一套新 的头文件,这套头文件的文件名后不加.h扩展名,如iostream、string等等,

2007-09-05 22:22:00 844

原创 C++库

C++库2006-12-12 12:20 如果你有一定的C基础可能学起来比较容易些,但是学习C++的过程中又要尽量避免去使用一些C中的思想;平时还要多看一些高手写的代码,遇到问题多多思考,怎样才能把问题抽象化,以使自己头脑中有类的概念;最后别忘了经常上机自己调调程序,这是谁也代

2007-09-04 23:55:00 535

原创 C++基本概念在编译器中的实现

对于C++对象模型,相信很多程序员都耳熟能详。 本文试图通过一个简单的例子演示一些C++基本概念在编译器中的实现,以期达到眼见为实的效果。   1、对象空间和虚函数  1.1 对象空间  在我们为对象分配一块空间时,例如:   CChild1 *pChild = new CChild1();  这块空间里放着什么东西?  在CChild1没有虚函数时,CChild1对象空间里依次放着其基类的非静态

2007-09-04 21:44:00 468

原创 让你的MASM支持__fastcall调用方式

让MASM支持__fastcall调用方式作者:thebutterfly(Cloud)熟悉逆向工程和破解的朋友都知道, 调用函数是要遵循一定的调用约定的. 常见的调用约定有C调用约定(__cdecl), 标准调用约定(__stdcall), Pascal调用约定, 快速调用约定(__fastcall)等几种. 在这些调用约定中, MASM对前三者都有很好的支持, 唯独对__fastcall调用约定

2007-09-04 19:42:00 1097

原创 8086伪指令(汇编语言程序格式)

8086伪指令(汇编语言程序格式) 汇编语言程序中的语句可以由指令、伪指令和宏指令组成。每一条指令都对应一种CPU操作。伪指令又称为伪操作,它是在对源程序汇编期间由汇编程序处理的操作,它们可以完成如处理器选择、定义程序模式、定义数据、分配存储区、指示程序结束等功能。宏指令是由用户按照宏定义格式编写的一段程序,其中语句可以是指令、伪指令,甚至是已定义的宏指令。宏指令将在第七章中介绍。

2007-09-04 18:31:00 4296

原创 汇编常见伪指令

一、与宏有关的伪指令在宏定义时,为了满足某种特殊需要,汇编语言还提供了几个伪指令。 9.3.1 局部标号伪指令LOCAL 在宏定义体中,如果存在标号,则该标号要用伪指令LOCAL说明为局部标号,否则,当在源程序中,有多于一次引用该宏时,汇编程序在进行宏扩展后将会给出:标号重复定义的错误。 伪指令LOCAL的一般格式如下: LOCAL 标号1, 标号2, …… 伪指令LOCAL必须是伪指令MAC

2007-09-04 18:15:00 3975 1

原创 声明与函数、函数指针

概述    在很多情况下,尤其是读别人所写代码的时候,对 C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。   问题:声明与函数   有一段程序存储在起始地址为 0的一段内存上,如果我们想要调用这段程序,请问该如何去做?   答案   答案是 (*(void (*)( ) )0)( )。看起来确实令

2007-09-03 14:13:00 528

转载 Servlet规范简介

Servlet规范简介 引言 Web 框架一般是通过一个 Servlet 提供统一的请求入口,将指定的资源映射到这个 servlet, 在这个 servlet 中进行框架的初始化配置,访问 Web 页面中的数据,进行逻辑处理后,将结果数据与的表现层相融合并展现给用户。 WEB 框架想要在符合 Servlet 规范的容器中运行,同样也要符合 Servlet 规范。 将一个 WEB 框架注

2007-08-30 17:48:00 722

转载 如何在Web页面上直接打开、编辑、创建Office文档

有朋友询问如何在Web页面上做到像SharePoint中的效果一样,能直接激活客户端的Word来打开.doc文件,而不是类似直接点击.doc文档链接时Word在IE中被打开那样。想想这个问题应该很多人都会感兴趣,所以干脆写一篇blog来大致描述一下方法。在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于“Program Files/Microsoft Off

2007-08-28 13:25:00 778

转载 抽象类与接口的区别

abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。       其实,两

2007-08-27 18:02:00 529

转载 组合,关联,聚合的区别

类间关系在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示不同的关系。类之间的关系有继承(泛化)、关联、聚合和组合。(1)继承:指的是一个类(称为子类)继承另外的一个类(称为基类)的功能,并增加它自己的新功能

2007-08-24 13:05:00 1145 1

转载 LCC编译器的源程序分析(3)选择不同的目标代码接口

在LCC里,最重要的一个特征是可以输出不同的目标代码。比如同一个C程序,可以生成MIPS,X86等汇编代码,只需要选择不同的目标参数。这里只分析生成X86的代码,所以命令行的参数如下:rcc.exe -target=x86/nasm hello.i hello.asm参数-target=x86/nasm是让C编译器选择生成X86的NASM汇编代码。参数hello.i是前面已经介绍的中间

2007-08-16 17:43:00 969

原创 对 《gcc中的内嵌汇编语言》一文的补充说明

对 《gcc中的内嵌汇编语言》一文的补充说明- -                                        对 《gcc中的内嵌汇编语言》一文的补充说明欧阳光 [email protected] 1999.10.13    初次接触到AT&T格式的汇编代码,看着那一堆莫名其妙的怪符号,真是有点痛不欲生的感觉,只好慢慢地去啃gcc文档,在似懂非懂的状态下

2007-07-19 19:13:00 939

原创 X86汇编语言学习手记

X86汇编语言学习手记这是作者在学习X86汇编过程中的学习笔记,难免有错误和疏漏之处,欢迎指正。严格说来,本篇文档更侧重于C语言和C编译器方面的知识,如果涉及到具体汇编语言的内容,可以参考相关文档。1. 编译环境   OS: Solaris 9 X86   Compiler: gcc 3.3.2   Linker: Solaris Link Editors 5.x   Debug Tool: 

2007-07-19 18:56:00 1292

原创 C++虚函数调用的反汇编解析

C++虚函数调用的反汇编解析     作者:阮建辉 虚函数的调用如何能实现其“虚”?作为C++多态的表现手段,估计很多人对其实现机制感兴趣。大约一般的教科书就说到这个C++强大机制的时候,就是教大家怎么用,何时用,而不会去探究一下这个虚函数的真正实现细节。(当然,因为不同的编译器厂家,可能对虚函数有自己的实现,呵呵,这就算是虚函数对于编译器的“多态”了:)。 作为编译型语言,C

2007-06-14 13:34:00 1109

原创 声明函数指针并实现回调

程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。声明函数指针   回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发现函数

2007-06-14 13:32:00 903

原创 c与c++ static函数的区别

c与c++ static函数的区别

2007-06-09 23:35:00 1553

原创 #ifndef的主要作用是什么

Q:#ifndef的主要作用是什么?#ifndef的主要作用是什么?是不是防止重复定义,具体来说是怎么防止的?A:防止重复编译以test.h为例:#ifndef TEST_H#define TEST_H...#endifA:条件编译A:#ifndef XXX#define XXX....#endif一般是用来防止重复包含头文件第一次包含头文件时 XXX没有被定义 第二次再用时 XXX 已经被定义拉

2007-06-09 14:29:00 4474

原创 什么是字节对齐,为什么要对齐?

什么是字节对齐,为什么要对齐?      现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。    对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能

2007-06-08 14:58:00 1246

转载 简要记录sizeof和内存对齐

简要记录sizeof和内存对齐     本来,一般是不自己计算sizeof的,知道内存对齐会对sizeof有影响,所以从来不手算,而是代码里写上sizeof。今天又看到http://blog.vckbase.com/smileonce/archive/2005/08/08/10658.html,翻来了http://blog.vckbase.com/billdavid/archive/2004/

2007-06-06 23:39:00 1374

转载 跟我一起写 Makefile(十三)

http://blog.csdn.net/haoel/archive/2004/02/25/2898.aspx五、定义模式规则你可以使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有"%"字符。"%"的意思是表示一个或多个任意字符。在依赖目标中同样可以使用"%",只是依赖目标中的"%"的取值,取决于其目标。有一点需要注意的是,"%"的展开发

2007-05-31 01:45:00 922

转载 跟我一起写 Makefile(十二)

隐含规则————http://blog.csdn.net/haoel/archive/2004/02/25/2897.aspx在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们

2007-05-31 00:25:00 895

原创 GCC使用手册

GCC使用手册 作者:Clock  1.前言     GCC编译器的手册(GCC MANUAL)的英文版已经非常全面,并且结构也非常完善了,只是一直都没有中文的版本,我这次阅读了GCC编译器的主要内容,对手册的内容进行了结构性的了解,认为有必要对这次阅读的内容进行整理,为以后的工作做准备。     由于我对这个英文手册的阅读也仅仅是结构性的。因此有很多地方并没有看,所以这篇文档的内容我

2007-05-30 22:43:00 1001

原创 makefile详解 函数 字符串 文件名 二十一

makefile详解 函数 字符串 文件名 二十一 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。 一、函数的调用语法 函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:     $(; ;) 或是     ${; ;} 这里,;就是函数名

2007-05-30 15:26:00 1098

原创 Unix(Linux)C编程问题精粹

 

2007-05-30 10:51:00 819

原创 Makefile 中的函数-3

六、call函数call函数是唯一一个可以用来创建新的参数化的函数。你可以写一个非常复杂的表达式,这个表达式中,你可以定义许多参数,然后你可以用call函数来向这个表达式传递参数。其语法是:         $(call ,,,...)     当make执行这个函数时,参数中的变量,如$(1),$(2),$(3)等,会被参数,,依次取代。而的返

2007-05-30 10:50:00 1106

原创 跟我一起写 Makefile(四)

书写规则http://blog.csdn.net/haoel/archive/2004/02/24/2889.aspx————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中

2007-05-30 10:44:00 810

转载 跟我一起写 Makefile(二)

http://blog.csdn.net/haoel/archive/2004/02/24/2887.aspx三、make是如何工作的在默认的方式下,也就是我们只输入make命令。那么,    1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。    2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文

2007-05-29 23:19:00 712

原创 UNIX/LINUX 平台可执行文件格式分析

UNIX/LINUX 平台可执行文件格式分析本文讨论了 UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。首先是

2007-05-29 22:55:00 846

原创 深入介绍Linux内核(二)

深入介绍Linux内核第二章每一种系统大概可分为四个基本部分组成,见图2-l所示。其中包含有能源、输入部分、处理中心和输出部分。见图2-l所示.电脑系统也相似,也主要由这四部分组成。稍为有点差别,就是电脑系统的处理中心与输入/输出部分的通道是共同使用的,见图2-1 (b) 电脑系统包括有硬件部分和软件部分,两者之间互相依存,缺一不可。硬件部分就是电脑系统的实体,是软件执行和储存的平台。软件是控制电

2007-05-28 14:05:00 1467

原创 深入介绍Linux内核(一)

深入介绍Linux内核(一)第一章我们在这里介绍的Linux内核,可以分为15章,其中Linux的诞生、名称来源和众多的开发者,我都不再重复的介绍了,开始我们讲解的是电脑硬件的基本知识。硬件与Operation systems有着密切的关联。如果想彻底了解Operartion systems的执行全部过程,那首先就要了解它的硬件运作环境,特别的是CPU多工执行机制。在这里我们也详细的来介绍

2007-05-28 14:00:00 1337 1

原创 深入介绍linux内核(七)

                                                                          深入介绍linux内核(七).......续上第六篇4.7 任务管理任务(Task)是处理器可以分配调度、执行和掛起的一个工作单元。它循於执行程式、任务或进程、作业系统服务、中断或異常处理行程和內核代码?。80X86提供了一种机制,这种机制可用来保

2007-05-27 20:58:00 1007

原创 深入介绍Linux内核(六)

深入介绍Linux内核(六).......(续第四章)4.5 保护保护机制是可靠的多工执行环境所必须的。它可用於保护各个任务免受相互之间的干扰。在软体发展的任何阶段都可以使用段级和页级保护来协助寻找和检测设计问题和错误。当程式对错误记忆体空间执行了一次非期望的引用,保护机制可以阻止这种操作並且报告此类事件。保护机制可以被用於分段和分页机制。处理器寄存器的2个Bit位元定义了当前执行程式的特权级

2007-05-25 22:51:00 1088

GCC源代码核心分析

GCC源代码核心分析,很好的学习gcc的资料

2011-02-21

C++编程思想(第二版.附源码).zip

C++编程思想(第二版.附源码).zip

2007-04-03

空空如也

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

TA关注的人

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