代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。
简言之,代理模式就是设置一个中间代理来控制访问原目标对象,以达到增强原对象的功能和简化访问方式。
代理模式UML类图
...
2年前 (2020-04-01) 1045℃
0喜欢
MySQL是一种关系型数据库,它有4种存储引擎分别是MyISAM、InnoDB、Memory、Archive。
MySQL支持那些存储引擎
1、MyISAM存储引擎
2、InnoDB存储引擎
3、Memory存储引擎
4、Archive存储引擎
InnoDB存储引擎
...
2年前 (2020-03-30) 845℃
1喜欢
ThreadLocal:为共享变量在每个线程中创建一个副本,每个线程可以访问自己内部的副本变量。
ThreadLocal是什么
ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可...
2年前 (2020-01-03) 894℃
1喜欢
讲个故事
面试官:IPv4地址可以转为Long类型的数字知道吧?你写一下这个转换的代码!
对计算机基础逐渐模糊的小徐一脸懵逼,毕竟工作中很少会用到,只记得IP地址和整数是可以相互转换的,但是从来没有自己实现过。于是在大脑中飞速计算。过了一会,思路出现了:IP地址分为四段,每段都...
2年前 (2019-12-25) 1542℃
3喜欢
传播行为
事务的第一个方面是传播行为。传播行为定义关于客户端和被调用方法的事务边界。Spring定义了7中传播行为。如下表所示:
传播行为
意义
PROPAGATION_MANDATORY
表示该方法必须运行在一个事务中。如果当前没有事务正在发生,将抛出一个异常
...
2年前 (2019-12-24) 882℃
1喜欢
脏读
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
不可重复读
不可重复读是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务...
2年前 (2019-12-23) 1056℃
1喜欢
回顾前面做一些实验,你会发现,实现一的并发性能高于实现二、三。暂且不关心BlockingQueue的具体实现,来分析看如何优化实现三(与实现二的思路相同,性能相当)的性能。
分析实现三的瓶颈
最好的查证方法是记录方法执行时间,这样可以直接定位到真正的瓶颈。但此问题较简单,我们直接...
2年前 (2019-12-12) 863℃
1喜欢
我们要保证理解wait && notify机制。实现时可以使用Object类提供的wait()方法与notifyAll()方法,但更推荐的方式是使用java.util.concurrent包提供的Lock && Condition。
...
2年前 (2019-12-12) 801℃
1喜欢
如果不能将并发与容量控制都封装在缓冲区中,就只能由消费者与生产者完成。最简单的方案是使用朴素的wait && notify机制。
package com.github.xuchengen.concurrent.impl;
impo...
2年前 (2019-12-12) 822℃
1喜欢
BlockingQueue的写法最简单。核心思想是,把并发和容量控制封装在缓冲区中。而BlockingQueue的性质天生满足这个要求。
package com.github.xuchengen.concurrent.impl;
import c...
2年前 (2019-12-12) 864℃
1喜欢