04 2024 档案

摘要:1、引用概述 在栈上的reference类型存储的数据代表某块内存地址,称reference为某内存、某对象的引用。实际上引用分为很多种,从强到弱分为:强引用 > 软引用 > 弱引用 > 虚引用。平常我们使用的引用实际上是强引用,各种引用有自己的特点,强引用就是Java中普通的对象,而软引用、弱引用 阅读全文
posted @ 2024-04-27 17:22 jingyi_up 阅读(34) 评论(0) 推荐(0) 编辑
摘要:1、Body 参数 可以使用 @RequestBody 或 @RequestParam,也可以不使用任何注解。 @RequestBody 主要用来接收前端传递给后端的 json 格式的数据的(请求体中的数据的)。 它只有一个属性-required,表示参数是否必须要传,默认为 true。此时前端请求 阅读全文
posted @ 2024-04-22 22:43 jingyi_up 阅读(79) 评论(0) 推荐(0) 编辑
摘要:1、log4j2的使用 Java 中常用的日志框架: • logback:Spring Boot 默认使用的日志框架,具有自动压缩日志、支持多样化配置、不需要重启就可以恢复 I/O 异常等特点。 • log4j2:在性能方面比 logback 更加优秀,使用上与之前版本 log4j 没什么区别(lo 阅读全文
posted @ 2024-04-17 12:42 jingyi_up 阅读(499) 评论(0) 推荐(0) 编辑
摘要:1、适配器模式原理 适配器模式的英文翻译是 Adapter Design Pattern。顾名思义,这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。对于这个模式,有一个经常被拿来解释它的例子,就是 USB 转接头充当适配器,把两种不兼 阅读全文
posted @ 2024-04-16 11:41 jingyi_up 阅读(51) 评论(0) 推荐(1) 编辑
摘要:1、从经典的 Java IO 来了解装饰器模式 Java IO 类库非常庞大和复杂,有几十个类,负责 IO 数据的读取和写入。如果对 Java IO 类做一下分类,我们可以从下面两个维度将它划分为四类。具体如下所示: 针对不同的读取和写入场景,Java IO 又在这四个父类基础之上,扩展出了很多子类 阅读全文
posted @ 2024-04-16 10:48 jingyi_up 阅读(10) 评论(0) 推荐(0) 编辑
摘要:1、代理模式原理 代理模式在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。下面通过一个性能计数器的例子来看下。 现在要开发一个 MetricsCollector 类,用来收集接口请求的原始数据,比如访问时间、处理时长等。在业务系统中,我们采用如下方式来使用这个 Metr 阅读全文
posted @ 2024-04-16 00:18 jingyi_up 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1、原型模式的原理 如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式(Prototype Design Pat 阅读全文
posted @ 2024-04-12 16:56 jingyi_up 阅读(10) 评论(0) 推荐(0) 编辑
摘要:建造者模式也称为 Builder 模式,在开发中也是经常用到的,下面围绕两个问题来看下: 1、为什么需要建造者模式 假设在开发中我们有这样一个需求:需要定义一个资源池配置类 ResourcePoolConfig。这里的资源池,你可以简单理解为线程池、连接池、对象池等。在这个资源池配置类中,有以下几个 阅读全文
posted @ 2024-04-12 12:03 jingyi_up 阅读(15) 评论(0) 推荐(0) 编辑
摘要:工厂模式分为:简单工厂、工厂方法、抽象工厂(了解即可) 1、工厂模式的作用 这也是考虑要不要使用工厂模式的标准: ——封装变化:创建逻辑有可能变化,封装成工厂类之后,创建逻辑的变更对调用者透明。 ——代码复用:创建代码抽离到独立的工厂类之后可以复用。 ——隔离复杂性:封装复杂的创建逻辑,调用者无需了 阅读全文
posted @ 2024-04-11 18:15 jingyi_up 阅读(30) 评论(0) 推荐(0) 编辑
摘要:1、为什么使用单例(能解决什么问题) (1)处理资源访问冲突 自定义实现了一个往文件中打印日志的 Logger 类。具体的代码实现如下所示: public class Logger { private FileWriter writer; public Logger() { File file = 阅读全文
posted @ 2024-04-10 16:53 jingyi_up 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1、学习设计模式的目的 (1)应对面试 设计模式是程序员的基本功,因此是面试中常考察的知识点。 (2)写出高质量的代码 学好数据结构与算法目的是写出高效的代码,学好设计模式则是为写出高质量的代码。 (3)提高复杂代码的设计和开发能力 掌握好设计模式才能在开发复杂系统时写出易扩展、易用、易维护的代码。 阅读全文
posted @ 2024-04-10 11:54 jingyi_up 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1、使用场景 一般情况下,主线程创建并启动子线程,如果子线程中执行大量耗时运算,主线程可能早于子线程结束。如果主线程需要知道子线程的执行结果时,就需要等待子线程执行结束。主线程可以sleep(xx),但这样的xx时间不好确定,因为子线程的执行时间不确定,join()方法比较合适这个场景。 2、joi 阅读全文
posted @ 2024-04-02 19:45 jingyi_up 阅读(1185) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示