
程序员
文章平均质量分 85
Java-yyds.
这个作者很懒,什么都没留下…
展开
-
Java设计模式|建造者模式Builder Pattern
Java设计模式|建造者模式Builder Pattern前言:在日常生活中,我们可能会遇到这一类型的需求,例如一个实体类里有很多个属性,但是我们只想要其中的几种组合成一个新的对象,这个时候就可以使用建造者模式了,它提供了一种创建对象的最佳方式。建造者模式虽然比较好用,但是大家平时写代码的时候要谨记,不要滥用设计模式,不然的话可能会适得其反啊!建造者模式介绍:建造者模式又被称呼为生成器模式,这种类型的设计模式属于创建型模式,使用多个简单的对象一步一步构建成一个复杂的对象,将一个复杂对象的构建与它原创 2021-06-29 17:31:11 · 153 阅读 · 1 评论 -
JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?公司有个子服务较多,交互频繁的系统,有一些需要共享传输的对象,它们通过 JDK 序列化(Java Object Serialization)后进行交互;但是由于一些不可描述的历史原因,这些对象存在多个版本,每个版本中的属性不一致,且未设置 serialVersionUID。这阵子在做梳理/统一代码的工作,打算统一这些对象的版本和固定serialVersionUID,但是由于服务较多,上线发版时会有一段新老版本共存的时期,所以得原创 2021-06-25 17:32:17 · 387 阅读 · 0 评论 -
Java设计模式|建造者模式Builder Pattern
Java设计模式|建造者模式Builder Pattern前言:在日常生活中,我们可能会遇到这一类型的需求,例如一个实体类里有很多个属性,但是我们只想要其中的几种组合成一个新的对象,这个时候就可以使用建造者模式了,它提供了一种创建对象的最佳方式。建造者模式虽然比较好用,但是大家平时写代码的时候要谨记,不要滥用设计模式,不然的话可能会适得其反啊!建造者模式介绍:建造者模式又被称呼为生成器模式,这种类型的设计模式属于创建型模式,使用多个简单的对象一步一步构建成一个复杂的对象,将一个复杂对象的构建与它原创 2021-06-25 17:31:33 · 105 阅读 · 0 评论 -
Java测试框架系列:PowerMock使用系列-3:抑制不想要的行为
Java测试框架系列:PowerMock使用系列-3:抑制不想要的行为抑制不想要的行为总览在测试用例的类上使用 @RunWith(PowerMockRunner.class)注解。在测试用例的类上结合使用@PrepareForTest(ClassWithEvilParentConstructor.class)和suppress(constructor(EvilParent.class))注解,以禁止调用EvilParent类的所有构造函数。使用Whitebox.newInstance(Class原创 2021-06-25 17:30:46 · 863 阅读 · 0 评论 -
MQ选型对比RabbitMQ RocketMQ ActiveMQ Kafka(外加redis对比及其实现)
MQ选型对比RabbitMQ RocketMQ ActiveMQ Kafka(外加redis对比及其实现)rocketmq 4.3开始支持事务https://www.cnblogs.com/hzmark/p/rocket_txn.html参考:rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较redis vs rabbitmq可靠消费Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理RabbitMQ:具有消息消费确认,即使原创 2021-06-24 13:58:14 · 394 阅读 · 0 评论 -
MQ - RocketMQ底层原理和源码解析
RocketMQ底层原理和源码解析本文的内容主要包括:MQ的对比和选型、RocketMQ原理、RocketMQ源码解析、事务消息。Rocketmq性能压测客户端:https://github.com/Force-King/rocketmq-test一、MQ的对比和选型目前业界主要的消息中间件有:ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。其中开源的,社区比较活跃的是ActiveMQ、RabbitMQ、Kafka、RocketMQ。所以,我们做技术选型原创 2021-06-24 13:57:30 · 237 阅读 · 0 评论 -
JVM收集器CMS与G1区别和优缺点分析
【JVM性能优化】问题故障排查的解决方案(上)前提概要线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU的问题一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。原创 2021-06-24 13:56:31 · 669 阅读 · 0 评论 -
Spring源码系列- Spring Beans - 核心类的基本介绍
Spring源码系列- Spring Beans - 核心类的基本介绍读过上一篇文章的读者应该都能对Spring的体系结构有一个大致的了解,在结尾处,我也说过会从spring-beans包开始分析,在重复一下beans它主要与配置文件的解析、管理、创建bean及IOC/DI相关。beans和context就是Spring实现IOC容器的基础,当然在本章只会提及beans不会提及context当然在以后的文章会提及到context包在beans包中最核心的的一个类之一就是DefaultListableB原创 2021-06-23 14:33:12 · 272 阅读 · 0 评论 -
Spring源码系列 — Bean生命周期
Spring源码系列 — Bean生命周期前言上篇文章中介绍了Spring容器的扩展点,这个是在Bean的创建过程之前执行的逻辑。承接扩展点之后,就是Spring容器的另一个核心:Bean的生命周期过程。这个生命周期过程大致经历了一下的几个阶段在本节中重点介绍实例化、填充装配、唤醒Aware方法、BeanPostProcessor后置处理、初始化等过程。关于Bean的销毁过程这里不再介绍。由于Bean的生命周期的维护过程实际上都是由BeanFactory负责,所以在开始Bean的生命周期过程详解之前原创 2021-06-23 14:31:43 · 238 阅读 · 0 评论 -
Spring源码搭建教程(超级简单清晰)(完整版)
Spring源码搭建教程(超级简单清晰)(完整版) Hello,大家好!菜鸟程序员又来写文章了。这次给大家带来的是Spring源码搭建,想学习Spring源码的同学,记得一定要收藏! 1.工具下载(注意版本一定要一致,否则组建时会报错) IntelliJ IDEA 2020.3.1 x64 下载地址:https://www.jetbrains.com/idea/JDK 11.0.7 下载地址:htt原创 2021-06-22 15:27:34 · 1166 阅读 · 0 评论 -
Spring源码分析(一)
Spring源码分析(一) (Spring 4.3.21) 一:Core Container(核心容器) spring-core和spring-beans模块提供框架的基础部分,包括IOC和依赖注入特征。这 BeanFactory是工厂模式的复杂实现。它消除了对程序化单例的需求,并允许你从实际程序逻辑中分离依赖项的原创 2021-06-22 15:26:49 · 192 阅读 · 0 评论 -
Spring源代码分析-代码下载
Spring源代码分析-代码下载一. 简介spring的大名想必做过Java后台的同学都不会陌生,什么spring mvc, spring boot,spring全家桶等等,所以想系统学习下spring的源代码。而学习源代码的话,首先得去下载spring的源代码,目前spring的源代码都开放在github上面,在下面地址,大家去用git clone即可。https://github.com/spring-projects/二. spring结构简介spring有3个基础框架,其他的服务是基于这原创 2021-06-22 15:26:00 · 304 阅读 · 0 评论