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

低代码建站wordpress salutation

低代码建站,wordpress salutation,微信网站和手机网站的区别,整站优化报价作者主页#xff1a;paper jie_博客 本文作者#xff1a;大家好#xff0c;我是paper jie#xff0c;感谢你阅读本文#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏#xff0c;本专栏是针对于大学生#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造… 作者主页paper jie_博客 本文作者大家好我是paper jie感谢你阅读本文欢迎一建三连哦。 本文于《JavaEE》专栏本专栏是针对于大学生编程小白精心打造的。笔者用重金(时间和精力)打造将MySQL基础知识一网打尽希望可以帮到读者们哦。 其他专栏《MySQL》《C语言》《javaSE》《数据结构》等 内容分享本期将会分享设计模式中的单例模式 目录 什么是设计模式 什么是单例模式 单例模式的实现方式 饿汉模式 具体代码 代码分解  懒汉模式 懒汉模式 - 单线程 具体代码 代码分析 懒汉模式 - 多线程 问题一: 原子性 改进 问题二: 加锁带来的开销 改进 问题三: 指令重排序 改进: 什么是设计模式 设计模式是咱们程序猿圈子中的一些大佬写出来的,为了规范我们的代码,让我们的代码不至于写的见不得人,可以说使用设计模式就等于给了你一个下限,只要你按照这个模式来写,再怎么样也不至于水到哪去. 就可以把它理解为好比棋谱一般.给了我们一些套路,在遇到什么情况,该什么应对. 我们软件开发中就是有许多常见的问题场景,针对这些问题场景,大佬们就总结出来一些固定的套路给我们这些小萌新使用. 什么是单例模式 单例模式它就是能保证某个类只能创建一个实例,而不能创建多个实例.这一点在很多场景中都需要使用.因为往往这类实例需要的内存空间和开销都比较大,我们就需要限制住创建实例的个数. 单例模式的实现方式 单例模式有许多种实现的方式,不过其中最常见的就是饿汉模式和懒汉模式. 饿汉模式 饿汉模式,顾名思义,对于创建这个实例非常迫切,在类一加载就创建好了. 具体代码 class Singleton {private static Singleton instance new Singleton();public Singleton getInstance() {return instance;}private Singleton() {} } 代码分解  1. 这里的instance是静态属性,类属性. 是随着类的加载而创建.因为一个类只有一个类对象,类属性也只有一份,所以这里只能创建一次实例. 2. 在类外需要获取这个实例需要使用getinstance方法来获取,而不是自己再new一个. 3. 这里在类外再new一个对象会发现编译报错,这是因为这里将它的构造方法设置为私有的,在类外是访问不到.这就保证了只能创建一份实例. 懒汉模式 这里懒汉模式有两种,一种单线程,一种多线程. 懒汉模式 - 单线程 具体代码 class Singleton2 {private static Singleton2 instance null;public Singleton2 getInstance() {if(instance null) {return new Singleton2();}return instance;}private Singleton2() {} } 代码分析 这里不会在类加载的时候直接创建实例,而是将创建实例放到了方法中. 当第一个调用getinstance方法时就会创建出实例.后面再使用这个方法时因为instance不是null后就不会再创建了. 这样的代码也可以保证只创建一次实例. 创建实例的实例就看代码中什么时候使用这个方法.这样创建实例就不是很急迫,只有需要的时候才会创建,所以叫懒汉. 且这样有一个好处就是如果用不到这个实例它就不会创建,遮掩就省了一笔开销.要知道一般单例模式中的实例都需要占很大的内存空间的,加载的时间需要很久,这样子加载的时间省了,空间也省了. 懒汉模式 - 多线程 在上述的单线程中,是没有多线程安全问题的,但是当在多线程协调工作时就会线程不安全.像饿汉模式也是线程安全的,因为它只涉及到读操作,但是懒汉模式涉及到读和写操作.这样就会有线程安全问题. 问题一: 原子性 我们假设有两个线程,t1和t2.它们都需要使用getinstance这样方法. 这里可能就会有一种情况: t1先执行,到t1执行到if()语句判断后它就被调度走了,这时t2调度过来执行.等t2执行完到new一个实例返回后,t1再执行.但是t1执行的时候它还是认为instance是null,于是它就又创建了一个实例. 这里就是因为这些操作没有具有原子性(当然这里是伪原子,只是针对t2这个线程来说) 改进 我们这里就需要用到我们的加锁操作了.将相关代码加锁! class Singleton1 {private static Singleton1 instance null;public Singleton1 getInstance() {synchronized (Singleton1.class) {if (instance null) {return new Singleton1();}return instance;}}private Singleton1() {} } 问题二: 加锁带来的开销 这里看似处理了问题,但是还有其他的毛病.这里我们发现加锁操作其实只有第一次创建对象(也就是改操作)是需要的,后面的操作都不需要,但是我们还是需要进行锁竞争,这里就是导致开销比较大. 改进 这里我们在外头再加上一层if判断即可. 这里的第一个if就是判断需不需要加锁,第二个if就是在加锁操作下判断有没有创建实例. class Singleton1 {private static Singleton1 instance null;public Singleton1 getInstance() {if(instance null) {synchronized (Singleton1.class) {if(instance null) {return new Singleton1();}}}return instance;}private Singleton1() {} } 问题三: 指令重排序 对于new这个代码,有三个操作: 1. 申请一块内存. 2. 在这块内存中调用构造方法来初始化这个实例. 3. 将这个内存地址赋值到instance中.  这里一般来说我们就是按顺序执行.但是JVM中可能就会给你优化,也就是指令重排序. 可能就会出现 1 3 2这种顺序. 这里就会发生问题:  这里也假设有t1和t2, 当t1一直执行到new操作的3后,这时就被CPU调度走了,让t2进来执行代码.当t2执行到第一个if判断时,发现instance不为null,他就直接返回了.但是这里的instance是一块没有被初始化的空间地址,这就会导致t2接下来的逻辑发生问题. 改进: 这里我们就需要用到我们的volatile.它有两个作用: 1. 保证内存可见性. 它可以强制让JVM不进行代码优化,保证每次都到内存中读取变量. 2. 禁止指令重排序. 针对volatile修饰的这个变量的相关指令,JVM是不可以优化重排序的. class Singleton1 {private volatile static Singleton1 instance null;public Singleton1 getInstance() {if(instance null) {synchronized (Singleton1.class) {if(instance null) {return new Singleton1();}}}return instance;}private Singleton1() {} }
http://www.hkea.cn/news/14514296/

相关文章:

  • 荆州网站建设514885网站建设报告书总结
  • 菏泽公司做网站小程序制作用华网天下首选
  • 免费虚拟主机免费空间河北网站seo地址
  • 网站结构有哪些类型金堂网站建设
  • python做的网站哪些做网站的技术性说明
  • 广州网站设计制作一般纳税人利润300万要交多少税
  • 广州 天河网站设计wordpress标题分隔符
  • 汉中网站建设费用公众号seo排名软件
  • 郑州做网站狼牙广西响应式网站建设
  • 刷leetcode对网站开发有用吗做网站后期为什么续费
  • 深圳工信部网站岳阳找工作网站
  • 如何关闭网站合肥建站网站平台
  • 规范网站建设情况的报告wordpress主题更换字体教程 | hu
  • 如何通过ftp上传网站网站好玩代码和特效
  • 网站开发验证码功能黄骅市天气预报
  • 网站分享链接怎么做win安装wordpress
  • 台州工程建设信息网站多导航织梦网站模板下载
  • 网络营销的推广工具seo优化神器
  • 温州做网站最好的桂电做网站的毕设容易过嘛
  • 集宁网站建设SEO优化怎么做国际网站
  • 关于怎么做网站网站技术开发设计
  • 金华建设网站的公司北京画册设计公司
  • 中企做一个网站多少钱兰州做网站es5188
  • 珠海网站制作网络公司WordPress插件ckplayer
  • 个人网站设计文字内容模板做网站主页上主要放哪些内容
  • 建网站需要多少费用做网站 赚钱
  • 银川网站建设哪家好亚马逊跨境电商好做吗
  • 住房和城乡建设部官方网站已网站开发需要什么软件有哪些
  • 建设网站创业网站改版要重新备案吗
  • 华为做网站吗app网站搭建