時(shí)間:2023-03-17 18:01:41
緒論:在尋找寫(xiě)作靈感嗎?愛(ài)發(fā)表網(wǎng)為您精選了8篇計(jì)算機(jī)畢業(yè)論文,愿這些內(nèi)容能夠啟迪您的思維,激發(fā)您的創(chuàng)作熱情,歡迎您的閱讀與分享!
轉(zhuǎn)眼間,我已在美麗的中山大學(xué)度過(guò)了將近兩個(gè)年頭。也正是這兩年的研究生生涯,讓我的人生有了不同的軌跡。
在這寶貴的兩年的研究生生活中,首先我要感謝我的導(dǎo)師——郭清順老師?!笆谌艘贼~(yú),不如授之以漁”,郭老師正是這樣以言傳身教來(lái)教導(dǎo)著我們。
在這里,還要特別感謝我另外一位老師——道焰老師,她雷厲風(fēng)行的性格、干凈利落的做事風(fēng)格永遠(yuǎn)是我學(xué)習(xí)的榜樣。無(wú)論是在學(xué)習(xí)上還是在生活,她總給在我最需要的時(shí)候給予幫助。
不得不提,王竹立老師,他慈父一樣的關(guān)懷曾使我感激不已。他使我懂得,踏踏實(shí)實(shí)做人,認(rèn)認(rèn)真真做事,應(yīng)付別人就是應(yīng)付自己。
感謝在研究生學(xué)習(xí)期間給我諸多教誨和幫助的信息與網(wǎng)絡(luò)中心的各位老師,感謝陳鐵老師、蘇順開(kāi)老師、黃海老師、張汶老師給予我的指導(dǎo)和幫助!
感謝317實(shí)驗(yàn)室的兄弟姐妹,是你們給我?guī)?lái)了歡樂(lè),是你們讓我知道了什么是手足情深。
感謝我的三位同學(xué)——陳頌麗、路昉碩和郭澤平,我們之間的友誼足以使我今生不忘。
感謝我的朋友——淦鑫、馬偉杰、王海洋、賀明威、林諸鳴、甘榮偉,感謝你們?cè)谖沂б鈺r(shí)給我鼓勵(lì),在失落時(shí)給我支持,感謝你們和我一路走來(lái),讓我在此過(guò)程中倍感溫暖!
相關(guān)的論文致謝樣本
·畢業(yè)論文致謝如何寫(xiě)·課程設(shè)計(jì)論文致謝詞·博士生論文致謝范例
·碩士研究生畢業(yè)論文感謝信·本科畢業(yè)論文致謝·大專畢業(yè)論文致謝詞
開(kāi)題報(bào)告
經(jīng)過(guò)大學(xué)四年理論課程的學(xué)習(xí),以及校內(nèi)校外的實(shí)踐,極大的豐富了自身的理論基礎(chǔ),并且也具備了一些處理簡(jiǎn)單問(wèn)題的能力,但即將踏上社會(huì)的我深知這還遠(yuǎn)遠(yuǎn)不夠,因此我利用了畢業(yè)設(shè)計(jì)的機(jī)會(huì),在老師的指導(dǎo)下去完成一個(gè)具有挑戰(zhàn)性的,其具體應(yīng)用及社會(huì)服務(wù)相結(jié)合的項(xiàng)目,深知通過(guò)對(duì)它的開(kāi)發(fā),將對(duì)我的能力有更高層次的突破。
開(kāi)發(fā)軟件的一個(gè)目的是針對(duì)目前普遍的圖書(shū)管理系統(tǒng)存在的功能不全,操作復(fù)雜,系統(tǒng)要求高等一系列問(wèn)題,而設(shè)想一個(gè)具有個(gè)性化的圖書(shū)管理系統(tǒng)。該管理系統(tǒng)與MIS系統(tǒng)相聯(lián)系,在圖書(shū)館內(nèi)部建成可靠,方便,并且功能齊全的MIS系統(tǒng)。從而在圖書(shū)館對(duì)新舊書(shū)的反應(yīng);對(duì)書(shū)籍借閱的管理能力;對(duì)讀者和圖書(shū)館工作人員的管理能力;對(duì)圖書(shū)館管理人員軟件操作的適應(yīng)時(shí)間和操作感覺(jué)這些方面都將大大的提高。當(dāng)然對(duì)該軟件的態(tài)度是渴望獲得顯著的社會(huì)效益。
開(kāi)發(fā)軟件的另一個(gè)目的是使其具有強(qiáng)大的實(shí)用價(jià)值,即它可以滿足中小型圖書(shū)館的借閱與管理的需要。在一般的學(xué)校與科研機(jī)構(gòu),其下屬的很多分支的研究中心,試驗(yàn)中心,各個(gè)學(xué)院,它們往往都有著自己的規(guī)模較大的圖書(shū)資料室。而這些圖書(shū)資料室由于本身規(guī)模不大因此其對(duì)書(shū)籍或資料的管理模式一般都比較舊,而且在沒(méi)有能力也沒(méi)有必要引進(jìn)大型的圖書(shū)館管理軟硬件的基礎(chǔ)上,尋求一個(gè)針對(duì)中小型圖書(shū)資料室的管理軟件是必要的。
這種管理軟件對(duì)硬件的要求很低,一般有一個(gè)比較簡(jiǎn)單的服務(wù)器與PC機(jī)組成的網(wǎng)絡(luò)即可,再加上使用比較廉價(jià)、性能不錯(cuò)的軟件,這樣就可以以較低的成本來(lái)實(shí)現(xiàn)一個(gè)足夠使用的功能,而這種模式也正滿足了那種中小型資料室,圖書(shū)館的要求。但是目前對(duì)這種管理軟件的開(kāi)發(fā)還處于一種比較原始的階段。開(kāi)發(fā)者往往都是出于資金和時(shí)間的顧慮使用比較陳舊的技術(shù),并且各為己見(jiàn),并且很少涉及網(wǎng)絡(luò)??墒钱?dāng)今是一個(gè)網(wǎng)絡(luò)化的社會(huì),像資料室,圖書(shū)館這樣的信息機(jī)構(gòu)不能與網(wǎng)絡(luò)聯(lián)系起來(lái)豈不可惜,再加上如今單機(jī)版的圖書(shū)管理軟件多如牛毛,去開(kāi)發(fā)一個(gè)類似的軟件無(wú)疑是一種在時(shí)間上、精神上和資源上的極大浪費(fèi)。所以出于多方面的考慮覺(jué)得有必要為這種有需要的中小型圖書(shū)館,資料室開(kāi)發(fā)一種基于網(wǎng)絡(luò)的圖書(shū)資料管理軟件。
項(xiàng)目的具體目的:
1.
實(shí)現(xiàn)圖書(shū)館對(duì)外借書(shū),還書(shū)的簡(jiǎn)易操作,提高圖書(shū)館對(duì)最平凡工作的效率。
2.
實(shí)現(xiàn)圖書(shū)館對(duì)所藏圖書(shū)的按類別,書(shū)名等多方面的查詢,最大的方便讀者和圖書(shū)館工作人員對(duì)所需圖書(shū)的查詢。
3.
建立圖書(shū)館外借讀者數(shù)據(jù)庫(kù),方便工作人員對(duì)讀者進(jìn)行有效管理。
4.
建立圖書(shū)館工作人員數(shù)據(jù)庫(kù),限定每個(gè)工作人員對(duì)軟件操作的權(quán)限,最大限度的保護(hù)數(shù)據(jù)庫(kù)。
5.
實(shí)現(xiàn)圖書(shū)館對(duì)新書(shū)入庫(kù),舊書(shū)注銷的簡(jiǎn)單處理,并且建立書(shū)籍檔案,方便進(jìn)貨。
實(shí)現(xiàn)方法:
后臺(tái)數(shù)據(jù)庫(kù)支持:采用PowerBuild 8.0,主要是由于PowerBuild 8.0是美國(guó)Sybase公司PowerSoft的新一代數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)工具,它能夠設(shè)計(jì)傳統(tǒng)的高性能、基于客戶/服務(wù)器體系結(jié)構(gòu)的應(yīng)用系統(tǒng),也能夠用于開(kāi)發(fā)基于Internet的應(yīng)用系統(tǒng)。它具有容易使用,便于維護(hù)的優(yōu)點(diǎn),使使用部門(mén)可以節(jié)省培訓(xùn)費(fèi)用,加快磨合周期,同時(shí)有利于操作人員的培訓(xùn),是對(duì)數(shù)據(jù)的安全性要求不是特別高,同時(shí)又有比較大的數(shù)據(jù)量的單位的較好選擇。作為PowerBuild 7.0的后續(xù)版本,PowerBuild 8.0 擴(kuò)展了 PowerBuild 7.0 版的性能、可靠性、質(zhì)量和易用性。PowerBuild 8.0增加了幾種新的功能,由此成為數(shù)據(jù)倉(cāng)庫(kù)和電子商務(wù)應(yīng)用程序的優(yōu)秀數(shù)據(jù)庫(kù)平臺(tái)。這些功能如:
l
新的開(kāi)發(fā)調(diào)試界面,使程序員對(duì)于工作環(huán)境有了直觀的了解,最大的方便了程序員的工作,新增的剪貼板能夠讓你保存最常用的代碼段,避免了重復(fù)輸入。
l
新的Web特性,這是PB8.0相對(duì)于7.0最大的改進(jìn),它提供了因特網(wǎng)瀏覽器中使用數(shù)據(jù)窗口控件的瘦客戶端的解決方式。普通數(shù)據(jù)窗口和數(shù)據(jù)存儲(chǔ)中可以使用的方法和屬性現(xiàn)在大部分可以使用于Web數(shù)據(jù)窗口了。
l
新的數(shù)據(jù)庫(kù)連接,在改進(jìn)已有接口的前提下,使用新的數(shù)據(jù)庫(kù)連接接口jdbc/jbd數(shù)據(jù)接口。它封裝了jdbc函數(shù)功能于一個(gè)PB數(shù)據(jù)庫(kù)接口,不僅支持使用SUN公司的jdk/jre1.1,還支持使用微軟的java vm。因此它具有對(duì)現(xiàn)在windows操作平臺(tái)更加好的兼容性。 外部網(wǎng)/internet
圖書(shū)館內(nèi)部局域網(wǎng)
數(shù)據(jù)庫(kù)
圖書(shū)館管理系統(tǒng)
讀者查詢系統(tǒng)
power builder具有的獨(dú)特的報(bào)表系統(tǒng)使制作表格變的極其方便,同時(shí)根據(jù)用戶的需要可以隨意調(diào)節(jié)表格的形式,而不象其他的語(yǔ)言,當(dāng)用戶的需要改變時(shí),需要很大的工作量來(lái)更改程序適應(yīng)用戶的需要,同時(shí),由于該語(yǔ)言具有良好的數(shù)據(jù)庫(kù)接口,可以比較方便的進(jìn)行數(shù)據(jù)庫(kù)操作。雖然power builder的語(yǔ)法較為簡(jiǎn)單,對(duì)于算法和其他的一些復(fù)雜的表示方式缺乏有效的方法,但對(duì)于數(shù)據(jù)庫(kù)運(yùn)用,這些缺點(diǎn)并不是經(jīng)常出現(xiàn)。 因此,同時(shí)也用power builder作為前臺(tái)客戶端界面的實(shí)現(xiàn)語(yǔ)言。即整個(gè)系統(tǒng)均使用power builder,以提高可靠性和安全性。
數(shù)據(jù)的安全性:
由于該系統(tǒng)統(tǒng)計(jì)管理單位的各種書(shū)目,人員數(shù)據(jù)及出入庫(kù)數(shù)據(jù),因此需要保證數(shù)據(jù)的可靠性和安全性。對(duì)于軟件方面,采用手動(dòng)或定時(shí)對(duì)數(shù)據(jù)庫(kù)采取備份,使由于數(shù)據(jù)破壞所產(chǎn)生的損失降到最低,同時(shí)便于恢復(fù)。
總體功能結(jié)構(gòu):
根據(jù)圖書(shū)館的基本要求和功能目標(biāo),總體框架是建立二個(gè)功能系統(tǒng)和二個(gè)支持系統(tǒng)(具體見(jiàn)圖--1)。二個(gè)功能系統(tǒng)是:1.圖書(shū)館管理系統(tǒng)(下稱1號(hào)系統(tǒng));2.外部讀者查
詢系統(tǒng)(下稱2號(hào)系統(tǒng))。二個(gè)支持系統(tǒng)是:1.網(wǎng)絡(luò)支持系統(tǒng)(WAN和LAN);2.數(shù)據(jù)庫(kù)支持系統(tǒng)。
需求分析:
A:
圖書(shū)館管理系統(tǒng)即1號(hào)系統(tǒng)是該系統(tǒng)軟件的重要內(nèi)容之一,該子系統(tǒng)為圖書(shū)館的庫(kù)存書(shū)籍的動(dòng)態(tài)調(diào)整提供了決策依據(jù),有利于及時(shí)對(duì)有大量需求的新書(shū)進(jìn)行訂貨入庫(kù)。它的主要功能包括:新書(shū)入庫(kù),舊書(shū)注銷,借書(shū),還書(shū),館內(nèi)圖書(shū)詳細(xì)信息,圖書(shū)查詢,讀者管理,館內(nèi)圖書(shū)統(tǒng)計(jì),讀者信息管理,圖書(shū)館工作人員權(quán)限管理,名稱設(shè)計(jì),數(shù)據(jù)庫(kù)備份等功能。
下面是2號(hào)系統(tǒng)的主要功能的簡(jiǎn)單描述(圖—2簡(jiǎn)單數(shù)據(jù)流圖):
1.
圖書(shū)管理(圖—3系統(tǒng)流圖):
這是圖書(shū)館最重要的模塊之一,它將對(duì)圖書(shū)館中的書(shū)籍進(jìn)行管理操作,所有的原始數(shù)據(jù)輸入都是在這里實(shí)現(xiàn)的,有了這里的數(shù)據(jù)輸入,才能開(kāi)始以后的諸如借書(shū)、還書(shū)等操作。
。新書(shū)入庫(kù)管理:
該功能允許用戶輸入圖書(shū)單,在輸入過(guò)程中,程序自動(dòng)生成圖書(shū)單編號(hào)以加以區(qū)分兩次不同的入庫(kù)書(shū)單,同時(shí)程序也檢查輸入的合法性,并自動(dòng)記錄當(dāng)日入庫(kù)的圖書(shū)。
。當(dāng)日入庫(kù)圖書(shū)查詢
該功能允許用戶對(duì)當(dāng)日的入庫(kù)書(shū)單針對(duì)不同條件進(jìn)行查詢,并且提供二次修改,避免出錯(cuò)。
。舊書(shū)注銷:
該功能允許用戶輸入注銷單,在輸入過(guò)程中,程序自動(dòng)生成注銷單編號(hào)以加以區(qū)分兩次不同的注銷書(shū)單,并且自動(dòng)記錄當(dāng)日注銷的圖書(shū)。
。當(dāng)日注銷圖書(shū)查詢:
該功能允許用戶對(duì)當(dāng)日的注銷單針對(duì)不同條件進(jìn)行查詢,并且提供還原,避免出錯(cuò)。
2.
業(yè)務(wù)管理:
這是圖書(shū)館使用頻率最高的模塊,因此他在功能上應(yīng)該直觀明確,在操作上應(yīng)該簡(jiǎn)單易用。
。圖書(shū)借閱:
該功能要求用戶輸入圖書(shū)編號(hào)或者圖書(shū)條碼,并且檢查輸入合法性,然后程序動(dòng)態(tài)生成該書(shū)的詳細(xì)信息;再輸入借書(shū)證號(hào),并且檢查輸入合法性,然后程序動(dòng)態(tài)生成該讀者的詳細(xì)信息;系統(tǒng)記錄借書(shū)的經(jīng)手人,最后由借書(shū)按鈕實(shí)現(xiàn)操作。
。圖書(shū)歸還:
與圖書(shū)借閱類似,追加圖書(shū)超期罰款功能,自動(dòng)根據(jù)預(yù)設(shè)值計(jì)算出罰款金額。
3.
人員檔案管理:
這是針對(duì)讀者和圖書(shū)館工作人員而設(shè)計(jì)的一個(gè)人士管理模塊,它將完整的記錄讀者的信息,以及圖書(shū)館工作人員的信息,并且他還具有限制圖書(shū)館工作人員操作權(quán)限的功能,最大限度的保證了數(shù)據(jù)的安全。
。讀者管理:
記錄讀者的詳細(xì)信息,并提供增加、撤除、查詢等操作。
。圖書(shū)館工作人員管理:
在讀者管理子模塊的基礎(chǔ)上增加權(quán)限管理功能,保證數(shù)據(jù)安全。
4.
數(shù)據(jù)庫(kù)備份:
這是一個(gè)涉及到安全問(wèn)題的重要模塊,它可以保證數(shù)據(jù)庫(kù)的安全,防止因外界的突發(fā)事件所造成的損失,避免因數(shù)據(jù)流失而重復(fù)輸入的困擾。該功能分為自動(dòng)備份,和手動(dòng)立即備份兩部分,滿足用戶需要。
5.
名稱設(shè)計(jì):
這是一個(gè)很具個(gè)性化的功能,實(shí)現(xiàn)很簡(jiǎn)單,但非常吸引人,你可以任意為你的管理系統(tǒng)命名,比如“杭州X中學(xué)圖書(shū)管理系統(tǒng)”。
B:
外部讀者查詢系統(tǒng),即2號(hào)系統(tǒng),這是一個(gè)面向讀者的綜合查詢系統(tǒng),采用與管理系統(tǒng)相同的數(shù)據(jù)庫(kù),具有唯一的功能:查詢。他可以按照讀者的要求,用不同方法對(duì)所藏書(shū)籍進(jìn)行查詢,并能進(jìn)行書(shū)名的模糊查詢,還可以查詢讀者所借書(shū)的到期日,和觀看讀者本人的詳細(xì)資料,力爭(zhēng)最大的滿足讀者的需求。(圖-4簡(jiǎn)單數(shù)據(jù)流圖)
性能要求:
對(duì)新書(shū)入庫(kù)單,注銷單的處理及查詢;圖書(shū)查詢;借書(shū)還書(shū)速度應(yīng)較快
登錄倉(cāng)庫(kù)管理系統(tǒng)時(shí)應(yīng)輸入密碼,以保證系統(tǒng)的安全性。
系統(tǒng)要有較強(qiáng)的兼容性,能在各種PC機(jī)上正常運(yùn)行。在系統(tǒng)運(yùn)行異常及數(shù)據(jù)文件損壞時(shí)能給出出錯(cuò)提示,保證系統(tǒng)的可靠性。
運(yùn)行環(huán)境:
1. 推薦配置:
cpu:Intel Pentium 以上
內(nèi)存:64M
硬盤(pán):100M空閑空間
2.支持軟件:
操作系統(tǒng):Windows98 , Windows2000 , WindowsMe.
本人開(kāi)發(fā)進(jìn)度計(jì)劃:
轉(zhuǎn)眼間,我已在美麗的中山大學(xué)度過(guò)了將近兩個(gè)年頭,也正是這兩年的研究生生涯,讓我的人生有了不同的軌跡。
在這寶貴的兩年的研究生生活中,首先我要感謝我的導(dǎo)師——郭清順老師?!笆谌艘贼~(yú),不如授之以漁”,郭老師正是這樣以言傳身教來(lái)教導(dǎo)著我們。
在這里,還要特別感謝我另外一位老師——道焰老師,她雷厲風(fēng)行的性格、干凈利落的做事風(fēng)格永遠(yuǎn)是我學(xué)習(xí)的榜樣。無(wú)論是在學(xué)習(xí)上還是在生活,她總給在我最需要的時(shí)候給予幫助。
不得不提,王竹立老師,他慈父一樣的關(guān)懷曾使我感激不已。他使我懂得,踏踏實(shí)實(shí)做人,認(rèn)認(rèn)真真做事,應(yīng)付別人就是應(yīng)付自己。
感謝在研究生學(xué)習(xí)期間給我諸多教誨和幫助的信息與網(wǎng)絡(luò)中心的各位老師,感謝陳鐵老師、蘇順開(kāi)老師、黃海老師、張汶老師給予我的指導(dǎo)和幫助!
感謝317實(shí)驗(yàn)室的兄弟姐妹,是你們給我?guī)?lái)了歡樂(lè),是你們讓我知道了什么是手足情深。
感謝我的三位同學(xué)——陳頌麗、路昉碩和郭澤平,我們之間的友誼足以使我今生不忘。
感謝我的朋友——淦鑫、馬偉杰、王海洋、賀明威、林諸鳴、甘榮偉,感謝你們?cè)谖沂б鈺r(shí)給我鼓勵(lì),在失落時(shí)給我支持,感謝你們和我一路走來(lái),讓我在此過(guò)程中倍感溫暖!
1.合肥IT業(yè)(市場(chǎng))現(xiàn)狀
合肥,位于安徽省中部,可輻射面積大;背靠?jī)?nèi)陸一些欠發(fā)達(dá)的地區(qū)如大別山區(qū)。由于歷史、體制等方面的原因,信息化建設(shè)起步晚,基礎(chǔ)薄,合肥地區(qū)生產(chǎn)計(jì)算機(jī)及其設(shè)備、通信器材產(chǎn)品的企業(yè)很少,基本上完全是一個(gè)消費(fèi)性市場(chǎng),無(wú)論是規(guī)模還是容量,合肥的IT市場(chǎng)只是一個(gè)中等規(guī)模的市場(chǎng),這種條件下的市場(chǎng)究竟是什么樣子?我們具體來(lái)看看合肥IT市場(chǎng)的現(xiàn)狀。
郵電通信業(yè)
合肥郵電通信業(yè)比較發(fā)達(dá),四通八達(dá)的光纖主干網(wǎng)已敷設(shè)完畢。目前,合肥地區(qū)擁有固定電話用戶和中國(guó)電信移動(dòng)電話用戶共計(jì)40多萬(wàn)。中國(guó)聯(lián)通目前開(kāi)通了合肥、蕪湖兩地130移動(dòng)電話業(yè)務(wù),下一步目標(biāo)是在安徽全省各中等城市開(kāi)通130移動(dòng)電話業(yè)務(wù)。合肥地區(qū)無(wú)線尋呼臺(tái)目前有20多家,除國(guó)信、聯(lián)通、中北、政訊等較大的全國(guó)衛(wèi)星連網(wǎng)尋呼臺(tái)之外,還有皖訊等全省連網(wǎng)的尋呼臺(tái)。目前合肥電信局開(kāi)放的數(shù)據(jù)通信網(wǎng)有:公用分組交換網(wǎng)、數(shù)字?jǐn)?shù)據(jù)網(wǎng)、中國(guó)公眾多媒體通信網(wǎng)和CHINANET。中國(guó)公眾多媒體通信網(wǎng)棗安徽熱線也于98年開(kāi)通,網(wǎng)絡(luò)覆蓋全省各地市,;合肥地區(qū)三大互連網(wǎng)也于98年實(shí)現(xiàn)互通互連:省郵電多媒體通信網(wǎng)(169)以64KDDN專線與教育科研網(wǎng)、安徽信息網(wǎng)互連,三網(wǎng)互連為合肥地區(qū)信息高速公路建設(shè)打下了良好的基礎(chǔ)。合肥目前較大的通信商城有天地通信商城,經(jīng)營(yíng)業(yè)務(wù)涉及語(yǔ)音、數(shù)據(jù)、圖象、微波等通信業(yè)務(wù)。
電腦軟硬件市場(chǎng)
合肥的電腦軟硬件經(jīng)銷商,除了個(gè)別實(shí)力雄厚的大公司擁有自己獨(dú)立的大本營(yíng)之外,象其他城市一樣,絕大部分都集中在電腦城經(jīng)營(yíng)。
說(shuō)到合肥的電腦城,首推步瑞祺電腦城。步瑞祺電腦城,是安徽省內(nèi)目前規(guī)模最大、產(chǎn)品最集中、挑選余地最大的電腦電子專業(yè)市場(chǎng),位于合肥金寨路和黃山路交匯處,毗鄰中國(guó)科大、安徽大學(xué)、合肥聯(lián)合大學(xué)、安徽電力職工大學(xué)、炮兵學(xué)院、電子工程學(xué)院和電子部43所等一批高校和科研所。良好的科研學(xué)術(shù)氛圍加上良好的經(jīng)營(yíng)環(huán)境創(chuàng)造了無(wú)限的商機(jī),引來(lái)大批經(jīng)銷商入駐。到目前為止,進(jìn)駐的公司有60余家,經(jīng)營(yíng)品種2000多種,涵蓋了計(jì)算機(jī)軟硬件(主要是硬件)各個(gè)方面,從各種板卡到各種電腦耗材、外設(shè),應(yīng)有盡有。眾多的經(jīng)銷商的加盟也給步瑞祺電腦城帶來(lái)了大量的客流,每天的成交額(包括零售和批發(fā))逾50萬(wàn)元。電腦城的發(fā)展和繁榮,也帶動(dòng)了電腦城周圍餐飲業(yè)、交通運(yùn)輸業(yè)、打字復(fù)印業(yè)、電腦圖書(shū)業(yè)的迅猛發(fā)展??拷饺痨鞔髲B的合肥科菀電腦書(shū)店,號(hào)稱合肥最具有特色的專業(yè)電腦書(shū)店,發(fā)展已初具規(guī)模,開(kāi)展了熱線查詢、電話售書(shū)、送書(shū)上門(mén)等一系列服務(wù)。
步瑞祺電腦城的對(duì)面,就是合肥另一個(gè)電腦市場(chǎng)棗科大高科技廣場(chǎng),依托中國(guó)科學(xué)技術(shù)大學(xué)的品牌效應(yīng)和雄厚的科研創(chuàng)新能力,科大高技術(shù)廣場(chǎng)也吸引了諸如方正、同創(chuàng)、康柏、TCL、海爾、IBM等一大批廠商加盟,中國(guó)科大也在高科技廣場(chǎng)開(kāi)辦了許多計(jì)算機(jī)公司、系統(tǒng)集成公司和培訓(xùn)中心。
合肥另外一處電腦市場(chǎng)是工大電子城,位于合肥工業(yè)大學(xué)附近,交通便利,人員密集,生意也十分興隆。合肥新開(kāi)張的一座電腦城棗南方大廈電腦城也位于科大高科技廣場(chǎng)的對(duì)面,看來(lái)不管是電腦城的經(jīng)營(yíng)者還是電腦軟硬件的經(jīng)營(yíng)商,都善于利用已有的優(yōu)勢(shì)和影響去開(kāi)拓更大的市場(chǎng)。
近年來(lái),在合肥市科教書(shū)店的計(jì)算機(jī)廣場(chǎng)內(nèi)聚集了以連邦為代表的一批軟件銷售商,均取得了不錯(cuò)的業(yè)績(jī)。據(jù)合肥連邦軟件專賣店的負(fù)責(zé)人介紹,合肥連邦于1994年底正式開(kāi)業(yè),在1995、1996、1997年度連續(xù)三年銷售翻番,銷售額始終位居全國(guó)200多家連邦專賣點(diǎn)的前十名之列。
IT業(yè)與教育、科研聯(lián)合體
IT業(yè)是一個(gè)新興的產(chǎn)業(yè),IT業(yè)同時(shí)也是一個(gè)高新技術(shù)產(chǎn)業(yè),因此,要求從業(yè)人員要有一定的素質(zhì)和專業(yè)技能。所以IT業(yè)必然會(huì)和教育、科研走到一起,組成聯(lián)合體。合肥目前這樣的聯(lián)合體有四家:聯(lián)想集團(tuán)與中國(guó)科大組建科大聯(lián)想計(jì)算機(jī)學(xué)院聯(lián)想棗科大通信軟件研究發(fā)展中心;同創(chuàng)集團(tuán)與安徽省科技研究院組建安徽同創(chuàng)科力信息產(chǎn)業(yè)有限公司;合肥工業(yè)大學(xué)與合肥永信電腦公司組建合肥永信軟件系統(tǒng)工程公司;合肥工業(yè)大學(xué)與合肥安達(dá)電子技術(shù)公司組建合肥安達(dá)數(shù)控技術(shù)公司。99年3月合肥電信局與中國(guó)科技大學(xué)共同組建中國(guó)科大電話局,開(kāi)創(chuàng)了在高等院校組建電話局的先例,將從根本上改善中國(guó)科大電話和網(wǎng)絡(luò)的質(zhì)量,為中國(guó)科大的繼續(xù)發(fā)展奠定了基礎(chǔ)。科研、教育和IT企業(yè)的聯(lián)合已成為安徽省信息產(chǎn)業(yè)界的一大趨勢(shì)。
IT業(yè)與傳媒業(yè)
IT業(yè)由于自身具有的特點(diǎn),決定了其與傳媒業(yè)的密切關(guān)系:IT業(yè)通過(guò)傳媒業(yè)擴(kuò)大影響,傳媒業(yè)因IT業(yè)而加強(qiáng)傳媒手段。在合肥,從事IT業(yè)的傳媒業(yè)有以下幾家:中國(guó)計(jì)算機(jī)專修學(xué)院主辦的《電腦知識(shí)與技術(shù)》和《計(jì)算機(jī)考試與指導(dǎo)》,一種傳播電腦基本知識(shí)和技術(shù)的刊物和一種計(jì)算機(jī)等級(jí)考試的輔導(dǎo)刊物;安徽省計(jì)算機(jī)學(xué)會(huì)主辦的《計(jì)算機(jī)與信息技術(shù)》,一種計(jì)算機(jī)應(yīng)用類的技術(shù)性刊物;《新安晚報(bào)都市節(jié)拍電腦視窗》,合肥地區(qū)最大的晚報(bào)之一《新安晚報(bào)》每周也在《電腦視窗》欄目中普及電腦知識(shí)、最新電腦行情。《金通商訊》、《每周快遞》、《安徽電子報(bào)》等一批引導(dǎo)IT消費(fèi)潮流、最新市場(chǎng)行情的刊物。所有這些,為合肥乃至整個(gè)安徽的IT業(yè)(市場(chǎng))的發(fā)展,作出了巨大的貢獻(xiàn)。
IT業(yè)自有品牌
合肥自有品牌不多,目前較有影響的是安徽長(zhǎng)安電子股份有限公司生產(chǎn)的“長(zhǎng)安”系列電腦。長(zhǎng)安公司實(shí)力較雄厚,已通過(guò)ISO9002質(zhì)量體系認(rèn)證。為了擴(kuò)大影響、提高品牌知名度,長(zhǎng)安公司與安徽有線電視臺(tái)探索(Discovery)欄目聯(lián)舉辦有獎(jiǎng)收視活動(dòng),每月評(píng)出一名優(yōu)勝者,獎(jiǎng)長(zhǎng)安多媒體電腦一臺(tái),其宣傳口號(hào)是:探索你的世界,探索你的人生;看探索節(jié)目,當(dāng)探索奔騰王,得長(zhǎng)安電腦。合肥地區(qū)另一自有品牌是由安徽豐利電子有限公司生產(chǎn)的“豐利”系列電腦。安徽豐利的宣傳口號(hào)是“平易近人的價(jià)格,無(wú)微不至的服務(wù)”。當(dāng)然還有更多具有行業(yè)特色的專業(yè)公司在默默無(wú)聞的發(fā)展著,說(shuō)不定哪天也能一鳴驚人,打出自己的一片天地。
二.合肥IT業(yè)(市場(chǎng))現(xiàn)狀分析與對(duì)策展望
總的說(shuō)來(lái),合肥地區(qū)IT業(yè)(市場(chǎng))目前還處在一個(gè)剛剛起步,還很不成熟的三級(jí)、四級(jí)市場(chǎng),與北京的中關(guān)村電子市場(chǎng)、深圳、武漢的電腦市場(chǎng)相比,還有相當(dāng)大的差距。合肥地區(qū)IT企業(yè)規(guī)模較小,在與省外公司競(jìng)爭(zhēng)中處于不利地位,有不少省內(nèi)工程都被南京、深圳、北京等地的公司拿走;由于合肥是一個(gè)內(nèi)地城市,經(jīng)濟(jì)節(jié)奏相對(duì)緩慢,信息流通也稍慢一些,因此,合肥成了商家和IT企業(yè)專業(yè)服務(wù)商容易遺忘的地方。如去年下半年,在合肥地區(qū)舉行的IT企業(yè)展覽就只有三次:聯(lián)想百城巡禮、科利華“學(xué)習(xí)的革命”和微軟世紀(jì)行。但也正是在這種“被人遺忘的地方”,卻存在著實(shí)實(shí)在在需求,蘊(yùn)含著無(wú)限的商機(jī)(別忘了世界上第一臺(tái)VCD——萬(wàn)燕VCD就誕生在這里)。IT領(lǐng)域變化快,“后發(fā)效應(yīng)”明顯,后來(lái)居上也不是沒(méi)有可能的,因?yàn)樵贗T業(yè)(市場(chǎng))里,“只有失敗者,沒(méi)有后來(lái)者”。因此,針對(duì)合肥地區(qū)IT業(yè)(市場(chǎng))的現(xiàn)狀——電信市場(chǎng)容量巨大,潛力足;PC市場(chǎng)起步較晚,不成熟;IT企業(yè)發(fā)展不平衡,實(shí)力弱,我們因當(dāng)采取正確的策略,來(lái)發(fā)展合肥地區(qū)的IT業(yè)(市場(chǎng))。
市場(chǎng)開(kāi)拓和完善
電信市場(chǎng)因當(dāng)在電信資費(fèi)調(diào)整、開(kāi)放引入競(jìng)爭(zhēng)的前提下,放下架子,端正思想,加強(qiáng)服務(wù)。電信市場(chǎng)的改革要溶入整個(gè)信息產(chǎn)業(yè)改革的大潮中。國(guó)家信息產(chǎn)業(yè)改革的基本框架已經(jīng)制訂:對(duì)中國(guó)電信實(shí)行分解式重組;對(duì)中國(guó)聯(lián)通實(shí)行整合式重組;對(duì)中國(guó)有線電視進(jìn)行產(chǎn)業(yè)化改造;按集約化經(jīng)營(yíng)的思想,對(duì)原有體制進(jìn)行改革,重新劃分原有資產(chǎn)并進(jìn)行業(yè)務(wù)和人員的重組。國(guó)信尋呼的成立,邁開(kāi)了電信改革的第一步。今年1月27日到2月2日,合肥電信舉辦了一個(gè)名為“回報(bào)老用戶”的活動(dòng):有合肥市固定電話擔(dān)保,申請(qǐng)移動(dòng)電話的用戶可以免入網(wǎng)費(fèi)。一時(shí)之間,電信局營(yíng)業(yè)大廳排起了購(gòu)買(mǎi)移動(dòng)電話入中國(guó)電信網(wǎng)的長(zhǎng)隊(duì)。事實(shí)雄辯的證明合肥地區(qū)電信市場(chǎng)具有巨大的潛力,關(guān)鍵是電信部門(mén)想不想挖掘這個(gè)潛力。
在市場(chǎng)開(kāi)拓和完善上:
首先,政府應(yīng)該制訂良好的產(chǎn)業(yè)政策,在宏觀上把信息產(chǎn)業(yè)放到優(yōu)先發(fā)展的地位,大力扶持,在資金、技術(shù)、人才等方面給予一定的優(yōu)惠政策;創(chuàng)造有利的條件,在信息產(chǎn)業(yè)發(fā)展的軟、硬件上下工夫。目前在這些方面有了長(zhǎng)足的進(jìn)步,新建成的合肥高新技術(shù)開(kāi)發(fā)區(qū)在土地使用、稅收減免等諸多優(yōu)惠條件的吸引下,吸引大批高新技術(shù)入駐,其中包括許多從事信息產(chǎn)業(yè)的企業(yè);由安徽省電子信息系統(tǒng)推廣辦公室聯(lián)合中國(guó)計(jì)算機(jī)用戶協(xié)會(huì)主辦的第二屆安徽省計(jì)算機(jī)文化周暨99安徽(春季)計(jì)算機(jī)產(chǎn)品與技術(shù)展銷交流會(huì)也于99年4月3日~5日在合肥勝利召開(kāi)。98年度全年完成工業(yè)總產(chǎn)值37.49億元,比97年同期增長(zhǎng)72.45%,創(chuàng)歷史最好水平,增長(zhǎng)速度高于全國(guó)電子行業(yè)增長(zhǎng)幅度40個(gè)百分點(diǎn),實(shí)現(xiàn)銷售收入18億元,與97年同期相比增長(zhǎng)50.44。
其次,是市場(chǎng)定位問(wèn)題,市場(chǎng)定位要準(zhǔn)確。單從PC消費(fèi)市場(chǎng)來(lái)看,PC消費(fèi)市場(chǎng)分為三大部分:集團(tuán)、中小企業(yè)和個(gè)人。在這種既定的市場(chǎng)份額條件下,PC市場(chǎng)該如何定位?對(duì)于集團(tuán)大批需求,中、小企業(yè)難以插手,如去年中國(guó)科大和合肥炮兵學(xué)院就一次性購(gòu)買(mǎi)了200臺(tái)金長(zhǎng)城PII266。
第三,是市場(chǎng)依托問(wèn)題。在完善制的同時(shí),是走科技創(chuàng)新的新路,還是走永遠(yuǎn)別人產(chǎn)品的老路?當(dāng)然是走科技創(chuàng)新的新路,所以合肥地區(qū)信息產(chǎn)業(yè)的發(fā)展應(yīng)該依托中國(guó)科大等大專院校和科研院所的科研實(shí)力,只有這樣才有可能出現(xiàn)第二個(gè)“北大方正”、“東大阿爾派”。
第四,是市場(chǎng)渠道問(wèn)題?!伴_(kāi)源節(jié)流”開(kāi)源是第一位的,在開(kāi)拓市場(chǎng)渠道這個(gè)問(wèn)題上,不應(yīng)該受地理因素的影響,放棄只吃“窩邊草”的慣性思維模式,放眼全國(guó)這個(gè)大市場(chǎng);開(kāi)拓渠道要體現(xiàn)增值的作用,以合肥為中心,輻射安徽全省乃至江西等電腦市場(chǎng)發(fā)展較慢的地區(qū),充分發(fā)揮合棸哺咚俟貳⒑蠗九鐵路的作用,拓寬渠道,重振“徽商”風(fēng)采。
企業(yè)經(jīng)營(yíng)運(yùn)作
由于起步較晚等客觀原因,合肥地區(qū)企業(yè)規(guī)模普遍較小,即大部分是中、小企業(yè),中小企業(yè)在充分認(rèn)識(shí)自身特點(diǎn)的基礎(chǔ)上,應(yīng)作好以下幾個(gè)方面:
企業(yè)的發(fā)展的道路,應(yīng)該走兼容配件棗品牌棗樹(shù)立名牌的三步走的戰(zhàn)略,逐步發(fā)展壯大,逐步樹(shù)立自己的品牌。
企業(yè)應(yīng)該采取多元化的經(jīng)營(yíng)策略,分散投資風(fēng)險(xiǎn)。既做電腦配件、耗材,又做電腦整機(jī);既做軟件開(kāi)發(fā),又做網(wǎng)絡(luò)集成。
企業(yè)之間應(yīng)保持良好的聯(lián)系,相互協(xié)調(diào)和相互幫助。企業(yè)應(yīng)處在一種“良性競(jìng)爭(zhēng)”的環(huán)境中,避免企業(yè)間因相互殺價(jià)等惡性競(jìng)爭(zhēng)帶來(lái)的兩敗俱傷的惡果。
NTFS是WindowsNT引入的新型文件系統(tǒng),它具有許多新特性。本文旨在探索NTFS的底層結(jié)構(gòu),所敘述的也僅是文件在NTFS卷上的分布。NTFS中,卷中所有存放的數(shù)據(jù)均在一個(gè)叫$MFT的文件中,叫主文件表(MasterFileTable)。而$MFT則由文件記錄(FileRecord)數(shù)組構(gòu)成。FileRecord的大小一般是固定的,通常情況下均為1KB,這個(gè)概念相當(dāng)于Linux中的inode。FileRecord在$MFT文件中物理上是連續(xù)的,且從0開(kāi)始編號(hào)。$MFT僅供FileSystem本身組織、架構(gòu)文件系統(tǒng)使用,這在NTFS中稱為元數(shù)據(jù)(Metadata)。以下列出Windows2000Release出的NTFS的元數(shù)據(jù)文件(我將要給出的示例代碼的部分輸出結(jié)果)。
FileRecord(inode)FileName
--------------------------
0$MFT
1$MFTMirr
2$LogFile
3$Volume
4$AttrDef
5.
6$Bitmap
7$Boot
8$BadClus
9$Secure
10$UpCase
11$Extend
Windows2000中不能使用dir命令(甚至加上/ah參數(shù))像普通文件一樣列出這些元數(shù)據(jù)文件。實(shí)際上FileSystemDriver(ntfs.sys)維護(hù)了一個(gè)系統(tǒng)變量NtfsProtectSystemFiles用于隱藏這些元數(shù)據(jù)。默認(rèn)情況下,這個(gè)變量被設(shè)為T(mén)RUE,所以使用dir/ah將得不到任何文件。知道這個(gè)行為后使用i386kd修改NtfsProtectSystemFiles后即可以列出元數(shù)據(jù)文件:
kd>xntfs!NtfsProtect*
fe213498Ntfs!NtfsProtectSystemFiles
fe21349cNtfs!NtfsProtectSystemAttributes
kd>ddntfs!NtfsProtectSystemFilesl2
fe2134980000000100000001
kd>edntfs!NtfsProtectSystemFiles0
kd>ddntfs!NtfsProtectSystemFilesl2
fe2134980000000000000001
kd>
D:\>ver
MicrosoftWindows2000[Version5.00.2195]
D:\>dir/ah$*
驅(qū)動(dòng)器D中的卷是W2KNTFS
卷的序列號(hào)是E831-9D04
D:\的目錄
2000-04-2719:3136,000$AttrDef
2000-04-2719:310$BadClus
2000-04-2719:3167,336$Bitmap
2000-04-2719:318,192$Boot
2000-04-2719:31<DIR>$Extend
2000-04-2719:3113,139,968$LogFile
2000-04-2719:3127,575,296$MFT
2000-04-2719:314,096$MFTMirr
2000-04-2719:31131,072$UpCase
2000-04-2719:310$Volume
9個(gè)文件40,961,960字節(jié)
1個(gè)目錄51,863,552可用字節(jié)
需要指出的是ntfs.sys將元數(shù)據(jù)文件以一種特殊的方式打開(kāi),所以在打開(kāi)NtfsProtectSystemFiles后,如果使用ReadFile等產(chǎn)生IRP_MJ_READ等IRP包時(shí)將會(huì)導(dǎo)致PageFault(詳見(jiàn)GaryNebbett的《WindowsNT/2000NativeAPIReference》)。
以上的討論均是基于$MFT文件而討論的,即基于$MFT中的FileRecord(inode)討論的。為更好的繼續(xù)以下的討論,這兒我列出FileRecordHeader的結(jié)構(gòu):
typedefstruct{
ULONGType;
USHORTUsaOffset;
USHORTUsaCount;
USNUsn;
}NTFS_RECORD_HEADER,*PNTFS_RECORD_HEADER;
typedefstruct{
NTFS_RECORD_HEADERNtfs;
USHORTSequenceNumber;
USHORTLinkCount;
USHORTAttributesOffset;
USHORTFlags;//0x0001=InUse,0x0002=Directory
ULONGBytesInUse;
ULONGBytesAllocated;
ULONGLONGBaseFileRecord;
USHORTNextAttributeNumber;
}FILE_RECORD_HEADER,*PFILE_RECORD_HEADER;
下面我將討論如何定位$MFT。稍微有點(diǎn)操作系統(tǒng)知識(shí)的人都會(huì)知道引導(dǎo)扇區(qū)(BootSector),其物理位置為卷中的第一個(gè)扇區(qū)。以下由dskprobe.exe(Windows2000ResourceKit中的一個(gè)小工具)分析的第一個(gè)扇區(qū)(當(dāng)然也可以使用WinHex等其他應(yīng)用程序):
file:d:\Sector00.bin
Size:0x00000200(512)
Address|00010203-04050607:08090A0B-0C0D0E0F|0123456789ABCDEF
---------|-------------------------:-------------------------|-----------------
00000000|EB52904E-54465320:20202000-02080000|?R?NTFS.....
00000010|00000000-00F80000:3F00F000-3F000000|.....?..?.e.?...
00000020|00000000-80008000:90C04100-00000000|....€.€.惱A.....
00000030|04000000-00000000:091C0400-00000000|................
00000040|F6000000-01000000:049D31E8-BB31E894|?.......?杌1钄
..
..
..
000001F0|00000000-00000000:83A0B3C9-000055AA|........儬成..U?
這512字節(jié)為如下的格式:(摘自GaryNebbett書(shū)中,本文許多代碼均來(lái)自或參考此書(shū)。)
#pragmapack(push,1)
typedefstruct{
UCHARJump[3];
UCHARFormat[8];
USHORTBytesPerSector;
UCHARSectorsPerCluster;
USHORTBootSectors;
UCHARMbz1;
USHORTMbz2;
USHORTReserved1;
UCHARMediaType;
USHORTMbz3;
USHORTSectorsPerTrack;
USHORTNumberOfHeads;
ULONGPartitionOffset;
ULONGReserved2[2];
ULONGLONGTotalSectors;
ULONGLONGMftStartLcn;
ULONGLONGMft2StartLcn;
ULONGClustersPerFileRecord;
ULONGClustersPerIndexBlock;
ULONGLONGVolumeSerialNumber;
UCHARCode[0x1AE];
USHORTBootSignature;
}BOOT_BLOCK,*PBOOT_BLOCK;
#pragmapack(pop)
各個(gè)字段的詳細(xì)意義從字段名中即可大致清楚。在linux-ntfs的GNU工程(/projects/linux-ntfs)中也有詳細(xì)的文檔,限于篇幅我不將其列出??梢允褂萌缦麓a讀出卷中的第一個(gè)扇區(qū):
hVolume=CreateFile(drive,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,0,
OPEN_EXISTING,0,0);
ReadFile(hVolume,&bootb,sizeof(bootb),&n,0);
bootb是一個(gè)BOOT_BLOCK結(jié)構(gòu),在我的卷中如下格式(請(qǐng)對(duì)應(yīng)Sector00.bin分析):
DumpBootBlockatbelow:
BytesPerSector:200
SectorsPerCluster:8
BootSectors:0
SectorsPerTrack:3F
NumberOfHeads:F0
PartitionOffset:3F
TotalSectors:41C090
MftStartLcn:4
Mft2StartLcn:41C09
ClustersPerFileRecord:F6
ClustersPerIndexBlock:1
VolumeSerialNumber:E8319D04
BootSignature:AA55
以上的MftStartLcn其實(shí)是$MFT在卷中的簇(Cluster)號(hào)。簇是NTFS的基本單位,最小單位。一個(gè)只有1Byte的文件也要占用一簇的空間。NTFS使用LCN(LogicalClusterNumber)來(lái)代表NTFS卷中的物理位置,其簡(jiǎn)單的從0到卷中的總簇?cái)?shù)減一進(jìn)行編號(hào)。對(duì)于一個(gè)特定的文件NTFS則使用VCN(VirtualClusterNumber)來(lái)映射LCN實(shí)現(xiàn)文件的組織。從MftStartLcn的值4可以知道$MFT的LCN為4與SectorsPerCluster、BytesPerSector的大小即可定位$MFT的位置。得到$MFT的位置后,如果遍歷$MFT中所有的FileRecord即可以得到卷中所有的文件列表(前面已經(jīng)提到FileRecord只是簡(jiǎn)單的從0開(kāi)始編號(hào))。也就是說(shuō)到目前為止已經(jīng)可以對(duì)文件組織有最簡(jiǎn)單的認(rèn)識(shí),但如何得到文件的信息呢,如文件名等等。NTFS中所有文件包括普通的用戶文件、元數(shù)據(jù)文件均用同樣的方式組織數(shù)據(jù)、屬性等。我將nfi.exe(來(lái)自WindowsNT/2000OEMSupportTools)的輸出結(jié)果列出,作為我敘述的開(kāi)始:
D:\>copyconfile
testforntfs^Z
已復(fù)制1個(gè)文件。
D:\>nfid:\file
NTFSFileSectorInformationUtility.
Copyright(C)MicrosoftCorporation1999.Allrightsreserved.
\file
$STANDARD_INFORMATION(resident)
$FILE_NAME(resident)
$DATA(resident)
D:\>echotestforattr>file:ATTR
D:\>nfid:\file
NTFSFileSectorInformationUtility.
Copyright(C)MicrosoftCorporation1999.Allrightsreserved.
\file
$STANDARD_INFORMATION(resident)
$FILE_NAME(resident)
$DATA(resident)
$DATAATTR(resident)
nfi的輸出結(jié)果$STANDARD_INFORMATION、$FILE_NAME、$DATA等在NTFS中稱為屬性(Attribute)。屬性分為常駐屬性(ResidentAttribute)與非常駐屬性(NonresidentAttribute)。文件的數(shù)據(jù)也包含在屬性中,似乎與屬性這個(gè)名稱有點(diǎn)混謠。不過(guò)這又讓NTFS有了更加統(tǒng)一的組織文件的形式。這也同時(shí)讓NTFS有MultiStreams的特性(上面也演示了這個(gè)特性)。通過(guò)指定的FileRecord定位給定的Attribute的實(shí)現(xiàn)代碼如下:
template<classT1,classT2>inline
T1*Padd(T1*p,T2n){return(T1*)((char*)p+n);}
PATTRIBUTEFindAttribute(PFILE_RECORD_HEADERfile,
ATTRIBUTE_TYPEtype,PWSTRname)
{
for(PATTRIBUTEattr=PATTRIBUTE(Padd(file,file->AttributesOffset));
attr->AttributeType!=-1;
attr=Padd(attr,attr->Length)){
if(attr->AttributeType==type){
if(name==0&&attr->NameLength==0)returnattr;
if(name!=0&&wcslen(name)==attr->NameLength
&&_wcsicmp(name,PWSTR(Padd(attr,attr->NameOffset)))==0)returnattr;
}
}
return0;
}
GaryNebbett提供的這個(gè)FindAttribute函數(shù)在Attributename(即第三個(gè)參數(shù))不為空串時(shí)可能會(huì)出現(xiàn)bug,主要原因是_wcsicmp對(duì)UNICODE字符串比較時(shí)應(yīng)該是以\0結(jié)束的標(biāo)準(zhǔn)的C字符串。我在提供的代碼中已經(jīng)糾正了這個(gè)錯(cuò)誤。
下面我將通過(guò)使用SoftICE來(lái)分析這段代碼得到$MFT的$FILE_NAME屬性來(lái)得到$MFT的filename。這個(gè)示例同樣適用于得到其它文件的$FILE_NAME(如上面的file)、還有其它的屬性如$DATA等等。
:bpxFindAttribute
BreakduetoBPXFindAttribute(ET=6.89seconds)
:locals
[EBP-4]+structATTRIBUTE*attr=0x00344D68<{...}>
[EBP+8]+structFILE_RECORD_HEADER*file=0x00344D38<{...}>
[EBP+C]enumATTRIBUTE_TYPEtype=AttributeFileName(30)
[EBP+10]+unsignedshort*name=0x004041BC<"$MFT">
:?file
structFILE_RECORD_HEADER*=0x00344D38<{...}>
structNTFS_RECORD_HEADERNtfs={...}
unsignedshortSequenceNumber=0x1,"\0\x01"
unsignedshortLinkCount=0x1,"\0\x01"
unsignedshortAttributesOffset=0x30,"\00"
unsignedshortFlags=0x1,"\0\x01"
unsignedlongBytesInUse=0x2D8,"\0\0\x02\xD8"
unsignedlongBytesAllocated=0x400,"\0\0\x04\0"
unsignedquadBaseFileRecord=0x0,"\0\0\0\0\0\0\0\0"
unsignedshortNextAttributeNumber=0x6,"\0\x06"
file參數(shù)我傳入的是$MFT,從$MFT的LCN=4可以得到其在卷中的物理地址,這在上面已說(shuō)明。你也可以使用dskprobe(我機(jī)子中為第LCN*SectorsPerCluster=4*8扇區(qū))得到底下SoftICE的輸出結(jié)果:
:dd@file//以下的注釋可對(duì)照文中開(kāi)頭列出的FILE_RECORD_HEADER定義。
0023:00344D38454C49460003002A6D4AC04D00000000FILE*...M.Jm....
0023:00344D480001000100010030000002D800000400....0...........
----
|__AttributeOffset
0023:00344D580000000000000000043400060000FA0D..........4.....
0023:00344D6800000010000000600018000000000000....`...........
----------------
||_指出這個(gè)Attribute的長(zhǎng)度。定義如下。
|_根據(jù)AttributeOffset得到的Attribute頭,定義如下。00000010指出這個(gè)Attribute為StandardInformation
0023:00344D7800000048000000182C1761D001BFB03CH........a.,<...
Attribute頭如下定義:
typedefstruct{
ATTRIBUTE_TYPEAttributeType;
ULONGLength;
BOOLEANNonresident;
UCHARNameLength;
USHORTNameOffset;
USHORTFlags;//0x0001=Compressed
USHORTAttributeNumber;
}ATTRIBUTE,*PATTRIBUTE;
typedefstruct{
ATTRIBUTEAttribute;
ULONGValueLength;
USHORTValueOffset;
USHORTFlags;//0x0001=Indexed
}RESIDENT_ATTRIBUTE,*PRESIDENT_ATTRIBUTE;
typedefstruct{
ULONGLONGDirectoryFileReferenceNumber;
ULONGLONGCreationTime;//Savedwhenfilenamelastchanged
ULONGLONGChangeTime;//ditto
ULONGLONGLastWriteTime;//ditto
ULONGLONGLastAccessTime;//ditto
ULONGLONGAllocatedSize;//ditto
ULONGLONGDataSize;//ditto
ULONGFileAttributes;//ditto
ULONGAlignmentOrReserved;
UCHARNameLength;
UCHARNameType;//0x01=Long,0x02=Short
WCHARName[1];
}FILENAME_ATTRIBUTE,*PFILENAME_ATTRIBUTE;
ATTRIBUTE_TYPE是一個(gè)Enum型定義。其中00000010為StandardInformation。30為FileName。因?yàn)镕ileNameAttribute總是一個(gè)常駐Attribute,所以我將RESIDENT_ATTRIBUTE定義也給出。OK,現(xiàn)在可以繼續(xù)Dump下一個(gè)Attribute:
//dd@file+file->AttributeOffset+length(StandardInformationAttribute)
:dd@file+30+60
0023:00344DC8000000300000006800180000000300000...h...........
--------------
||___這里的NameLength與NameOffset指FileNameAttribute名。不要與$MFTFileName混謠。
|_指出這是一個(gè)FileNameAttribute。
0023:00344DD80000004A000100180000000500050000J...............
--------------------
|||_根據(jù)ValueOffset的值,得到FILENAME_ATTRIBUTE的具置。
||_ValueOffset值
|_ValueLength值
0023:00344DE82C1761D001BFB03C2C1761D001BFB03C.a.,<....a.,<...
0023:00344DF82C1761D001BFB03C2C1761D001BFB03C.a.,<....a.,<...
0023:00344E0800004000000000000000400000000000.@.......@......
0023:00344E180000000600000000002403040046004D..........$.M.F.
----------
||___找到$MFT的FileName了吧。
|_NameLength
0023:00344E2800000054000000000000008000000190T...............
0023:00344E3800400001000100000000000000000000..@.............
這兒給出了DumpAttribute的一個(gè)具體方法。最后我將給出遍歷FileRecord的代碼,在給出代碼前應(yīng)該說(shuō)明一下$MFT中$BITMAP屬性。NTFS的這個(gè)Attribute相當(dāng)于LINUXEXT2的s_inode_bitmap數(shù)組(Linux2.0版本)。所以很容易明白$BITMAP的作用,即每bit指出相應(yīng)FileRecord的在用情況。以下是DumpAllFileRecord的代碼:
BOOLbitset(PUCHARbitmap,ULONGi)
{
return(bitmap[i>>3]&(1<<(i&7)))!=0;
}
VOIDDumpAllFileRecord()
{
PATTRIBUTEattr=FindAttribute(MFT,AttributeBitmap,0);
PUCHARbitmap=newUCHAR[AttributeLengthAllocated(attr)];
ReadAttribute(attr,bitmap);
ULONGn=AttributeLength(FindAttribute(MFT,AttributeData,0))/BytesPerFileRecord;
PFILE_RECORD_HEADERfile=PFILE_RECORD_HEADER(newUCHAR[BytesPerFileRecord]);
for(ULONGi=0;i<n;i++){
if(!bitset(bitmap,i))continue;
ReadFileRecord(i,file);
if(file->Ntfs.Type==''''ELIF''''&&(file->Flags&3)){
attr=FindAttribute(file,AttributeFileName,0);
if(attr==0)continue;
PFILENAME_ATTRIBUTEname
=PFILENAME_ATTRIBUTE(Padd(attr,PRESIDENT_ATTRIBUTE(attr)->ValueOffset));
printf("%8lu%.*ws\n",i,int(name->NameLength),name->Name)
}
}
}
本文引用GaryNebbett的些定義可能對(duì)Windows2000版本有些很小的出入,不過(guò)Internet有其神奇的地方,雖然Microsoft不提供這些信息,但諸如linux-ntfsGNU工程等均是學(xué)習(xí)NTFS的一個(gè)很好的資料,本文也參考了很多它提供的文檔。另外MarkRussinovich的《InsideWin2KNTFS》、《InsideNTFS》、《ExploringNTFSOn-diskStructures》等也是很好的NTFS資料。本文仍未涉及NTFS中目錄的組織(B+樹(shù))等等,可能的話我會(huì)另行介紹。文中介紹的完整代碼可到下載。出現(xiàn)的錯(cuò)誤也歡迎來(lái)信指教(tsu00@)!
最后感謝AntonAltaparmakov,感謝我的同事在出差時(shí)抽空給我買(mǎi)到GaryNebbett的書(shū)。感謝我看到的所有資料的原作者們。感謝他們!
參考資料:
1.GaryNebbett《WindowsNT/2000NativeAPIReference》
2.Linux-NTFSProjectNTFSDocumentationVersion0.4
計(jì)算機(jī)輔助教學(xué)系統(tǒng)在教學(xué)上的運(yùn)用,標(biāo)志著教學(xué)媒體質(zhì)的飛躍。計(jì)算機(jī)的應(yīng)用,使教學(xué)手段更加豐富,將對(duì)教學(xué)效果的提高起到促進(jìn)作用。由于計(jì)算機(jī)是人腦的延伸,是人腦思維活動(dòng)的模擬,是對(duì)人類思維活動(dòng)的結(jié)構(gòu)、功能及其規(guī)律的把握,因此,其在教學(xué)上的運(yùn)用十分有利于學(xué)生的發(fā)展,符合現(xiàn)代化教學(xué)規(guī)律的要求。
多媒體是90年展起來(lái)的新技術(shù)。它是一種把文本、圖形、形象、視頻圖像、動(dòng)畫(huà)和聲言等運(yùn)載信息的媒體集成在一起,并通過(guò)計(jì)算機(jī)綜合處理和控制的一種信息技術(shù)。多媒體技術(shù)是信息領(lǐng)域的又一次革命,在教學(xué)上,它既能向?qū)W生快速提供豐富多彩的集圖、文、聲于一體的教學(xué)信息,又能為學(xué)生提供生動(dòng)、友好、多樣化的交互方式。
多媒體教學(xué)可產(chǎn)生優(yōu)良的視聽(tīng)效果。因?yàn)槿说囊曈X(jué)、聽(tīng)覺(jué)是接收信息的主要渠道,獲得的信息也最大。多媒體教學(xué)有利于信息傳遞和學(xué)生對(duì)信息的接受、儲(chǔ)存。其特有的優(yōu)勢(shì)對(duì)學(xué)生產(chǎn)生一定強(qiáng)度的刺激,引起學(xué)生的注意。如果沒(méi)有注意,感知就不會(huì)產(chǎn)生強(qiáng)烈觀察力。而觀察力是在感知過(guò)程中并以感知為基礎(chǔ)形成起來(lái)的,離開(kāi)了感知也就沒(méi)有了觀察。利用多媒體的優(yōu)勢(shì)引人入勝,可以不斷提高學(xué)生注意的品質(zhì),使學(xué)生心理活動(dòng)處于積極狀態(tài)。
以往的教學(xué)活動(dòng)是由教師、學(xué)生、媒體三個(gè)要素構(gòu)成的,缺一不可。大多數(shù)教學(xué)媒體都具有直觀性,但各有所長(zhǎng),也各所短。傳統(tǒng)教學(xué)媒體中有教師語(yǔ)言、課本、板書(shū)、實(shí)物、模型、掛圖等,都具有一定的局限性。而多媒體能使學(xué)生不由自主地集中全部注意力,引起學(xué)生的濃厚興趣,激發(fā)學(xué)生強(qiáng)烈的情感,從中獲得直接、生動(dòng)、形象的感性知識(shí)。教師在授課過(guò)程中,恰當(dāng)?shù)剡x用教學(xué)媒體,能更好地把知識(shí)技能傳授給學(xué)生,加快師生間的信息傳遞,優(yōu)化教學(xué)過(guò)程,從而獲得良好的教學(xué)效果。
不管是美國(guó)的亞馬遜還是中國(guó)的8848,都選擇書(shū)籍作為電子商務(wù)的突破口,這是有著內(nèi)在的必然性的。
書(shū)籍的特點(diǎn)是數(shù)量大,產(chǎn)品的差別性小,因此最適宜網(wǎng)絡(luò)營(yíng)銷。這是國(guó)內(nèi)與國(guó)外的共性。
但中國(guó)書(shū)籍市場(chǎng)與美國(guó)書(shū)籍市場(chǎng)也有很大的不同,最大的不同主要有兩點(diǎn):一個(gè)是網(wǎng)民對(duì)書(shū)籍的消費(fèi)水平和消費(fèi)比例,二者有著極大的差別,另一點(diǎn)是通過(guò)網(wǎng)絡(luò)營(yíng)銷對(duì)書(shū)籍成本的影響,在美國(guó),網(wǎng)絡(luò)營(yíng)銷大大減小了書(shū)籍的運(yùn)營(yíng)成本,因此,亞馬遜公司能夠以大大低于市場(chǎng)的價(jià)格進(jìn)行銷售,而在中國(guó),市場(chǎng)規(guī)模的限制使網(wǎng)上營(yíng)銷書(shū)籍的成本變化不大,而相對(duì)高昂的網(wǎng)絡(luò)費(fèi)用與物流費(fèi)用又使表面上降低的書(shū)籍費(fèi)用大大增加。
在這種情況下,8848提出B2B也是無(wú)可奈何之舉。與其說(shuō)是看到了B2B的希望,毋寧說(shuō)是感覺(jué)到B2C的無(wú)奈。在書(shū)籍、CD等無(wú)差別、無(wú)維護(hù)產(chǎn)品不能獲得成功的話,其他領(lǐng)域的成功希望更是渺茫。
那么,書(shū)籍領(lǐng)域的B2B又沒(méi)有希望呢?希望當(dāng)然是有的,但必須看到B2B的難度并不比B2C的難度小。專業(yè)人員知道:B2B的前提是企業(yè)內(nèi)部的信息化,而在中國(guó),企業(yè)經(jīng)營(yíng)的信息化程度還很不夠,各企業(yè)信息化運(yùn)作對(duì)WEB的考慮也不夠,這些都是限制國(guó)內(nèi)B2B市場(chǎng)迅速發(fā)展的瓶頸。
二、地域性的選擇
從地域的定位來(lái)說(shuō),8848將定位定在全國(guó)范圍并沒(méi)有太大的錯(cuò)誤,8848也確實(shí)在全國(guó)有著很大的影響。從這點(diǎn)來(lái)看,8848的定位是比較成功的。
但也不是說(shuō)8848的定位沒(méi)有問(wèn)題,至少,8848沒(méi)有區(qū)分城市與非城市的差別是有很大問(wèn)題的,在電子商務(wù)的初始階段,將目標(biāo)限定在更小的范圍是一種務(wù)實(shí)的做法。
這一點(diǎn):上海梅林的做法很好。首先,在上海建立根據(jù)地,作為一個(gè)窗口,一個(gè)試點(diǎn),上海梅林迅速取得了經(jīng)濟(jì)效益。上海梅林的有自己管理的物流網(wǎng)絡(luò)是成功的一個(gè)很重要的因素,也是成功的一個(gè)必要的因素,但這種物流網(wǎng)絡(luò)的形成在目前國(guó)內(nèi)的情形下只能在大城市才最有成功的可能。
上海梅林進(jìn)一步向北京、廣州發(fā)展,可以說(shuō),他們的做法是成功的,成功的基礎(chǔ)在于有一個(gè)很好的策略目標(biāo)。
三、從網(wǎng)上到網(wǎng)下
不管是B2B,B2C,還是物流網(wǎng),一個(gè)很關(guān)鍵的因素就是如何覆蓋網(wǎng)下的人口,尤其在中國(guó)這個(gè)經(jīng)濟(jì)發(fā)展水平較低的國(guó)家,將會(huì)在一個(gè)很長(zhǎng)的過(guò)程中,上網(wǎng)人口的比例偏低。
只有在使用好的辦法能夠?qū)㈦娮由虅?wù)的優(yōu)勢(shì)用于包括網(wǎng)上、網(wǎng)下的人口的情形下,中國(guó)的電子商務(wù)才能夠獲得成功,否則,電子商務(wù)的設(shè)想將會(huì)類同于空中樓閣的建設(shè)。
一、所用控件
在程序中將使用Winsock控件。Winsock控件是一個(gè)ActiveX控件,使用TCP協(xié)議或UDP協(xié)
議連接到遠(yuǎn)程計(jì)算機(jī)上并與之交換數(shù)據(jù)。和定時(shí)器控件一樣,Winsock控件在運(yùn)行時(shí)是不可見(jiàn)的。Winsock的工作原理是:客戶端向服務(wù)器端發(fā)出連接請(qǐng)求,服務(wù)器端則不停地監(jiān)聽(tīng)客戶端的請(qǐng)求,當(dāng)兩者的協(xié)議溝通時(shí),客戶端和服務(wù)器端之間就建立了連接,這時(shí)客戶端和服務(wù)器端就可以實(shí)現(xiàn)雙向數(shù)據(jù)傳輸。實(shí)際編程中,必須分別建立一個(gè)服務(wù)器端應(yīng)用程序和一個(gè)客戶端應(yīng)用程序,兩個(gè)應(yīng)用程序中分別有自己的Winsock控件。首先設(shè)置Winsock控件使用的協(xié)議,這里我們使用TCP協(xié)議。現(xiàn)在,讓我們開(kāi)始用VB建立兩個(gè)程序,一個(gè)是客戶端程序myclient,另一個(gè)是服務(wù)器端程序myserver。
二、編寫(xiě)客戶端程序
首先來(lái)建客戶端程序myclient。在myclient程序中建立一個(gè)窗體,加載Winsock控件,稱為tcpclient,表示使用的是TCP協(xié)議,再加入兩個(gè)文本框(text1和text2),用來(lái)輸入服務(wù)器的IP地址和端口號(hào),然后建立一個(gè)按鈕(cd1),用來(lái)建立連接,按下之后就可以對(duì)連接進(jìn)行初始化了,代碼如下:
privatesubcd1_click()
tcpclient.romotehost=text1.text
tcpclient.romoteport=val(text2.text)''''端口號(hào),缺省為1001
tcpclient.connect''''調(diào)用connect方法,與指定IP地址的計(jì)算機(jī)進(jìn)行連接
cd1.enabled=false
endsub
連接之后就是如何處理所收到的數(shù)據(jù)的問(wèn)題了??蛻舳撕头?wù)器端建立連接后,如果有任何一端接收到新的數(shù)據(jù),就會(huì)觸發(fā)該端winsock控件的dataarrival事件,在響應(yīng)這個(gè)事件時(shí),可以使用getdata方法獲得發(fā)送來(lái)的數(shù)據(jù)。比如可以在tcpclient的dataarrival事件中編寫(xiě)代碼如下:
privatesubtcpclient_dataarrival(byvalbytestotalaslong)
dimxasstring
tcpclient.getdatax''''使用getdata獲得發(fā)送來(lái)的數(shù)據(jù)
.......
Endsub
后面的省略部分表示對(duì)接收到的數(shù)據(jù)進(jìn)行的具體處理,讀者可以根據(jù)實(shí)際情況編寫(xiě)。
三、編寫(xiě)服務(wù)器端程序
先建立一個(gè)窗體,加載Winsock控件,名稱為tcpserver。另外在窗體上加入一個(gè)文本框text1用來(lái)顯示客戶機(jī)的IP地址和客戶機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù)信息。
當(dāng)客戶端程序運(yùn)行時(shí),在客戶端程序按下連接按鈕后,客戶端向服務(wù)器端程序請(qǐng)求連接,這時(shí)服務(wù)器端的connectionrequest事件被觸發(fā),所以服務(wù)器端程序要解決連接問(wèn)題,可以使用connectionrequest事件完成此功能。代碼如下:
''''在窗體的load事件中對(duì)tcpserver控件進(jìn)行初始化
privatesubform_load()
tcpserver.localport=1001
tcpserver.listen''''把服務(wù)器置于監(jiān)聽(tīng)檢測(cè)狀態(tài)
endsub
''''服務(wù)器端接收到客戶端的連接請(qǐng)求,首先檢查當(dāng)前狀態(tài)是否處于連接關(guān)閉狀態(tài)
Privatesubtcpclient_connectionrequest(ByvalrequestIDaslong)
Iftcpserver.state<>sckclosedthen''''檢查控件的state屬性是否為關(guān)閉
Tcpserver.close''''
Tcpserver.acceptrequestID''''
Endif
Endsub
現(xiàn)在我們?cè)诜?wù)器端程序tcpserver的dataarrival事件中添加以下代碼,以便讓服務(wù)器端程序可以接收客戶機(jī)端的指令,并運(yùn)行相應(yīng)的程序。