2016-05-05 162 views
-1

下午好。設計一個使用登錄(和其他動作)並保留所有用戶數據和密碼到內存中的Web服務(不使用任何數據庫)我一直懷疑何時確保一個體面的標準效率:Web服務狀態的HashMap

首先,選擇什麼數據結構來存儲信息。雖然我認爲HashMap將是一個不錯的選擇,那裏將是關鍵的用戶名和其他信息(或者僅僅是密碼)值會是這樣,我不知道是否有更適合其他數據結構。

此外,在HashMap的情況下,使用separateChainnig還是LinearProbing作爲解決衝突的策略會更好嗎?在separateChaining的情況下,在最糟糕的情況下,我們面對Hashmap的「缺口」列表中的一個列表,其時間非常長且複雜地升級爲線性順序,但是LinearProbing可能會進行多次rehashes。

對此你有何看法?

非常感謝。

+0

'你的意見是什麼?'我認爲這個問題應該以基於觀點的方式結束 –

+0

使用會話映射這是符合J2EE規範的Web服務器可以是我腦海的第一件事。除此之外,你會被允許使用像H2這樣的內存數據庫嗎? –

+0

只是一個想法,爲什麼不使用[特里樹(https://en.wikipedia.org/wiki/Trie)數據結構insted的 – venkatvb

回答

0

爲什麼不使用像Redis,H2 .....等一些內存中的持久性存儲空間以及更多的開源代碼,而不是依賴於非持久性存儲。這些都像地圖自己的數據結構支持,列出等

但是,如果你仍然想使用HashMap這是一個相當不錯的選擇,如果你有跨唯一的密鑰。但回答你的下一個問題(separateChainnig或LinearProbing)。爲什麼當java已經爲Java 8提供了更好的hashmap性能時,你真的關心實現hashmap。請看這裏的示例http://www.nurkiewicz.com/2014/04/hashmap-performance-improvements-in.html