![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java(设计模式 + 日常笔记)
Java(设计模式 + 日常笔记)
qwqwqwqwqwqwqwq115
这个作者很懒,什么都没留下…
展开
-
遍历所有元素与遍历1/16的元素耗时比较
原视频:https://www.bilibili.com/video/BV1Rg41157KUpublic class CalcTest { public static void main(String[] args) { int[] arr = new int[64 * 1024 * 1024]; // 遍历所有元素 long start1 = System.currentTimeMillis(); for (int i = 0原创 2021-09-15 14:24:56 · 174 阅读 · 0 评论 -
Map中 putIfAbsent、compute、computeIfAbsent、computeIfPresent 学习笔记
putIfAbsent、compute、computeIfAbsent、computeIfPresent 学习笔记putIfAbsentpublic class Main { public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put("KeyOne", "ValueOne"); map.put原创 2021-04-17 12:58:55 · 424 阅读 · 0 评论 -
错题整理
错题整理 1. 导出类调用基类的构造器必须用到的关键字(): A.this B.final C.super D.static 答案选C: 基类就是父类,导出类就是子类,子类调用父类构造方法用super()关键字,且放在子类构造函数的第一行 2. 在main()方法中给出的字节数组,如果将其显示到控制台上,需要(): A.标准输出流System.out.printIn() B.建立字节输出流 C.建立字符输出流 D.标准输入流System.in.read() 答案选A: out是java原创 2021-04-11 15:04:49 · 236 阅读 · 0 评论 -
GoF23 代理模式学习笔记
GoF23 代理模式学习笔记静态代理package proxy;public interface Rent { void rent();}package proxy;public class Host implements Rent{ @Override public void rent() { System.out.println("rent"); }}package proxy;public class Proxy { private Host host原创 2021-04-07 18:08:47 · 102 阅读 · 1 评论 -
GoF23 桥接模式学习笔记
GoF23 桥接模式学习笔记桥接模式的好处: 1. 桥接模式偶尔类似于多继承方案,但多继承方案违背了类的单一职责原则(例如创建 联想笔记本 类),复用性比较差,类的个数也非常多,桥接模式是比多继承方案更好的解决方法,极大地减少了子类的数量,从而降低管理和维护的成本 2. 桥接模式提高了系统的可扩展性,在两个变化的维度(Brand、Computer)中任意扩展一个维度,不需要修改原有系统,符合开闭原则,就像一座桥,可以把两个变化的维度拼接起来桥接模式的劣势: 1. 桥接模式的引入会增加系统的理解原创 2021-04-07 14:59:44 · 115 阅读 · 1 评论 -
GoF23 适配器模式学习笔记
GoF23 适配器模式学习笔记将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于不兼容而不能一起工作的类可以一起工作对象适配器优点: 1. 一个对象适配器可以把多个不同的适配者适配到同一个目标 2. 可以适配一个适配者的子类,由于适配器和适配者是关联关系,根据“里氏代换原则”,适配者的子类也可以通过该适配器进行适配类适配器缺点: 1. 对于Java等不支持多重类继承的语言,一次最多只能适配一个适配者类,不能同时适配多个适配者 2. 在Java等语言中,类适配器模式中的目标抽原创 2021-04-06 11:57:38 · 106 阅读 · 0 评论 -
GoF23 原型模式学习笔记
GoF23 原型模式学习笔记 1. 实现Cloneable接口 2. 重写clone方法应用场景: 1. Spring Bean 的创建:单例模式、原型模式 2. 与工厂模式一起使用,代替 new 浅拷贝代码中表现为cloneVideo的publishTime只是指向了原video的publishTimepackage prototype.shallow;import java.util.Date;public class Video implements Cloneable原创 2021-04-05 18:58:41 · 106 阅读 · 2 评论 -
GoF23 建造者模式学习笔记
GoF23 建造者模式学习笔记 1. 建造者模式也属于创建型模式 2. 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 3. 主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象优点: 1. 产品的建造和表示分离,实现了解耦;使用建造者模式可以使客户端不必知道内部组成细节 2. 将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰 3. 具体的建造者类之间相互独立(下面例子中表现为可以存在多种Worker),这有利于系统的扩 展原创 2021-04-05 12:50:05 · 133 阅读 · 1 评论 -
GoF23 工厂模式学习笔记
GOF23 工厂模式学习笔记工厂模式核心本质: 1. 实例化对象不使用new,用工厂方法代替 2. 将选择实现类,创建对象统一管理和控制,从而将调用者和实现类解耦三种模式: 1. 简单工厂模式:用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改原有代码) 2. 工厂方法模式:用来生产同一等级结构中的固定产品(支持增加任意产品) 3. 抽象工厂模式:围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂 根据设计原则选择:工厂方法模式 根据实际业务选择:简单工厂模式原创 2021-04-04 15:28:56 · 130 阅读 · 1 评论 -
4种数组复制方法效率比较
4种数组复制方法效率比较package ind;import java.util.Arrays;public class Test { public static void main(String[] args) { int[] arr = new int[100000000]; int index = 0; for (int i = 0; i < arr.length; i++) { arr[index++] = i; } System.out.println原创 2021-04-03 19:27:37 · 493 阅读 · 0 评论 -
GoF23 单例模式学习笔记
GOF23 单例模式学习笔记单例模式:构造既私有饿汉式package single;// 饿汉式单例:天生线程安全// 问题是可能会消耗不必要的内存public class Hungry { private Hungry() { } private final static Hungry HUNGRY = new Hungry(); public Hungry getInstance() { return HUNGRY; }}懒汉式package singl原创 2021-04-03 16:41:23 · 106 阅读 · 0 评论 -
关于Comparator是函数式接口
关于Comparator是函数式接口public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj); default Comparator<T> reversed() { return Collections.reverseOrder(this); } default Comparator<T> thenCo原创 2021-03-19 18:21:05 · 631 阅读 · 0 评论 -
Dos常用命令
Dos常用命令CMD打开方式:开始 + Windows系统 + 命令提示符Windows建 + R键 + 输入cmd打开控制台(推荐使用)在任意文件夹下,按住shift键 + 鼠标右键点击,在此处打开命令行窗口资源管理器的地址栏前面加上 cmd + 空格,后面是路径常用的Dos命令#盘符切换#查看当前目录下所有文件 dir#切换目录 cd(change directory) #通过 cd /d + 路径 进行跨盘符的切换 cd /d F: cd /d E:\Steam #通过原创 2021-03-09 11:25:04 · 99 阅读 · 0 评论 -
Markdown语法学习
MarkDown语法学习文本编辑器:Typora文件后缀:xxx.mdN级标题:N个# + 空格 + 标题内容 (最多支持到六级标题)一级标题二级标题三级标题六级标题字体:粗体:两边加两个*Hello, World !斜体:两边加一个*Hello, World !删除线:两边加两个~Hello, World !引用:>加空格加引用内容Hello, World !分割线:三个连续 - 号 或 三个连续 * 号图片:! + [图片名称] + (图片路径)超链原创 2021-03-08 12:57:08 · 99 阅读 · 2 评论