[原创]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的获得分布式数据过程。

 

伪原创文章的方法

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

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

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

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

前提: 由于数据量比较大,但是,数据库用的还是mysql,等关系型数据库,如何处理大批量数据的问题。 一句话说,分表来实现。 如何分表,这个需要看业务逻辑的。 比如,写一个医院的系统,稍微说这么一点逻...
  • u012246342
  • u012246342
  • 2015年12月03日 10:56
  • 360

分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。 2)我们总是害怕我们的这台服务器停机,造成服...
  • dongdong_java
  • dongdong_java
  • 2014年03月21日 17:01
  • 8192

JAVA分布式事务原理及应用(转)

JAVA分布式事务原理及应用(转) 引言   JTA(Java Transaction API)允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动...
  • wangxin1982314
  • wangxin1982314
  • 2016年03月01日 15:23
  • 3746

【原创】Nginx+PHP-FPM的优化技巧(1)

 php-fpm的安装很简单,参见PHP(PHP-FPM)手动编译安装。下面主要讨论下如何提高Nginx+Php-fpm的性能。 1.Unix域Socket通信 之前简单介绍...
  • abv123456789
  • abv123456789
  • 2014年08月11日 10:44
  • 872

集群/分布式环境下5种session处理策略

转载自:http://blog.csdn.net/u010028869/article/details/50773174?ref=myread前言在搭建完集群环境后,不得不考虑的一个问题就是用户访问产...
  • woaigaolaoshi
  • woaigaolaoshi
  • 2016年03月16日 08:59
  • 14524

手把手教你玩转QQ的原创表情

QQ的原创表情非常的可爱,做得比较精致,深受广大QQ用户的喜爱;但怎么将这些表情保存下来,好让我可以在别的地方用呢? 乖乖牛在线将从不同的视角,为你解析QQ原创表情的存储、互通、保护的机制;熟悉了这些...
  • TragicGuy
  • TragicGuy
  • 2015年10月23日 13:58
  • 1099

大型网站架构之分布式消息队列

大型网站架构之分布式消息队列   以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列应用场景消息中...
  • shaobingj126
  • shaobingj126
  • 2016年01月26日 08:48
  • 119192

高并发场景系列(一) 利用redis实现分布式事务锁,解决高并发环境下减库存

问题描述:某电商平台,首发一款新品手机,每人限购2台,预计会有10W的并发,在该情况下,如果扣减库存,保证不会超卖 方案一 利用数据库机制,通过对记录进行锁定,再进行操作  SELECT * fr...
  • heyewu4107
  • heyewu4107
  • 2017年04月30日 13:36
  • 3177
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[原创]Java技巧:分布式Jtables处理[1]
举报原因:
原因补充:

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