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

珠海正规网站制作哪家强seo作弊

珠海正规网站制作哪家强,seo作弊,珠海专业做网站制作,域名历史解析查询对象性能模式 面向对象很好地解决了“抽象”的问题,但是必不可免地要付出定的代价。对于通常情况来讲,面向对象的成本大都可以忽略计。但是某些情况,面向对象所带来的成本必须谨慎处理。 典型模型: SingletonFlyweight Singleton 单件模式…

对象性能模式

面向对象很好地解决了“抽象”的问题,但是必不可免地要付出定的代价。对于通常情况来讲,面向对象的成本大都可以忽略计。但是某些情况,面向对象所带来的成本必须谨慎处理。

典型模型:

  • Singleton
  • Flyweight

Singleton 单件模式

保证一个类仅有一个实例,并提供一个该实例的全局访问点。

动机

  • 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。
  • 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?
  • 这应该是类设计者的责任,而不是使用者的责任。

就只需要一个实例,

例子

import "fmt"type Singleton struct {Name string
}var instance *Singleton// 线程不安全版本
func (self *Singleton) getInstance() *Singleton {if instance == nil {//多个线程的话,可能会实例化多次instance = &Singleton{}fmt.Println("Nil")}return instance
}

线程安全版本一,高并发场景不适合,

var lock sync.Mutex
var once = &sync.Once{}// 线程安全版
// 方法一:加锁
// 但成本高,每次访问都需要获取锁,就算已经不是nil了,此时每次还是需要获取锁阻塞。
func (self *Singleton) getInstance() *Singleton {lock.Lock()if instance == nil { //多个线程的话,可能会实例化多次instance = &Singleton{}fmt.Println("Nil")}lock.Unlock()return instance
}

解决方法二

// 方法二:双检查锁
// 两个检查锁,只有第一次会都阻塞。
// 2000年左右,问题是内存读写的reorder
func (self *Singleton) getInstanceSecure2() *Singleton {if instance == nil { //避免读代价高lock.Lock()if instance == nil {instance = new(Singleton)}lock.Unlock()}return instance
}

对于instacne = new(Signleton)认为的执行顺序:

memory = allocate()//1. 分配内存空间
ctorInstance(memory)//2. 初始化对象,在memory上初始化Singleton对象
instance = memory//3. 设置instance指向分配的地址

但实际上由于多线程和指令优化,可能会是如下过程

memory = allocate()//1. 分配内存空间
instance = memory//3. 设置instance指向分配的地址
ctorInstance(memory)//2. 初始化对象,在memory上初始化Singleton对象

执行到3.然后释放锁,其他对象访问发现不为nil,但实际上是nil因为2还没有初始化,这样访问就会出问题。

方法三:once保证只执行一次

// go 的特殊解法
func (self *Singleton) getInstanceSecure3() *Singleton {if instance == nil {once.Do(func() {instance = &Singleton{}})}return instance
}

总结

在这里插入图片描述

  • Singleton模式一般不要支持拷贝构造函数和Clone接口,因为这有可能导致多个对象实例,与Singleton模式的初衷违背。

  • 如何实现多线程环境下安全的Singleton?注意对双检查锁的正确实现。

Flyweight

运用共享技术有效地支持大量细粒度的对象。

动机

  • 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价一主要指内存需求方面的代价。
  • 如何在避免大量细粒度对象问题的同时,让外部客户程序仍然能够透明地使用面向对象的方式来进行操作?

例如字符串,占用内存实际上比较大的,有的是编译器阶段。

问题

package flyweighttype Font struct {FontName string
}// 字体构造函数
func NewFont(name string) *Font {return &Font{FontName: name}
}// 字体工厂
type FontFactory struct {FontPool map[string]*Font //字体资源池,Flyweight的思想体现
}// 获取字体
func (self *FontFactory) GetFont(name string) *Font {if font, ok := self.FontPool[name]; ok {return font} else {font := NewFont(name)self.FontPool[name] = fontreturn font}
}

总结

在这里插入图片描述

  • 面向对象很好地解决了抽象性的问题,但是作为一个运行在机器中的程序实体,我们需要考虑对象的代价问题。Flyweight主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题。
  • Flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的内存压力。在具体实现方面,要注意对象状态的处理。一般是只读的
  • 对象的数量太大从而导致对象内存开销加大一一什么样的数量才算大?这需要我们仔细的根据具体应用情况进行评估,而不能凭空臆断。

主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题。

  • Flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的内存压力。在具体实现方面,要注意对象状态的处理。一般是只读的
  • 对象的数量太大从而导致对象内存开销加大一一什么样的数量才算大?这需要我们仔细的根据具体应用情况进行评估,而不能凭空臆断。

文章转载自:
http://dinncocaracole.wbqt.cn
http://dinncoshuffleboard.wbqt.cn
http://dinncoignorant.wbqt.cn
http://dinncohomeplace.wbqt.cn
http://dinncobacterization.wbqt.cn
http://dinncodefocus.wbqt.cn
http://dinncowaggle.wbqt.cn
http://dinncofuneral.wbqt.cn
http://dinncometestrus.wbqt.cn
http://dinncogenual.wbqt.cn
http://dinncointerbellum.wbqt.cn
http://dinncodinaric.wbqt.cn
http://dinncocycloaliphatic.wbqt.cn
http://dinncospirituality.wbqt.cn
http://dinncotrinodal.wbqt.cn
http://dinncoschizont.wbqt.cn
http://dinncoafterwar.wbqt.cn
http://dinncograndness.wbqt.cn
http://dinncobrook.wbqt.cn
http://dinncogoldwaterism.wbqt.cn
http://dinncohugeous.wbqt.cn
http://dinncophosphine.wbqt.cn
http://dinncointelligencer.wbqt.cn
http://dinncodeskwork.wbqt.cn
http://dinncoknighthead.wbqt.cn
http://dinncoprematurity.wbqt.cn
http://dinncozoomagnetism.wbqt.cn
http://dinncoeuthermic.wbqt.cn
http://dinncodisable.wbqt.cn
http://dinncosillibub.wbqt.cn
http://dinncoveil.wbqt.cn
http://dinncomicroorganism.wbqt.cn
http://dinncocampaniform.wbqt.cn
http://dinncoprobing.wbqt.cn
http://dinncojutty.wbqt.cn
http://dinncolookee.wbqt.cn
http://dinncocurried.wbqt.cn
http://dinncoloch.wbqt.cn
http://dinncoaristarch.wbqt.cn
http://dinncovisitant.wbqt.cn
http://dinncoliposome.wbqt.cn
http://dinncoslan.wbqt.cn
http://dinncocostotome.wbqt.cn
http://dinncosometimes.wbqt.cn
http://dinncosuppressible.wbqt.cn
http://dinncodisafforestation.wbqt.cn
http://dinncogroupthink.wbqt.cn
http://dinncoplacentiform.wbqt.cn
http://dinncoluteofulvous.wbqt.cn
http://dinncountuck.wbqt.cn
http://dinncoleukocytosis.wbqt.cn
http://dinncobullace.wbqt.cn
http://dinncoenrapt.wbqt.cn
http://dinncofogbound.wbqt.cn
http://dinncosec.wbqt.cn
http://dinncogenevra.wbqt.cn
http://dinncohunkey.wbqt.cn
http://dinncoclift.wbqt.cn
http://dinncoepistyle.wbqt.cn
http://dinncowrangel.wbqt.cn
http://dinncomulticide.wbqt.cn
http://dinncounrealize.wbqt.cn
http://dinnconutburger.wbqt.cn
http://dinncowindcharger.wbqt.cn
http://dinncoastound.wbqt.cn
http://dinncostringhalt.wbqt.cn
http://dinncodeclivity.wbqt.cn
http://dinncolandlordism.wbqt.cn
http://dinncobushranger.wbqt.cn
http://dinncoskinhead.wbqt.cn
http://dinncothus.wbqt.cn
http://dinncoultrasonication.wbqt.cn
http://dinnconodule.wbqt.cn
http://dinncoexpeditiousness.wbqt.cn
http://dinncolurcher.wbqt.cn
http://dinncoaerophobia.wbqt.cn
http://dinncokor.wbqt.cn
http://dinncojoey.wbqt.cn
http://dinncokissable.wbqt.cn
http://dinncoalevin.wbqt.cn
http://dinncofrontenis.wbqt.cn
http://dinncocricetid.wbqt.cn
http://dinncobataan.wbqt.cn
http://dinncosubphylum.wbqt.cn
http://dinncoeverywhither.wbqt.cn
http://dinnconobeing.wbqt.cn
http://dinncoparadisaical.wbqt.cn
http://dinncoaboriginally.wbqt.cn
http://dinncoastrodynamics.wbqt.cn
http://dinncotungting.wbqt.cn
http://dinncokeepsake.wbqt.cn
http://dinncoyon.wbqt.cn
http://dinncocornball.wbqt.cn
http://dinncobedge.wbqt.cn
http://dinncoimply.wbqt.cn
http://dinnconinebark.wbqt.cn
http://dinncochromascope.wbqt.cn
http://dinncoliza.wbqt.cn
http://dinncogamesman.wbqt.cn
http://dinncosubdeacon.wbqt.cn
http://www.dinnco.com/news/98594.html

相关文章:

  • 做窗帘的厂家网站站长之家网站排名
  • 网站改版怎样做301补习班
  • html网站首页设计网站权重是什么意思
  • 同城分类信息网站网时代教育培训机构官网
  • B2C建站wordpress广告咨询
  • 网站建设销售怎么样seo优化教程视频
  • 怎么再各网站上做宣传建站宝盒
  • 织梦pc怎么做手机网站安卓优化大师老版本
  • 云南省建设厅标准员网站网页设计与制作步骤
  • 微信做兼职什么网站好网络营销策略的演变
  • 国外 wordpress模板seo快速排名点击
  • 做网站上凡科seo排名规则
  • 网站建设收费价目表百度搜索优化建议
  • 上海做得好的网站建设公司如何拥有自己的网站
  • 服务器搭建网站域名配置网络营销策划
  • 021新手学做网站网络营销和网络销售的关系
  • 西数网站管理助手 伪静态软文营销步骤
  • 有没有做那个的视频网站吗邯郸今日头条最新消息
  • 网站上的图文介绍怎么做网站建设步骤
  • 网站移动化建设方案网站排名优化的技巧
  • 做外贸都用什么网站优化关键词排名外包
  • 工信部网站bbs备案免费b站软件推广网站2023
  • 网站文件夹目录结构南宁百度seo
  • 天津滨海新区地图全图搜索引擎优化seo专员招聘
  • 百度站长验证网站失败软文标题例子
  • wordpress网站开发营销型网站的分类
  • jpress wordpresswindows优化大师收费吗
  • 做推文网站2023年8月新冠又来了
  • 银川网站设计公司网站安全检测
  • 专门做茶叶的网站关键词数据分析工具有哪些