[原创]Java技巧:分布式Jtables处理[1]

原创 2004年08月31日 22:48:00

[原创]Java技巧:分布式Jtables处理[1]

概要

当显示一个有数万行或者更多行table的时候,需要很快的响应和显示。达到这样目的,可以用一种专门的TableModel,这种模式只有当需要一个数据的时候才从服务器从新获取,因此更少的数据被下载。为了更好的提高效率,行数据可以每次获取50行并且存储在客户端上以便以后使用。下面的文章将说明如何编写这样的分布式table,并且利用它的优势。

Jeremy Dickson著

 

在数据被驱使的年代,显示数万行的table是标准的作业。组成表格的数据一般都是从远程数据库从新获得,这有相当的困难:你的程序是否只下载一次table数据,或者只下载请求数据的第一个块?如果用户只是对开始的部分感兴趣,可是程序在用户使用之前,一开始就下载了所有的数据,这会导致用户等待较长时间,而厌恶它。在Web搜索中,一般一次下载一个数据块,例如在Google中,块的大小是10页的结果。无论如何,在某些情况下,你可能需要在一个table中显示这些数据,但是开始最小化的开始数据给用户。作为建议,你可能需要一个列资料,单元查询和数据编辑的电子table。由于Jtable一个灵活设计,当优化下载数据的时候,可以使JTable有丰富的用户接口。

注释:可以下载这篇文章的代码,地址:http://www.javaworld.com/javaworld/javatips/jw-javatip137.html?#resources#resources

 

分布式存储TableModel


Jtable依据了Model-View-Controller设计模式。在这个模式下,组成数据源被从可视化部分分离,并且控制部分也明确的分成了三个模块(参照http://www.javaworld.com/javaworld/javatips/jw-javatip137.html?#resources#resources)。在JTable实例中,这种模式由接口TableModel组成。这使得JTable有很强的适应性,因为可以在TableModel执行中包括任何模式的数据源,在JTable中TableModel,并且在屏幕上显示table。例如,可以建立一个表格显示多种数据,这些数据可以是来自文件,数据库,或者使用这种方法的消息队列。在这个技巧里面,可以充分显示适应性的优点。

JTable从TableModel载入数据采用了一种懒惰方法:只在需要的时候,从model读取数据,这样比在显示之前读取所有的数据好。当需要显示一个特殊表格单元在显示器上时,JTable在它的TableModel调用方法getValueAt(int row, int column)从新获得数据值。说是懒惰的方法,是因为数据要求这种方法可以被任何方法启动。例如,将数据放置在服务器上,使用一个URL就可以返回这个单元的数据,因为XML. getValueAt()可以分析,返回最终显示在JTable的XML。

无论如何,远程调用是耗时的,那为什么不将请求的多个数据单元捆绑成一个远程调用并且存储需要的额外数据单元?如果请求需要行0,列0,可以调用servlet返回所有0到50行的数据。这就意味着对于所有当前可视表格单元所有数据都服务getValueAt()。当用户成卷下载table,就得到了更多的数据。此外,可以在客户端放置合适行数的缓存区域。当客户端下载超过适当行数的时候,数据最初的已经不被需要的部分将会被覆盖。如果客户向回滚动表格,数据在需要的时候可以从服务器从新获得。
 
执行一定数量的类和接口被定义用于这种分布式存储JTable。(图1)


图1,实现分布式存储table模式的类

 

建立了一个专门TableModel,叫做DistributedTableModel。通过完成类DistributedTableClientCache的所有功能实现TableModel接口方法,类DistributedTableClientCache从数据源获得大批的数据并且暂时存储在客户端。DistributedTableClientCache从一个利用接口的DistributedTableClientCache对象从新获得所有的数据。通过这个接口,恢复了逻辑上需要但是分布式的数据,将这些数据变成我们习惯并且有效的TableModel。例如,方法getTableDescription()返回一个包含了表描述元素的对象-行和列的数量,以及列名和分组的类型。方法Object[][] retrieveRows(int from, int to)在处理当前数据的时候抛出异常。只要TableModel需要一个不在缓存里面的行数据的时候,方法retrieveRows()被调用,然后获得一组行数据。

DistributedTableModel实例建立,构造器调用中使用了三个参数:

·      TableDataSource:DistributedTableDataSource执行。它有专门处理,例如,从Remote Method Invocation (RMI) 或者CORBA service获得它的数据。
·      ChunkSize:必须一次从服务器获得的数据行数。
·      MaximumCacheSize:缓存区可以存储的最大的行数。


图2 显示了数据获得过程的图标

图2 一个流程图,显示了当JTable显示时,DistributedTableModel的获得分布式数据过程。

 

分布式任务调度平台java

轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。运行报表、失败处理策略、动态分片、事件触发、完整的阻塞处理策略、路由策略
  • 2017年11月15日 16:24

[原创]Java技巧:分布式Jtables处理[2]

[原创]Java技巧:分布式Jtables处理[2]资料一般的table要求可以按照列的升序或者降序分类。Jtbale组成部分没有固定的功能分类;它必须以TableModel执行方式被执行(见:htt...
  • iceandfire
  • iceandfire
  • 2004-08-31 22:49:00
  • 1090

伪原创文章的方法

1.修改标题 标题是搜索引擎读取相关数据的第一步,因此,伪原创内容页的全新标题,搜索引擎而言对这个页面的评价也就高些。具体 的操作技巧有,添加或删减词语词组、换汤不换药(全新的描述方式,意义雷同)、同...
  • zongcaihui
  • zongcaihui
  • 2015-10-12 15:18:41
  • 311

通过图像转换软件打造95%原创文章--真的可以告别伪原创(有点扯)

通过图像转换软件打造95%原创文章--真的可以告别伪原创   满大街都在吆喝,SEO优化什么最重要?“内容为王,外链为皇”。。。对,我也是这么认为的,可是能每天坚持写原创的又有几个呢?我相信我这篇文...
  • wuxinliulei
  • wuxinliulei
  • 2013-08-27 13:09:10
  • 1119

自媒体如何写原创文章,快速创作内容1小时3-5篇技巧!

1、搜索并关注与自己头条账号领域相关的大V或话题,并通过这些大V的关注群体进行链式扩散,拓展素材来源。 2.在微博热门榜单、话题中筛选与自己领域相符的话题,找出话题中比较热门的内容。...
  • Aaroun
  • Aaroun
  • 2017-12-14 14:51:58
  • 384

JAVA JTable的实用使用方法

创建table,调用无参的构造函数: JTable table= new JTable(); 以表头和数据创建表格 //这要求表头和数据都不能为空,不然会抛出NullPointe...
  • wangxiaojingo
  • wangxiaojingo
  • 2013-05-14 18:48:53
  • 1577

java 分布式事务处理

分布式事务处理    当数据分布在多个数据库服务器上时,就需要各种保护措施来保证数据正确地写到所有数据库中。例如,考虑一个在三个分离的远程数据库上修改的 客户帐户平衡表,如果在事务写阶段,任何一个数据...
  • oscar999
  • oscar999
  • 2007-09-04 14:15:00
  • 10777

java swing jtable 中加进度条

package progreass; import java.awt.Color; import java.awt.Component; import java.awt.event.MouseA...
  • lushuaiyin
  • lushuaiyin
  • 2011-10-12 17:12:05
  • 1701

java分布式事务

在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子。     请通过以下方式下载github源代码: git clone https:/...
  • moonpure
  • moonpure
  • 2016-10-10 17:30:13
  • 5029

不用分布式方式,处理大量数据的问题

前提: 由于数据量比较大,但是,数据库用的还是mysql,等关系型数据库,如何处理大批量数据的问题。 一句话说,分表来实现。 如何分表,这个需要看业务逻辑的。 比如,写一个医院的系统,稍微说这么一点逻...
  • u012246342
  • u012246342
  • 2015-12-03 10:56:27
  • 434
收藏助手
不良信息举报
您举报文章:[原创]Java技巧:分布式Jtables处理[1]
举报原因:
原因补充:

(最多只允许输入30个字)