java
文章平均质量分 78
Vainycos
愿望一定会实现.
展开
-
Forest声明式HTTP客户端框架漫谈
Forest为声明式HTTP客户端框架。将繁复的 HTTP 请求细节封装成 Java 接口 + 注解的形式,不必关心请求发送的具体过程。使用Forest极大的提高了便利性,也能够使得代码更容易维护。如果我们使用了IDEA,那么还可以搭配官方插件ForextX进行使用。Forest官网ForestX 是一款专为 Forest 提供支持的 IDEA 插件。原创 2023-06-14 14:13:03 · 2410 阅读 · 0 评论 -
JAVA SDK总结
封装SDK的思路就需要站在使用者的角度去考虑问题,尽量封装具体细节,只关注调用方式和结果。原创 2023-05-29 11:25:19 · 621 阅读 · 0 评论 -
使用Aop记录Controller层日志信息
为了记录controller的请求参数,请求地址,类名方法等日志信息,以及相关的RT请求耗时时间。在之前总结过RT时间的记录博客,以下将会介绍一种更加优雅的方式。原创 2023-05-09 15:08:17 · 504 阅读 · 0 评论 -
SpringBoot-Controller入参去除前后空格
面临测试需求存在着用户输入的参数前后空格需要统一做去除,所以找个通用的解决方案进行统一处理。若需要处理一些特殊字符,例如%字符会穿透like查询查出所有记录的解决方案,可以参考该文,原创 2023-05-08 16:41:54 · 2779 阅读 · 0 评论 -
扩展ruoyi框架的异步线程并继承线程用户
若依框架扩展支持异步线程池,并且能够将线程用户进行继承。原创 2023-05-06 15:09:14 · 341 阅读 · 0 评论 -
使用javassist进行magic-api增强改造
什么是magic-api,推荐查看官网https://www.ssssssss.org/magic-api/目前遇到需要扩展magic-api的properties,而源码并不支持在左侧列表树接口中返回properties属性。原创 2023-05-01 09:00:00 · 549 阅读 · 0 评论 -
Java读取传输FTP文件方案-源码分享
上述源码仅供参考,具体需根据实际业务需求进行调整。主要注意点为读取中文文件名的文件以及获取ftpClient文件流之后的处理,已标注在注释中,希望能够帮助读者少踩坑。基于ftp协议的文件变化主动监听FTPSClient解决无法获取文件问题(listFiles为空)ftpClient.retrieveFileStream导致FTPClient的后面操作失败。原创 2023-04-23 10:18:39 · 854 阅读 · 0 评论 -
Java音频文件统一处理-源码分享
源于最近的项目接触到了音频文件的转换及相关操作,所以做个记录以供大家参考。原创 2023-04-23 09:56:01 · 1022 阅读 · 0 评论 -
cola漫谈
cola是一个绝佳的DDD领域模式驱动的工程参考。原创 2023-02-27 18:38:59 · 779 阅读 · 0 评论 -
mybatis-plus的分页/插件分析
正常sql的limit分页逻辑我们已经司空见惯,但是对于mp里的默认分页方法进行深入分析有助于我们了解mp框架,实际上也是使用了拦截器的拦截功能,并进行相关的增强作用。mybatis-plus分页查询详解Java干货丨手撕MybatisPlus分页原理。原创 2023-02-09 14:48:06 · 2275 阅读 · 0 评论 -
maven的build节点配置
虽然一直在使用maven,但是对于maven的配置还没有深入的了解过。本文以build节点为切入点,主要解释相关maven打包使用到的一些基础配置。原创 2023-01-17 16:07:08 · 2085 阅读 · 0 评论 -
feign漫谈
远程调用框架新建一个maven项目作为父工程。原创 2023-01-16 17:29:19 · 466 阅读 · 0 评论 -
sa-token进阶
介绍sa-token实际应用的高阶用法。原创 2022-12-19 16:39:58 · 1269 阅读 · 1 评论 -
java-函数式编程浅谈
以数学中的函数作为切入点,只关注参数之间的运算满足某种规则,例如z=x+y。}没错,定义一个BinaryOperator函数一行就能解决,就是如此优美(不过需要注意的是jdk8及以上才支持这种写法)。带着欣赏的角度,我们继续深入理解函数式编程的魅力。原创 2022-12-19 11:15:00 · 551 阅读 · 2 评论 -
Sa-Token浅谈
官网介绍的非常详细,主要突出这是一个轻量级鉴权框架的特点,详情可自行访问:https://sa-token.dev33.cn/doc.html#/原创 2022-12-14 17:24:48 · 5275 阅读 · 0 评论 -
SpringSecurity主要流程及扩展实现
SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。个人理解就是一个用户请求过来,过滤器就像漏斗一样进行层层筛选,直到检验用户请求合法则放通否则失败。原创 2022-12-09 16:07:14 · 1007 阅读 · 1 评论 -
mybatis-plus支持入参%的模糊匹配查询及get请求支持特殊字符
使用like模糊匹配传入%入参不生效。原创 2022-11-15 10:01:13 · 3085 阅读 · 0 评论 -
jieba分词器使用指南
简单易用的分词器分享,使用jieba分词java版(支持中文)实现。原创 2022-11-03 10:59:47 · 793 阅读 · 0 评论 -
Java泛型漫谈
泛型是JDK5引入的新特性,本质是参数化类型。在定义的时候无需知道参数的具体类型,即将参数类型推迟到使用时决定。这种参数类型可以体现在类,接口,方法中,我们可以称呼为泛型类,泛型接口,泛型方法。原创 2022-10-27 11:18:31 · 557 阅读 · 0 评论 -
springsecurity-shiro获取登录用户详解
SpringSecurity与Shiro实现原理类似。Shiro更轻量,SpringSecurity与Spring结合度更高也更复杂。安全认证之SecurityContextHolderSpringSecurity登录用户数据获取Spring Security 详解Shiro - Shiro简介;Shiro与Spring Security区别;Spring Boot集成Shiro。原创 2022-10-26 11:04:52 · 5014 阅读 · 0 评论 -
springboot集成mybatis-plus遇到的坑(改造ruoyi-vue)
RuoYi-Vue是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。以上来自官网介绍,总之是一个脚手架功能的开源框架。具体内容详见官网:https://doc.ruoyi.vip/ruoyi-vue/原创 2022-10-25 14:01:43 · 1801 阅读 · 4 评论 -
java8新特性-stream流漫谈
使用stream流能够更加优美,真正做到像写诗一样写代码。原创 2022-10-24 17:19:28 · 2346 阅读 · 2 评论 -
Java实现数据库敏感信息脱敏方案
针对特定属性下的数据加密传输,例如手机号,身份证,地址信息等。原创 2022-10-24 14:53:23 · 1903 阅读 · 0 评论 -
实现全局异常处理
通常,我们除了描述jdk默认的异常之外,还会自定义契合业务主体本身的业务异常。} }/*** 自定义异常return AjaxResult . error("自定义异常被捕获");}实际场景中,我们为了方便管理异常情况,通常会定义一个异常结果枚举类,然后自定义异常只需要传入对应枚举类参数即可。接下来提供一套完整的实战环境下的异常处理以供参考,首先定义一套参考的枚举类(参考自GitHub仓库-miaosha:https://github.com/qiurunze123/miaosha)原创 2022-10-24 11:22:48 · 2731 阅读 · 0 评论 -
SpringBoot源码分析
环境信息就是profiles和配置文件以及系统环境信息的封装,在开发过程中我们根据官方指南和经验得知一个profile是有一套配置信息的,那么它的功能实现肯定是首先获取profile,然后再获取配置。但是我们在环境对象创建的时候发现它已经初始化了4个配置集,并且包含了系统配置(当前应用所运行的载体的配置信息)。初始化BeanDefinitionLoader:通过观察它的内部属性和构造方法可以看出,它支持加载基于编程方式配置的类,支持xml文件配置的类,支持groovy和xml混合定义的类的加载。原创 2022-10-23 15:18:46 · 156 阅读 · 0 评论 -
使用Tlog记录traceId/spanId
记录traceId/spanId的必要性,可以理清楚一整个调用链路。原创 2022-09-26 10:30:42 · 1129 阅读 · 0 评论 -
Optional在配置变量注入的应用
简单叙述关于项目配置文件的变量读取和相关操作。原创 2022-09-05 10:42:40 · 225 阅读 · 0 评论 -
排查生产环境:MySQLTransactionRollbackException数据库死锁
至此,本次MySQL线上死锁问题就已结束排查。由于线上问题一般都比较复杂或者比较难复现,所以排查线上问题首先需要分析日志,这个时候就要求我们程序的日志要尽可能做到完善。然后就是大胆猜测,小心验证,其中不免会经历多次推到重来的历程。此后该问题再次出现就不会再成为你的问题。记一次生产环境Java服务synchronized死锁的处理过程注意Synchronized与@Transactional不能在同一方法上使用的bug@transactional和synchronized同时使用不能同步的问题。......原创 2022-08-02 13:48:58 · 8388 阅读 · 0 评论 -
jar包应用的简单启停脚本
jar包的简单启停脚本,方便管理。原创 2022-07-27 21:07:18 · 1078 阅读 · 0 评论 -
java实现监听每个服务的RT
响应时间(responsetime简称RT)是从系统接收请求开始到返回响应之间的时间跨度,是一项极其重要的性能指标。它可以从侧面反映系统的整体吞吐量,也是业务请求的性能好坏的判断依据。原创 2022-07-27 20:38:11 · 841 阅读 · 0 评论 -
Jmeter使用指南
jmeter的使用说明,主要在Windows环境下实现一个简单的压测。原创 2022-04-11 16:01:41 · 997 阅读 · 0 评论 -
Spring Event事件发布机制
文章目录一. 什么是Spring Event二. 为什么要用Spring Event三. 使用Spring Event实现邮件发送使用Spring Event优雅实现业务需求。一. 什么是Spring Event从英文释义来看,Event=事件,Spring即在Spring框架下。那么这就是一个Spring框架事件,结合生活实际来看,发生了一个事件需要被应急响应。举个例子,我们发生了火灾事件,那么该事件需要被火警接线员知情(即有人拨打119电话告诉一声),出警(接线员通知消防员进行响应),灭火(原创 2022-03-11 20:09:24 · 3735 阅读 · 0 评论 -
Java实现DFA算法敏感词过滤
Java实现DFA算法敏感词过滤。文章目录一. 应用场景二. 实现思路三. 源码实现一. 应用场景模拟非法词汇自动替换成*字符,且敏感词汇支持动态调整。效果如下,若配置了敏感词:今天,则当用户在输入:今天,天气真不错。实际应该输出:** **,天气真不错 **二. 实现思路使用MySQL作为敏感词库使用DFA算法实现文字过滤Q:什么是DFA?DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向.原创 2022-03-02 16:50:42 · 7127 阅读 · 7 评论 -
实现定时任务配置中心
定时任务在实际业务中经常会遇到,我们常用的解决方法是使用@Scheduled注解进行一键完成。而如果我们需要将定时任务的定时执行周期抽离出来,在程序运行的时候用配置的形式进行注册新的定时任务或者调整之前已经设置好的定时任务执行周期,我们需要将该部分的配置信息存入库中或者写到配置文件中,通过动态读取来调整定时任务执行情况。一.设想场景假设我们有一个发送当日天气提醒消息的定时任务,从一开始设计该功能的时候,产品经理只跟你交代了一句每天早上8点发送消息。于是你就在发送提醒消息的代码块上加上@Schedu.原创 2022-02-25 20:29:00 · 436 阅读 · 0 评论 -
Spring Boot使用Retry机制实现失败重试
在实际应用过程中,我们时常会遇到需要重试的机制。例如发送短信的时候,发送失败一次后需要再次发起第二次或者第三次重试,常规的思路就是记录当前短信对应的发送失败次数,当小于三次且均为失败时就发起请求。这里我们介绍一种极为方便的重试机制,springboot下整合retry。一. 使用场景发送短信请求,若失败则需要再次发起请求,若一直失败则需要满足达到了两次重试请求。若不引入任何重试机制,我们的实现逻辑大体如下,记录短信唯一标识以及对应的请求历史和请求结果,若失败则累加失败次数,直到某一次成功了,或者重.原创 2022-02-24 10:36:51 · 4096 阅读 · 0 评论 -
数据库版本管理:flyway
flyway,是一款数据库迁移工具,支持SQL脚本的自动备份和执行,在项目中非常方便我们进行部署应用到多套环境中初始化数据库或者升级数据库表的自动化工作。文章目录一、为什么要用flyway二、怎么用flyway一、为什么要用flyway 我们类比一下现在经常用到的Git版本控制工具,能够很好的管控我们的代码库版本,实现版本回溯、版本回退、版本提交等功能。 而flyway实际上就是针对数据库层面的一种版本控制工具,它也能够很好的支持数据库版本的回溯、版本回退、版本提交等功能。 在项目初建的.原创 2021-12-05 20:56:38 · 825 阅读 · 0 评论 -
Logback-日志文件按日期切分解决方案
Logback,是一个开源的日志组件,同样也是由log4j创始人设计。天然支持SLF4J(Simple Logging Facade For Java)。在Spring Boot中,使用Logback是最优的选择,可使用logback-spring.xml进行配置使用。实际项目中经常需要通过日志文件来定位,不同于本地测试开发环境,线上的日志文件如果不做按日期切割整理就会比较乱,而且打开日志文件需要很久。本文旨在提供多种实际可用的日志配置文件模板,便捷可用。文章目录一、Logback使用二、默认实现.原创 2021-11-23 14:38:53 · 4108 阅读 · 0 评论 -
使用mybatis-plus逆向工程生成DO、Mapper等文件
映射数据库表结构快速生成相关实体层、Mapper层等java文件。新建一个SpringBoot项目引入以下pom依赖(采用最小依赖原则)但凡缺一个都跑不起来,以至于在测试的时候出现了各种奇怪的错误,试错之后才得出以下四个依赖是必不可少的,其中版本号自己根据需要来选择。<!-- mybatis-plus 代码生成器 --><dependency> <groupId>com.baomidou</groupId> <art.原创 2021-10-18 16:14:17 · 1095 阅读 · 0 评论 -
MySQL设置变量以及如何在Mybatis中使用
在MySQL中设置变量,并在Mybatis中结合使用。在程序中设置变量是一种很常见的行为,例如在java中:int a = 1;String str = "hello world";而其实在MySQL中也有相应的变量设置,例如:SET @a = 1;SET @str = 'hello world';SELECT @a, @str;在MySQL中设置变量的基础格式规范为@开头,后面写变量名。注意,若不以@开头则设置变量失败。而目前我们使用一个@符号开头定义的变量为用户变量,其他还.原创 2021-10-15 11:17:38 · 2867 阅读 · 12 评论 -
使用AOP切面实现日志记录
本文参考EL-ADMIN 后台管理系统,学习相关AOP(Aspect-Oriented Programming:面向切面编程),并实现使用AOP进行日志管理。特别感谢该项目的源代码作者:elunez文章目录一、准备阶段二、编码阶段三、使用阶段一、准备阶段SpringBoot中需要先引入aop依赖<!-- Mybatis-plus --><dependency> <groupId>com.baomidou</groupId> <.原创 2021-09-29 16:32:56 · 1448 阅读 · 0 评论