摘要:
Windows 是多任务的操作系统, 一个任务就是一个应用(应用程序)、一个应用占一个进程; 在一个进程里面, 又可以运行多个线程(所以就有了很多"多线程编程"的话题). 对 Win32 来讲, 系统给每个进程 4GB 的地址空间:低端 2GB($00000000 - $7FFFFFFF) 给用户支配;高端 2GB($80000000 - $FFFFFFFF) 留给系统使用. 文件或程序要调入内存才能工作, 先看看我们的内存到底有多大吧.在系统盘根目录下有个 pagefile.sys 文件, 这就是我们的 "虚拟内存"(虚拟内存是以文件的形式存在的). 阅读全文
摘要:
象使用虚拟内存一样,使用内存映像文件同样需要经过保留和提交两个过程,首先在进程内存空间保留一块区域,然后提交物理存储给这段区域。不同的是物理存储来自于磁盘上的文件,而不是系统的分页文件。也即将磁盘上指定的数据文件作为虚拟内存,这个实现过程被称为文件映像,可以将文件全部或部分映像到进程的地址空间中。文件映像过以后,可以把文件映像的部分当作已全部被载入内存一样的去访问它,这时又称它为内存映像文件。内存映像文件使用步骤要使用内存映像文件,可以按以下步骤:(1) 调用Windows API 函数CreateFile()创建或是打开一个文件,得到一个标识该文件(内核对象)的句柄,它确定了哪一个磁盘文件将 阅读全文
摘要:
在虚拟内存模型下,理论上有2GB的内存供程序使用。当VIRTUALALLOC或者其他函数提交虚拟内存时,虚拟内存管理器就开始消耗RAM。当物理内存将被消耗完时,管理器就开始将内存页面映射到硬盘。在默认的设置下,操作系统会用硬盘的所有可用空间来作为磁盘交换文件。因此,内存的限制并不是2GB的理论限制,而是RAM加上硬盘可用交换文件空间。2GB的虚拟内存空间对于进程是私有的。硬盘交换文件对于操作系统和所有正在执行的任务而言是共享资源。 阅读全文
摘要:
自由FREE:内存页既没有提交也没有被保留。它不能被进程访问,但是可以供某个内存分配函数分配。 保留RESERVED:内存已经被调用进程保留,不能被其他进程或者线程使用。但是内存并没有被使用,也没有提交到物理存储器。 提交COMMITTED:内存已经被提交到物理存储器。内存标识为正在被使用。只有分配它的进程才可以使用该内存。 阅读全文
摘要:
有4种用于内存分配的API函数。虚拟VIRTUAL函数用于分配和管理大数量的内存,堆函数HEAP用于小数量内存,全局函数GLOBAL及局部函数LOCAL用于小数量内存分配,这两类函数是为了实现与16位系统兼容而提供的。WIN32 API仍然维护全局以及局部的堆函数,但是它们都是从局部的2GB中分配内存。这些堆对于进程而言都是局部的,不能被其他进程访问。 当一个程序需要分配一个至少几KB缓存时,使用VIRTUALALLOC函数获得内存块。它以4KB为单位获取内存,分配的内存以4KB来对齐。当程序需要为小对象,数组或者结构分配内存时,调用HEAPALLOC函数更合适。将VIRTUALALLOC函数 阅读全文
摘要:
虚拟内存操作系统为程序员提供了超过物理内存限制的浮动内存模型。当系统需要的内存超过了物理内存时,可以使用硬盘中的交换文件在内存和硬盘之间进行页交换操作。不管目标机器安装了多少物理内存,都会有2GB的虚拟内存供开发人员使用,操作系统会自动实现内存到硬盘的映射。 每一个进程都有自己的4GB虚拟内存。低地址的2GB由开发人员支配。高地址的2GB只供操作系统使用。内存管理API函数只是从低地址的2GB分配所需的内存。 阅读全文
摘要:
//madCHook.pasversion:2.0?date:2003-08-10//----------//APIhooking,codehooking//----------//Copyright(C)1999-2003www.madshi.net,AllRightsReserved//**********//2003-08-102.0(1)HookCodeparameterschanged->onlyoneflagsparameter//(2)(Un)InjectLibrary:user/session/systemwideinjection!//(3)InjectLibrary2 阅读全文
摘要:
移动加权平均法: 移动加权平均法下库存商品的成本价格根据每次收入类单据自动加权平均;其计算方法是以各次收入数量和金额与各次收入前的数量和金额为基础,计算出移动加权平均单价。其计算公式如下: 移动加权平均单价= (本次收入前结存商品金额+本次收入商品金额)/(本次收入前结存商品数量+本次收入商品数量 ) 移动加权平均法计算出来的商品成本比较均衡和准确,但计算起来的工作量大,一般适用于经营品种不多、或者前后购进商品的单价相差幅度较大的商品流通类企业。 以下以一个简单的例子来说明: 例1:货品A,期初结存数量10,加权价10,金额为100,发生业务如下: 销售11;采购10,采购价格11; 成本计算 阅读全文
摘要:
作为一个面向对象的程序员、习惯于构件开发的程序员,对于模型驱动软件开发的认识经历了几个步骤。 首先我想到的是:为了适应用户不同的业务组合,很多软件中都有的运行选项。当我们依据自己的需要对选项进行组合后,将得到不同的界面和业务规则。比较常见的有:报表、对于数据的校验、流程等。 接着WEB页面进入了我的视野。利用诸如:JSP、PHP、ASP甚至CGI等技术来生成活动的界面。而太多的这些Pages都是用脚本生成的。当我们改变脚本的时候,在浏览器端的画面也随之改变。 XML是一个更加接近于这种思想的东西。简单的说格式化的数据+如何显示,构成了XML。而XML本身只是数据而已,它并不是一个软件。但你利用 阅读全文
摘要:
为了管理者能很好的知道业务的来龙去脉,管理的时候很快知道问题根源,而不是听这个人说一嘴那个人说一嘴。因为一旦出了业务问题,每个人都会往自己有利的方向上去说,而且每个人都会是一个信息碎片。所以管理软件是为了能很快知道一件事情的来龙去脉的,为了出现异常的时候快速切入根源。管理,就是让平庸的人也能保持一定水准,不至于产出质量因人而异。管理的目的就是保证尽量少出意外,尽量所有人有一个清晰的统一的强制执行的业务处理方法。对,管理软件就达到了。处理每个业务,要看到什么数据,要填写什么数据,要校验什么数据,软件通过后台配置或编程,让前端最终用户就按照软件的方法来,想偷懒不填写不行,否则就保存不了。这就是管理 阅读全文