- 博客(12)
- 收藏
- 关注
原创 SpringBoot中的抽象工厂模式
通过在抽象工厂内部用默认抽象工厂的方式获取匿名抽象工厂的实例,并直接重写create()。可以不用显示创建更多抽象工厂的实现。并且能够达到在运行时动态获取产品的目的。拥有抽象方法:create()传入产品类型,返回ConfigurableApplicationContext的实例产品。具体工厂:在抽象工厂内部用默认抽象工厂的方式获取匿名抽象工厂的实例,这个匿名具体工厂可以动态生产不同的产品。抽象产品:ConfigurableApplicationContext。真实产品:抽象产品的实现。
2024-12-12 15:59:12
175
原创 CPU和内存占比飙高问题定位
2. CPU时间片统计:操作系统会将CPU的时间划分为一个个较小的时间片,每个进程(或线程)在一个时间片内执行一段时间,然后切换到下一个进程。通过统计一个时间段内CPU分配给某个进程(或线程)的时间片数量,可以得到该进程(或线程)的CPU占用率。用户态时间是CPU在执行用户程序代码的时间,而内核态时间是CPU在执行内核程序代码(如系统调用)的时间。3. 计算线程/进程的系统时间:使用系统API可以获取特定线程或进程的系统时间,即CPU用于执行该线程或进程的时间。附:应用cpu和内存监控。
2024-10-28 17:40:57
564
原创 网络超时详解
Socket的有状态是指在通信的过程中,socket连接在双方会保持一定的连接状态,即使客户端关闭了,服务器还是知道是谁发送的数据。例如,在Web开发中,服务器可以在客户端存储一个cookie,当客户端下次发送请求时,会携带上这个cookie,服务器就能识别是同一个用户。在UDP链接中,数据的传输是通过单个的数据包进行的,没有连接的建立和断开过程。HTTP是无状态的,Socket是有状态的:在HTTP协议中,每次请求和响应都是独立的,不会保留任何状态信息,需要通过Cookie等机制来维持状态;
2024-10-17 18:18:07
1531
原创 锁和AQS详解
在可重入锁的情况下,如果一个线程再次获取锁,它需要记录获取的次数,将state的值增加。当一个线程尝试获取资源时,它首先会通过`acquire()`方法获取锁,如果锁已经被其他线程占用,那么当前线程就会进入等待队列,并被阻塞。后续当这个线程再次请求相同的锁时,只需检查Mark Word中的线程ID是否与当前线程ID一致,如果一致则直接进入同步代码块,无需进行额外的同步操作。可重入锁在同一线程多次获取锁时会维护一个计数器,每次获取锁计数器加1,释放锁时计数器减1,只有当计数器减为0时才算完全释放了锁。
2024-09-12 14:47:23
950
原创 空对象模式笔记
2. AOP切面:Spring框架中的AOP(Aspect-Oriented Programming)通常会将切面逻辑应用于目标方法或类。如果目标方法返回一个可能为空的对象,在应用切面时可以使用空对象来代替,以确保切面逻辑正常执行。在链式调用中,如果某个返回结果为空,可以返回一个空对象代替,继续进行后续操作。3.缓存处理:在缓存处理中,如果缓存中不存在所需的数据,则可以返回一个空对象作为占位符,并将其放入缓存中。这样可以避免频繁地访问数据库或其他资源,并提高系统性能。处理对象引用为空的情况,避免NPE。
2024-04-11 15:48:12
279
1
原创 设计模式之工厂模式笔记
工厂模式:通过将对象的创建过程封装在一个工厂类中,以解耦对象的使用者和具体的对象创建过程,提供了一种灵活、可扩展和易维护地方式来实例化对象。通过使用工厂模式,我们可以隐藏对象的创建细节,提供一个统一的入口来获取需要的对象。这样,在需要改变具体对象实现时,只需修改对应的具体工厂即可,而无需修改使用该对象的代码。1. 工厂接口:定义了创建对象的方法,可以是抽象类或接口。2. 具体工厂:实现了工厂接口,并负责实际创建具体的对象。4. 具体产品:实现了产品接口,并定义了具体的业务逻辑。
2024-04-08 19:33:54
198
原创 BO,DO,DTO,PO,VO详解笔记
领域对象,代表业务领域中具体的概念和业务规划,可以封装特定业务相关的行为和数据,并承载业务逻辑的核心部分。视图对象,常用于UI显示和交互所需的数据,可能包含一些处理用户输入或响应操作的方法。VO可与具体的视图组件关联并提供数据绑定功能,以便实时更新视图中显示的数据。业务对象,功能介于PO和DO之间,某些场景下可以看做是PO或DO的扩展版本。主要负责封装复杂,跨领域或跨模块的业务逻辑,并提供可重用性。持久化对象,是数据存储层的表示,通常对象属性和数据库的字段意义对应,用于存储和加载数据。
2024-04-07 15:00:30
347
原创 openfeign RequestInterceptor接口详解
header(String name, Collection values):添加请求头部信息。- query(String name, Collection values):向URL中添加查询参数。通过实现该接口,可以在发送请求之前对其进行预处理、添加头部信息、修改参数等操作。- void apply(RequestTemplate template):该方法被调用时,会传入一个RequestTemplate对象,用于对请求进行修改和设置。
2024-03-26 19:36:54
840
1
原创 xml与java对象互转教程
XmlAccessorType(XmlAccessType.FIELD) @XmlElement(name=""):标记字段,name对的值和被注解的字段可以相互转换。@XmlRootElement(name="") :标记根标签,并将name对的值和class的名称实现相互转化。@XStreamAlias(""):通用注解,value对应值的标签和被注解的字段可以相互转换。xml作为数据传输的常见格式,有必要对其应用场景熟练掌握和使用。2.XStream与xml互转。1.jaxB与xml互转。
2024-03-11 14:26:39
405
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅