最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java程序中的延遲加載功能使用

 更新時間:2015年07月10日 12:11:50   投稿:goldensun  
這篇文章主要介紹了Java程序中的延遲加載功能使用,一定程度上有助于提升性能和降低內(nèi)存使用率,需要的朋友可以參考下

使用多個對象或者大數(shù)據(jù)結構時,一種提升其性能的方式是運用延遲加載或賦值(來實現(xiàn))。將費時的操作盡可能的縮短的想法,從未實現(xiàn)。我通過一些例子來說明延遲加載技術在Java中如何運用,給予一些指引以在其他語言中能更易(使用)并作為核心語言的一部分。

一種使用場景是通過JTable來展示數(shù)百個包含元數(shù)據(jù)和測量值得域?qū)ο?。初始化我們的域?qū)ο笤趦?nèi)存中能保存兩種類型的對象,即便在表格中僅顯示部分元數(shù)據(jù)。構建該表格將花費數(shù)秒鐘的時間,(但)我們可以接受再次展示數(shù)百項(數(shù)據(jù))。在做了一些分析過后,我們改進了我們的實現(xiàn),看起來像這樣:
 

public class DomainObject {
 private final DataParser parser;
 private final Map<String, String> header = new HashMap<>();
 private final List<Data> data = new ArrayList<>();
 
 public DomainObject(DataParser aParser) {
  parser = aParser;
 }
 
 public String getHeaderField(String name) {
  // Here we lazily parse and fill the header map
  if (header.isEmpty()) {
   header.addAll(parser.header());
  }
  return header.get(name);
 }
 public Iterable<Data> getMeasurementValues() {
  // again lazy-load and parse the data
  if (data.isEmpty()) {
   data.addAll(parser.measurements());
  }
  return data;
 }
}

這種改進改善了顯示時間的條目和顯著提高了我們處理大數(shù)據(jù)項的(能力)。所有的數(shù)據(jù)載入僅在有人想查看測量的具體細節(jié)和雙擊某條目時才會發(fā)生。


一種java拆箱后得到延遲賦值在條件語句的情況下
 

// lazy and fast because the expensive operation will only execute when needed
if (aCondition() && expensiveOperation()) { ... }
 
// slow order (still lazy evaluated!)
if (expensiveOperation() && aCondition()) { ... }

持久層框架像Hibernate時常默認延遲加載是因為在通常情況下數(shù)據(jù)庫訪問并且數(shù)據(jù)傳送代價相當高昂。

大多數(shù)語言功能是基于環(huán)繞延遲賦值的情況下這種理論上的功能如同第一個類所有成員最大程度上隔離降低副作用對延遲的影響。Scala混合了面向?qū)ο笳Z言功能并引進延遲關鍵字簡化了java樣式,延遲初始代碼就像下面這樣
 

public class DomainObject(parser: DataParser) {
 // evaluated on first access
 private lazy val header = { parser.header() }
 
 def getHeaderField(name : String) : String = {
  header.get(name).getOrElse("")
 }
 
 // evaluated on first access
 lazy val measurementValues : Iterable[Data] = {
  parser.measurements()
 }
}

結論

延遲加載不是新的革命性技術但當處理大數(shù)據(jù)或放慢資源卻是一個非常有用的工具。在這些很多情況下你能使用它提升性能或使用者親身經(jīng)歷使用它。

它可以降低實現(xiàn)代碼的成本如果語言支持不是很好(像java)和其它一些情況的下應用就要在預編譯預處理情況下感受更多的響應。

相關文章

  • java啟動jar包修改JVM默認內(nèi)存問題

    java啟動jar包修改JVM默認內(nèi)存問題

    這篇文章主要介紹了java啟動jar包修改JVM默認內(nèi)存問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Spring Boot使用Spring的異步線程池的實現(xiàn)

    Spring Boot使用Spring的異步線程池的實現(xiàn)

    這篇文章主要介紹了Spring Boot使用Spring的異步線程池的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 淺談java中守護線程與用戶線程

    淺談java中守護線程與用戶線程

    本篇文章主要介紹了淺談java中守護線程與用戶線程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • java爬蟲Gecco工具抓取新聞實例

    java爬蟲Gecco工具抓取新聞實例

    本篇文章主要介紹了JAVA 爬蟲Gecco工具抓取新聞實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • springboot通過SchedulingConfigurer實現(xiàn)多定時任務注冊及動態(tài)修改執(zhí)行周期(示例詳解)

    springboot通過SchedulingConfigurer實現(xiàn)多定時任務注冊及動態(tài)修改執(zhí)行周期(示例詳解)

    這篇文章主要介紹了springboot通過SchedulingConfigurer實現(xiàn)多定時任務注冊及動態(tài)修改執(zhí)行周期,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 深入理解Java設計模式之代理模式

    深入理解Java設計模式之代理模式

    這篇文章主要介紹了Java設計模式之代理模式的的相關資料,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下
    2021-11-11
  • springboot集成JWT實現(xiàn)身份認證(權鑒)的方法步驟

    springboot集成JWT實現(xiàn)身份認證(權鑒)的方法步驟

    本文主要介紹了springboot集成JWT實現(xiàn)身份認證(權鑒)的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Java_Spring之XML?的?AOP?配置

    Java_Spring之XML?的?AOP?配置

    這篇文章主要介紹了Java_Spring中基于XML的AOP配置,上篇講到的是基于注解的AOP配置,對XML感興趣的同學可以參考閱讀本文
    2023-04-04
  • Java 輕松入門了解File類的使用

    Java 輕松入門了解File類的使用

    Java文件類以抽象的方式代表文件名和目錄路徑名。該類主要用于文件和目錄的創(chuàng)建、文件的查找和文件的刪除等。File對象代表磁盤中實際存在的文件和目錄。通過以下構造方法創(chuàng)建一個File對象
    2022-03-03
  • 在Java中使用ModelMapper簡化Shapefile屬性轉JavaBean實戰(zhàn)過程

    在Java中使用ModelMapper簡化Shapefile屬性轉JavaBean實戰(zhàn)過程

    本文介紹了在Java中使用ModelMapper庫簡化Shapefile屬性轉JavaBean的過程,對比了原始的set方法和構造方法,展示了如何使用ModelMapper進行動態(tài)屬性映射,從而減少手動編寫轉換代碼的工作量,通過示例代碼,展示了如何使用GeoTools讀取Shapefile屬性并將其轉換為JavaBean對象
    2025-02-02

最新評論

江达县| 天柱县| 彩票| 宜良县| 铜陵市| 黄骅市| 汤原县| 凌云县| 贺州市| 阿克陶县| 永顺县| 龙州县| 上犹县| 江安县| 抚松县| 建瓯市| 噶尔县| 陈巴尔虎旗| 桂东县| 屏山县| 米脂县| 弥勒县| 那曲县| 剑川县| 郁南县| 探索| 乾安县| 含山县| 舞阳县| 资中县| 景东| 茂名市| 武邑县| 马尔康县| 禄劝| 英山县| 监利县| 西乌| 长治县| 赫章县| 尚义县|