国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

項(xiàng)目迭代開發(fā)手記--文件分割存儲(chǔ)用例的實(shí)現(xiàn)過程(1)

2019-11-18 18:13:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
摘  要 本文詳細(xì)描述了在嘗試使用極限編程在軟件開發(fā)中的一個(gè)實(shí)現(xiàn)例子,在小步迭代開發(fā)中逐步的實(shí)現(xiàn)用例需要的功能,同時(shí)每個(gè)迭代都能集成實(shí)現(xiàn)的功能。
關(guān)鍵字 極限編程
 
在一次項(xiàng)目開發(fā)中我們開發(fā)組遇到了一個(gè)需求,該需求的要使用的技術(shù)是我們所不熟悉的,就是說在開發(fā)過程中我們必須逐步的掌握該項(xiàng)技術(shù),同時(shí)希望能夠盡可能的保持代碼有好的結(jié)構(gòu),因?yàn)樵诓粩嘣黾庸δ艿倪^程中,會(huì)讓代碼逐漸的變得復(fù)雜降低可閱讀性。
 
該需求的用例很簡(jiǎn)單,就是把圖檔文件保存到數(shù)據(jù)庫(kù)中,同時(shí)在需要時(shí)提取出來(lái)顯示。但是有的圖檔文件會(huì)比較大,在向數(shù)據(jù)庫(kù)提交過程中可能會(huì)有性能問題,還有圖檔文件格式的問題,(.bmp,.Jpeg)
小組討論的時(shí),大家提出了首先要對(duì)要保存的數(shù)據(jù)進(jìn)行壓縮,同時(shí)對(duì)較大的文件要分割成合適的塊,這樣提交到數(shù)據(jù)庫(kù)中才不會(huì)有性能問題。這樣提取圖檔文件過程中就得對(duì)分割壓縮的數(shù)據(jù)進(jìn)行解壓和拼接才能獲得原始數(shù)據(jù),還有就是文件格式的轉(zhuǎn)換問題。
該項(xiàng)功能我想對(duì)于熟悉的開發(fā)人員來(lái)說可能很簡(jiǎn)單,但是由于我們組的開發(fā)人員沒有類似的開發(fā)經(jīng)驗(yàn),就不可能在一開始獲得優(yōu)良的設(shè)計(jì),只能在不斷的開發(fā)進(jìn)程中改進(jìn)你的設(shè)計(jì),在以往的開發(fā)中我們嘗試過小步迭代開發(fā)的好處,就是在不斷累積中實(shí)現(xiàn)需求的功功能,同時(shí)減少過程中的挫折感——你的每一步都很好的實(shí)現(xiàn)了需求的功能,還能每日集成你的軟件,實(shí)時(shí)掌握你的開發(fā)進(jìn)度。
每次迭代實(shí)現(xiàn)認(rèn)為優(yōu)先級(jí)高的功能。
我們認(rèn)為圖檔文件的保存和提取在開發(fā)中是優(yōu)先級(jí)最高的,我們首先保證可以向數(shù)據(jù)庫(kù)提交圖檔,同時(shí)可以提起圖檔。這樣在我們完成這個(gè)功能后其它開發(fā)組就可以使用這項(xiàng)功能了(雖然會(huì)有因?yàn)閳D片太大保存和提取的效率問題,但是它是可以使用的功能了)。我們使用的開發(fā)工具是Delphi數(shù)據(jù)庫(kù)是Oracle
 
迭代1:文件以二進(jìn)制的形式保存到數(shù)據(jù)庫(kù)中,然后再以二進(jìn)制的形式從數(shù)據(jù)庫(kù)中提取出來(lái)。
       通過查找資料后我們決定Oracle數(shù)據(jù)庫(kù)使用Long Raw 類型的字段來(lái)保存二進(jìn)制數(shù)據(jù),Delphi里面使用TBlobField來(lái)把流裝載都字段中向數(shù)據(jù)庫(kù)提交。本文的例子簡(jiǎn)化了表的設(shè)計(jì)和使用簡(jiǎn)化后的代碼
 
表的設(shè)計(jì)
字段名
字段類型
字段長(zhǎng)度
字段說明
 
FID
Number
 
主鍵
 
F_NAME
VarChar2
50
文件名稱
 
F_BINARY_DATA
Long Raw
 
二進(jìn)制圖檔數(shù)據(jù)
 
 
 
 
 
 
 
  
 
PRocedure TForm1.Button2Click(Sender: TObject);
var
  OpenDialog: TOpenDialog;
  lFileFullName: string;
  lBlobStream: TMemoryStream;
begin
  lFileFullName := '';    
  OpenDialog := TOpenDialog.Create(Self);
  lBlobStream := TMemoryStream.Create;
  try
    OpenDialog.InitialDir := extractfilepath(application.ExeName);
    if OpenDialog.Execute then
      lFileFullName := OpenDialog.FileName;
 
    if lFileFullName <> '' then
    begin
      lBlobStream.LoadFromFile(lFileFullName);
      ClientDataSet1.Append;
      ClientDataSet1.FieldByName('F_ID').Value := 2;
      ClientDataSet1.FieldByName('F_NAME').Value := lFileFullName;
      (ClientDataSet1.FieldByName('F_BINARY_DATA')
 as TBlobField).LoadFromStream(lBlobStream);
      ClientDataSet1.Post;
    end;
  finally
    OpenDialog.Free;
    lBlobStream.Free;
  end;
end;
 
這樣就可以在向數(shù)據(jù)庫(kù)提交圖檔數(shù)據(jù)了,這里圖檔文件先裝載成流然后以二進(jìn)制流的形式提交到數(shù)據(jù)庫(kù)中的。
提取的方式就是
(ClientDataSet1.FieldByName('F_BINARY_DATA')
 as TBlobField). SaveToStream(lBlobStream);
這樣就完成圖檔文件的保存和提取功能。由于對(duì)該項(xiàng)技術(shù)不熟悉實(shí)現(xiàn)該功能花了我們3小時(shí)時(shí)間。在下午下班的時(shí)候我們提交了可以使用的保存圖檔文件的程序。
 

上一篇:如何接受消息,中斷正在處理的過程

下一篇:項(xiàng)目迭代開發(fā)手記--文件分割存儲(chǔ)用例的實(shí)現(xiàn)過程(2)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 阿克陶县| 通榆县| 大英县| 五家渠市| 潜江市| 卓尼县| 临沧市| 大冶市| 常州市| 驻马店市| 昌邑市| 皮山县| 集安市| 武平县| 红安县| 于田县| 奉节县| 微山县| 瓦房店市| 行唐县| 保康县| 营口市| 平南县| 当雄县| 克什克腾旗| 巴塘县| 新沂市| 两当县| 芮城县| 牡丹江市| 清远市| 和平县| 苍山县| 郎溪县| 桐乡市| 永川市| 高雄县| 浪卡子县| 颍上县| 镇雄县| 五家渠市|