全部你好 我有樹有節點。節點由TCP API請求響應值構建。 爲了減少請求的數量,我想在緩存結構中表示樹,每當TCP請求即將被調用時 它將首先檢查緩存。 做什麼是最好的方法?我的意思是樹緩存部分,在我的情況下,我正在使用Qt和C++。將內存中的樹形結構表示爲緩存的最佳方式是什麼?
0
A
回答
1
您可以使用std:map<TCPRequest, TCPResponse>
來實現此目的。您的請求和響應可能是字符串,在這種情況下可能會減少到std:map<std::string, std::string>
。如果沒有,你需要確保你的TCPRequest
類支持operator<
允許二進制搜索地圖。
您的代碼可能看起來像
#include <map>
std::map<TCPRequest, TCPResponse> responseCache;
typedef std::map<TCPRequest, TCPResponse>::const_iterator cacheCIterator;
TCPRequest nextRequest;
cacheCIterator iter = responseCache.find(nextRequest);
if (iter != responseCache.end())
{
return iter->second; // found cached response
}
else
{
// issue the request
TCPResponse response = issueRequest(nextRequest);
//save the response
responseCache[nextRequest] = response;
return response;
}
您還需要考慮高速緩存期滿,除非你的流量是足夠小,你可以緩存所有響應。在某些時候,您希望erase()
TCPResponse
來自地圖的對象,可能通過保留一個單獨的結構來告訴您哪個響應最近最少使用(LRU)。
考慮到這一點的某種唯一標識符(單調增加int
會工作),可以在你的TCPResponse
對象作爲代理的全對象使用,使您能夠識別高速緩存,並使用int
小號LRU反應,而不是的全班實例。儘管如此,仍然需要完整的TCPRequest
比較才能確保緩存工作正常。
0
如果未完成請求的數量很大,您可能需要考慮哈希映射。請參閱QT庫中的QHash或std :: hash_map(取決於您使用的STL的風格)。
相關問題
- 1. 在iPad上表示樹形結構的最佳方式
- 2. 存儲此數據結構的最佳方式是什麼?
- 3. 構建緩存的最佳方式
- 4. 在php中緩存文件的最佳方式是什麼?
- 5. 在內存中格式化SyntaxTree的最佳方式是什麼?
- 6. 清除Plone的CSS緩存的最佳方式是什麼?
- 7. 緩存二進制數據的最佳方式是什麼?
- 8. 管理Javascript內存中變量的最佳方式是什麼
- 9. 什麼是存儲表格數據結構的最佳類型?
- 10. 緩存包含動態內容的靜態html的最佳方式是什麼?
- 11. 在VB.NET中保存結構數組的最佳方式是什麼?
- 12. 什麼是存儲traceroute結果的最佳方式?
- 13. 表達式樹的ReadLine的最佳方式是什麼?
- 14. 什麼是追蹤內存泄漏的最佳方式
- 15. 什麼是保存ArrayList內容的最佳方式?
- 16. 什麼是備份Azure Blob存儲內容的最佳方式
- 17. 在Sinatra中緩存響應的最佳方法是什麼?
- 18. 在實時系統上保存緩存數據的最佳方式是什麼?
- 19. ASP.NET緩存,什麼是最佳做法
- 20. 「mangle」(代表)內存的最佳方式
- 21. 什麼是重構結構數組的最佳方式?
- 22. 什麼是小而簡單的緩存的最佳數據結構
- 23. 將數據保存到文件的最佳方式是什麼?
- 24. 什麼是存儲小指令列表的最佳方式?
- 25. 什麼是最近n秒內存儲數據點的最佳數據結構
- 26. 在MongoDB中存儲樹數據結構的最有效方法是什麼?
- 27. 在內存中表示文本的最佳方式
- 28. 緩存XML文件的最佳方式
- 29. PHP緩存的最佳方式
- 30. 緩存數據的最佳方式