2013年6月21日 星期五

在 Java 中取得 MongoDB 剛插入的資料的 ObjectID

這問題就跟一般 RDBMS 想在資料插入後取得自動產生的 ID 是一樣的意思~
不過在 MongoDB 上,這個問題相對似乎簡單了許多~。

2013年6月10日 星期一

利用 Guava 的 MapMaker 產生 weak value 版的 WeakHashMap

續前篇「WeakHashMap 的使用
目標是想要有個 Map,能夠快速儲存、取得我存在 Map 上的某個 Object;但當 Object 不再使用的時候,它又能自動消失。
由於根據自己的測試(以及 [1] 中網友 Cowan 的回應),WeakHashMap 似乎不太適合這個用途,因此就想來嘗試 [1] 中提到的 MapMaker 了。

WeakHashMap 的使用

通常使用 HashMap 的目的,就是希望在記憶體中存放一張列表,而需要列表中的某個東西時,能夠很快地把想要的物件取出來。
但有時又希望當 HashMap 上的物件沒有使用時,能夠從記憶體中消失~
一般狀況下這必須要由程式設計師手動處理,也就是當確定某個 Key 不再需要時,手動將它從 HashMap 中移除。
不過也許也可以利用 Java 的 Weak Reference 特性來處理,即 WeakHashMap 這個物件。

HashMap 的 Concurrency 問題

因為目前可能需要用沒有 Concurrent Package 版本的某個 HashMap 相關的 Class
所以要先整理一下 HashMap 系列的東西,在多執行緒環境下可能的問題。

2013年6月6日 星期四

(書籤) SOA Design Patterns

在系統設計的階段,常常遇到一些問題,需要從系統設計面就嘗試去解決
目前已經有不少眾所皆知的 Design Pattern 可以解決某些常見的問題
所以記錄一下可以查詢的地方!

參考資料:
1、SOA Patterns
2、10 Soa Design Patterns Every Architect Should Know

2013年6月5日 星期三

一致性選擇

基本的一致性分類好像是「強一致性」和「弱一致性」,其中在 NoSQL 蠻常看到的「最終一致性」是弱一致性的其中一種
強一致性就是一般的關聯式資料庫保障的特性,即資料修改後,所有人馬上都會看到最新的資料;
弱一致性大致上就是資料更新後,有些人仍然會看到舊的資料。必須經過某段時間之後,慢慢才會讓所有人都獲得最新的資料。

2013年6月4日 星期二

衡量 ReentrantReadWriteLock 的記憶體使用量

考慮使用 ReentrantReadWriteLock 來處理 Concurrent 的問題
但要這樣做的話,ReentrantReadWriteLock 有可能要全部暫存在記憶體裡面~
因此要簡單地先衡量使用 ReentrantReadWriteLock 有可能要處理多少程度的記憶體問題。

用 Java 處理 Microsoft Excel (2):使用 Apache Poi

續前文「用 Java 處理 Microsoft Excel (1):使用 JXL
目標一樣是要把包含某些 key 的列全部刪掉~這次改用 Apache Poi [1] 來嘗試。

用 Java 處理 Microsoft Excel (1):使用 JXL

因為要幫同事處理 Excel 檔,因此嘗試了使用 JXL 這個 Open Source Library [1] 來試試看。
目標是在別的地方找到了一串 key,要在 Excel 裡面把對應的 Row 刪除。