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

怎么做提卡密网站开发高端市场应该注意

怎么做提卡密网站,开发高端市场应该注意,wordpress主题美化插件,外国人做的汉字网站前言 单例模式是最简单的一种模式。在Go中,单例模式指的是全局只有一个实例,并且它负责创建自己的对象。单例模式有减少内存和系统资源开销、防止多个实例产生冲突等优点。 因为单例模式保证了实例的全局唯一性,并且只被初始化一次&#xf…

前言

单例模式是最简单的一种模式。在Go中,单例模式指的是全局只有一个实例,并且它负责创建自己的对象。单例模式有减少内存和系统资源开销、防止多个实例产生冲突等优点。

因为单例模式保证了实例的全局唯一性,并且只被初始化一次,所以比较适合全局共享一个实例,且只需要被初始化一次的场景,例如数据库实例、全局配置、全局任务池等。

单例模式又分为饿汉方式和懒汉方式。饿汉方式是指全局的单例实例在包被加载时创建,而懒汉方式指全局的单例实例在第一次被使用时创建。其中懒汉方式是开源项目中使用最多的方式。

示例代码

Go

懒汉方式的缺点是非并发安全,实际使用中一般加锁,或者使用sync.Once

package singleton  import "sync"  type Singleton interface {  foo()  
}  type singleton struct{}  func (s singleton) foo() {}  var (  instance *singleton  once     sync.Once  
)  func GetInstance() Singleton {  once.Do(func() {  instance = &singleton{}  })  return instance  
}

单元测试

package singleton  import (  "sync"  "testing")  const parCount = 100  func TestSingleton(t *testing.T) {  ins1 := GetInstance()  ins2 := GetInstance()  if ins1 != ins2 {  t.Fatal("instance is not equal")  }  
}  func TestParallelSingleton(t *testing.T) {  start := make(chan struct{})  wg := sync.WaitGroup{}  wg.Add(parCount)  instance := [parCount]Singleton{}  for i := 0; i < parCount; i++ {  go func(index int) {  <-start  instance[index] = GetInstance()  wg.Done()  }(i)  }  close(start)  wg.Wait()  for i := 1; i < parCount; i++ {  if instance[i] != instance[i-1] {  t.Fatal("instance is not equal")  }  }  
}

Python

python的包是天然的单例模式,只要放到单独的包中,import时就是引用的单例。

如果要在一个包内使用设计模式,也有以下几种方式。

使用函数装饰器实现单例
def singleton(cls):  _instance = {}  def inner():  if cls not in _instance:  _instance[cls] = cls()  return _instance[cls]  return inner  @singleton  
class MyCls:  def __init__(self):  pass  if __name__ == "__main__":  a = MyCls()  b = MyCls()  print(id(a) == id(b))  # 输出结果应为 True
使用类装饰器实现单例
class Singleton:  def __init__(self, cls):  self._cls = cls  self._instance = {}  def __call__(self):  if self._cls not in self._instance:  self._instance[self._cls] = self._cls()  return self._instance[self._cls]  @Singleton  
class MyCls:  def __init__(self):  pass  if __name__ == "__main__":  a = MyCls()  b = MyCls()  print(id(a) == id(b))  # 输出结果应该是True
http://www.dtcms.com/a/582818.html

相关文章:

  • 无锡网知名网站教做香肠的网站
  • 做酒招代理的网站江门网红打卡景点蓬江区
  • 双牌网站建设购物网站建设市场调查论文
  • 对象住哪里?——深入剖析 JVM 内存结构与对象分配机制
  • 站长工具高清有吗网推获客平台
  • 网站做流量的论坛贴吧广东广东网站建设工作
  • 中国机械加工网下载番禺seo
  • 如何让美颜SDK更智能?AI赋能下的个性化美颜功能设计详解
  • 软件开发模型——瀑布式模型:软件开发的经典范式及其现代实践
  • 网站集约化建设讲话上海知名的网站建设
  • WordPress建站要花钱七牛图片处理 wordpress
  • 认识linux -- 调试器 - gdb/cgdb的使用
  • 神经流形:大脑功能几何基础的革命性视角
  • 杭州做网站外包公司网站建设实训报告总结
  • 高新区建设局网站网站建设与开发试卷
  • 测试跟踪步骤描述用例交互优化,MeterSphere开源持续测试工具v2.10.26 LTS版本发布
  • CSMA(aloha)
  • 衡水做网站优化黄页网址大全免费
  • 苍穹外卖 —— Spring Cache和购物车功能开发
  • 建设网站毕业设计河南城乡建设厅网站证书查询
  • 留言网站模板沈阳百度seo代理
  • top域名的网站打不开平台软件
  • 新开传奇手游网站大全jn建站系统官网
  • 【AI安全】提示词注入
  • 两个人做类似的梦 网站咨询类网站建设方案书
  • 企业年报详情查询API——在线查询企业年报信息的可靠工具
  • StarGAN标签是怎么传给神经网络的?作为数据中的一个或几个维度吗?
  • 重庆忠县网站建设公司哪家专业移动互联网开发考研方向
  • 基于图扑自研 HT 搭建的园区元宇宙可视化管理平台
  • wordpress dux 下载一键优化清理神器