KeyLife富翁笔记
作者 : liceblone
标题 : Tcompression与TDeCompressionStream应用(文件分割)
关键字: Tcompression与TDeCompressionStream应用(文件分割)
分类 : 个人专区
密级 : 公开
(评分: , 回复: 0, 阅读: 1433) »»
Tcompression与TDeCompressionStream应用(文件分割)
关键字:
分类 : 个人专区
密级 : 公开
(评分: , 回复: 0, 阅读: 152) »»
KeyLife富翁笔记
作者 : zgl198171
标题 : 项目迭代开发手记--文件分割存储用例的实现过程
关键字:
分类 : 个人专区
密级 : 公开
(评分: , 回复: 0, 阅读: 1027) »»
项目迭代开发手记--文件分割存储用例的实现过程(1) 选择自 haozi 的 Blog
关键字 项目迭代开发手记--文件分割存储用例的实现过程(1)
出处
摘 要 本文详细描述了在尝试使用极限编程在软件开发中的一个实现例子,在小步迭代开发中逐步的实现用例需要的功能,同时每个迭代都能集成实现的功能。
关键字 极限编程
在一次项目开发中我们开发组遇到了一个需求,该需求的要使用的技术是我们所不熟悉的,就是说在开发过程中我们必须逐步的掌握该项技术,同时希望能够尽可能的保持代码有好的结构,因为在不断增加功能的过程中,会让代码逐渐的变得复杂降低可阅读性。
该需求的用例很简单,就是把图档文件保存到数据库中,同时在需要时提取出来显示。但是有的图档文件会比较大,在向数据库提交过程中可能会有性能问题,还有图档文件格式的问题,(.bmp,.Jpeg)
小组讨论的时,大家提出了首先要对要保存的数据进行压缩,同时对较大的文件要分割成合适的块,这样提交到数据库中才不会有性能问题。这样提取图档文件过程中就得对分割压缩的数据进行解压和拼接才能获得原始数据,还有就是文件格式的转换问题。
该项功能我想对于熟悉的开发人员来说可能很简单,但是由于我们组的开发人员没有类似的开发经验,就不可能在一开始获得优良的设计,只能在不断的开发进程中改进你的设计,在以往的开发中我们尝试过小步迭代开发的好处,就是在不断累积中实现需求的功功能,同时减少过程中的挫折感——你的每一步都很好的实现了需求的功能,还能每日集成你的软件,实时掌握你的开发进度。
每次迭代实现认为优先级高的功能。
我们认为图档文件的保存和提取在开发中是优先级最高的,我们首先保证可以向数据库提交图档,同时可以提起图档。这样在我们完成这个功能后其它开发组就可以使用这项功能了(虽然会有因为图片太大保存和提取的效率问题,但是它是可以使用的功能了)。我们使用的开发工具是Delphi数据库是Oracle
迭代1:文件以二进制的形式保存到数据库中,然后再以二进制的形式从数据库中提取出来。
通过查找资料后我们决定Oracle数据库使用Long Raw 类型的字段来保存二进制数据,Delphi里面使用TBlobField来把流装载都字段中向数据库提交。本文的例子简化了表的设计和使用简化后的代码
表的设计
字段名
字段类型
字段长度
字段说明
FID
Number
主键
F_NAME
VarChar2
50
文件名称
F_BINARY_DATA
Long Raw
二进制图档数据
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