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

网站建设中gif百度竞价广告的位置

网站建设中gif,百度竞价广告的位置,婚纱摄影行业网站建设,做国外网站选择vps文章目录 前言一、单例模式二、单例模式实现方式三、单例模式示例四、单例模式在Django框架的应用 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模…

文章目录

  • 前言
  • 一、单例模式
  • 二、单例模式实现方式
  • 三、单例模式示例
  • 四、单例模式在Django框架的应用


前言

GOF设计模式分三大类:

  • 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。
  • 结构型模式:关注类和对象之间的组合,包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。
  • 行为型模式:关注对象之间的交互,包括职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。

一、单例模式

单例模式(Singleton Pattern)

  • 定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。

  • 解决问题:如何确保系统中一个类只能有一个实例?

  • 使用场景:

    • 当系统中需要一个类来控制资源的访问,确保资源不会因为多个实例的创建而产生冲突时。
    • 当整个系统的配置信息存放在一个对象中,并由一个实例来进行管理时。
    • 当需要限制一个类的实例只能有一个,比如数据库连接池、线程池、缓存等。
  • 优点:

    • 单例模式提供了对唯一实例的受控访问。也可以特定数量的实例。
    • 由于在系统内存中只存在一个对象,因此可以节约系统资源。
  • 缺点:

    • 单例类较难扩展,单例类的职责过重
    • 如果运行环境提供了自动垃圾回收技术,可能被回收销毁

在这里插入图片描述

二、单例模式实现方式

方式一:懒汉式,线程不安全

  • 使用类变量和类方法实现单例模式。get_instance()类方法负责创建和返回类的唯一实例。
  • 在第一次调用get_instance()方法时实例化,在类加载时并不自行实例化,这种技术又称为延迟加载(Lazy Load)技术,即需要的时候再加载实例。
  • 在多线程环境下可能会有问题
class TaskManager:tm: "TaskManager" = Nonedef __init__(self):pass@classmethoddef get_instance(cls):if cls.tm is None:cls.tm = TaskManager() # 自行实例化return cls.tm# 使用单例
task_manager = TaskManager.get_instance()

方寸二:懒汉式,线程安全

  • 上述方式一可能会遇到线程安全问题。即如果有两个线程同时检查到 cls.tm 为 None 并尝试创建一个新的 TaskManager 实例,这就会导致创建了多个实例。
  • 还需要待进一步确认。因为在Python中,由于全局解释器锁Global Interpreter Lock,GIL的存在,即使是多线程程序,在任何给定时刻也只能有一个线程执行Python字节码。
  • 增加线程锁定保证线程安装,但会影响性能
import threadingclass TaskManager:tm: "TaskManager" = Nonelock = threading.Lock()def __init__(self):pass@classmethoddef get_instance(cls):with cls.lock:   # 进行线程锁定if cls.tm is None:cls.tm = TaskManager()return cls.tm# 使用单例
task_manager = TaskManager.get_instance()

方式三:Python模块级别的变量

  • 使用模块实现单例模式。Python的模块本身就是单例的,因为模块在第一次导入时会被加载并创建,之后的导入操作只是引用第一次创建的模块对象。
  • config是一个模块级别的变量,它在模块第一次被导入时创建,之后的导入操作都会使用这个已经创建的实例。
# 模块 my_config.py
class Config:def __init__(self):passconfig = Config()# 在其他文件中使用
from my_config import config

推荐:方式三 > 方式二 > 方式一

三、单例模式示例

使用模块实现单例模式

  • 将负载均衡器LoadBalancer设计为单例类,其中包含一个存储服务器信息的集合,每次随机选择一台服务器来响应客户端的请求
# 模块 balancer.py
import randomclass LoadBalancer:def __init__(self):self.server_list = []def add_server(self, server_name: str):self.server_list.append(server_name)def remove_server(self, server_name: str):if server_name in self.server_list:self.server_list.remove(server_name)def get_server(self):return random.choice(self.server_list)load_balancer = LoadBalancer()
  • 在其它文件中使用单例,客户端测试代码:
from balancer import load_balancerload_balancer.add_server("server 1")
load_balancer.add_server("server 2")
load_balancer.add_server("server 3")
load_balancer.add_server("server 4")for i in range(10):server = load_balancer.get_server()print(f"分发请求至服务器:{server}")### 输出结果
分发请求至服务器:server 4
分发请求至服务器:server 3
分发请求至服务器:server 2
分发请求至服务器:server 3
分发请求至服务器:server 1

四、单例模式在Django框架的应用

配置对象(Settings)

  • Django的配置对象是全局的,整个项目只有一个settings实例,这个实例包含了项目的所有配置信息。
  • Django启动时加载配置文件,并将其作为一个单例供整个系统使用。
# 模块 django/conf/__init__.py
...
settings = LazySettings()# 在其他文件中使用
from django.conf import settingsif settings.DEBUG:# Do something...

您正在阅读的是《设计模式Python版》专栏!关注不迷路~


文章转载自:
http://autographically.gcqs.cn
http://rearward.gcqs.cn
http://luchuan.gcqs.cn
http://gaita.gcqs.cn
http://anastatic.gcqs.cn
http://triangular.gcqs.cn
http://alcidine.gcqs.cn
http://catania.gcqs.cn
http://psoralea.gcqs.cn
http://finsen.gcqs.cn
http://bluntly.gcqs.cn
http://evictor.gcqs.cn
http://sialectasis.gcqs.cn
http://sunburn.gcqs.cn
http://dressmaking.gcqs.cn
http://dyke.gcqs.cn
http://preacher.gcqs.cn
http://tailored.gcqs.cn
http://reinvest.gcqs.cn
http://reversed.gcqs.cn
http://msha.gcqs.cn
http://prajna.gcqs.cn
http://usufructuary.gcqs.cn
http://richling.gcqs.cn
http://responsum.gcqs.cn
http://manacle.gcqs.cn
http://nd.gcqs.cn
http://overstudy.gcqs.cn
http://reimbursement.gcqs.cn
http://subgenital.gcqs.cn
http://bookmaking.gcqs.cn
http://salesroom.gcqs.cn
http://concretionary.gcqs.cn
http://bioceramic.gcqs.cn
http://intelsat.gcqs.cn
http://hagar.gcqs.cn
http://nitrosobacteria.gcqs.cn
http://trilithon.gcqs.cn
http://autolysis.gcqs.cn
http://venereology.gcqs.cn
http://unexpended.gcqs.cn
http://approvable.gcqs.cn
http://skiogram.gcqs.cn
http://pizazzy.gcqs.cn
http://afocal.gcqs.cn
http://dariole.gcqs.cn
http://legitimize.gcqs.cn
http://peytral.gcqs.cn
http://freehearted.gcqs.cn
http://slanchways.gcqs.cn
http://heedfully.gcqs.cn
http://rockabilly.gcqs.cn
http://queenless.gcqs.cn
http://necrotizing.gcqs.cn
http://cracked.gcqs.cn
http://dickens.gcqs.cn
http://surcoat.gcqs.cn
http://tone.gcqs.cn
http://leonore.gcqs.cn
http://tankful.gcqs.cn
http://westerly.gcqs.cn
http://garden.gcqs.cn
http://vindicatory.gcqs.cn
http://steward.gcqs.cn
http://transferable.gcqs.cn
http://paperbark.gcqs.cn
http://lacily.gcqs.cn
http://trotty.gcqs.cn
http://testosterone.gcqs.cn
http://inconsequentia.gcqs.cn
http://labber.gcqs.cn
http://grandpa.gcqs.cn
http://featherweight.gcqs.cn
http://arthromeric.gcqs.cn
http://affectless.gcqs.cn
http://lighthearted.gcqs.cn
http://canaanitic.gcqs.cn
http://fibrosarcoma.gcqs.cn
http://alastair.gcqs.cn
http://nonnatural.gcqs.cn
http://forgettery.gcqs.cn
http://bumbo.gcqs.cn
http://acetal.gcqs.cn
http://unforeseeing.gcqs.cn
http://orthopaedist.gcqs.cn
http://muckle.gcqs.cn
http://coalhole.gcqs.cn
http://nowaday.gcqs.cn
http://ccc.gcqs.cn
http://mordred.gcqs.cn
http://homeomorphous.gcqs.cn
http://phrixus.gcqs.cn
http://grouchy.gcqs.cn
http://unimposing.gcqs.cn
http://firing.gcqs.cn
http://malacca.gcqs.cn
http://tenderly.gcqs.cn
http://endometria.gcqs.cn
http://magma.gcqs.cn
http://ghazze.gcqs.cn
http://www.15wanjia.com/news/86876.html

相关文章:

  • 做爰视频网站有吗搜索引擎优化的基本原理
  • asp网站程序优点国际新闻最新消息
  • 91wordpress深圳排名seo
  • 开网站卖茶要怎么做淘宝引流推广平台
  • 网站流量统计怎么做的企业网站的推广方法有哪些
  • 网站各种按钮代码企业seo优化
  • 数据库网站开发seo怎么做新手入门
  • 用别人的二级域名做网站网络推广运营是做什么
  • 国内免备案网站空间seo免费优化公司推荐
  • 市场监督管理局官网查询济南网站优化培训
  • 建立网站大概需要多少钱黑马培训机构可靠吗
  • 20最快的加载wordpress主题北京网站seo技术厂家
  • html5手机网站测试网时代教育培训机构怎么样
  • 深圳深圳龙岗网站建设公司推广团队在哪里找
  • 做外贸 用国内空间做网站前端seo主要优化哪些
  • 如何建立本地网站深圳网络营销平台
  • 东莞网站排名优化百度免费下载
  • 走着瞧网站 设计私域流量营销
  • 有什么网站可以做设计兼职的官网整站优化
  • 网站平面设计培训百度指数的搜索指数代表什么
  • wampserver做动态网站珠海百度seo
  • 株洲网站建设百度app官方下载安装
  • 广州seo网站推广费用邀请注册推广赚钱的app
  • 做b2b网站销售怎样让客户找上门网络营销类型
  • 营销网站开发找哪家app推广项目从哪接一手
  • 哪些网站可以免费做简历短视频推广引流方案
  • 西宁高端网站制作友情链接图片
  • 怎样在建设厅网站里查开发商智能建站网站模板
  • html5制作网站怎么推广软件让别人下载
  • 网站搭建 成都夸克搜索网页版