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

郑州怎样建设公司网站织梦网站文章内容模板

郑州怎样建设公司网站,织梦网站文章内容模板,wordpress张戈,成都的汽车网站建设有个第三方工具类#xff0c;不支持多例模式。但是又不能直接改第三方工具类的代码#xff0c;因此可以通过反射破坏第三方工具类的单例。 第三方工具类反编译如下 可以看到构造函数进行了私有化#xff0c;不允许外部new#xff0c;只能通过newInstance进行实例化。并且…有个第三方工具类不支持多例模式。但是又不能直接改第三方工具类的代码因此可以通过反射破坏第三方工具类的单例。 第三方工具类反编译如下 可以看到构造函数进行了私有化不允许外部new只能通过newInstance进行实例化。并且newInstance是单例的。 DataHandler.class public class DataHandler {private static volatile DataHandler INSTANCE;private final byte[] encryptKeys;private final String publicKeys;private final String privateKeys;private final String appID;private final String secret;private String version 2.0.0;private boolean skipVerify false;private DataHandler(String appID, String secret, String publicKey, String privateKey) throws IOException {//.....}public static DataHandler newInstance(String appID, String secret, String publicKey, String privateKey) throws IOException {if (INSTANCE null) {Class var4 DataHandler.class;synchronized(DataHandler.class) {if (INSTANCE null) {INSTANCE new DataHandler(appID, secret, publicKey, privateKey);}}}return INSTANCE;} }通过反射破坏单例模式 import java.lang.reflect.Constructor;public class DataHandlerFactory {public static DataHandler createNewInstance(String appId, String appSecret, String publicKey, String privateKey) {try {// 获取DataHandler类的构造函数ConstructorDataHandler constructor DataHandler.class.getDeclaredConstructor(String.class, String.class, String.class, String.class);constructor.setAccessible(true);// 通过反射创建新的实例return constructor.newInstance(appId, appSecret, publicKey, privateKey);} catch (Exception e) {return null;}}}使用方法 //原本使用第三方工具类的方式默认单例模式 DataHandler dataHandler DataHandler.newInstance(appId, appSecret, publicKey, privateKey);//修改后允许多例。createNewInstance方法如果抛出异常那么是有可能为null因此下面要进行手动判空 DataHandler dataHandler DataHandlerFactory.createNewInstance(appId, appSecret, publicKey, privateKey); if (Objects.isNull(dataHandler)) {throw new RuntimeException(创建DataHandler对象失败请检查appId, appSecret, publicKey, privateKey值是否正确。); }通过缓存构造函数、缓存重复的实例进一步提升性能和减少反射所带来的性能开销 优化DataHandlerFactory类 import lombok.extern.slf4j.Slf4j;import java.lang.reflect.Constructor; import java.util.concurrent.ConcurrentHashMap;Slf4j public class DataHandlerFactory {// 使用线程安全的 ConcurrentHashMap 存储实例public static final ConcurrentHashMapString, DataHandler instanceCache new ConcurrentHashMap();// 缓存构造函数private static ConstructorDataHandler cachedConstructor;static {try {cachedConstructor DataHandler.class.getDeclaredConstructor(String.class, String.class, String.class, String.class);cachedConstructor.setAccessible(true);} catch (NoSuchMethodException | SecurityException e) {log.error(e.getMessage(), e);}}public static DataHandler createNewInstance(String appId, String appSecret, String publicKey, String privateKey) {// 创建一个缓存键String cacheKey appId _ appSecret _ publicKey _ privateKey;// 检查缓存中是否已有该实例如果有则直接返回DataHandler instance instanceCache.get(cacheKey);if (instance ! null) {return instance;}// 如果缓存中没有该实例则创建并缓存try {instance cachedConstructor.newInstance(appId, appSecret, publicKey, privateKey);// 存入缓存并确保线程安全instanceCache.put(cacheKey, instance);return instance;} catch (Exception e) {log.error(e.getMessage(), e);return null;}}}
http://www.pierceye.com/news/58641/

相关文章:

  • 网站建设网站维护网站外包成都金铭 网站建设
  • 如何找回网站备案密码网站建设的目标用户
  • 苏州设计网站公司小红书笔记关键词排名优化
  • 做企业网站还有钱挣吗asp网站建设实验设计
  • 网站建设背景图片大小的修改上海网站建设搭建
  • 淮安制作网站在那里汉服网页设计素材
  • 邢台网站建设哪家专业网站建设合并但与那个
  • 做网站需要服务器和什么软件wordpress底部自定义
  • 政务公开网站开发自做跨境电商网站收款
  • 电商网站系统建设建站工具搭建网站
  • 做网站困难吗贵州网站推广
  • 网站开发 接个支付支付难吗网络营销课程学什么
  • 旅游网站建设注册中国建设集团总公司官网
  • 杭州平台网站建设福州做网站公司
  • 自己电脑做服务器网站网页制作工具的选择与网站整体风格是有关系吗
  • 企业网站建站 合肥广告公司网站开发
  • 手机怎么建自己的网站wordpress修改文字大小
  • 站群管理软件网页设计学徒培训可试学
  • 综合门户网站源码在线图片编辑源码
  • wordpress如何导出网站建设和优化
  • 网站建设包括哪几个方面免费制作短视频的软件
  • 淄博网站快照优化公司WordPress大前端DUX5.1
  • 阿里云网站备案多久微官网免费制作平台
  • 用dw做的网站生成链接吗西安网站推广招聘
  • 效果好的免费网站建设seo入门教程seo入门
  • 句容网站网页设计基础学什么
  • 百度一下首页怎么样做seo
  • 百度经验网站建设如何快速做单页面网站
  • 北京手机网站建设公司百度网站的主要盈利来源不包括
  • 美容类 营销型网站ui设计师创意平台