POCO C++库学习和分析 -- Cache
POCO C++库学习和分析 -- Cache
下面是相关的类:
1. LRUCache: 最近使用Cache。在内部维护一个Cache的最大容量M,始终只保存M个元素于Cache内部,当第M+1元素插入Cache中时,最先被放入Cache中的元素将失效。
2. ExpireCache: 时间过期Cache。在内部统一管理失效时间T,当元素插入Cache后,超过时间T,则删除。
3. AccessExpireCache: 时间过期Cache。同ExpireCache不同的是,当元素被访问后,重新开始计算该元素的超时时间,而不是只从元素插入时开始计时。
4. UniqueExpireCache: 时间过期Cache。同ExpireCache不同的是,每一个元素都有自己单独的失效时间。
5. UniqueAccessExpireCache:时间过期Cache。同AccessExpireCache不同的是,每一个元素都有自己单独的失效时间。
6. ExpireLRUCache:时间过期和LRU策略的混合体。当时间过期和LRU任一过期条件被触发时,容器中的元素失效。
7. AccessExpireLRUCache:时间过期和LRU策略的混合体。同ExpireLRUCache相比,当元素被访问后,重新开始计算该元素的超时时间,而不是只从元素插入时开始计时。
8. UniqueExpireLRUCache:时间过期和LRU策略的混合体。同ExpireLRUCache相比,每一个元素都有自己单独的失效时间。
9. UniqueAccessExpireLRUCache:时间过期和LRU策略的混合体。同UniqueExpireLRUCache相比,当元素被访问后,重新开始计算该元素的超时时间,而不是只从元素插入时开始计时。
#include "Poco/LRUCache.h"int main(){Poco::LRUCache<int, std::string> myCache(3);myCache.add(1, "Lousy"); // |-1-| -> first elem is the most popular onePoco::SharedPtr<std::string> ptrElem = myCache.get(1); // |-1-|myCache.add(2, "Morning"); // |-2-1-|myCache.add(3, "USA"); // |-3-2-1-|// now get rid of the most unpopular entry: "Lousy"myCache.add(4, "Good"); // |-4-3-2-|poco_assert (*ptrElem == "Lousy"); // content of ptrElem is still validptrElem = myCache.get(2); // |-2-4-3-|// replace the morning entry with eveningmyCache.add(2, "Evening"); // 2 Events: Remove followed by Add}