----sax, dom, jdom技術的優缺點比較
sax分析器在對xml文件進行分析時,觸發一系列的事件,應用程式通過事件處理函式實現對xml文件的訪問。由於事件觸發本身是有時序性的,因此,sax分析器提供的是一種對xml文件的順序訪問機制,對於已經分析過的部分,不能再倒回去重新處理。
sax 之所以被叫做"簡單"應用程式介面,是因為sax分析器只做了一些簡單的工作,大部分工作還要由應用程式自己去做。也就是說,sax分析器在實現時,它只 是順序地檢查xml文件中的位元組流,判斷當前位元組是xml語法中的哪一部分,檢查是否符合xml語法並觸發相應的事件。對於事件處理函式本身,要由應用程 序自己來實現。同dom分析器相比,sax分析器對xml文件的處理缺乏一定的靈活性,然而,對於那些只需要訪問xml文件中的資料而不對文件進行更改的 應用程式來說,sax分析器的效率則更高。由於sax分析器實現簡單,對記憶體要求比較低,因此實現效率比較高同時具有廣泛的應用價值。
dom 分析器通過對xml文件的分析,把整個xml文件以一棵dom樹的形式存放在記憶體中,應用程式可以隨時對dom樹中的任何乙個部分進行訪問與操作,也就是 說,通過dom樹,應用程式可以對xml文件進行隨機訪問。這種訪問方式給應用程式的開發帶來了很大的靈活性,它可以任意地控制整個xml文件中的內容。 然而,由於dom分析器把整個xml文件轉化成dom樹放在了記憶體中,因此,當xml文件比較大或者文件結構比較複雜時,對記憶體的需求就比較高。而且,對 於結構複雜的樹的遍歷也是一項比較耗時的操作。所以,dom分析器對機器效能的要求比較高,實現效率不十分理想。不過,由於dom分析器的樹結構的思想與 xml文件的結構相吻合,而且,通過dom樹機制很容實現隨機訪問。因此dom分析器也有較為廣泛的使用價值。
jdom是處理xml的純j**a api。使用具體類而不用介面,既要生成大多數節點型別的例項,只要將一兩個變元傳入即可。是目前表現優秀的處理xml的j**a api。其優缺點如表1所示:
表2:sax、dom及jdom技術優缺點
sax優點:①無需將整個文件載入到記憶體,因而記憶體消耗少
②推模型允許註冊多個contenthandler
缺點:①沒有內建的文件導航支援
②不能夠隨機訪問xml文件
③不支援在原地修改xml
④不支援名字空間作用域
最適合於:只從xml讀取資料的應用程(不可用於操作或修改xml文件)
dom優點:①易於使用
②豐富的api集合,可用於輕鬆地導航
③整棵樹載入到記憶體,允許對xml文件進行隨機訪問
缺點:①整個xml文件必須一次解析完
②將整棵樹載入到記憶體成本較高
③一般的dom節點對於必須為所有節點建立物件的物件型別繫結不太理想
最適合於:需要修改xml文件的應用程式或xslt應用程式(不可用於唯讀xml的應用程式)
jdom
優點:①是基於樹的處理xml的j**a api,把樹載入在記憶體中
②沒有向下相容的限制,因此比dom簡單
③速度快,缺陷少
④具有sax的j**a規則
缺點:①不能處理大於記憶體的文件
②jdom表示xml文件邏輯模型。不能保證每個位元組真正變換。
③針對例項文件不提供dtd與模式的任何實際模型。
④不支援與dom中相應遍歷包
最適合於:jdom具有樹的便利,也有sax的j**a規則。在需要平衡時使用
容器集群管理技術對比
企業it架構是指機房硬體管理和應用開發交付模式,前者涉及物理資源的高效便捷管理,衍生出虛擬化技術 後者關係到開發運維協同工作,加速容器技術的發展。特別是在網際網路化已成為促進資訊科技產業發展和應用創新主要推手的當代,迫切需要應對 交付方式移動化 使用者峰值極限化 版本更新高頻化 失效恢復實時化 的應...
4種JSON技術對比
json lib net.sf 早期json產品,依賴jar包較多,針對複雜型別轉換,json 到 bean過程有缺陷,比如乙個類裡出現另乙個類的list 或map,轉換就會出現問題,另外效能較差,尤其在大資料量的parse上 jackson 依賴jar包較少,簡單易用,效能相對較高 同樣對於複雜型...
大資料 技術選型對比
公司要開搞大資料了,針對大資料的一般姿勢做了個簡單調研。hbase 非關係型分布式資料庫,基於hdfs,高容錯 高吞吐。hbase採用的是key value的儲存方式,即使隨著資料量增大,也幾乎不會導致查詢的效能下降。flume 最主要的作用就是,實時讀取伺服器本地磁碟的資料,將資料寫入到hdfs ...