当前位置: 首页 > news >正文

养殖p2p网站建设室内设计作品集

养殖p2p网站建设,室内设计作品集,外贸网站建设定制,免费在线观看网址入口Caching 源码分析 Django 的 cache 缓存机制#xff0c;包含了一些代理设计模式(代理了但没完全代理#xff0c;多此一举)。 通过实现一个CacheHandler的manager类#xff0c;来实现多缓存后端的统一管理和调用#xff0c;避免到处实例使用。 缓存的目的 缓存的目的就是…Caching 源码分析 Django 的 cache 缓存机制包含了一些代理设计模式(代理了但没完全代理多此一举)。 通过实现一个CacheHandler的manager类来实现多缓存后端的统一管理和调用避免到处实例使用。 缓存的目的 缓存的目的就是为了提高系统的性能. 存储一些变化少的热点数据,减少对数据库的访问次数存储临时数据, 降低数据库的压力存储计算结果, 降低计算的压力 缓存框架要考虑的方面 缓存的淘汰策略, 超过容量 LRU, FIFO, 过期时间缓存的存储策略, 如内存缓存, 文件缓存, 数据库缓存缓存key的管理 代理模式 通过一个外部 Proxy 来访问真实 cache 对象的属性和方法。 这个ConnectionProxy可以学习他用到的魔法方法但本质上和设计模式没太多关系。 整个django项目里一共出现两次一次在cache中作为default cache的入口一次在db中作为defult db的入口 # 没啥用直接用caches[default]代替即可 class ConnectionProxy:Proxy for accessing a connection objects attributes.def __init__(self, connections, alias):self.__dict__[_connections] connectionsself.__dict__[_alias] alias# 重写__getattr__方法, 使得ConnectionProxy可以像访问真实的connection对象一样访问属性和方法def __getattr__(self, item):return getattr(self._connections[self._alias], item)# 重写__setattr__方法, 使得ConnectionProxy可以像访问真实的connection对象一样设置属性和方法def __setattr__(self, name, value):return setattr(self._connections[self._alias], name, value)# 重写__delattr__方法, 使得ConnectionProxy可以像访问真实的connection对象一样删除属性和方法def __delattr__(self, name):return delattr(self._connections[self._alias], name)# 重写__contains__方法, 使得ConnectionProxy可以使用 key in ConnectionProxy的语法来判断key是否存在于缓存中, 实际实现在BaseCache的各个子类中实现def __contains__(self, key):return key in self._connections[self._alias]# 重写__eq__方法, 使得ConnectionProxy可以使用 ConnectionProxy other的语法来判断两个ConnectionProxy是否指向同一个缓存对象, 实际实现在BaseCache的各个子类中实现# 其实可以用total_ordering装饰器来实现__eq__方法, 但是为了保持一致性, 这里还是自己实现def __eq__(self, other):return self._connections[self._alias] other 缓存基础类 可以学习的地方 参数默认值, 通常避免使用一些可变容器对象(list, dict)因为如果代码不严谨容易出错。 但是编辑器提示的时候会告诉你默认值是 None,失去了一定的可读性。 所以可以参照 Django 的做法使用一个名字对象来代替默认值参数。 # 通常做法 def get_backend_timeout(self, timeoutNone):Return the timeout value usable by this backend based upon the providedif timeout is None:timeout self.default_timeoutreturn timeout# 改进做法 DEFAULT_TIMEOUT object() # python模块单例 def get_backend_timeout(self, timeoutDEFAULT_TIMEOUT):Return the timeout value usable by this backend based upon the providedif timeout is DEFAULT_TIMEOUT: # is 比较内存地址timeout self.default_timeoutreturn timeout contains方法 实现 contains 方法可以改变in操作的结果 def __contains__(self, key):Return True if the key is in the cache and has not expired.# This is a separate method, rather than just a copy of has_key(),# so that it always has the same functionality as has_key(), even# if a subclass overrides it.return self.has_key(key)总结 其他部分就是 BaseCache 的子类了用对应的 client 实现缓存的方法。
http://www.pierceye.com/news/829798/

相关文章:

  • 小程序定制团队seo顾问推推蛙
  • 徐州网站建设公司哪家好经典广告
  • 百度的官方网站wordpress提示插件安装
  • 网站的按钮怎么做 视频宁波网站建设用什么软件
  • 宜宾市做网站多少钱老板办公室装修效果图
  • 如何将网站挂载域名手机网站布局教程
  • 哪个网站可以做销售记录公司经营范围分类目录
  • dw网站的站点建设怎么百度做网站
  • 在家做网站设计国土局网站建设经验
  • 营销型网站报价商丘做网站推广的公司
  • 宜昌网站开发公司wordpress简洁响应试
  • 彩票型网站建设网站建设用宝塔
  • 建筑企业网站要简约大气吗零基础网站建设教学服务
  • 苏州网站开发建设方案cms系统介绍
  • 网站右边悬浮代码app开发费用报价表
  • 免费做电子相册的网站it网站建设
  • 网站建设是什么?南京文化云网站建设
  • 对比色网站设计wordpress 文件重命名
  • 企业免费网站建设模板怎么注册公司 需多少钱
  • 珠海网站建设厚瑜如何做推广网站
  • 山东省城乡建设部网站首页给了几张图让做网站
  • 吉林省建设标准化网站最新网球赛事新闻
  • eclipse tomcat 网站开发微信公众号手机怎么登录
  • 苏州市吴江区住房和城乡建设局网站网站建设需要具备什么条件
  • 用记事本做网站怎么添加表格媒体库wordpress
  • 河北智能网站建设网站建设 书
  • 个人网站模板怎么做网站开发接私活的经理
  • 律师事务所手机网站网站开发过程模型
  • 建筑培训网站系统开发包括什么
  • 出售家教网站模板广告设计公司管理