- 浏览: 1151847 次
- 性别:
- 来自: 火星郊区
博客专栏
-
OSGi
浏览量:0
文章分类
- 全部博客 (695)
- 项目管理 (48)
- OSGi (122)
- java (79)
- Vaadin (5)
- RAP (47)
- mysql (40)
- Maven (22)
- SVN (8)
- 孔雀鱼 (10)
- hibernate (9)
- spring (10)
- css (3)
- 年审 (6)
- ant (1)
- jdbc (3)
- FusionCharts (2)
- struts (4)
- 决策分析 (2)
- 生活 (10)
- 架构设计 (5)
- 破解 (2)
- 狼文化 (4)
- JVM (14)
- J2EE (1)
- 应用服务器 (1)
- 我的链接 (5)
- 数学 (2)
- 报表 (1)
- 百科 (6)
- Flex (7)
- log4j (2)
- PHP (1)
- 系统 (2)
- Web前端 (7)
- linux (6)
- Office (1)
- 安全管理 (5)
- python (2)
- dom4j (1)
- 工作流 (3)
- 养生保健 (4)
- Eclipse (8)
- 监控开发 (1)
- 设计 (3)
- CAS (1)
- ZK (41)
- BluePrint (3)
- 工具 (1)
- SWT (7)
- google (2)
- NIO (1)
- 企业文化 (2)
- Windoes (0)
- RCP (7)
- JavaScript (10)
- UML (1)
- 产品经理 (2)
- Velocity (10)
- C (1)
- 单元测试 (1)
- 设计模式 (2)
- 系统分析师 (2)
- 架构 (4)
- 面试 (2)
- 代码走查 (1)
- MongoDB (1)
- 企业流程优化 (1)
- 模式 (1)
- EJB (1)
- Jetty (1)
- Git (13)
- IPV6 (1)
- JQuery (8)
- SSH (1)
- mybatis (10)
- SiteMesh (2)
- JSTL (1)
- veloctiy (1)
- Spring MVC (1)
- struts2 (3)
- Servlet (1)
- 权限管理 (1)
- Java Mina (1)
- java 系统信息 (6)
- OSGi 基础 (3)
- html (1)
- spring--security (6)
- HTML5 (1)
- java爬虫搜索 (1)
- mvc (3)
最新评论
-
Tom.X:
http://osgia.com/
将web容器置于OSGi框架下进行web应用的开发 -
chenyuguxing:
你好, 为什么我的bundle export到felix工程中 ...
在Apache Felix中运行bundle -
string2020:
<niceManifest>true</ni ...
Bundle Plugin for Maven -
jsonmong:
OSGI,是未来的主流,目前已相当成熟。应用OSGI比较好的, ...
基于OSGi的声明式服务 -
zyhui98:
貌似是翻译过来的,有很少人在linux上做开发吧
如何成为“10倍效率”开发者
一、概述
在进行了 rap 的基本学习之后,您对 rap 的理解是否进入了更高的一个层次呢,个人觉得,对学习 rap 的人来说,进行 rap 的学习是一个探索的过程,在编程中不断的对其进行理解和分析,下面就 rap 在实际应用中用到的一些知识做一总结,好了,别不多说,下面进入正题, rap 图片、数据缓存的处理。
二、缓存处理的原因
可能你要问为什么要将这个图片、数据的缓存问题提到书面上来呢,作为一个编程人员来将,做缓存的处理不是每个程序员都应该知道的事情吗?但是,我要说正是这个大家觉得习以为常的东西就更要提到书面中来,做一警惕。
三、缓存图片的处理
1 、问题的发生
在我们开发的项目中,发现了这样一个现象,运行 rap 的项目,速度非常的慢,在我们工程的界面上左侧是一棵用 treeViewer 构建的树,树的数据量也不是很大,每个树节点上有图片的信息,打开这棵树的过程就需要 6 到 7 秒的时间。最后发现是每一个树上的节点的创建过程都重新加载了图片引起的。当把图片放入到了缓存中速度明显就提升上来了。具体的看看代码中是怎么的实现吧。
2 、图片缓存的处理
1) 、图片缓存类 ImageUtil ,处理图片从缓存中获取,如果缓存中没有该图片的信息,那么通过图片的路径将图片加载到缓存中来,在从缓存中获取图片的信息,这样就不用每次都加载图片,加载一次可复用多次。
- import java.net.MalformedURLException;
- import java.net.URL;
- import org.apache.log4j.Logger;
- import org.eclipse.jface.resource.ImageDescriptor;
- import org.eclipse.jface.resource.ImageRegistry;
- import org.eclipse.swt.graphics.Image;
- /**
- *
- * 图片工具类
- *
- */
- public class ImageUtil {
- private static Logger log = Logger.getLogger(ImageUtil. class );
- private static ImageRegistry registry = new ImageRegistry();
- /**
- * 获取图片
- *
- * @param fileName
- * 图片的名称
- * @return 先从缓存对象中查找,若有直接返回,若没有,则将图片加载到缓存中,在从缓存中将图片传给调用着
- */
- public static Image getImage(String fileName) {
- Image image = registry.get(fileName);
- if (image == null ) {
- URL folderURL = null ;
- try {
- folderURL = new URL( "file:" + PathUtil.getIconPath(fileName));
- image = ImageDescriptor.createFromURL(folderURL).createImage();
- registry.put(fileName, ImageDescriptor.createFromURL(folderURL));
- }
- catch (MalformedURLException e) {
- log.error("getImage error:" , e);
- }
- }
- return image;
- }
- }
2) 、处理图片路径的类 PathUtil ,该类处理加载的图片的路径,根据一个图片的名称,寻找图片的路径。
- import org.apache.log4j.Logger;
- import org.eclipse.core.runtime.FileLocator;
- import org.eclipse.core.runtime.Platform;
- import telecomui.application.Activator;
- /**
- * 路径工具类
- *
- *
- */
- public class PathUtil
- {
- private static Logger log = Logger.getLogger(PathUtil. class );
- /**
- * 获得平台相对绝对路径
- *
- * @param pluginID
- * @return
- */
- public static String getRoot() {
- String path = null ;
- try {
- path = FileLocator.toFileURL(Platform.getBundle(Activator.PLUGIN_ID).getEntry("" ))
- .getPath();
- path = path.substring(path.indexOf("/" ) + 1 , path.length());
- }
- catch (Exception e) {
- log.error("getRoot method :" , e);
- }
- return path;
- }
- /**
- * 获得icon目录下的文件路径
- *
- * @param fileName
- * @return 绝对路径
- */
- public static String getIconPath(String fileName) {
- String rootPath = getRoot();
- return rootPath
- + "icons/" + fileName;
- }
- }
3 、用法
在用到图片的地方,调用工具类 ImageUtil 中的 getImage(fileName) 就可以了,其中参数 fileName 是图片的名称。此外需要注意下,所有图片是放到 icons 目录下的。具体的实现类在这就不列出代码了。
四、数据缓存的处理
数据缓存的原理很简单,就是将要加载的数据先存到一个位置,用的时候直接从这个位置中取出就可以了,不用每次用的时候都要创建连接数据库的信息并从数据库中读数据,若想要更新的数据,就要出现个刷新按钮了,刷新一下,从数据库中读出新数据更新缓存,用的时候还是从缓存中取数据信息。
下面说说我们项目中用到的数据缓存的实现原理。
因为我们项目中用到的数据基本上是组装树结构的数据,所以将数据以 list 的形式存放的。具体思路是:从数据库中查询出来的数据存放到 list 中,当项目中调用数据库数据的时候就是从这个 list 中取得,当刷新数据的时候在更新对应的 list 中的数据就可以了。
代码的实现也是很简单,这里就不粘代码了,简单介绍下实现方案。
定义一个缓存 list 存放数据,提供一个方法 a 将数据存放到这个 list 中来,并对外提供一个获得这个 list 的接口方法 b ,外界来调用这个接口方法 b 获得数据,当要刷新数据的时候就直接调用 a 方法。
发表评论
-
RCP开发者的好去处之ICON系列(持续更新中... ...)
2012-03-31 10:13 1123为了找个合适的图片是不是头大的不像样子了?OK,我现在就 ... -
RAP 整合 Spring (基于 Spring-osgi )
2012-03-31 10:12 1386RAP 介绍请见: http://www.eclipse. ... -
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
2012-03-25 14:50 1463引用 在rcp的路径添加了mysql驱动,并添加之cla ... -
解决JFace Dialog中ScrollComposite无法滚动
2012-03-26 10:26 1591今天写了一个Jface的dialog,作为配置界面,其中有 ... -
SWT实现弹出日历控件
2012-03-27 08:00 2583实现像网页上的那种用户单击一个Text框然后框下面出现一个日历 ... -
JFace进度条
2012-03-27 08:01 1114Java代码 someB ... -
getConfigurationElementsFor 无法获得扩展点的信息
2012-03-26 10:27 1092做项目的时候RCP程序在eclipse调试环境下面运行正常 ... -
测试rcp 和 rap 何时触发 组建.addListener(SWT.xxx, new Listener() )的方法
2012-02-24 14:22 1282Java代码 直接通过反射让组建监 ... -
RAP 界面显示不完全的问题
2012-02-24 14:22 1238rap运行第一刷新界面总是刷新不完整,组件错位,后台报Layo ... -
Uploading files with RAP 1.4
2012-02-17 11:37 1617One of the new things in RAP 1. ... -
【RAP】CAS PIA 快速浏览入口地址
2012-02-07 08:23 1237下面的链接是访问RAP应用的入口。有2中方式,图片上已经注明。 ... -
RAP 与 RCP的区别
2012-02-07 08:23 1323RAP 可以让开发人员使用 JAVA API 和按照 E ... -
将Eclipse RAP部署到Tomcat中
2012-02-07 08:23 1140在上次成功将我的RCP项目迁移到浏览器中运行后,开始研究 ... -
RAP(Rich AJAX Platform)的可部署文件下载
2012-02-07 08:24 1138这是我自己做的RAP的可部署文件,可以下载下来解压到Tom ... -
Eclipse rcp/rap 开发经验总结(15) -rap如何使用js
2012-02-03 08:11 14481. 把输入的字符串当 javascript 执行 ... -
Eclipse rcp/rap 开发经验总结(13) -Rap/Rcp保存按钮处理方式
2012-02-03 08:10 1083一、概述 在做项目的过程中,处理编辑区的保存机制的时候。发 ... -
Eclipse rcp/rap 开发经验总结(12) -Rap 优化之组件的销毁
2012-02-03 08:10 871一、概述 经过几个月的rap 项目实战,总结了一些小 ... -
Eclipse rcp/rap 开发经验总结(11) -rcp/rap与spring ibatis集成
2012-02-03 08:10 13101. rcp/rap 与 spring 集成 Activa ... -
Eclipse rcp/rap 开发经验总结(10) -Rap不同系统间的差异和处理方式
2012-02-01 08:01 1398平常进行 rap 程序开发一般都是在 win ... -
Eclipse rcp/rap 开发经验总结(9) - rap上传与下载
2012-02-01 08:01 1051一 上传 上传即将文件上传到服务器上,在客户端需 ...
相关推荐
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-linux-gtk-x86_64.tar.gz) 适用于Linux x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-win32-x86_64.zip) 适用于Windows x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-macosx-cocoa-x86_64.dmg) 适用于macOS x86_64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
eclipse RCP Plug-in开发自学教程 eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法...
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-linux-gtk-aarch64.tar.gz) 适用于Linux aarch64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
Eclipse RCP是一种基于Eclipse平台的富客户端平台技术,它允许开发者创建独立于Eclipse环境的Java桌面应用程序。RCP通过提供一套标准组件和API,简化了桌面应用程序的开发流程,使开发者能够专注于业务逻辑而非界面...
Eclipse IDE for RCP and RAP Developers(eclipse-rcp-2022-06-R-macosx-cocoa-aarch64.dmg) 适用于macOS aarch64: A complete set of tools for developers who want to create Eclipse plug-ins, Rich Client ...
这个压缩包"eclipse-rcp-2020-06-R-linux-x86"是专门为Linux x86(AMD)平台设计的版本,包含了开发基于Eclipse RCP应用所需的基础工具集。 **Eclipse RCP关键知识点** 1. **基础架构**:Eclipse RCP的核心在于其...
6. **国际化和本地化**:Eclipse RCP支持多语言环境,开发者需要了解如何实现应用程序的国际化和本地化,包括资源文件的处理和语言切换机制。 7. **源代码实践**:压缩包中的源代码提供了实际的开发示例,通过分析...
eclipse-rcp-2023-12-R-win32-x86_64.zip 适用于Windows系统
该压缩包 "eclipse-rcp-2022-06-R-linux-x86_64" 中包含的主要文件是 "eclipse-rcp-2022-06-R-linux-x86_64",这可能是一个可执行的Eclipse IDE实例,用于在Linux系统上支持RCP和RAP的开发。为了运行这个IDE,你需要...
本压缩包“eclipse-rcp-2023-09-R-linux-gtk-x86_64.tar.gz”是专为Linux x86_64架构设计的版本,包含了最新的Eclipse RCP开发环境。 首先,我们要理解Linux x86_64,这代表了64位的Linux操作系统。与32位系统相比...
8. **RCP和RAP框架**:Eclipse Rich Client Platform (RCP) 和 Rich Ajax Platform (RAP)允许开发人员构建自己的桌面应用程序和Web应用,2018-09版本可能包含相关更新和改进。 9. **持续集成**:Eclipse与Jenkins、...
《ECLIPSE+RCP应用系统开发方法与实战》这本书是高岗先生关于使用Eclipse RCP(Rich Client Platform)进行应用系统开发的一本实战指南。Eclipse RCP是Eclipse IDE的一部分,它提供了一个框架,使得开发者可以构建...
eclipse-rcp-2023-12-R-linux-gtk-x86_64.tar.gz 适用于Linux x86_64位系统
在2023年的最新版本"eclipse-rcp-2023-12-R"中,Eclipse团队为Linux ARM架构的用户带来了专门的版本——"linux-gtk-aarch64",这表明Eclipse RCP已经充分考虑到了多样化的硬件平台需求。 1. **Eclipse RCP核心特性*...
eclipse plug-in/rcp 开发方法详解第二部分
- RCP应用遵循MVC设计模式,模型负责数据处理,视图显示数据,控制器处理用户交互。 6. **扩展点(Extension Points)**: - 扩展点允许插件向Eclipse生态系统添加新功能或扩展现有功能。 - 通过在插件的...
下载并解压"eclipse-rcp-2023-09-R-win32-x86_64.zip"后,你会得到一个Eclipse RCP的开发环境,包括开发工具、运行时组件以及可能包含的一些示例项目。使用Eclipse IDE启动该环境,你可以开始创建、调试和部署你的...
"eclipse-rcp-2023-06-R-win32-x86-64.zip" 是一个专为64位Windows系统设计的Eclipse RCP版本,发布于2023年6月。 **Eclipse RCP基础知识** 1. **组件模型**: Eclipse RCP基于OSGi(Open Services Gateway ...