- 博客(243)
- 资源 (5)
- 收藏
- 关注
原创 Spring Boot 最佳实践:构造器注入+策略工厂,让你的代码更健壮、更可测
本文介绍了在Spring Boot中使用构造器注入构建策略工厂的最佳实践。首先定义策略接口BizStrategy,包含执行方法和类型标识方法。然后通过自定义注解@BizTypeAnnotation标记策略实现类(如Strategy01、Strategy02),包含服务编码和场景等元信息。核心是策略工厂BizStrategyFactory,通过构造器注入所有策略实现,利用注解元信息构建策略映射表,提供根据服务编码和场景获取具体策略的方法。这种设计完美结合了Spring的自动收集能力和类型安全,避免了硬编码,实
2026-06-26 15:12:30
407
原创 【看完不亏系列】spring boot 使用tcp协议接收客户端发送的xml数据,并处理数据
本文介绍了在Spring Boot中实现TCP服务器接收并处理XML数据的方法。首先创建TcpServerService组件,通过@PostConstruct注解在项目启动时自动开启ServerSocket监听指定端口(8090),使用线程池处理客户端连接请求。然后实现ClientHander客户端处理器(原型Bean),负责解析固定6位长度头+XML内容的报文格式,处理业务逻辑后返回响应。文章提供了完整的代码实现,包括异常处理、资源释放和日志记录等功能,展示了Spring Boot与TCP协议整合处理XM
2026-06-26 10:56:28
157
原创 java8日期工具类DateTimeUtil【全部使用LocalDateTime 和LocalDate】
java8日期工具类DateTimeUtil【全部使用LocalDateTime 和LocalDate】
2026-06-23 11:17:35
292
原创 【看完不亏系列】spring boot多yml配置+pom.xml配置多spring.profiles.active激活
本文介绍了Spring Boot项目通过Maven的pom.xml动态管理多环境配置的方法。通过在application.yml中使用@env@占位符引用Maven属性,并在pom.xml中定义不同<profile>(dev/uat/prod)设置对应的<env>值,实现环境切换。默认激活dev环境,打包时通过Maven命令-P参数指定profile即可自动匹配对应配置。配置完成后需刷新Maven使变更生效,IDEA面板会显示当前激活的环境。这种方案实现了配置与代码分离,便于多环境部署。
2026-06-23 09:23:45
454
原创 IpUtil 获取客户端真实IP地址和获取服务器ip地址工具类
该工具类提供获取客户端真实IP和服务器IP的功能。getIp()方法通过检查多个代理头(X-Forwarded-For等)获取客户端真实IP,支持多层代理,并对无效IP进行校验和兜底处理。getLocalIp()方法通过遍历网卡信息获取服务器IPv4地址,跳过回环/虚拟/未启用接口。两者在异常时默认返回"127.0.0.1"。代码包含详细日志记录,便于调试,并通过方法封装保障了健壮性,适用于Web服务场景的IP获取需求。
2026-06-22 14:59:53
273
原创 OkHttp3Utils 工具类(基于 4.9.3版本)
OkHttp3 工具类(基于 4.9.3)特性: - 单例 OkHttpClient(连接池、线程池复用) - 同步/异步 GET 请求 - 同步/异步 POST 请求(支持 FormBody、JSON、普通字符串、字节数组) - 自定义 Headers、超时
2026-06-22 14:13:53
179
原创 【Spring 中使用 ShedLock 实现分布式锁任务调度】
摘要:本文介绍如何在Spring中使用ShedLock实现分布式定时任务调度,解决多实例环境下任务重复执行问题。ShedLock通过共享存储(如数据库)确保同一时间只有一个节点执行任务。 关键步骤: 依赖配置:引入shedlock-spring和JDBC Provider依赖。 数据库准备:创建shedlock表记录锁信息。 Spring配置:配置LockProvider并启用@EnableSchedulerLock。 任务注解:在@Scheduled方法上添加@SchedulerLock,定义锁名称和超时
2026-06-22 10:48:33
316
原创 mysql8.0 创建全文索引及mysql 8.0.32创建全文索引报错 Duplicate entry null-null的解决方案
mysql8.0 创建全文索引及mysql 8.0.32创建全文索引报错 Duplicate entry null-null的解决方案
2025-04-18 13:26:46
1191
原创 mysql窗口函数(Window Functions)详解2增强
窗口函数是 SQL 中的一种强大工具,它允许你在不改变原始表行数的情况下对数据进行聚合计算。与传统的 `GROUP BY` 不同,窗口函数不会将多行合并为一行,而是可以在每一行上应用聚合操作,同时保留原始的行结构。这使得窗口函数非常适合用于复杂的分析任务
2025-02-10 11:10:57
1020
原创 mysql窗口函数(Window Functions)详解
窗口函数是 SQL 中的一种强大工具,它允许你在不改变原始表行数的情况下对数据进行聚合计算。与传统的 `GROUP BY` 不同,窗口函数不会将多行合并为一行,而是可以在每一行上应用聚合操作,同时保留原始的行结构。这使得窗口函数非常适合用于复杂的分析任务
2025-02-08 16:11:22
1179
原创 Spring/Spring Boot服务端主动推送技术【server send event】简称sse,看完不亏系列
Spring/Spring Boot服务端主动推送技术【server send event】简称sse,看完不亏系列Spring Boot服务端主动推送消息给前端。
2024-04-15 23:38:11
4255
原创 看了mysql8.0官网,发现set sql_mode原来有可以不用修改my.cnf或mysqld-auto.cnf就可以持久化系统变量的方式
看了mysql8.0官网,发现set sql_mode原来有可以不用修改my.cnf或mysqld-auto.cnf就可以持久化系统变量的方。mysql set 语法全解,看完不亏系列
2024-04-14 10:48:00
1606
原创 绘制一张图片,并将这张图上传到远程服务器【即对接远程服务器的文件上传接口】,不调用feign。从指定url中获图像数据,并上传到远程文件服务器【不调用feign】
绘制一张图片,并将这张图上传到远程服务器【即对接远程服务器的文件上传接口】,不调用feign。从指定url中获图像数据,并上传到远程文件服务器【不调用feign】
2023-11-06 10:22:56
178
原创 23种设计模式之【装饰设计模式】实战--咖啡搭配及价格动态计算
装饰者设计模式:在不改变原有对象功能代码的情况下,动态地给一个对象添加新功能。* 一个抽象类,两个分支 * | ——单点商品【组件】 * | ——装饰类(持有被装饰对象的引用)装饰类和被装饰的类具有相同的父类 * 何时使用:在不想增加很多子类的情况下扩展类。* 优点:装饰类和被装饰类可以独立发展,不会相互耦合,既是is a Component 又有 has a Component * 装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。* 缺点:多层装饰比较复杂。
2022-09-08 22:50:49
587
原创 再也不怕面试官问spring service 是jdk动态代理还是cglib动态代理了 一文秒懂
//如果该controller、service、dao 实现了接口 使用jdk动态代理 如果 AdvisedSupport#setOptimize 为TRUE 或者 // 或者 AdvisedSupport#setProxyTargetClass 为TRUE // 或者 AdvisedSupport#setInterfaces 为TRUE //使用cglib动态代理...
2022-06-30 15:50:52
417
原创 23种设计模式之jdk动态代理设计模式实战
JDK中的动态代理是通过反射类Proxy以及InvocationHandler回调接口实现的;JDK中所要进行动态代理的类必须要实现一个接口需求:计算一个类中,每个被调用的方法运行时长
2022-06-28 16:19:51
365
原创 java自定义回调函数 需求描述:我正在敲着代码 让弟弟去帮我买瓶可乐,弟弟卖完可乐之后通知我
java自定义回调函数 需求描述:我正在敲着代码 让弟弟去帮我买瓶可乐,弟弟卖完可乐之后通知我
2022-06-13 14:33:45
216
原创 史上最全的Python字符串格式化【字符串模板】总结【学习Python的第一天,记录总结一下,以备不时之需】
Python字符串格式化的几种方法wc 老外直呼内行方法一: 使用%s格式化方法二: 使用字母f加字符串格式化,与方法三类似方法三: 方法三:使用{}格式化方法三: 使用 string 的Template对象格式化贴上代码直接直观感受一下吧wc 老外直呼内行方法一: 使用%s格式化方法二: 使用字母f加字符串格式化,与方法三类似方法三: 方法三:使用{}格式化方法三: 使用 string 的Template对象格式化贴上代码直接直观感受一下吧学习Python的第一天,记录总结一下,以备不
2022-01-20 14:19:59
927
原创 使用Java8 流API 按照指定区间进行分组【Java8按区间分组】【Java8按范围分组】&使用Java8 流API 等值分段,每n个为一组
//需求:给定一个对象列表,使用Java8 流API 按照指定区间进行分组,// 字数为2到5字的为一组,字数为8到9字的为一组,//字数大于9字的为一组,并统计每组的数量//后期需求变更,可能会添加额外的组...
2022-01-08 13:27:21
2102
2
原创 mysql查找出每个用户最新的一条订单的5种解决思路
mysql查找出每个用户最新的一条订单的5种解决思路一、使用窗口函数使用窗口函数– 使用窗口函数:可以视为规范固定写法row_number() over(partition by 需要分区的列 order by xxx [asc|desc])1.解释row_number() 函数表示行号,如果后面紧跟 over函数,则表示窗口函数,窗口函数分为:聚合窗口函数和非聚合窗口函数像:row_number() 、rank() 、dense_rank()等后面加上over子句就是非聚合窗口函数,像m
2021-11-11 23:53:09
8882
2
原创 Linux shell 编程基础之一
Linux shell 编程基础变量变量命名local 声明局部变量,只在函数内生效转义:笔记本电话键盘第二排左上角的字符都是元字符,需要使用\转义引用:脚本或命令的返回值 $?命令替换变量shell和javascript 一样,是一种弱类型的脚本语言,所以shell变量也是弱类型的,即不需要指定其变量类型如:定义金额为2,并显示;shell变量严格区分大小写局部变量:在同一个shell窗口中有效,不同shell窗口相互独立全局变量:即环境变量,在shell脚本中,即在xxx.sh文
2021-03-19 03:31:10
783
原创 mysql性能优化
1.MySQL版本: 5.x: 5.0-5.1:早期产品的延续,升级维护 5.4 - 5.x : MySQL整合了三方公司的新存储引擎 (推荐5.5) 安装:rpm -ivh rpm软件名 如果安装时 与某个软件 xxx冲突,则需要将冲突的软件卸载掉: yun -y remove xxx 安装时 有日志提示我们可以修改密码:/usr/bin/mysqladmin -u r...
2019-07-03 18:17:15
2166
原创 java System.out.print();在控制台上修改输出颜色
注意:我使用的编辑器是vs code,IDEA 也是可以的,eclipse就不知道了有什么不懂的,欢迎下方评论如果我们想在控制台上输出其它颜色,比如红色,这是我们可能会用System.err.println()但是如果我们想输出其它颜色呢。我们可以如下操作之前一直习惯使用println()方法,不过println()方法要使用+拼接字符串,使用fromat()方法与使用printl...
2019-06-14 16:31:49
31026
16
原创 模拟100用户并发访问数据库,结果测的MySQL并发访问数是大概是100,否则会抛出 too many connection 异常
编写数据库连接工具类package com.security.ljh.secutiryDemo;import java.sql.*;/** * 连接数据库 */public class MysqlUtils { private static final String URL="jdbc:mysql://localhost:3306/test"; static {...
2019-05-31 15:41:55
1394
原创 java8 新的日期时间API描述
包java.util.time日期,时间,瞬间和持续时间的主要API。例子链接:LocalDate之呕心沥血小Demo请参阅: 说明 类摘要 类 描述 Clock时钟 一个时钟,使用时区提供对当前时刻,日期和时间的访问。 Duration持续时间 基于时间的时间量,例如'34.5秒'。 Ins...
2018-11-23 01:49:41
414
原创 java7种常见的排序算法:选择排序、冒泡排序、直接插入排序、快速排序、希尔排序、归并排序、堆排序
链接:java 7 种算法的完整实例及测试一、选择排序/** * 选择排序原理:挨个比较 * 外层 循环长度-1次,内层循环每次从第二个开始 * 将外层循环中的值挨个与内层循环中的元素作比较 * 时间复杂度为:O(N^2) * * @param array * @return */ public st...
2018-09-28 01:45:19
457
转载 java数据结构之手动实现单链表
package com.example.demo;// 1、定义要保存对象的类:class Phone {// 此类提供要保存的数据 private String brand; private double price; public Phone() { } public Phone(String brand, double price) { ...
2018-09-24 16:27:16
239
原创 Java快速失败(fail-fast)和安全失败(fail-safe)区别
非线程安全的集合类都是快速失败的线程安全的集合类以及java.util.concurrent包下的集合类都是安全失败的 /*一、快速失败当在迭代一个集合的时候,如果集合中的元素大于等于3个,即使在同一线程,如果使用list.remove(ele)或list.add(ele)而不是使用迭代器的remove(),同样会抛出异常Exception in thread "main" java...
2018-09-17 21:45:53
329
mibble-2.9.3 和 mibble-mibs-2.9.3.rar
2019-05-31
计算机程序设计艺术(中文版)1-3卷
2018-09-26
微软Vbscript手册vbs.chm
2016-06-16
jQuery 中文手册
2016-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅