摘要: Java的内存模型 Java内存模型(JMM)是一个抽象的模型。决定了线程主要定义了线程和内存间的抽象关系:主内存存放的是线程共享变量,每个线程有自己的工作内存,存放变量的副本,只能对副本进行读写,副本的变量再刷新到主内存中。具体体现为多核CPU,每核有一个高速缓存,每个核的线程对高速缓存读写,并且 阅读全文
posted @ 2019-03-17 23:48 匿了匿了 阅读(1707) 评论(1) 推荐(1) 编辑
摘要: fastJson反序列化为类对象时,反序列化赋值的属性只会是你构造器上写的属性。 所以部分属性值为null的原因是属性没有加在构造器上的原因。 直接加个无参数的默认构造器即可解决。或者把null属性加构造器上。 如下图 基类的两个属性不会被反序列化赋值!需要加上默认构造器如下图。 阅读全文
posted @ 2019-03-15 13:55 匿了匿了 阅读(5088) 评论(1) 推荐(1) 编辑
摘要: 一. pom依赖: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> 阅读全文
posted @ 2019-03-10 23:29 匿了匿了 阅读(4410) 评论(0) 推荐(1) 编辑
摘要: 适配器模式是【结构型】设计模式。 主要作用是将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式分为:类适配器、对象适配器、接口适配器 一 类适配器 通过继承来实现适配器功能。 比如 iphone手机有3.5mm耳机接口(简称 M 阅读全文
posted @ 2019-03-10 23:12 匿了匿了 阅读(219) 评论(0) 推荐(1) 编辑
摘要: wait() 会让当前运行线程 阻塞,并释放对应的对象锁, 一般由当前线程持有的对象锁调用 x.wait(); 当前线程必须拥有此对象的monitor(即锁),才能调用此对象的wait()方法能让当前线程阻塞, notify() 会让等待当前线程持有的锁的线程唤醒,进入就绪状态。如果有多个线程等待获 阅读全文
posted @ 2019-03-04 22:16 匿了匿了 阅读(381) 评论(0) 推荐(0) 编辑
摘要: CPU增加高速缓存,线程切换分时复用CPU,编译程序优化指令次序。这三个操作提升了性能,但也带来了三个导致并发安全性的特性,即 可见性,原子性,有序性。 下面深入介绍一下三个特性出现的原因: 一.可见性: (多核CPU缓存导致) 单核CPU的线程操作同一个CPU缓存,具有线程间的可见性。而多核CPU 阅读全文
posted @ 2019-03-03 20:54 匿了匿了 阅读(317) 评论(0) 推荐(1) 编辑
摘要: 介绍下单例模式,即保证对一个类只实例化一个对象。实际生产例子有,Spring的bean默认创建模式等。 单例模式的组成:包括一个私有的构造器,一个私有的静态变量,一个公有的静态方法。单例模式本身很简单,主要复杂点是在它在线程并发下的如何保证 线程安全+资源消耗少 的问题。 一.饿汉式单例(线程安全) 阅读全文
posted @ 2019-02-23 23:05 匿了匿了 阅读(3011) 评论(1) 推荐(2) 编辑
摘要: 模板模式是一种非常好的,万金油的设计模式。此设计模式在我的项目中也多有体现。故写出来总结一下。 首先介绍一下模板模式。模板模式即是在基类定义一个算法框架,将一些步骤延迟在子类中实现。使得子类不用改变算法结构,就可以重写算法步骤的细节。 模板模式 最基本的结构包括,一个定义了主逻辑方法的接口。一个实现 阅读全文
posted @ 2019-02-23 21:25 匿了匿了 阅读(173) 评论(1) 推荐(0) 编辑
摘要: 简单工厂模式是最常用的工厂模式。一般由一个抽象基类(接口)和N个子类和工厂类组成。工厂类有一个静态的create方法,根据不同的属性选择生成不同的子类对象。 如以下代码 基类: public class AbstractOS{ /** *获取当前对象名字 */ public abstract Str 阅读全文
posted @ 2019-02-14 22:04 匿了匿了 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 代理模式顾名思义就是,找一个代理人帮你做事。比如B是买房者,要买房必须要经过中介A代理买房,因为B没有联系房东的方式。这里有三个角色,一个是代理对象即A,一个是目标对象B,第三个是A和B的抽象接口对象C。 动态代理:可以使用类的动态加载机制(基于反射),在代码运行期间加载被代理的类。比如Spring 阅读全文
posted @ 2019-01-28 00:58 匿了匿了 阅读(729) 评论(0) 推荐(0) 编辑