
java
tr-add_oil
这个作者很懒,什么都没留下…
展开
-
自动拆箱与装箱
装箱:将基本类型用它们对应的引用类型包装起来;拆箱:将包装类型转换为基本数据类型;举个例子: Integer i = 1; int a = i;上面代码的字节码为: 0 aload_0 1 invokespecial #1 <java/lang/Object.<init> : ()V> 4 aload_0 5 iconst_1 6 invokestatic #2 <java/lang/Integer.valueOf : (I)Ljava/l.原创 2022-01-08 17:25:58 · 436 阅读 · 0 评论 -
设计模式--访问者模式
访问者模式主要解决同一个事物,不同的来办不同的事,各自有各自所关心的角度,按需选择。对于访问者模式也有一个老生常谈的例子,就是学生与老师的例子;对于同样是学生和老师,在家长和校长之间所关心的角度是不同的,家长所关心的是学生的成绩和老师的能力,而校长所关心的是老师所在班级整体排名和升学率等等。这样看的话,对于学生和老师的信息是固定的,不同的人来取不同的信息。来个例子:来一个获取信息的抽象类:public abstract class Message { String name; //原创 2021-12-28 21:36:39 · 203 阅读 · 0 评论 -
设计模式--模版模式
模版模式是通过在抽象方法定义执行顺序,并将抽象方法设定为只有子类实现,但不设计独立访问的方法。简单说:提前安排了。其实很简单,看如下例子:定义一个抽象类public abstract class TemplateABS { public String operationSequence(){ return method1() +"\n" + method3() +"\n" + method2(); } protected abstract String原创 2021-12-27 21:58:11 · 222 阅读 · 0 评论 -
设计模式--策略模式
策略模式–行为模式它是替代if…else…的利器。直接上代码吧。。策略接口定义,这里入参可以使用范型。public interface IStrategy<T> { void doStrategy(T param);}策略实现类。/** * 第一个实现。。 */public class IStrategyImplOne implements IStrategy<Map<String,String>>{ @Override原创 2021-12-21 22:21:55 · 321 阅读 · 0 评论 -
设计模式--状态模式
状态模式的是一个行为下的多种状态的变更。比如我们请假申请,从开始到结束,中间是需要有领导审批的,审批之后页面以及状态都是会有变化的。下面模拟一下,系统上线的流程,具有多层级的审批。基础信息public class Result { private String code; // 编码 private String info; // 描述 public Result(String code, String info) { this.code = code;原创 2021-12-18 19:17:28 · 336 阅读 · 0 评论 -
设计模式--观察者模式
观察者模式:当一个行为发生时,一个用户传递信息,另一个用户接受信息并作出相应的处理,行为和接收者之间没有直接的耦合关联。看如下例子:// 模拟一个算法public class MinibusTargetService { public String lottery(String uId){ return Math.abs(uId.hashCode() % 2) == 0 ? "名称为:" + uId + ",你是幸运的。。" : "名称为:" + uId + ",对不起,你不原创 2021-12-16 22:14:22 · 235 阅读 · 0 评论 -
设计模式-- 备忘录模式
备忘录模式:(行为模式)是可以恢复或回滚配置、以版本为核心功能的设计模式;不破坏元对象为基础增加备忘录操作类,记录原对象的行为。其实这个没有啥可说的,就是记录版本号,记录时间操作人之类的。就不写代码了。没有意思。。...原创 2021-12-16 20:49:12 · 316 阅读 · 0 评论 -
设计模式--中介者模式(调停者模式)
作用:当复杂功能应用之间重复调用时,在中间添加一层中介者包装服务,对外提供简单、通用和易扩展的服务能力。比如“联合国” 就是中介者,各个国家可以通过“联合国”通信。接下来看代码:模拟人之间沟通,通过中介。1. 抽象中介者类public abstract class Mediator { abstract void send(String message , Colleague colleague);}2. 抽象同事类public abstract class Co..原创 2021-12-15 23:22:25 · 310 阅读 · 0 评论 -
设计模式--命令模式
命令模式是行为模式中的一种,以数据驱动的方式将命令对象用构造函数的方式传递给调用者。调用者再提供相应的实现为命令执行提供操作方法。命令模式的实现有以下重要的几点:抽象命令类:声明执行命令的接口和方法; 具体的命令实现类:接口类的具体实现可以是一组相似的行为逻辑; 实现者:给命令开发执行逻辑的具体实现类; 调用者:处理命令、实现的具体操作者,负责对外提供命令服务。接下来,看代码:1. 抽象命令的定义/** * 抽象命令定义 */public interface ICommon原创 2021-12-14 21:09:49 · 128 阅读 · 0 评论 -
设计模式---责任链模式
责任链模式的核心是解决一组服务中先后执行关系,就像出差借款需要审批。看例子吧:public abstract class AuthLink { protected String name; private AuthLink next; AuthLink (String name){ this.name = name; } public AuthLink next(){ return next; } publi原创 2021-12-02 23:11:54 · 280 阅读 · 0 评论 -
设计模式--代理模式
代理模式就是为了方便访问某些资源,使对象类更加易用,从而在操作上使用的代理服务。代理模式经常会出现在系统或组件中,它们提供一种非常简单易用的方法,控制原本需要编写很多代码才能实现的服务类。比如:常用的mybatis 基本功能是定义接口,不需要写实现类就可以对Mapper中的sql语句增删改查。下面看一个例子:(非常简单的例子)/*****定义一个接口,使 proxy 和 RealSubject 都同时实现,这样就可以使用 proxy 代理 RealSubject**/public interf原创 2021-12-01 22:15:23 · 196 阅读 · 0 评论 -
设计模式---享元模式
享元模式,其实就是有一些大量重复对象可重用的场景中,在服务端减少接口的调用,在客户端减少内存的占用。比如我们通过Map 进行存储,方便下一次进行调用。而且Map可以很大的减少if…else的使用。现如今大量公司都以使用springcloud 微服务开发。对于redis 也会有大量的使用。许多能够共享的并且不经常变化的对象都会放入redis里。可以减少对频繁调用数据库所带来的io开销。行了,享元模式就说这么多吧。...原创 2021-11-30 21:48:25 · 641 阅读 · 0 评论 -
设计模式---外观模式
外观模式也叫门面模式,主要是降低调用方使用接口时的复杂逻辑组合。其实外观模式说起来,大家肯定都不陌生,比如我们自定义的注解,这种就是属于外观模式。注解+aop 完美实现。这里说一下注解的声明/** * 1、访问修饰符必须为public , 不写默认为pulbic * 2、元素的类型包含基本数据类型、String、Class、枚举、注解类型(注解是可以嵌套的)、以上类型的数组 * 3、如果注解里面只有一个元素,可以将名字定义为value,这样后面使用会很便利 * 4、括号中 不能定义参数,这原创 2021-11-29 23:08:06 · 549 阅读 · 0 评论 -
设计模式--装饰器模式
装饰器模式是在不改变原有类的基础上给类新增功能。这种实现方式,可以避免继承导致的子类过多问题,也可以避免AOP模式带来的复杂性模拟一个给人装扮的程序首先 “人” 类public class Person { public Person(){} public Person(String name) { this.name = name; } private String name ; public String getName()原创 2021-11-28 22:53:05 · 229 阅读 · 0 评论 -
设计模式---组合模式
通过把相似的对象或方法组合成一组可被调用的结构树对象的设计思路,称为组合模式。类似于树的结构首先我们先写一个抽象类,定义抽象方法public abstract class Component { private String name; public String getName() { return name; } public Component setName(String name) { this.name = name;原创 2021-11-28 20:24:49 · 281 阅读 · 0 评论 -
设计模式---桥接模式
桥接模式主要是通过把抽象部分和实现部分分离,能够将多种可匹配的使用进行组合。主要能解决业务实现中多类接口同组等,比如手机蓝牙能够和电脑连,能够和音响连,能够和空调连等相当于接口A会用到接口B做一些事情直接看例子吧:public abstract class InterA { protected InterB interB; // 这个地方是桥接模式最重要的地方 public InterA(InterB interB){ // 这个地方是桥接模式最重要的地方 thi原创 2021-11-24 21:43:59 · 208 阅读 · 0 评论 -
设计模式--单例模式
单例模式主要解决的是一个全局使用的类,被频繁的创建与销毁,从而提升代码整体的性能。静态类使用import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class s1 { public static Map<String , String> map = new ConcurrentHashMap<>();}第一次运行直接初始化。如果需要被继承可以使用这种方式。懒汉原创 2021-11-19 11:39:51 · 108 阅读 · 0 评论 -
设计模式--工厂模式(工厂方法模式)
这是一种创建型设计模式原创 2021-11-15 22:09:53 · 394 阅读 · 0 评论 -
补偿事件与取消事件的使用
补偿事件与取消事件的使用注意:取消事件一定要包含补偿事件,否则无法运行。取消结束事件一般都是在‘事物子流程’中使用上图中补偿边界事件下的serviceTask 中属性‘Is for compensation’必须为true<serviceTask id="service_task_1" name="serviceTask" isForCompensation="true" a...原创 2019-06-19 13:06:22 · 1001 阅读 · 0 评论 -
设计模式第一篇
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-10-27 22:38:20 · 72 阅读 · 0 评论 -
JVM 堆空间学习
堆空间:内存细分堆空间大小设置;设置jvm参数;老年代,新生代;jvm调优;TLAB原创 2020-11-12 21:26:13 · 141 阅读 · 0 评论 -
spring项目获取ApplicationContext方法
@ComponentPublic class ApplicationHolder implements ApplicationContextAware{ private static ApplicationContext applicationContext; /** * 服务器启动时会,初始化spring容器并注入到applicationContext */ @Override...转载 2019-10-15 19:49:14 · 254 阅读 · 0 评论 -
effective java 中的几点知识
文章目录effective java 中的几点知识创建和销毁对象1. 考虑用静态工厂方法代替构造器优点2. 遇到多个构造器参数时要考虑用构造器优点3. 用私有构造器或者枚举类型强化Singleton属性4. 通过私有构造器强化不可实例化的能力5. 避免创建不必要的对象所有对象都通用的方法(非final的Object方法)6. 覆盖equals时请遵守通用约定什么时候不需要覆盖object类的equ...原创 2018-10-27 15:21:12 · 257 阅读 · 0 评论