摘要:計算機語言的基本要素是變量、數(shù)據(jù)類型、表達式、控制結(jié)構(gòu)、過程和函數(shù)。TP6的操作方式有4類,菜單和工具操作只是一種交互方式,要完成更復(fù)雜的任務(wù),必須學會命令操作和程序操作,這就要學VFP語言。本文主要探討Visual FoxPro數(shù)據(jù)庫技術(shù)及應(yīng)用。
關(guān)鍵詞:Visual FoxPro;數(shù)據(jù)庫技術(shù);加密
中圖分類號:TP309.7 文獻標識碼:A 文章編號:1007-9599 (2012) 20-0000-02
VFP6.0除了繼承較早版本的功能以外,有許多新的特點。例如,全面采用面向?qū)ο蟮木幊碳夹g(shù),使之成為在Windows環(huán)境下開發(fā)小型數(shù)據(jù)庫應(yīng)用系統(tǒng)的有力工具;在客戶/服務(wù)器應(yīng)用程序中,VFP6又是一個理想的前端開發(fā)工具;它還為用戶組織信息、運行查詢、創(chuàng)建集成的關(guān)系型數(shù)據(jù)庫系統(tǒng)以及為最終用戶編寫功能全面的數(shù)據(jù)管理應(yīng)用程序提供所有的工具[1]。
1 Visual FoxPro數(shù)據(jù)庫概述
例如,利用項目管理器(PROJECT MANAGER)可以建立數(shù)據(jù)庫、表、表單、查詢及報表等。當需要時,只要打開項目管理器,就可以直接從中讀取,而不必從磁盤上搜索。通過向?qū)В╓IZABDS)提供的許多功能強大的控件,不用編程就可以創(chuàng)建應(yīng)用程序界面。利用生成器(BUILDERS)用戶可以簡化創(chuàng)建和修改用戶界面程序的設(shè)計過程,提高軟件開發(fā)的質(zhì)量。每個生成器都由一系列選項卡組成,允許用戶訪問并設(shè)置所選對象的屬性。用戶可以將生成器生成的用戶界面直接轉(zhuǎn)換成程序代碼,把用戶從逐條編寫、反復(fù)調(diào)試程序的工作中解放出來。
作為一個完善的數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)的保密性設(shè)置是非常重要的,Visual FoxPro沒有Access那樣提供了密碼訪問的功能,不過可以通過破壞存儲格式的方法,可以達到對數(shù)據(jù)庫所有數(shù)據(jù)表進行加密的目的[2]。
2 Visual FoxPro數(shù)據(jù)庫的加密技術(shù)
Visual FoxPro將數(shù)據(jù)按照指定格式存放到以“.DBF”為擴展名的文件系統(tǒng)中,如果破壞了此種文件的存儲格式,Visual FoxPro就無法將其打開,即達到了加密的目的。根據(jù)這個原理,當數(shù)據(jù)庫系統(tǒng)要關(guān)閉時,系統(tǒng)將數(shù)據(jù)庫中所有數(shù)據(jù)表都以低級文件格式打開,然后通過一個密鑰對文件中每個字符進行異或運算。異或運算最大的一個特點就是A^B^B=A,也就是說,當對同一個數(shù)進行兩次異或運算時,結(jié)果還是這個數(shù)。當系統(tǒng)再次登錄時,便可以通過對已經(jīng)加密的數(shù)據(jù)庫文件進行異或運算的方法進行解密。解密后的文件是可以通過Visual FoxPro進行訪問的。
服務(wù)端到接入設(shè)備的數(shù)據(jù)收發(fā)使用標準的TELNET協(xié)議實現(xiàn),連接雙方都需要實現(xiàn)物理終端到NVT的數(shù)據(jù)轉(zhuǎn)換。通信兩端數(shù)據(jù)均以7bit的ASCII字符集發(fā)送,但發(fā)送格式為8bit,最高位直接置為0。TELNET通信雙方使用帶內(nèi)信令方式,如果收到0x255(IAC)則表示接下來的數(shù)據(jù)作為命令來解釋。如果需要發(fā)送數(shù)據(jù)255,則必須連續(xù)發(fā)送兩個255字節(jié)。在初始化選項協(xié)商過程中,會出現(xiàn)四種協(xié)商狀態(tài):
WILL:發(fā)送方自身將激活選項,回應(yīng)DO為接受,回應(yīng)DONT為拒絕。
DO:發(fā)送方想讓接收端激活選項,回應(yīng)WILL為接受,回應(yīng)WONT為拒絕。
WONT:發(fā)送方自身想禁止選項,對方必須回應(yīng)DONT以同意禁止行為。
DONT:發(fā)送方想讓接收端禁止選項,對方必須回應(yīng)WONT以同意禁止行為。
對于DO和WILL選項,接收方有權(quán)同意會拒絕。但對于WONT和DONT,接收方必須同意。選項協(xié)商需要3個字節(jié):第一個是IAC字節(jié),第二個是WILL、DO、WONT、DONT之一,最后一個字節(jié)是啟用或禁止的選項。協(xié)商過程是對稱的,也就是說通信雙方都可以發(fā)起協(xié)商請求。但對于子選項的協(xié)商,則不僅僅是同意或拒絕所能表示的。例如制定終端類型,為了處理這種選項,必須定義子選項協(xié)商。
在SNMP接口設(shè)計方面,SNMP協(xié)議是目前用來對網(wǎng)絡(luò)設(shè)備進行控制管理的一種主要方式,SNMP遵循了代理和管理站模型。對于SNMP代理來說,它能夠回答來自于SNMP管理站如網(wǎng)管系統(tǒng)的關(guān)于MIB庫中定義的信息的查詢及修改。本系統(tǒng)使用出了可以使用TELNET協(xié)議對接入層網(wǎng)絡(luò)設(shè)備進行控制之外,也可以使用SNMP協(xié)議對網(wǎng)絡(luò)設(shè)備進行更有效的控制[3]。
3 Visual FoxPro數(shù)據(jù)庫的應(yīng)用
表現(xiàn)層負責向用戶提供交互界面。控制層主要同數(shù)據(jù)庫和網(wǎng)絡(luò)設(shè)備進行交互,其中設(shè)備控制部分負責向接入網(wǎng)絡(luò)設(shè)備發(fā)送控制指令并將操作存入數(shù)據(jù)庫中,日志分析部分負責對接入設(shè)備發(fā)送的日志進行分析,分析結(jié)果存入數(shù)據(jù)庫,對攻擊主機的隔離與解除隔離指令則發(fā)送給設(shè)備控制部分,從而實現(xiàn)對設(shè)備的控制聯(lián)動。系統(tǒng)整體架構(gòu)如圖1所示:
SYSLOG服務(wù)是對交換機發(fā)來的UDP日志信息進行接收的切入點。這個功能使用JAVA套接字開發(fā)完成。UDP日志信息對于數(shù)據(jù)的少量丟失并不關(guān)注,這個服務(wù)只需要對大量的宏觀信息進行分析即可。SYSLOG日志發(fā)送的目的端口為UDP514端口,SYSLOG接收器也需要對這個端口進行偵聽。在構(gòu)建DatagramSocket的時候需要設(shè)置兩個參數(shù),分別為端口和緩沖區(qū)大小。由于SYSLOG日志是數(shù)量極其龐大,但單條日志數(shù)據(jù)量很小的數(shù)據(jù)流。緩沖區(qū)和UDP報文長度都指定為1024字節(jié)為合適。如下為UDP端的構(gòu)造方法:
localPoint =
new DatagramSocket(Integer.parseInt(property.getProperty(\"514\")));
localPoint.setReceiveBufferSize(Integer.parseInt(property.getProperty(\"1024\")));
對于套接字因網(wǎng)絡(luò)數(shù)據(jù)傳輸錯誤產(chǎn)生異常,這種異常往往會導致程序出錯退出。SYSLOG服務(wù)對數(shù)據(jù)的完整程度并不敏感,分析的只是宏觀數(shù)據(jù)。所以對于這些網(wǎng)絡(luò)錯誤,可以完全壓制而不會有任何負面影響。由于數(shù)據(jù)的處理是在死循環(huán)中完成的,當UDP套接字出現(xiàn)故障時,在finally區(qū)中需要對UDP端點進行重新構(gòu)造,構(gòu)造方法如下:
if (localPoint.isClosed()) localPoint = createDatagramSocket();
構(gòu)造的前提是需要判斷先前的UDP端點已被關(guān)閉,否則有會出現(xiàn)內(nèi)存泄露問題。
參考文獻:
[1]傅榮會.三種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的比較研究——Visual FoxPro,Access和SQL Server[J].重慶三峽學院學報,2011,05:179-180.
[2]趙曉俠,雷金輝,田春瑾. SQL查詢在Visual FoxPro數(shù)據(jù)庫中的應(yīng)用[J].電腦知識與技術(shù),2011.06:404-405.
[3]周大朋,朱勇,李小玲. 淺談Visual FoxPro數(shù)據(jù)庫技術(shù)及其應(yīng)用[J].科技廣場,2010.03:130-132.