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

建设网站最强做网站哪一家公司好

建设网站最强,做网站哪一家公司好,昆凌做的广告买化妆品网站,网站推广与宣传怎么做1、序列化、反序列化 在 Java 中#xff0c;当一个对象被序列化后再被反序列化#xff0c;通常情况下会创建一个新的对象实例。这是因为序列化将对象的状态保存到字节流中#xff0c;而反序列化则是将字节流重新转化为对象。在这个过程中#xff0c;通常会使用类的构造函数…1、序列化、反序列化 在 Java 中当一个对象被序列化后再被反序列化通常情况下会创建一个新的对象实例。这是因为序列化将对象的状态保存到字节流中而反序列化则是将字节流重新转化为对象。在这个过程中通常会使用类的构造函数创建一个新的对象并将保存的状态设置给这个新对象。 这意味着默认情况下在序列化和反序列化过程中会产生新的对象实例而不是保持原有的对象实例。这可能会导致一些问题特别是在设计为单例Singleton的类或者一些需要保持引用相等性的场景下。 2、DoubleChecked单例 public class DoubleCheckedSingleton implements Serializable{private volatile static DoubleCheckedSingleton instance;private static final long serialVersionUID 1L;private DoubleCheckedSingleton() {// 私有构造方法}public static DoubleCheckedSingleton getInstance() {if (instance null) {synchronized (DoubleCheckedSingleton.class) {if (instance null) {instance new DoubleCheckedSingleton();}}}return instance;} } 示例中通过使用 volatile 关键字修饰 instance确保了线程间的可见性。在 getInstance() 方法中首先检查 instance 是否为 null如果为 null才会进入同步代码块。在同步代码块内再次检查 instance 是否为 null这是为了防止其他线程已经在等待同步锁的情况下创建了实例。如果没有其他线程已经创建了实例就在同步代码块内创建实例。这种方式可以减少同步的次数提高性能。 需要注意的是虽然现代的Java版本中双重检查锁定通常是线程安全的但在某些特殊情况下仍可能出现问题如序列化、反射等情况。 解决上述代码的这个问题可以在类中实现 readResolve() 方法确保在反序列化时返回同一个对象实例从而维护对象的单例特性。 public class DoubleCheckedSingleton implements Serializable{private volatile static DoubleCheckedSingleton instance;private static final long serialVersionUID 1L;private DoubleCheckedSingleton() {// 私有构造方法}public static DoubleCheckedSingleton getInstance() {if (instance null) {synchronized (DoubleCheckedSingleton.class) {if (instance null) {instance new DoubleCheckedSingleton();}}}return instance;} // 重写 readResolve 方法确保反序列化时返回同一个单例对象protected Object readResolve() {return instance;} }这个示例中我添加了实现 Serializable 接口的代码并重写了 readResolve() 方法以确保在反序列化时返回同一个单例对象。这样即使在序列化和反序列化过程中也能保持单例的一致性。 3、静态内部类和枚举单例 如果你更关注简单性和可靠性也可以考虑使用静态内部类或枚举单例来实现线程安全的单例模式。 因为这两种方法都充分利用了Java语言的特性来保证线程安全性同时也能有效地处理序列化、反射等问题 静态内部类单例 public class StaticInnerClassSingleton {private StaticInnerClassSingleton() {// 私有构造方法}private static class SingletonHolder {private static final StaticInnerClassSingleton instance new StaticInnerClassSingleton();}public static StaticInnerClassSingleton getInstance() {return SingletonHolder.instance;} } 序列化 import java.io.Serializable;public class StaticInnerClassSingleton implements Serializable {private StaticInnerClassSingleton() {// 私有构造方法}private static class SingletonHolder {private static final StaticInnerClassSingleton instance new StaticInnerClassSingleton();}public static StaticInnerClassSingleton getInstance() {return SingletonHolder.instance;}// 添加此方法以支持序列化protected Object readResolve() {return getInstance();} } 这个实现中静态内部类 SingletonHolder 仅在需要时才会被加载确保了懒加载的特性。 同时由于类加载器的机制这种方式可以保证线程安全。 静态内部类只会被加载一次因此在多线程环境中也能够确保单例实例的唯一性。 枚举单例 public enum EnumSingleton {INSTANCE;// 添加需要的方法和属性public void doSomething() {// 实现方法} } 序列化 import java.io.Serializable;public enum EnumSingleton implements Serializable {INSTANCE;// 添加需要的方法和属性public void doSomething() {// 实现方法} } 使用枚举单例可以保证在任何情况下都只有一个实例被创建包括在多线程环境下以及在序列化、反射等特殊情况下。 枚举类的实例创建是线程安全的而且枚举类不会被反射破坏并且可以处理序列化和反序列化保证了单例模式的可靠性。
http://www.w-s-a.com/news/289373/

相关文章:

  • 漫画风格网站人物介绍网页模板html
  • 贵阳市住房和城乡建设局政务网站大连 网站开发
  • 漳州市住房建设局网站网站一般多长
  • 国外做网站推广小程序制作二维码签到
  • 做网站需要域名网站建设诚信服务
  • 做物品租赁网站网站建设的完整流程
  • 响应式企业网站开发所用的平台西安知名网站推广
  • 高端响应式网站建设wordpress 全屏主题
  • 国内工程机械行业网站建设现状ui是什么意思
  • 成都网站开发哪家公司好出售家教网站模板
  • 订阅号做流量 那些电影如何链接网站温州市建设监理协会网站
  • 成都网站建设成功案例单招网商丘网站建设大全
  • 受欢迎的购物网站建设网推专员是做什么的
  • 商城网站前期准备湖南郴州建设局网站
  • 企业如何在自己的网站上做宣传外贸自建站可以自己做网站吗
  • 甘肃网站建设制作商网站空间哪家公司的好
  • 思途旅游网站建设系统用vscode做网站
  • 广州站改造最新消息半年工作总结ppt模板
  • logo模板下载网站推荐哪家网站开发培训好
  • 做外贸网站效果图页面关键词优化
  • 广平网站建设成都活动轨迹
  • 小型网站网站建设需要网络公司是什么行业
  • 滑动 手机网站 代码网页制作与设计讨论
  • 自己做网站处理图片用什么软件wordpress html5支持
  • 校园网站怎么建软文文案范文
  • 中国建设官方网站如何创建自己的软件
  • 来宾住房与城乡建设网站天津西青区怎么样
  • 西安网站建设培训班鄂州网页定制
  • 西部数码网站备份自己怎么做网站啊
  • h5网站开发用什么软件制作公司网站建设代理怎么做