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

建设招标网站如何做好网页设计

建设招标网站,如何做好网页设计,苏州知名网站建设开发,网站建设彩铃语继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 4. 创建者模式 4.1 特点 使用者不需要知道对象的创建细节 4.2 单例模式 4.2.1使用场景 单例类:且仅能创建一个实例类访问类:使用单例类…

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!

4. 创建者模式

4.1 特点

  • 使用者不需要知道对象的创建细节

4.2 单例模式

4.2.1使用场景

  • 单例类:且仅能创建一个实例类
  • 访问类:使用单例类

4.2.2 创建方式

4.2.2.1 饿汉式

  • 类加载时就会创建单例对象
  • 存在内存浪费问题
  • 静态成员变量
public class SingletonDemo1 {  //私有构造函数  private SingletonDemo1(){}  //类中创建对象  private static SingletonDemo1 instance = new SingletonDemo1();  //提供访问方式,让外界获取  public static SingletonDemo1 getInstance(){  return instance;  }  
}

测试代码,结果为true

//    获取对象  SingletonDemo1 singletonDemo1 =SingletonDemo1.getInstance();  SingletonDemo1 singletonDemo2 =SingletonDemo1.getInstance();  
//    判断是否一样  System.out.println(singletonDemo1 == singletonDemo2);  
}
  • 静态代码块,测试类似,结果依旧为true
public class SingletonDemo2 {  //私有构造函数  private SingletonDemo2(){}  //类中创建对象  private static SingletonDemo2 instance ;  
//    静态代码块赋值对象  static {  instance = new SingletonDemo2();  
}  //提供访问方式,让外界获取  public static SingletonDemo2 getInstance(){  return instance;  }  
}

4.2.2.2 懒汉式

  • 使用对象时才创建对象
  • 线程不安全方式,测试代码类似,单线程结果为true,多线程为false
public class SingletonDemo3 {  //私有构造函数  private SingletonDemo3(){}  //类中创建对象  private static SingletonDemo3 instance ;  public static SingletonDemo3 getInstance(){  
//        若instance为null,则未创建,创建新对象,否则返回instance  if(instance == null)  instance = new SingletonDemo3();  return instance;  }
}
  • 线程安全式,代码仅仅一点改动,测试代码类似,单线程多线程均为true,但执行效率低
	//和之前一样public static synchronized SingletonDemo3 getInstance(){  
//        若instance为null,则未创建,创建新对象,否则返回instance  if(instance == null)  instance = new SingletonDemo3();  return instance;  }
  • 双重检查锁式,解决效率低下问题,但在多线程下可能会空指针,原因是JVM在实例化对象中会进行优化和指令重排序
	//和之前一样public static SingletonDemo4 getInstance(){  
//        若第一次判断instance不为null,不需要抢占锁,直接返回instance  if(instance == null)  {  synchronized (SingletonDemo4.class)  {  
//                第二次判断  if(instance == null)  instance = new SingletonDemo4();  }  }  return instance;  }

改进则是加volatile,比较推荐使用,如图![[Pasted image 20221227214947.png]]

  • 静态内部类,JVM加载外部类时不加载静态内部类,只有内部类属性/方法被调用时才会被加载并初始化静态属性结果为true
public class SingletonDemo5 {  //私有构造函数  private SingletonDemo5(){}  //类中创建对象  private static class Singleton{  private static final  SingletonDemo5 INSTANCE = new SingletonDemo5();  }  //提供访问方式,让外界获取  public static SingletonDemo5 getInstance(){  return Singleton.INSTANCE;  }  
}

4.2.2.3 枚举式(恶汉式)

4.2.2.3.1 特点

线程安全,只会装载一次,书写简单,唯一一种不会被破坏掉的方式

4.2.2.3.2 代码
public enum SingletonDemo6 {  INSTANCE;  
}

测试类似,结果为true

4.2.3 存在问题

4.2.3.1 问题

会破坏单例模式唯一性

4.2.3.2 序列化及反序列化

  • 源代码
public class SingletonDemo7 implements Serializable {  //私有构造函数  private SingletonDemo7(){}  //类中创建对象  private static SingletonDemo7 instance = new SingletonDemo7();  //提供访问方式,让外界获取  public static SingletonDemo7 getInstance(){  return instance;  }  
}
  • 测试代码,结果两者显示不一样,不是唯一对象,破坏单例模式
public static void readObject() throws Exception  
{  ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("./a.txt"));  SingletonDemo7 singletonDemo1 = (SingletonDemo7) objectInputStream.readObject();  System.out.println(singletonDemo1);  objectInputStream.close();  
}  
public static void writeObject() throws Exception  
{  ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("./a.txt"));  outputStream.writeObject(SingletonDemo7.getInstance());  outputStream.close();  
}
public static void main(String[] args) throws Exception {
//    writeObject();  readObject();  readObject();  
}

4.2.3.3 反射

  • 源代码使用懒汉式静态成员变量代码
  • 测试代码
public static void main(String[] args) throws Exception {
//    获取Singleton的字节码对象  Class clas = SingletonDemo1.class;  
//    获取无参构造函数对象  Constructor declaredConstructors = clas.getDeclaredConstructor();  
//    取消访问检查  declaredConstructors.setAccessible(true);  
//    创建singleton对象  SingletonDemo1 o = (SingletonDemo1) declaredConstructors.newInstance();  SingletonDemo1 o1 = (SingletonDemo1) declaredConstructors.newInstance();  System.out.println(o == o1);  
}

4.2.3.4 解决办法

4.2.3.4.1 序列化与反序列化
  • 在Singleton类中添加readsolve()方法
  • 如图![[Pasted image 20221228210925.png]]
4.2.3.4.2 反射
  • 加boolean 判断
  • 如图![[Pasted image 20221228211702.png]]

4.2.4 Runtime

4.2.4.1 特点

  • 使用单例模式来进行对象创建
  • 具体是饿汉式的静态成员变量,如图
    ![[Pasted image 20221228213348.png]]

4.2.4.2 简单使用

  • 测试代码
public static void main(String[] args) throws Exception {
//    获取对象  Runtime runtime = Runtime.getRuntime();  
//    执行控制台命令 ipconfig    Process process = runtime.exec("ipconfig");  
//    获取文件输入流  InputStream inputStream = process.getInputStream();  
//    创建字节数组接收  byte[] bytes = new byte[1024*1024*100];  
//    获取最终长度  int read = inputStream.read(bytes);  
//    将字节数组转换为字符串  System.out.println(new String(bytes,0,read,"GBK"));  
}
  • 结果如图![[Pasted image 20221228214017.png]]

文章转载自:

http://78zGD1zr.cpctr.cn
http://LDfRLmCz.cpctr.cn
http://1ObyIsW5.cpctr.cn
http://Q0HsGevU.cpctr.cn
http://zOWZOOJd.cpctr.cn
http://pZMT2woW.cpctr.cn
http://kMVY8YgC.cpctr.cn
http://xf5RKOpC.cpctr.cn
http://VLcogxKQ.cpctr.cn
http://nyVj06MW.cpctr.cn
http://PHKuOzhA.cpctr.cn
http://jLehpzDZ.cpctr.cn
http://c68m7pgy.cpctr.cn
http://9WYR4JAa.cpctr.cn
http://04hocpe3.cpctr.cn
http://VBOmxgkT.cpctr.cn
http://SFUmoGnT.cpctr.cn
http://28xqEZVU.cpctr.cn
http://jTCehQIO.cpctr.cn
http://rWT5ka22.cpctr.cn
http://gUpknVom.cpctr.cn
http://ycNv8DqI.cpctr.cn
http://sKvjqzmV.cpctr.cn
http://lSl5fbld.cpctr.cn
http://snbeTzS9.cpctr.cn
http://5E5qF4JR.cpctr.cn
http://D6TeRtXv.cpctr.cn
http://fcjhN7Dx.cpctr.cn
http://HeOCVgaL.cpctr.cn
http://w6oNiMVF.cpctr.cn
http://www.dtcms.com/wzjs/626474.html

相关文章:

  • 大型地方门户网站源码东鹏拼奖网站怎么做
  • 广州建站软件在那儿能找网站建设
  • 做网站吸引客户百度网页版入口官网
  • 鹤壁做网站的公司做的网站进不去后台
  • 做推广可以上那些网站威特视频网站建设方案
  • wordpress站点名字体简单网站开发实例
  • 重庆建设工程信息网证书查询系统大地seo视频
  • 杭州建平台网站公司网销怎么找客户
  • 做设计比较好的网站如何破解网站后台密码
  • 国外网站空间租用费用wordpress文章末尾加上相关文章
  • 哪些公司的网站做的漂亮开公司如何做网站推广页面
  • 十堰网站建设_网站制作_软件开发_网店培训 优易开发工具包
  • 旅游网站 功能网站建设渠道
  • 青岛建站价格物联网有哪些工作岗位
  • 免费的奖励网站有哪些商城网站建设论坛
  • 在线一键免费生成网页网站免费观看电视剧软件
  • 厦门住房建设局网站html 做网站的模板
  • 设计互动网站建设头条权重查询站长工具
  • 阿里云域名出售网络推广优化招聘
  • 杭州开发区网站建设西安优化外
  • 网站建设公司排名前十购物网站开发报告
  • 帝国网站地图插件建设工程合同补充协议范本
  • 青岛app网站开发更改wordpress标签分割符合
  • 做网站用什么软件编辑做淘宝客最好的网站是什么网站
  • 温州知名网站推广奉贤做网站公司
  • 做网站为职业生存不下去阿里云服务器添加网站
  • 无版权图片网站宝山手机网站制作公司
  • 网站本身对网站打开速度有何影响论基层门户网站的建设
  • 网站建设维护外包重庆景点排名前十
  • 个人网站制作品牌网站建设怎么收费