OOS

单例模式没你想的那么简单

我是研究僧i 提交于 2020-04-18 15:33:59
网上到处都是懒汉,饿汉模式。给两个Demo就算过去了吧。 饿汉单例模式:在类加载的时候,就开始实例化了。 public class HungrySingleton { private static HungrySingleton one= new HungrySingleton(); private HungrySingleton(){} public static HungrySingleton getInstance(){ return one; } public static void main(String[] args) { HungrySingleton one1 = HungrySingleton.getInstance(); HungrySingleton one2 = HungrySingleton.getInstance(); System.out.println(one1 == one2); } } 懒汉模式:在第一次获取实例化对象的时候,开始实例化。 public class LazySingleton { private static LazySingleton one= null ; private LazySingleton() { } public static LazySingleton getInstance(){ if (one== null

单例模式没你想的那么简单

穿精又带淫゛_ 提交于 2020-04-18 13:06:46
网上到处都是懒汉,饿汉模式。给两个Demo就算过去了吧。 饿汉单例模式:在类加载的时候,就开始实例化了。 public class HungrySingleton { private static HungrySingleton one= new HungrySingleton(); private HungrySingleton(){} public static HungrySingleton getInstance(){ return one; } public static void main(String[] args) { HungrySingleton one1 = HungrySingleton.getInstance(); HungrySingleton one2 = HungrySingleton.getInstance(); System.out.println(one1 == one2); } } 懒汉模式:在第一次获取实例化对象的时候,开始实例化。 public class LazySingleton { private static LazySingleton one= null ; private LazySingleton() { } public static LazySingleton getInstance(){ if (one== null

aliyun OOS 资源同步【ossutil】

徘徊边缘 提交于 2020-04-17 07:55:23
【推荐阅读】微服务还能火多久?>>> #!/bin/ bash #同步远程图片到OSS Bucket中 #@author <lixiuran> # https://help.aliyun.com/document_detail/120069.html?spm=a2c4g.11186623.6.704.63e424bcZQvfKY SRC_DIR =$( pwd ) " /src " echo " SRC DIR: " ${SRC_DIR} mkdir - p ${SRC_DIR} for i in ` cat ./public.txt| awk ' {print $NF} ' | grep ' \. ' | grep ' Contract ' `; do # echo $i| awk -F ' / ' ' {print $NF} ' echo " 创建目录: " ${i% /* } echo "当前文件:"$i mkdir -p ${SRC_DIR}"/"${i%/*} if [ -f ${SRC_DIR}"/"${i} ];then echo "文件已存在" else #不存在即下载 wget -P ${SRC_DIR}"/"${i%/*} " http://www.xxx.com/ "$i fi SUB_NAME=${i/Public/} echo $SUB_NAME .

Nginx/Haproxy实现OpenSSL升级方案+证书安全检测步骤

荒凉一梦 提交于 2020-04-13 11:41:11
【今日推荐】:为什么一到面试就懵逼!>>> 防伪码:生当作人杰,死亦为鬼雄。 一、Haproxy篇: 1、centos6.5系统 [root@yangwen ~]# cat /etc/redhat-release CentOS release 6.5 (Final) [root@yangwen ~]# uname -r 2.6.32-431.el6.x86_64 2、下载并编译安装openssl [root@yangwen ~]# wget https://www.openssl.org/source/openssl-1.1.1.tar.gz [root@yangwen ~]# tar zxf openssl-1.1.1.tar.gz [root@yangwen ~]# cd openssl-1.1.1 [root@yangwen openssl-1.1.1]# ./config --prefix=/usr/local/ [root@yangwen openssl-1.1.1]# make && make install [root@yangwen openssl-1.1.1]# echo /usr/local/openssl/lib >>/etc/ld.so.conf [root@yangwen ~]# ln -sf /usr/local/lib64/libcrypto.so.1

java序列化

十年热恋 提交于 2020-04-11 08:05:47
Java序列化Serialize 序列化与反序列化 序列化:把对象写入到流中 反序列化:把对象从流中读取出来 什么情况下序列化 对象需要通过网络进行传输 需要持久化对象到磁盘 需要持久化对象到数据库(把对象通过字节流的方式存储) 序列化的实现方式 实现Serializable接口 Serializable是一个标记接口,接口中没有任何方法 需要序列化的对象除基本数据类型属性外其他属性也必须实现Serializable接口 public class Student implements Serializable{ private static final long serialVersionUID = 2992794326818594180L; private String name; private int age; //省略constructor、setter、getter、toString } @Test public void test1() throws Exception { Student s1=new Student("tom",20); System.out.println(s1); ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("D:/student.txt")); oos

原型模式

北战南征 提交于 2020-03-24 09:30:14
3 月,跳不动了?>>> 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 原型模式通过内存二进制流进行拷贝,不用经历对象初始化过程(不用调用构造函数);性能有所提升。 原型模式包括客户、抽象原型、具体原型3种角色: 客户:客户端提出创建对象的请求 抽象原型:规定拷贝接口 具体原型:被拷贝的对象 优点: 1、原型模式比基于二进制流拷贝,java自带的,比直接new一个对象性能性能好。 2、可以使用深克隆方式拷贝一个对象保存其状态,简化创建流程。需要的时候可以恢复到克隆保存的对象数据。可辅助实现撤销操作。 缺点: 1、需要对克隆的类配置一个方法。 2、克隆方法位于类的内部,当对已有类进行改造的时候,需要修改代码。违背开闭原则。 3、当对象有多重嵌套的时候,需要使用到深克隆使用比较麻烦。浅克隆对嵌套对象复制的只是一个引用地址。需权衡使用深克隆和浅克隆。 应用场景: 1、类初始化消耗资源较多 2、new产生的一个对象需要非常繁琐的过程(数据准备,访问权限等) 3、构造函数比较复杂 4、循环体中生产大量对象时。 代码示例: 浅克隆(实现Cloneable接口重写clone方法) @Data public class CloneEntity implements Cloneable{

Java深拷贝和浅拷贝

我只是一个虾纸丫 提交于 2020-02-28 04:13:37
对象拷贝有哪些 对象拷贝(Object Copy)就是将一个对象的属性拷贝到另一个有着相同类类型的对象中去。在程序中拷贝对象是很常见的,主要是为了在新的上下文环境中复用对象的部分或全部数据。 Java中有三种类型的对象拷贝: 浅拷贝(Shallow Copy) 深拷贝(Deep Copy) 延迟拷贝(Lazy Copy) 理解浅拷贝 什么是浅拷贝? 浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。 如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。 在上图中,SourceObject有一个int类型的属性 "field1"和一个引用类型属性"refObj"(引用ContainedObject类型的对象)。当对SourceObject做浅拷贝时,创建了CopiedObject,它有一个包含"field1"拷贝值的属性"field2"以及仍指向refObj本身的引用。由于"field1"是基本类型,所以只是将它的值拷贝给"field2",但是由于"refObj"是一个引用类型, 所以CopiedObject指向"refObj"相同的地址。因此对SourceObject中的"refObj"所做的任何改变都会影响到CopiedObject。

架构师内功心法,只是单纯听说过的原型模式详解

房东的猫 提交于 2020-02-27 02:55:51
一、原型模式的应用场景 你一定遇到过这样的代码场景,有大量的getter、setter赋值的场景。例如这样的代码片段: private SafetyStockMessage createKafkaMessage(SafetyStock safetyStock, HttpServletRequest request) { SafetyStockMessage safetyStockMessage = new SafetyStockMessage(); safetyStockMessage.setId(safetyStock.getId()); safetyStockMessage.setProvinceCode(safetyStock.getProvinceCode()); safetyStockMessage.setRequestId(CodeConstants.REQUEST_ID); safetyStockMessage.setRequestIp(CodeConstants.REQUEST_IP); safetyStockMessage.setSerial(IdMakerUtil.make32Id()); safetyStockMessage.setStockMax(safetyStock.getStockMax()); safetyStockMessage

序列化和反序列化的底层实现原理是什么?

时光总嘲笑我的痴心妄想 提交于 2020-02-27 02:31:26
基本概念 1、什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程; (2)序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。序列化后的字节流保存了Java对象的状态以及相关的描述信息。序列化机制的核心作用就是对象状态的保存与重建。 (3)反序列化:客户端从文件中或网络上获得序列化后的对象字节流后,根据字节流中所保存的对象状态及描述信息,通过反序列化重建对象。 (4)本质上讲,序列化就是把实体对象状态按照一定的格式写入到有序字节流,反序列化就是从有序字节流重建对象,恢复对象状态。 2、为什么需要序列化与反序列化 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。 那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的!如何做到呢?这就需要Java序列化与反序列化了! 换句话说,一方面,发送方需要把这个Java对象转换为字节序列,然后在网络上传送;另一方面,接收方需要从字节序列中恢复出Java对象。 当我们明晰了为什么需要Java序列化和反序列化后

int和Integer深入分析

让人想犯罪 __ 提交于 2019-11-29 19:41:44
目录介绍 1.关于int和Integer的问题区别分析 2.Integer的值缓存的原理 2.1 Java 5 中引入缓存特性 2.2 Integer类中的IntegerCache类 2.3 其他整型类型的缓存机制 3.理解自动装箱和拆箱 3.1 什么是装箱?什么是拆箱? 3.2 装箱和拆箱是如何实现的 3.3 装箱和拆箱在编程实际中注意点 4.原始类型线程安全问题 4.1 那些类型是线程安全的 4.2 如何验证int类型是否线程安全 4.3 AtomicInteger线程安全版 5.Java 原始数据类型和引用类型局限性 5.1 原始数据类型和 Java 泛型并不能配合使用 5.2 无法高效地表达数据,也不便于表达复杂的数据结构 6.关于其他知识延伸 6.1 对象的内存结构 6.2 对象头的结构 6.3 如何计算或者获取某个Java对象的大小 7.关于其他内容介绍 7.1 关于博客汇总链接 7.2 关于我的博客 1.关于int和Integer的问题区别分析 1.1 编译阶段、运行时,自动装箱 / 自动拆箱是发生在什么阶段? 1.2使用静态工厂方法 valueOf 会使用到缓存机制,那么自动装箱的时候,缓存机制起作用吗? 1.3为什么我们需要原始数据类型,Java 的对象似乎也很高效,应用中具体会产生哪些差异? 1.4 阅读过 Integer 源码吗?分析下类或某些方法的设计要点?