双栈+有序表组合设计:浏览器历史系统完整实现
系统架构设计
结合双栈和有序表的优势,我们可以构建一个功能完整的浏览器历史系统。双栈负责快速的前进后退操作,有序表负责高效的历史记录查询和排序。
核心数据结构设计
import time
from collections import deque
class AdvancedBrowserHistory:
def __init__(self):
self.back_stack = deque() # 后退栈
self.forward_stack = deque() # 前进栈
self.ordered_history = OrderedHistory() # 有序表
self.current_page = None
self.page_frequency = {} # 页面访问频率
def visit(self, url):
"""访问新页面"""
timestamp = time.time()
# 双栈操作
if self.current_page:
self.back_stack.append(self.current_page)
self.current_page = url
self.forward_stack.clear()
# 有序表操作
self.ordered_history.insert(url, timestamp)
# 更新访问频率
self.page_frequency[url] = self.page_frequency.get(url, 0) + 1
def get_recent_pages(self, count=10):
"""获取最近访问的页面"""
return self.ordered_history.get_recent(count)
def get_frequent_pages(self, count=10):
"""获取最常访问的页面"""
return sorted(self.page_frequency.items(),
key=lambda x: x[1], reverse=True)[:count]
性能优化策略
通过缓存机制和延迟加载,可以进一步优化系统性能。对于大量历史记录,可以采用分页加载和索引优化。
评论区