java
文章平均质量分 54
java
yueF_L
这个作者很懒,什么都没留下…
展开
-
规则引擎之LiteFlow应用
【代码】规则引擎之LiteFlow应用。原创 2024-04-10 18:14:05 · 676 阅读 · 0 评论 -
Spring Security 实现后台切换用户
【代码】Spring Security 实现后台切换用户。原创 2024-04-01 16:23:52 · 449 阅读 · 0 评论 -
@Validated自定义条件注解
在做微信小程序对接的时候,我们常常会传入开放环境,譬如: 要打开的小程序版本。正式版为"release",体验版为"trial",开发版为"develop",但是每次都要去写校验太麻烦了,我想直接用@Validated注解来做,但是里面提供的都不太合适,所以自己搞了一个自定义注解。这里引用了类 #ContainValueConstraintValidator,实现比较逻辑。原创 2023-03-21 15:15:55 · 330 阅读 · 0 评论 -
手机浏览器跳转微信小程序
渠道合作是用手机浏览器打开他们的页面,而我们又是微信小程序,要从手机浏览器跳到微信浏览器并完成支付功能。直接在码云就可以搜到,然后自定看下文档,挺简单,不懂的可以私信我。注意引入的版本,因为低版本可能找不到相关的API。我这里是用第三方SDK,maven引入。--微信小程序相关-->执行结果就是https地址。原创 2023-03-21 15:07:43 · 486 阅读 · 0 评论 -
MapStruct 使用
mapstruct 是专门用来处理上面常见实体类与属性类的属性映射的, 我们只需定义 mapper 接口,mapstruct 在编译的时候就会自动的帮我们实现这个映射接口,避免了麻烦复杂的映射实现。原创 2023-01-05 16:33:03 · 380 阅读 · 0 评论 -
springBoot 整合redisson实现消息订阅详细教程
springboot 整合redisson实现消息订阅原创 2022-09-02 16:32:13 · 1311 阅读 · 0 评论 -
基于Mybatis-Plus扩展批量插入或更新InsertOrUpdateBath
基于mybatisPlus扩展批量插入更新API原创 2022-08-30 11:54:04 · 6059 阅读 · 0 评论 -
SharedingSphere 自定义脱敏规则
文档地址:Yaml配置 :: ShardingSphere官方默认的脱敏可以看出使用的Type是aes算法、那么我们怎么实现自己的自定义规则呢。1. 实现 org.apache.shardingsphere.encrypt.strategy.spi.Encryptor; 接口2. 修改yml配置文件这里加密type写成自己自定义的,随意都可以的。然后在自己的实现类中将Type添加进来。编写init方法private final static Stri...原创 2021-12-02 12:31:37 · 701 阅读 · 0 评论 -
java 实现邮件服务
1. 首先我们要开启邮箱的POP3/SMTP服务可以看到我这里已经开启,流程是开启的时候会让你发送一条短信验证,之后验证成功会生成一串秘钥,秘钥待会我们是需要用到的。2. 引入maven 依赖 <!--邮件服务--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</ar..原创 2021-11-16 12:02:38 · 2988 阅读 · 0 评论 -
springboot 使用websocket技术主动给前端发送消息
springBoot2.0对WebSocket的支持简直太棒了,直接就有包可以引入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>...原创 2021-06-15 10:29:17 · 530 阅读 · 0 评论 -
Hutool 生成二维码 base64编码传给前端
// buffer BufferedImage image = QrCodeUtil.generate("http://admintest.xx.com/h5/#/?creditorId=" + arpCreditor.getCreditorId(), 100, 100); //输出流ByteArrayOutputStream stream = new ByteArrayOutputStream();try { ImageIO.write(image, "png", stream).原创 2021-05-04 15:44:09 · 4217 阅读 · 1 评论 -
alibaba transmittable-thread-local
需求场景ThreadLocal的需求场景即TransmittableThreadLocal的潜在需求场景,如果你的业务需要『在使用线程池等会池化复用线程的执行组件情况下传递ThreadLocal值』则是TransmittableThreadLocal目标场景。下面是几个典型场景例子。分布式跟踪系统 或 全链路压测(即链路打标) 日志收集记录系统上下文 Session级Cache 应用容器或上层框架跨应用代码给下层SDK传递信息使用类TransmittableThreadLocal来保存值原创 2021-03-16 15:52:55 · 488 阅读 · 0 评论 -
RabbitMQ 实战教程
RabbitMQ 实战教程1.MQ引言1.1 什么是MQMQ(Message Quene) : 翻译为 消息队列,通过典型的 生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。别名为 消息中间件 通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。1.2 MQ有哪些当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、原创 2021-01-29 14:33:23 · 516 阅读 · 2 评论 -
商品秒杀核心业务逻辑的处理-redisson的分布式锁
大家都知道在高并发的情况下,商品秒杀可能出现超卖现象,那么今天就针对这个用redisson锁来避免出现这个问题。首页我是模拟没有锁,任何控制的情况下,用jmeter压测,确实出现超卖。这代码就是简单获取到商品的秒杀ID然后进行库存的扣减。利用redisson 分布式锁<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artif.原创 2020-12-25 15:53:39 · 324 阅读 · 0 评论 -
java 获取多个类的字段合并去重
在做项目的时候遇到一个情况,是想要获取多个class的字段,然后合并去重,这种需求用java stream 来做最爽的。 /** * 不要过滤的字段 name 姓名 id_card_number 身份证号 | creditor_principal 债权金额本金 voucher_number 凭证号 * * @return 应该过滤的字段 */ private List<String> getFilterStr() {原创 2020-12-19 15:21:15 · 732 阅读 · 1 评论 -
RabbitMQ死信队列处理超时未支付的订单
前言:我们在抢购商品的时候总有这样的一种场景,就是我们已经抢购到我们的商品,但是由于我们某种原因没有及时的支付导致订单失效的情况。那么我们今天就用rabbitmq来实现这么的一个场景。“死信队列”,顾明思议,是可以延时、延迟一定的时间再处理消息的一种特殊队列,它相对于“普通的队列”而言,可以实现“进入死信队列的消息不立即处理,而是可以等待一定的时间再进行处理”的功能!而普通的队列则不行,即进入队列后的消息会立即被对应的消费者监听消费,如下图所示为普通队列的基本消息模型:而对于“死信队列.原创 2020-12-19 15:11:31 · 1820 阅读 · 4 评论 -
java stream流递归实现树形结构
sql 测试数据:DROP TABLE IF EXISTS `pms_category`;CREATE TABLE `pms_category` ( `cat_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类id', `name` char(50) DEFAULT NULL COMMENT '分类名称', `parent_cid` bigint(20) DEFAULT NULL COMMENT '父分类id', `cat_leve原创 2020-12-14 12:52:48 · 1126 阅读 · 0 评论 -
Retrofit 超好用的HTTP客户端
目录功能特性快速使用引入依赖定义http接口注入使用HTTP请求相关注解配置项说明高级功能自定义注入OkHttpClient注解式拦截器继承`BasePathMatchInterceptor`编写拦截处理器接口上使用`@Intercept`进行标注扩展注解式拦截器自定义`@Sign`注解实现`SignInterceptor`接口上使用`@Sign`连接池管理日志打印请求重试错误解码器全局拦截器全局应用拦截器全局网络拦截器熔断降级1. 开启熔断降级功能2. 配置降级规则(可选)3. @RetrofitClie原创 2020-12-09 18:47:18 · 1851 阅读 · 0 评论 -
java 随机验证码 、10 分钟有效、当天只允许使用10次
1.首先创建一个vo类存放我们验证码相关信息。import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;import java.util.Date;/** * @Author Lxq * @Date 2020/12/7 17:30 * @Version 1.0 * <p> * 存放验证码相关内容,这个.原创 2020-12-09 11:49:49 · 1480 阅读 · 0 评论 -
Java8两个集合(List)取交集、并集、差集、去重并集
public class CollectionsTest { public static void main(String[] args) { List<String> list1 = new ArrayList<>(); list1.add("1"); list1.add("2"); list1.add("3"); list1.add("4"); list1.add("5");.原创 2020-12-03 09:02:17 · 892 阅读 · 0 评论 -
TransactionSynchronizationManager
当我们有业务需要在事务提交过后进行某一项或者某一系列的业务操作时候我们就可以使用TransactionSynchronizationManager通过spring的aop机制将需要进行后置业务处理的操作,提交给spring的处理机制,并且切入到事务处理的后面。那我们一步步推进,首先使用spring使用aop机制TransactionAspectSupportpublic abstract class TransactionAspectSupport implements BeanFacto原创 2020-11-21 16:13:38 · 1231 阅读 · 0 评论 -
spring 事务回调
最近接到一个业务,其中我需要用做的就是插入用户数据到数据库,并发送短信给客户,所以我要保证一定是事务commit 之后,我才可以发送短信。所以我查找spring 资料,发现 TransactionSynchronizationManager(事务同步管理器)可以满足我的需求,接下我演示我的实现过程。1.定义事务回调的方法/** * 事务回调执行 * @author : lxq */public interface TransactionCallBackAction { /**原创 2020-11-15 22:24:26 · 1884 阅读 · 0 评论 -
java 部署命令
nohup java -jar arp-app.jar -Xms2g -Xmx2g -Djava.awt.headless=true --spring.profiles.active=test> info.log 2>&1 &原创 2020-11-15 17:00:57 · 281 阅读 · 0 评论 -
springboot security 自定义 AuthenticationEntryPoint
AuthenticationEntryPoint简介AuthenticationEntryPoint是Spring Security Web一个概念模型接口,顾名思义,他所建模的概念是:“认证入口点”。它在用户请求处理过程中遇到认证异常时,被ExceptionTranslationFilter用于开启特定认证方案(authentication schema)的认证流程。该接口只定义了一个方法 :void commence(HttpServletRequest request, HttpSer原创 2020-11-14 15:04:19 · 3229 阅读 · 0 评论 -
java 阿里oss对象存储
阿里云文档地址 :https://help.aliyun.com/document_detail/32009.html?spm=a2c4g.11186623.6.916.3f476d39ITRWnr在Maven工程中使用OSS Java SDK<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId>原创 2020-11-03 16:45:06 · 717 阅读 · 0 评论 -
validation注解
Bean Validation 中内置的 constraint:@Null被注释的元素必须为 null @NotNull被注释的元素必须不为 null @AssertTrue被注释的元素必须为 true @AssertFalse被注释的元素必须为 false @Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin(value)被注释的元素必须是一个数字...原创 2020-10-28 10:27:09 · 1393 阅读 · 0 评论 -
Springboot启动扩展点超详细总结
1.背景Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。当然了解了bean的各个生原创 2020-10-28 09:59:23 · 979 阅读 · 0 评论 -
java实现对mysql数据备份
mysqldump是MySQL自带的逻辑备份工具。利用这个工具我们写一份工具类:/** * @author Lxq * @version 1.0 * @date 2020/9/8 9:26 * MySQL备份还原工具类 */public class MySqlBackupRestoreUtils { private static final Logger logger = LoggerFactory.getLogger(MySqlBackupRestoreUtils.cl...原创 2020-10-20 10:35:49 · 644 阅读 · 5 评论 -
Spring的线程池ThreadPoolTaskExecutor
我们先瞄一眼源码:corePoolSize = 1; int maxPoolSize = 2147483647; 这...不适合我,我要自己一定覆盖怎么做?** * @author Lxq * @version 1.0 * @date 2020/10/15 15:21 */@Configurablepublic class ThreadPoolTaskExecutorConfig { @Bean public ThreadPoolTaskExecutor tas原创 2020-10-15 15:44:17 · 1857 阅读 · 1 评论 -
mybaits分页查询.同时返回分页数据信息和总条数
利用SQL_CALC_FOUND_ROWS和FOUND_ROWS()可以看到有一个result 2 一个结果 2 的数据!不过要记住数据库连接的的时候需要加上allowMultiQueries=true那java 代码中我们要怎么写呢?这就是平常我们写的xml,resultMap中指定多一个resultMap就行了。...原创 2020-10-14 14:51:37 · 2607 阅读 · 1 评论 -
pom.xml 配置阿里云镜像仓库
<repositories> <repository> <id>public</id> <name>aliyun nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true&.原创 2020-10-12 12:14:07 · 3691 阅读 · 0 评论 -
java 实现微信小程序接口
使用weixin-java-miniapp实现微信小程序登录接口,我们使用开源的包maven 依赖<dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-miniapp</artifactId> <version>3.9.0</version></dependency>第一步...原创 2020-10-12 12:02:41 · 6297 阅读 · 5 评论 -
Spring Boot 全局事务配置
什么是全局事务Spring Boot(Spring)事务是通过aop(aop相关术语:通知(Advice)、连接点(Joinpoint)、切入点(Pointcut)、切面(Aspect)、目标(Target)、代理(Proxy)、织入(Weaving))切面编程来实现的,此时我们就可以对指定的包的service的方法进行事务控制.为什么要使用全局事务在实际开发中,有些同学命名方法时不规范,多个成员开发时,会造成混乱,维护成本特别高,代码可读性不高.怎么配置Spring Boot全局事务Spri...原创 2020-09-28 18:56:21 · 709 阅读 · 0 评论 -
SpringBoot HandlerInterceptorAdapter
在SpringBoot中我们可以使用HandlerInterceptorAdapter这个适配器来实现自己的拦截器。这样就可以拦截所有的请求并做相应的处理。应用场景日志记录,可以记录请求信息的日志,以便进行信息监控、信息统计等。 权限检查:如登陆检测,进入处理器检测是否登陆,如果没有直接返回到登陆页面。 性能监控:典型的是慢日志。在HandlerInterceptorAdapter中主要提供了以下的方法:preHandle:在方法被调用前执行。在该方法中可以做类似校验的功能。如果返回true,原创 2020-09-28 16:54:21 · 448 阅读 · 0 评论 -
redis 工具类
import com.alibaba.fastjson.JSON;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.util.ObjectUtils;import javax.annotation.Resource;import java.util.*;import java.ut.原创 2020-09-24 14:44:13 · 115 阅读 · 0 评论 -
枚举高级应用
1.首先新建一个类存放枚举信息public class DictItemBean { private String value; private String label; public static DictItemBean of(String value, String label) { final DictItemBean dictItemBean = new DictItemBean(); dictItemBean.setValue(v原创 2020-09-23 09:43:50 · 247 阅读 · 0 评论 -
ScheduledExecutorService API
java.util.concurrentInterface ScheduledExecutorService All Superinterfaces: Executor,ExecutorService 所有已知实现类: ScheduledThreadPoolExecutor public interface ScheduledExecutorServiceextends ExecutorService ExecutorService可以调度命令在给定的延迟之后运行,...原创 2020-09-17 15:58:38 · 260 阅读 · 0 评论 -
java 配置全局事务实例
@Aspect@Configurationpublic class TransactionManagerConfig { private final static Logger logger = LoggerFactory.getLogger(TransactionManagerConfig.class); private static final int AOP_TIME_OUT = 50000; private static final String AOP_POINTCU.原创 2020-09-17 14:29:20 · 443 阅读 · 1 评论 -
java日期转cron表达式工具类
今天准备写数据库备份定时任务,但是发现很多都是直接填写时间表达式子的,那么对于不懂时间表达式的,就比较麻烦,所以要是只传时间就能转换成cron表达式就美滋滋了,所以它来了。/** * @author Lxq * @version 1.0 * @date 2020/9/11 9:48 * java日期转cron表达式工具类 */public class CronUtils { /** * 每年时间format格式 */ private static fi原创 2020-09-11 11:24:47 · 2108 阅读 · 0 评论 -
spring 生命周期回调
官网地址:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-lifecycle第一种方式:当前类实现InitializingBean和DisposableBean回调接口第二种方式:使用XML配置进行回调方法第三种方式:使用@PostConstruct注解,进行标注当前非init()名称的方法,进行bean声明周期的初始化操作;@PostCon..原创 2020-09-04 15:18:54 · 74 阅读 · 0 评论