日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理

發(fā)布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、概述

在進行了?rap?的基本學(xué)習(xí)之后,您對?rap?的理解是否進入了更高的一個層次呢,個人覺得,對學(xué)習(xí)?rap?的人來說,進行?rap?的學(xué)習(xí)是一個探索的過程,在編程中不斷的對其進行理解和分析,下面就?rap?在實際應(yīng)用中用到的一些知識做一總結(jié),好了,別不多說,下面進入正題,?rap?圖片、數(shù)據(jù)緩存的處理。

二、緩存處理的原因

?????可能你要問為什么要將這個圖片、數(shù)據(jù)的緩存問題提到書面上來呢,作為一個編程人員來將,做緩存的處理不是每個程序員都應(yīng)該知道的事情嗎?但是,我要說正是這個大家覺得習(xí)以為常的東西就更要提到書面中來,做一警惕。

三、緩存圖片的處理

1?、問題的發(fā)生

在我們開發(fā)的項目中,發(fā)現(xiàn)了這樣一個現(xiàn)象,運行?rap?的項目,速度非常的慢,在我們工程的界面上左側(cè)是一棵用?treeViewer?構(gòu)建的樹,樹的數(shù)據(jù)量也不是很大,每個樹節(jié)點上有圖片的信息,打開這棵樹的過程就需要?6?到?7?秒的時間。最后發(fā)現(xiàn)是每一個樹上的節(jié)點的創(chuàng)建過程都重新加載了圖片引起的。當把圖片放入到了緩存中速度明顯就提升上來了。具體的看看代碼中是怎么的實現(xiàn)吧。

?

2?、圖片緩存的處理

1)?、圖片緩存類?ImageUtil?,處理圖片從緩存中獲取,如果緩存中沒有該圖片的信息,那么通過圖片的路徑將圖片加載到緩存中來,在從緩存中獲取圖片的信息,這樣就不用每次都加載圖片,加載一次可復(fù)用多次。

?

[java]?view plaincopy print?
  • 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?先從緩存對象中查找,若有直接返回,若沒有,則將圖片加載到緩存中,在從緩存中將圖片傳給調(diào)用著?
  • ?????*/??
  • ????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?,該類處理加載的圖片的路徑,根據(jù)一個圖片的名稱,尋找圖片的路徑。

    [java]?view plaincopy print?
  • 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?、用法

    在用到圖片的地方,調(diào)用工具類?ImageUtil?中的?getImage(fileName)?就可以了,其中參數(shù)?fileName?是圖片的名稱。此外需要注意下,所有圖片是放到?icons?目錄下的。具體的實現(xiàn)類在這就不列出代碼了。

    四、數(shù)據(jù)緩存的處理

    數(shù)據(jù)緩存的原理很簡單,就是將要加載的數(shù)據(jù)先存到一個位置,用的時候直接從這個位置中取出就可以了,不用每次用的時候都要創(chuàng)建連接數(shù)據(jù)庫的信息并從數(shù)據(jù)庫中讀數(shù)據(jù),若想要更新的數(shù)據(jù),就要出現(xiàn)個刷新按鈕了,刷新一下,從數(shù)據(jù)庫中讀出新數(shù)據(jù)更新緩存,用的時候還是從緩存中取數(shù)據(jù)信息。

    下面說說我們項目中用到的數(shù)據(jù)緩存的實現(xiàn)原理。

    因為我們項目中用到的數(shù)據(jù)基本上是組裝樹結(jié)構(gòu)的數(shù)據(jù),所以將數(shù)據(jù)以?list?的形式存放的。具體思路是:從數(shù)據(jù)庫中查詢出來的數(shù)據(jù)存放到?list?中,當項目中調(diào)用數(shù)據(jù)庫數(shù)據(jù)的時候就是從這個?list?中取得,當刷新數(shù)據(jù)的時候在更新對應(yīng)的?list?中的數(shù)據(jù)就可以了。

    代碼的實現(xiàn)也是很簡單,這里就不粘代碼了,簡單介紹下實現(xiàn)方案。定義一個緩存?list?存放數(shù)據(jù),提供一個方法?a?將數(shù)據(jù)存放到這個?list?中來,并對外提供一個獲得這個?list?的接口方法?b?,外界來調(diào)用這個接口方法?b?獲得數(shù)據(jù),當要刷新數(shù)據(jù)的時候就直接調(diào)用?a?方法。

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/dengyungao/p/7503661.html

    總結(jié)

    以上是生活随笔為你收集整理的Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。