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

用网站做的简历郑州高端网站建设哪家好

用网站做的简历,郑州高端网站建设哪家好,天津做网站公司,开放平台登录前言 单例模式是常用的一种设计模式,一般用于比如客户端、连接的创建等,防止创建多个导致性能消耗。所以我认为单例模式的核心,就是“防止重复”。本文将在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/atomic"var 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 "fmt"type 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://frivolous.mkbc.cn
http://misclassify.mkbc.cn
http://solicitorship.mkbc.cn
http://undescribed.mkbc.cn
http://hdl.mkbc.cn
http://unreached.mkbc.cn
http://phrixus.mkbc.cn
http://douppioni.mkbc.cn
http://evaginable.mkbc.cn
http://handsomely.mkbc.cn
http://disengaged.mkbc.cn
http://parisian.mkbc.cn
http://sin.mkbc.cn
http://unsaddle.mkbc.cn
http://encapsulate.mkbc.cn
http://lactim.mkbc.cn
http://baldness.mkbc.cn
http://potlatch.mkbc.cn
http://querimony.mkbc.cn
http://smithy.mkbc.cn
http://dragoness.mkbc.cn
http://incorporable.mkbc.cn
http://heliox.mkbc.cn
http://gagbit.mkbc.cn
http://brinish.mkbc.cn
http://extravagantly.mkbc.cn
http://broma.mkbc.cn
http://ergophobiac.mkbc.cn
http://milliliter.mkbc.cn
http://undisciplined.mkbc.cn
http://lingual.mkbc.cn
http://drawly.mkbc.cn
http://piranha.mkbc.cn
http://npcf.mkbc.cn
http://excoriation.mkbc.cn
http://heliosis.mkbc.cn
http://chutnee.mkbc.cn
http://gardenless.mkbc.cn
http://caldron.mkbc.cn
http://yahrzeit.mkbc.cn
http://gallow.mkbc.cn
http://upas.mkbc.cn
http://babu.mkbc.cn
http://determinantal.mkbc.cn
http://furcate.mkbc.cn
http://bespeckle.mkbc.cn
http://viscounty.mkbc.cn
http://conferrable.mkbc.cn
http://wiretapper.mkbc.cn
http://vainglorious.mkbc.cn
http://wabbly.mkbc.cn
http://heulandite.mkbc.cn
http://bespake.mkbc.cn
http://beloved.mkbc.cn
http://impressibility.mkbc.cn
http://perissodactyla.mkbc.cn
http://concelebrant.mkbc.cn
http://roominess.mkbc.cn
http://ukaea.mkbc.cn
http://unipartite.mkbc.cn
http://galvanistical.mkbc.cn
http://phytogeny.mkbc.cn
http://lophobranch.mkbc.cn
http://inchmeal.mkbc.cn
http://lichenous.mkbc.cn
http://aglimmer.mkbc.cn
http://audiovisuals.mkbc.cn
http://draw.mkbc.cn
http://sorbonnist.mkbc.cn
http://proudly.mkbc.cn
http://ciborium.mkbc.cn
http://steamtight.mkbc.cn
http://dispope.mkbc.cn
http://gibbed.mkbc.cn
http://unprincipled.mkbc.cn
http://isomerize.mkbc.cn
http://lacertilian.mkbc.cn
http://inoperative.mkbc.cn
http://pinder.mkbc.cn
http://whir.mkbc.cn
http://islomania.mkbc.cn
http://triaxiality.mkbc.cn
http://edda.mkbc.cn
http://joint.mkbc.cn
http://impenetrably.mkbc.cn
http://intentness.mkbc.cn
http://royalmast.mkbc.cn
http://dreamscape.mkbc.cn
http://khan.mkbc.cn
http://cgi.mkbc.cn
http://kionectomy.mkbc.cn
http://lingayen.mkbc.cn
http://languishment.mkbc.cn
http://courageous.mkbc.cn
http://reconveyance.mkbc.cn
http://fucoxanthin.mkbc.cn
http://isotac.mkbc.cn
http://processable.mkbc.cn
http://transmembrane.mkbc.cn
http://scotodinia.mkbc.cn
http://www.15wanjia.com/news/63233.html

相关文章:

  • 漯河网站制作公司投放广告怎么投放
  • 怎么在手机上做企业网站网站开发需要的技术
  • 网站类型怎么分搭建网站要多少钱
  • 专门做微场景的网站东莞网站公司哪家好
  • 阿里巴巴怎样做网站百度广告优化师
  • 适合企业网站的cmsseo网站推广与优化方案
  • 广州制作网站哪家专业百度推广怎么做效果好
  • 济南网站建设哪家强竞价排名软件
  • 华强北 做网站推广赚钱
  • 云和建设局网站如何推广微信公众号
  • 网站建设方案书 备案2022年五月份热点事件
  • 做网站用php还是jsp网上营销是做什么的
  • 网站建设费用清单营销平台是什么意思
  • 福州网站设计大概费用seo收录排名
  • 网站怎么做返回主页按钮网站推广的方式有哪些
  • 免费dw网页模板系统优化软件推荐
  • 深圳住房与建设部网站2023年4 5月份疫情结束吗
  • windows wordpress可以aso优化服务平台
  • 移动端响应式网站怎么做网络渠道有哪些
  • 8848网站盈利模式旅游营销推广方案
  • 编程 网站建设网络推广公司经营范围
  • 免费体验服务器个人如何优化网站有哪些方法
  • 青岛高级网站建设价格2023免费网站推广大全
  • 帝国cms网站关键词出价计算公式
  • 网站设计客户案例关键词排名优化品牌
  • 武汉便宜的网站建设专业的seo排名优化
  • 预付做网站定金如何收录批量查询
  • 承德专业做网站免费行情软件网站下载大全
  • 网站服务器提供什么服务好看的网站设计
  • 为什么网站很少做全屏c盘优化大师