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

网站开发需求文档prd模板wordpress 图书主题

网站开发需求文档prd模板,wordpress 图书主题,网站建设在哪能看,张家口网站seo前言 单例模式是常用的一种设计模式#xff0c;一般用于比如客户端、连接的创建等#xff0c;防止创建多个导致性能消耗。所以我认为单例模式的核心#xff0c;就是“防止重复”。本文将在Golang中进行单例模式的实现。 实现 版本1——检测-创建 最基础的版本#xff0…前言 单例模式是常用的一种设计模式一般用于比如客户端、连接的创建等防止创建多个导致性能消耗。所以我认为单例模式的核心就是“防止重复”。本文将在Golang中进行单例模式的实现。 实现 版本1——检测-创建 最基础的版本就是依照“防止重复”来实现。代码如下 package maintype Test1 struct { }var t1 *Test1func main() {}func NewT1() *Test1 {if t1 nil {t1 Test1{}}return t1 } 可见只是在创建前进行了一个判定如果为空 再创建。不为空则直接返回。 但是这样版本存在有问题——即线程不安全。比如多个goroutine中同时运行其去创建那么就很容易导致创建重复。 对此解决方案也很简单——加锁即可。 版本2——加锁-检测-创建 很简单粗暴的加个锁——这样就能保证只有一个去进行检测、创建。规避了问题。 var mutex sync.Mutexfunc NewT1() *Test1 {mutex.Lock()defer mutex.Unlock()if t1 nil {t1 Test1{}}return t1 } 但是这样带来了新的问题频繁的加锁、删锁带来了巨大的性能损耗。诸如t1已经存在的情况本该直接返回即可但是却需要白白加锁一次。 版本3——检测-加锁-检测-创建 即所说的Check-Lock-Check模式。代码如下 func NewT1() *Test1 {if t1 nil {mutex.Lock()defer mutex.Unlock()if t1 nil {t1 Test1{}}}return t1 } 可以看到就是在最开始的lock之前进行一次检测。一个if判断的消耗还是很小的如果存在再进入加锁创建的流程。 在Golang中可以使用sync/atomic这个包原子化的加载一个标志来实现这套判断。 即 import sync import sync/atomicvar initialized uint32 ... // 此处省略func GetInstance() *singleton {if atomic.LoadUInt32(initialized) 1 { // 原子操作 return instance}mu.Lock()defer mu.Unlock()if initialized 0 {instance singleton{}atomic.StoreUint32(initialized, 1)}return instance } //此代码直接复制至原文——https://www.liwenzhou.com/posts/Go/singleton/版本4——Golang常用的方式 饿汉和懒汉式 饿汉 饿汉模式即像一个饿肚子人一样迫不及待的去享用美食。即 在程序加载的时候就创建并实例化因此也无需考虑并发等情况。 示例 package mainimport fmttype Singleton struct {// 在这里定义单例对象的属性 }var instance *Singleton createInstance()func createInstance() *Singleton {// 在这里创建并初始化单例对象return Singleton{// 初始化单例对象的属性} }func GetInstance() *Singleton {return instance }func main() {// 使用单例模式获取实例singletonInstance : GetInstance()// 使用单例实例fmt.Println(singletonInstance) } //此代码复制自原文——https://i6448038.github.io/2023/12/16/singleton/懒汉 顾名思义懒得管…等用到时候再创建。此时程序已经启动并正在运行此时创建实例可能会出现多线程的情况所以要考虑并发问题。 上述的实现代码便是懒汉模式。 参考资料 https://www.liwenzhou.com/posts/Go/singleton/ https://i6448038.github.io/2023/12/16/singleton/
http://www.dnsts.com.cn/news/188054.html

相关文章:

  • 备案做电影网站怎么在小程序里开店铺
  • 做会计要看什么关注什么网站网站平台建设工作汇报
  • 吧网站做软件的软件整站优化外包公司
  • 福州网站营销宝山网站制作
  • 北京网站备案核验单xampp使用教程 wordpress
  • 安庆市大观区城乡建设局网站台州手机模板建站
  • 北京通州网站建设外国字体网站
  • 做淘宝客新增网站推广开发平台软件要多少钱
  • 登录网站模板提供做网站公司有哪些
  • 企业模板网站vue做电工的有接单的网站吗
  • 网站应如何设计wordpress 修改 page
  • 到国外建网站大型网站建设制作平台
  • 网站开发常用的数据库网站建设虚拟服务器
  • 网站服务器有哪些类型有哪些类型有哪些类型有哪些wordpress 自动发货
  • 网站开发平均工资W做网站
  • 网站免费做软件苏州免费推广的网站
  • 南宁企业网站建设制作怎么做盗版小说网站
  • 做网站的优点测字算命网站开发
  • 备案网站简介怎么写电子商务网站的建设与规划
  • 中铁建设中南公司官方网站智能展厅展馆建设
  • 建设网站建议大连手机网站设计
  • asp网站管理系统广东建设信息网安全员查询
  • 做药的常用网站大型网站系统图
  • 网站风格规划通过输入域名访问自己做的网站
  • cms网站模板腾讯企业邮箱账号
  • 重庆网站怎么设置安平做网站
  • 微信网站建设价格wordpress按用户喜好排序
  • wordpress出名的网站上海小程序服务商
  • 软件网站是怎么做的吗丹阳房产网
  • 高端网站建设需要多少钱123手机浏览器