自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sun的个人博客

认识自我,保持对无限美好的绝对向往!

  • 博客(357)
  • 收藏
  • 关注

原创 「2024 博客之星」自研Java框架 Sunrays-Framework 使用教程

一个企业级Java脚手架,官方文档. http://sunrays.wiki/

2025-01-21 09:50:38 5244 110

原创 工厂+策略最佳实践

工厂+策略首先要有一个策略的枚举类,设置四种题目类型的枚举,然后一个策略接口,有两个方法,一个方法返回当前策略的枚举类型,另一个方法就是对目前题目类型的处理逻辑,去实现接口即可。接下来就要实现一个策略工厂,使用Spring的属性注入,将四种策略注入进来,然后在Bean的初始化阶段,将四种策略的List转换为Map,最后提供一个get方法,可以根据题目类型的枚举去获取不同的策略。

2025-02-18 08:40:25 2015 60

原创 策略+适配器模式详解

适配器模式其实就是自己有一个接口,然后第三方有一个服务,就需要一个适配器,这个适配器就需要实现自己的接口,然后聚合第三方的接口,来完成自己接口的对应功能。策略模式,首先要定义一个策略接口,然后每个具体的策略都要去实现这个策略接口,接下来就要有一个上下文,这个上下文可以根据不同的类型来设置不同的策略。

2025-02-18 08:38:30 353 4

原创 模板方法+生成器模式详解

*** Description: 抽象类*//*** 模板方法*/// 先调用抽象方法// 然后根据钩子方法的返回值来决定是否要调用基本方法/*** 基本方法(抽象类写好的方法)*/System.out.println("基本方法被调用!");/*** 抽象方法(交给子类去实现,也只有子类才可以访问)*//*** 钩子方法(用来改变模板方法的行为,子类可以去重写)* @return 是否调用基本方法,默认为true*/

2025-02-17 09:51:11 349 5

原创 三种工厂模式详解

工厂方法的核心就是一个工厂只负责创建一个对象。比如, MySQL和SQLServer对User表的SQL操作是不同的,所以就设计一个 MySQL工厂和一个SQLServer工厂,然后目的就是创建各自的操作User表的对象。现在可以开始造对象了,首先需要一个IUser接口,然后就是MysqlUser对象和SqlserverUser对象。最后不同的工厂,返回对应的对象即可。其实抽象工厂就是数据库工厂从创建一个表的CRUD变成了创建多个表的CRUD。简单工厂就是很直接的根据传入的类型去返回不同的对象而已。

2025-02-17 09:47:39 1284 35

原创 八种单例模式详解

单例模式共有八种,其中包含几种典型错误!第一种是通过静态变量来实现,也就是利用了类只加载一次的特性去完成的。第二种是通过静态代码块来实现对静态变量的赋值,本质跟第一种没有区别。第三种是想要实现一个懒汉式,就直接判断变量不为空的时候再赋值,但是会有线程安全问题。第四种是为了保证线程安全,就采用了同步方法,这样虽然可以解决问题,但是锁的粒度太大。

2025-02-16 11:02:56 1548 2

原创 HashMap源码分析

HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。HashMap可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。JDK1.8 以后的HashMap。

2025-02-16 00:15:00 617

原创 ArrayList源码分析

ArrayList的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList继承于,实现了ListCloneable这些接口。所谓模板方法,就是假设所有方法都有具体的实现了,并基于这些方法来编写更多的模板,他在这里就是假设基础的方法都有实现了,来封装了List的迭代器操作,使得子类在实现基础方法之后,直接调用方法即可获取迭代器。

2025-02-15 03:30:00 1158 3

原创 MyBatis-Plus模块扩展分页查询

【代码】MyBatis-Plus模块扩展分页查询。

2025-02-14 09:00:13 717 1

原创 ThreadLocal源码分析

数组中定位,如果定位的位置已经有了数据,则会将未过期的数据放到最靠近此位置的。遍历散列数组,从开始位置向后探测清理过期数据,将过期数据的。实现原理是子线程是通过在父线程中通过调用。沿途中碰到未过期的数据则将此数据。数据距离正确的桶的位置更近一些。的构造方法中被调用。

2025-02-14 08:56:35 1386 35

原创 SpringMVC请求执行流程源码解析

【代码】SpringMVC请求执行流程源码解析。

2025-02-13 09:41:14 732 1

原创 SpringMVC环境搭建

【代码】SpringMVC环境搭建。

2025-02-13 09:40:05 843 1

原创 工具模块新增JSON格式化打印工具类

由于有的时候需要日志打印json,但是如果不格式化输出,json数据很难看,所以就使用这种方式进行json的格式化输出。

2025-02-10 13:07:53 759 9

原创 微信支付模块封装starter

3.WxPayProperties.java 微信支付的属性配置4.WxPayAutoConfiguration.java 初始化商户配置以及注入自定义的WxPayService5.spring.factories 指定自动配置类6.WxPayUtil.java 微信支付的工具类7.实体类1.WxPayCallback.java 微信支付回调实体类2.WxPayPrePayEntity.java 微信预支付的实体类8.WxPayService.java 自定义的微信Native支付

2025-02-09 09:27:39 1922 69

原创 日志模块自定义@SkipLogAspect注解跳过切面

*** Description: 跳过日志切面的注解ElementType . METHOD , ElementType . TYPE }) // 可以标注在类或方法上 @Retention(RetentionPolicy . RUNTIME) // 运行时生效 public @interface SkipLogAspect {/*** Description: 跳过日志切面的注解。

2025-02-06 09:31:10 1647 55

原创 env模块上线解决方案

由于只有一个.env文件,并且是放在项目根目录下,所以在上线时是不会被打包的,那么就需要通过区分多环境来读取不同位置的.env文件即可。

2025-02-06 09:30:05 349 3

原创 # 修改banner读取版本号的方式

【代码】# 修改banner读取版本号的方式。

2025-02-05 10:02:02 270 2

原创 封装quickstart模块

【代码】封装quickstart模块。

2025-02-05 10:00:55 1095 2

原创 微信登录模块封装

【代码】微信登录模块封装。

2025-02-02 13:17:16 4641 58

原创 让banner.txt可以自动读取项目版本

【代码】让banner.txt可以自动读取项目版本。

2025-02-02 13:15:07 389 1

原创 RabbitMQ持久化队列配置修改问题

先是检查了一下死信交换机的相关配置是不是有问题,但是发现没问题,然后注意到了这个持久化队列的配置,因为前一天刚做完对mq的消息可靠性的配置,就想起了持久化队列的概念,保留元数据,在启动时自动恢复,我一想,既然是自动恢复的,那么我新加的配置肯定不能生效啊,所以就将交换机和队列都删除,重新启动,就好了。他说可能跟交换机创建的顺序有关,我就将死信交换机的创建放到了前面,但是还是报同样的错误。

2025-02-01 09:25:17 1079 4

原创 项目架构调整,切换版本并发布到中央仓库

2.配置gpg1.架构调整1.sunrays-dependencies(统一管理依赖和配置)1.作为单独的模块2.填写发布到中央仓库的配置1.基础属性2.基本配置3.插件配置3.完整的pom.xml2.sunrays-framework(统一管理子模块)1.继承sunrays-dependencies2.发布基本配置3.完整的pom.xml3.其余模块都继承sunrays-framework,如果需要发布,则需要填写发布基本配置https://central.

2025-02-01 09:22:06 1158

原创 ELK模块封装starter

【代码】ELK模块封装starter。

2025-01-31 11:03:58 672

原创 Java实现.env文件读取敏感数据

【代码】Java实现.env文件读取敏感数据。

2025-01-30 09:58:46 2240 50

原创 订单防重复提交:token 发放以及校验

【代码】订单防重复提交:token 发放以及校验。

2025-01-29 20:01:54 1146 3

原创 项目集成OpenFeign + cloud整体测试

【代码】项目集成OpenFeign + cloud整体测试。

2025-01-29 19:59:28 925 1

原创 项目集成GateWay

【代码】项目集成GateWay。

2025-01-28 16:40:33 1094 1

原创 项目集成Nacos

【代码】项目集成Nacos。

2025-01-28 16:39:37 1602 35

原创 装饰SpringMVC的适配器实现响应自动包装

*** Description: 忽略对返回结果的自动包装/*** Description: 忽略对返回结果的自动包装/*** Description: 忽略对返回结果的自动包装/*** Description: 忽略对返回结果的自动包装Retention;/*** Description: 忽略对返回结果的自动包装/*** Description: 忽略对返回结果的自动包装/**

2025-01-27 21:36:11 1120

原创 sunrays-framework配置重构

import org/*** Description: 配置文件已加载,Environment 对象已初始化* 使用 ApplicationEnvironmentPreparedEvent 读取 application.yml 文件中的 sun-rays-log4j2.home 和 sun-rays-log4j2.module 配置。

2025-01-27 21:34:54 1593

原创 AI智能日志分析系统

3.自动配置1.IntelligentAnalysisAutoConfiguration.java2.spring.factories2.combinations-intelligent-analysis-starter-demo1.目录结构3.application.yml4.IntelligentAnalysisApplication.java 启动类5.工具类1.MailUtil.java 发送邮件2.MethodCallChainUtil.java 根据堆栈信息从Git

2025-01-26 19:33:28 1506 7

原创 RabbitMQ模块新增消息转换器

【代码】RabbitMQ模块新增消息转换器。

2025-01-26 19:29:04 1030 2

原创 邮件模块封装starter

【代码】邮件模块封装starter。

2025-01-25 09:35:11 747 1

原创 OpenAI模块重构

【代码】OpenAI模块重构。

2025-01-24 09:40:54 2100 68

原创 日志模块升级,采用sleuth实现日志链路追踪

import org/*** Description: 线程池配置} }/*** Description: 线程池配置} }/*** Description: 线程池配置} }Bean;import org/*** Description: 线程池配置} }/*** Description: 线程池配置} }/**

2025-01-24 09:39:33 774 1

原创 自定义starter中的yml无代码提示

【代码】自定义starter中的yml无代码提示。

2025-01-23 09:34:24 178 6

原创 集成Sleuth实现链路追踪

【代码】集成Sleuth实现链路追踪。

2025-01-23 09:32:39 982 45

原创 RabbitMQ的消息可靠性保证

持久化队列可以保存队列的元数据,重启后自动恢复,惰性队列可以将所有的消息都持久化到磁盘,内存只保留最近的2048条消息。首先开启了消费者自动确认机制,如果消息消费失败,就进行重试。

2025-01-22 09:36:55 1585 5

原创 项目集成RabbitMQ

【代码】项目集成RabbitMQ。

2025-01-22 09:34:45 1713 2

原创 项目集成ELK

3.spring.factories4.pom.xml 引入common-log4j2-starter5.查看是否被父模块所管理2.核心3.ElkApplication.java4.查看是否由父模块管理2.安全组开放2.配置3.指定配置文件启动测试1.启动2.启动 common-elk-starter-demo2.修改output3.启动测试4.控制台输出正常2.查看日志2.使用Kibana进行查看1.访问http://guest:5601

2025-01-21 15:15:04 1299

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除