logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【设计模式实践系列】装饰者模式应用订单多重优惠计算

装饰者模式装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不想增加很多子类的情况下扩展类。优

#设计模式#java
深入源码分析Spring为什么不支持构造方法的循环依赖

我们知道当通过构造方法的方式注入属性时,是不支持循环依赖这种场景的,本文主要通过分析源码看看为什么构造方法不能支持循环依赖。当然,如果读者还不了解循环依赖的问题,建议先结合源码搞清楚,可以先看看这篇文章,深入源码分析Spring如何解决循环依赖,否则很有可能看不懂本文内容。先看问题@Componentpublic class TestA {private final TestB testB;pub

#spring
Spring事务最佳应用指南(包含:事务传播类型、事务失效场景、使用建议、事务源码分析)

这是一个典型的采用模板方法设计的抽象类,定义了关于事务的核心处理流程。下图展示了几个关键的抽象方法,其具体的逻辑处理都在子类中。下图是子类重写的doCommit和doRollback方法。Spring为我们提供的类,定义了事务处理的基本流程,对外暴露一个execute方法,并通过传入一个标记性接口来实现使用者的业务逻辑处理,大大简化了使用方式。而,很明显就是针对不同的ORM框架而定制的。所以定义是

文章图片
#spring#java#后端 +1
Redis底层数据结构介绍

一谈到Redis,马上能想到的就是:“快”,Redis之所以快,一方面是因为Redis的所有操作都在内存中完成,内存操作本身就很快,另一方面就要归功于它的数据结构了,高效的数据结构是Redis快的基石,当然,也不是所有的命令执行效率都很高,本文就来看看都有哪些时间复杂度较高的命名。

文章图片
#redis#数据结构#哈希算法
kafka生产者性能相关的参数理解

batch.size当多条消息发送到batch后,batch的上限大小(字节为单位),当达到上限时则会发送给kafka broker,设置的过小则降低了kafka的吞吐量,设置的过大则消息的延迟时间会拉长、占用了过高的内存...

文章图片
#java#kafka
理解死锁产生的四个必要条件

死锁的定义死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。死锁产生的四个必要条件1、互斥条件:线程对已经获取到的资源进行排他性使用,即该资源同时只有一个线程占用,如果此时还有其他线程请求获取该资源,则必须等待,直到占用资源的线程释放。2、请

#java
解析Spring中@Bean的实现原理

解析Spring中@Bean的实现原理

文章图片
#spring#java
@Transactional注解事务失效的七种原因分析

1、异常被捕获后没有抛出2、抛出非运行时异常3、方法内部直接调用4、新开启一个线程5、非public的方法6、数据库本身不支持7、事务传播级别设置错误

#spring#java#经验分享
JVM垃圾收集器详解之CMS

CMS(Concurrent Mark Sweep)是HotSpot虚拟机中第一款实现并发收集的垃圾回收器,是为那些希望使用较短的垃圾收集暂停时间并且可以在应用程序运行时与垃圾收集器共享处理器资源的应用程序而设计的,简单来说,CMS就是追求最短停顿时间的垃圾收集器。CMS主要针对老年代进行垃圾回收,可以配合Serial或者ParNew新生代垃圾收集器进行回收,并且从名字上包含“Mark Sweep

#jvm#java
    共 20 条
  • 1
  • 2
  • 请选择