摘要:<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html><head><title>agetimemenu demo</title><meta http-equiv="content-type" content="text/html; charset=gb2312&......
摘要:设计模式c#语言描述——装饰(decorator)模式
*本文参考了《java与模式》的部分内容,适合于设计模式的初学者。
装饰模式又名包装模式,以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。它使用原来被装饰的类的一个子类的实例,把客户端的调用委派到被装饰类,客户端并不会觉得对象在装饰前和装饰后有什么不同。在以下情况下应使用装饰模式:需要扩展一个类的功能,或给一个类增加附加责任。动态地给一个对象增加功能,这些功能可以再动态地......
文件系统实现文档 - Full
备注
幻灯片放映
大纲
1
文件系統
peng lei
2
系統功能
支持 fat12/fat16/fat32
支持長文件名
底層對文件名採用到 unicode
提供兼容當前系統的 ascii文件名接口
提供一套使用 unicode 文件名接口
3
設計目標
優化 buffer﹐減少 io 次數
優化文件訪問方式﹐提高隨機訪問速度
面嚮對象結構
增強可擴充性
增強模塊內聚
減小模塊間耦合
增加模塊可復用性
4
系統概要
最近最少使用算法
虛擬文件系統 vfs
fat 文件系統
文件名/路徑名解析
系統初始化
5
最近最少使用算法(lru)
實現為一個模板類 lrumap
用于需要進行 buffer/cache的對象。
主要接口 :
get(key, referflag)
release(object)
6
實現
使用 red-black tree通過鍵值查找對象。
使用double-linked list管理為最近最少使用的可換出的對象(lrulist)。
如果對象被引用﹐則引用計數非零﹐此時對象不在 lrulist中﹔當引用計數減至零時﹐對象進入 lrulist 作為 head﹐即最近使用的。
如果找到﹐僅增加引用計數﹐否則load object﹐必要時換出最近最少使用的對象。
7
vfs 的結構
內存分配
設備驅動程序(devicedriver)
緩沖區管理(buffermanager﹐使用lru)
文件空間管理(clustermanager﹐使用lru)
文件節點管理(dirctrlblock﹐目錄管理)
全局文件註冊表(filemap﹐使用lru)
8
vfs 的結構-圖示
9
內存分配
限制文件系統使用的總內存
文件系统初始化时从系统堆申请一块固定空间作為文件系統專用heap
fsmem_alloc(size, flag)
如 flag 標明申請的內存是重要的﹐則在內存用量超額時將最近最少使用的buffer換出。
fsmem_free(mem)
10
設備驅動程序(devicedriver)
提供按塊讀寫的接口
塊尺寸為標準扇區尺寸(512b)
提供一個最優訪問塊數﹐vfs努力按此塊數为单位讀寫設備
提供低級格式化函數(format)
11
緩沖區管理(buffermanager)
使用lru算法統一管理系統所有的 buffer﹔
文件系統不顯式讀取外存﹐只向 buffermanager請求某設備某地址的數據內容。
由buffermanager通過對buffer的換入換出﹐將數據寫入外存。
解決buffer重迭問題。...
下一页 摘要:c#中在应用程序和dll使用消息
在c#中采用的是事件驱动方式,但在我们使用的过程中,有时候通过调用系统原有的消息,处理起来会比较简单一些,特别是在处理与dll文件的交互时,的确是非常的方便。
在c#中使用自定义消息
在c#中使用自定义消息非常简单,只需要下面几个简单的步骤就可以了:
1、 定义消息
定义消息的方法和vc中定义消息有一点点不同
比如在vc中申明一个自定义消息:
#define wm_test wm_user + 101
......