长白森林经营局 吉林白山 134400
摘要:信息化时代背景下,软件的开发程度决定着计算机的运行效果,Java编程语言作为其中的开发重点,其重要性已经被人们了解。由于Java编程语言具有特有的优势,因此,其具有广阔的发展空间。本文主要介绍了基于图像的数据表示和数据检索,主要介绍技术上的实现原理和方法,力求在使用界面上方便且易于使用。
关键词:图示信息处理系统;基于位置的检索;LOC
1Java编程语言的概述
Java编程语言在运用中受到了广大群体的青睐和喜爱,和其他语言相较,其优势特征愈发明显,具有一定的实用性,并在实际使用过程中,操作更为简单。同时,Java编程语言具有一定的移植性,这一优势是其他语言不能比拟的,这些优势使得Java编程语言运用愈加广泛。另外,在软件开发中,实际运用的VC和VB语言具有一定的复杂性,其中包含的工作量较大,为工作人员带来一定的压力。总的来说,VB语言已经不能满足当前工作的具体需求,而Java编程语言却能改善这一问题,其功能较多,且操作简便,进一步为编程工作提供较多的便利。工作人员可借助Java语言进行程序代码的编写,能够有效运用到各个流程当中,比如,软件的开发或网络的研发等,具有较多的优势。
2系统主要功能及其代码实现
2.1导入图片及保存第一次使用系统,可以使用图片导入功能。导入图片后,可以在其上编辑关键点,加注相关信息(如文字信息和语音信息)和图象信息,当编辑完成后可以保存所做修改,系统会自动处理相关数据,并以特殊的形式将数据保存到后台数据库中。由于本系统数据保存到数据库中,数据库选用MSSQLServer2000,安装好数据库系统后,必须进行SP3升级,因为在系统连接数据库时,使用的JDBC连接,如果没有升级到SP3,则系统无法连接数据库。此外,务必要将操作系统的1433端口打开,1433端口是应用程序到MSSQLServer2000的默认连接端口。系统类:InfoData.class封装了所有对数据库的操作,封装的方法实现了数据从内存与磁盘之间的信息交换。部分主要代码如下:
/**从字节数组构造一个ImageModel的对象
*@paramdataImageModel对象流
*/
privatestaticImageModelfromBytes(bytes[]data){
try{
ObjectInputStreamois=newObjectInputStream(newByteArrayInputStream(data));
ImageModelim=(ImageModel)ois.readUnshared();
ois.close();
returnim;}
catch(Exceptione){
e.printStackTrace();}
returnnull;}
//把ImageModel对象转化成字节数组
privatestaticbytes[]toBytes(ImageModelmodel){
try{
ByteArrayOutputStreambout=newByteArrayOutputStream();
ObjectOutputStreamoos=newObjectOutputStream(bout);
oos.WriteUnshared(model);
oos.close();
returnbout.toByteArray();}
catch(Exceptione){
e.printStackTrace();}
returnnull;}
2.2关键点的编辑
可以从数据库中,打开一张已经标注过的图片,对其上的关键点进行修改,如增加关键点、删除关键点、修改关键点上的信息,若要修改关键点信息时,可以双击关键点或在关键点显示列表中右击关键点,然后选择修改或删除功能。
3系统详细设计
3.1图形交互界面类的详细设计
图1界面类间总体关系
图形交互界面类的详细设计,一共由6个Java源文件组成,如图1所示,其功能具体如下。
Main.java功能描述:主窗口类,负责构建系统的主窗口,系统的其他面板将在这里集成。
ImagePanel.java功能描述:用于显示图片的面板,同时负责接受用户的操作,要求用更加合理的显示内容构成系统主界面的组成部份。
SetDialog.java功能描述:用于显示设置的窗口,添加用户的选则,更改设置等,如图2所示。
图2SetDialog.java
StatusLabel.java功能描述:一个状态栏的小面板,它是系统主界面的主成部分,主要用于显示系统当前的状态。
JFontChooser.java功能描述:一个字体选择框,负责提供设置标注字体和颜色的功能等。
PIC.java功能描述:此类仅仅是用于检索图片。
3.2数据处理模块类间关系
数据处理模块类的详细设计,一共由8个Java源文件组成,如图4所示,其功能具体如下。
Drawable.java(接口)功能描述:此接口用于定义能画出自己的类,实现此接口的类,将知道如何画出自己。Labelable.java(接口)
功能描述:所有可做标签的对象所应该实现的方法,在系统中LabelModel实现了此接口。
Moveable.java(接口)功能描述:所有可移动的对象所必须实现的方法,接口为实现一种规范。
Zoomable.java功能描述:所有可以缩放的对象所必须实现的接口
ImageModel.java功能描述:此类是图片的模型类,此类也包含了所有此图片的标签,此类可串行化,并且在存储时,将只存储本类,在存储本类的时候,本类的所有标签将同时被存储.
LabelModel.java功能描述:表示一个标签的模型类,它包括了标签所拥有的特性此类也是可串行化的,在保存ImgageModel类的时候,此类同时被保存。MySet.java功能描述:保存所有设置的对象,当用户更改了配置的时候,配置数据将在此类中被保存。
InfoData.java功能描述:此类封装了所有对数据库的操作,提供方法将数据保存到数据库中及从数据库中提取数据。
4系统应探讨的问题
4.1内存占用问题
Java语言本身相对于其他语言,运行时比较消耗内存,主要原因是Java程序需要通过Java虚拟机运行。当运行Java程序时,Java虚拟机首先运行,通常虚拟机运行需要20MB左右的内存空间。由于这种客观存在,在编写Java应用程序时就必须严格考虑内存占用问题,尤其在设计图象处理应用程序中。在编写ImageModel.java时,由于要导入图片,并随时可能更换图片,所以在处理更换新图片时,应把旧图片的引用处理为null,因为对于一个不可引用的对象来说,Java虚拟机的垃圾回收器会在合适的时候将其回收。同时对于载入的ImageModel.java文件也采用了同样的处理方式,但是按照Java虚拟机规范叙述,即使一个对象的引用为null,它也不会被马上回收,至于什么时候回收,将由Java虚拟机动态决定,除非自己管理,因此建议使用本软件,内存至少256MB以上,以确保正常运行。
4.2数据封装及保存问题
本系统的实质就是在图片上建立关键点,同时对关键点加上注释信息,这就产生了这样一些类型数据:图片信息、关键点、文字注释、图象注释、关键点和注释之间的联系、关键点在图片上的位置坐标,图片模型在显示面板上的位置坐标、模型大小等数据,数据量大、数据类型多、繁杂。因此系统利用面向对象语言的特点,将数据以对象的形式进行了封装,在存入数据库时用Java中的ObjectOutputStream类将其转换成字节。
4.3数据提取问题
由于数据量较大,当要从数据库提取数据时,由于数据库中往往存在多条记录,如果同时将数据全部提取到内存,不但浪费时间,而且消耗大量内存,这是不可取的方式。因此实际而可行的方式是,在接受用户提取数据请求时,首先只是从数据库中提取部分信息如每条记录的id、保存时间、描述等,并以列表的形式显示给用户,由用户选择需要提取哪条记录,当用户选择了对应的模型后,再将对应的图片模型从数据库中提取出来,这样做不但可以提高运行信息的显示速度,而且也减少了内存的消耗。
5结束语
总的来说,Java编程语言是一种十分重要的计算机系统开发手段,必然会对人们的生产和工作起到重要的作用。利用Java语言可以更有效地管理数据、更方便地检索数据、更形象地表示数据一直是人们思考的方向和追求的目标。
参考文献:
[1]HortonI.Java2编程指南[M].马树奇,孙坦,译.北京:电子工业出版社,2003.
[2]SpellB.Java高级编程[M].北京:清华大学出版社,2006.