java开发工具类
文章平均质量分 76
菜鸟是大神
人有两次生命,一次是出生,一次是觉醒,希望我们可以在风华正茂时重获新生,而不是在垂暮之年幡然醒悟。
展开
-
【SpringBoot10】SpringBoot中利用AOP切面开启全局事务管理
我们业务逻辑一般都放在 service 层进行处理,所以我们定义的切入点为:com.lzzy.meet.service..(…),即 service 下的所有方法。最后我们利用 AspectJExpressionPointcut 设置切面 = 切点 + 通知(写成内部bean的方式)我们设置了事务失效时间为:5秒,超过五秒,则回滚事务,并定义了事务的隔离性和隔离级别,并声明该事务为只读。通过 @Aspect 定义一个切面,使用 @Configuration 声明当前类是一个配置类。原创 2023-03-09 08:06:34 · 947 阅读 · 0 评论 -
【SpringBoot9】HandlerInterceptor拦截器的使用 ——防重复提交
看本篇博客前应当先看完前面三篇,这一篇是基于前面三篇的知识点的整合。所以很多重复的代码这里就不写出了后台通过和redis实现防重复提交,避免因为网络原因导致多次请求同时进入业务系统,导致数据错乱,也可以防止对外暴露给第三方的接口在业务尚未处理完的情况下重复调用。原创 2023-02-24 21:07:03 · 930 阅读 · 0 评论 -
【快速简单登录认证】SpringBoot使用Sa-Token-Quick-Login插件快速登录认证
试想一下,假如我们开发了一个非常简单的小系统,比如说:服务器性能监控页面, 我们将它部署在服务器上,通过访问这个页面,我们可以随时了解服务器性能信息,非常方便。然而,这个页面方便我们的同时,也方便了一些不法的攻击者,由于这个页面毫无防护的暴露在公网中,任何一台安装了浏览器的电脑都可以随时访问它!你马上就会发现,写个监控页你一下午就可以搞定,然而这个登录页你却可能需要花上两三天的时间,这是一笔及其不划算的时间浪费。Sa-Token-Quick-Login 可以为一个系统快速的、零代码 注入一个登录页面?原创 2023-01-22 09:37:59 · 2810 阅读 · 1 评论 -
【详细demo】过滤器和拦截器有什么区别
过滤器和拦截器都是基于 AOP 思想实现的,用来处理某个统一的功能的,但二者又有 5 点不同:出身不同、触发时机不同、实现不同、支持的项目类型不同以及使用的场景不同。过滤器通常是用来进行全局过滤的,而拦截器是用来实现某项业务拦截的。原创 2023-01-07 23:34:48 · 259 阅读 · 0 评论 -
【工作流Activiti7】7、Activiti7+SpringBoot
代码:https://gitee.com/chengjiansheng/activiti7-sample原创 2022-12-25 16:20:28 · 3597 阅读 · 0 评论 -
【工作流Activiti7】6、Activiti 7 源码学习
1. 启动分析源码版本是 7.1.0.M6首先从 ProcessEngineAutoConfiguration 开始ProcessEngineAutoConfiguration 是activiti-spring-boot-starter 7.1.0.M6自动配置的入口类,在这里主要看 SpringProcessEngineConfiguration主要是配置了自动部署最最最重要的是 buildProcessEngine() 方法,将来根据配置构建 ProcessEngine 的时候它就派上用场了下面原创 2022-12-25 16:18:03 · 4784 阅读 · 0 评论 -
【工作流Activiti7】5、Activiti7 多实例子流程
可以看到,流程启动的时候,act_ru_execution表中插入了8条记录,因为有1个主流程,3个子流程,所以 (3+1)×2=8。这个流程跟前面一个实现的功能有一点点类似,只有一个子流程,子流程中有两个并行的任务,当这两个任务都完成后子流程就结束了。上面这个流程会根据传入的人数来决定开启几个子流程,在每个子流程中第一个任务审批时指定下一个审批人(PS:流程变量)顾名思义,子流程是一个包含其他活动、网关、事件等的活动,这些活动本身形成了一个流程,该流程是更大流程的一部分。原创 2022-12-25 16:17:42 · 3211 阅读 · 7 评论 -
【工作流Activiti7】4、Activiti7 结束/终止流程
但是,通常咱们系统不可能只有一个流程,假设我们做的是一个OA系统,那么公司的流程有请假、采购、报销等等流程,那这一个字段如何区分到底是哪个业务流程的ID呢,换言之,假设BUSINESS_KEY_这个字段现在是2,那么我怎么知道这个2是请假表的ID,还是采购表的ID呢?还有一种方式,利用另外一个空闲字段TENANT_ID_,我们可以把业务类型存到TENANT_ID_字段中,这样TENANT_ID_和BUSINESS_KEY_两个字段就能唯一确定是哪个业务的那个ID。补充1:关于BUSINESS_KEY_原创 2022-12-24 11:29:19 · 6186 阅读 · 0 评论 -
【工作流Activiti7】3、Activiti7 回退与会签
多个人同时处理一个任务,这种任务我们称之为会签任务。Activiti实现会签是基于多实例任务,将节点设置成多实例,主要通过在UserTask节点的属性上配置。zhaoliu审批的时候pass传的false,于是流程又走到zhangsan那里,流程重新又走了一遍才全部完成。当zhangsan完成自己的任务后,进入会签环节,于是我们看到当前有3个激活的任务。刚才的例子中没有考虑到审批不通过的情况,接下来我们完善一下,考虑下面的流程。接下来,我们运行上面的代码,回退到上一个节点“部门经理审批”,于是。原创 2022-12-24 11:25:46 · 6025 阅读 · 7 评论 -
【工作流Activiti7】2、Activiti7 与 Spring Boot 及 Spring Security 整合
二者差不多,都是组任务,区别在于如果用候选者的话需要列出所有候选用户并用逗号分隔,如果用候选组的话就只需要写组名即可,多个组之间用逗号分隔。但凡是有钱,谁还用开源版的啊,当然是用商业版啦。于是,百度了一下,网上有人建议换一个版本,于是我将activiti-spring-boot-starter的版本从“7.1.0.M6”换成了“7.1.0.M5”,呵呵,又一个错,缺少字段。有没有发现,这里查询任务的时候没有指定要查谁的任务,完成任务的时候也没有指定是谁完成的,这都是Spring Security的功劳。原创 2022-12-23 20:29:10 · 1860 阅读 · 7 评论 -
【工作流Activiti7】1、入门篇
目前,笔者熟知的主流的框架有:Camunda 、Flowable 、Activiti 、jBPM、还有我们国产的盘古BPM、云程。19 23原创 2022-12-23 20:23:13 · 1812 阅读 · 0 评论 -
【生成有序序列】借鉴雪花算法实现的一种长度更短的有序序列生成算法
10 bit:表示当前服务器id,代表的是这个服务最多可以部署在 2^10 台服务器上,也就是 1024 台服务器原创 2022-12-15 21:16:52 · 571 阅读 · 0 评论 -
【开发规范】替API接口制定统一的报文返回格式
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758/*** 返回报文格式**/@Data/*** 返回码*//*** 返回描述*//*** 返回tid*//*** 时间*//**原创 2022-12-15 21:07:50 · 2656 阅读 · 0 评论 -
【多数据源动态切换】Spring Boot中实现多数据源动态切换效果(2):通过开源项目Dynamic Datasource Spring Boot Starter实现
在Spring Boot中,可以通过多种方式实现多数据源的动态切换效果,本篇介绍第二种实现方案。原创 2022-12-11 21:17:26 · 777 阅读 · 2 评论 -
【多数据源动态切换】Spring Boot中实现多数据源动态切换效果(1):通过继承AbstractRoutingDataSource类实现
提供了这个类,其中方法可以让用户根据自己定义的规则在某一个SQL执行之前动态地选择想要的数据源。123456789/***/@Nullable因此,我们的整体实现逻辑就很清晰了,具体分为以下几个步骤:定义类,继承类并实现方法(具体逻辑是从当前线程的中获取我们在某一个SQL执行之前通过AOP切面动态指定的数据源名称);在中配置多个数据源;解析在中配置的多个数据源,然后生成实例,并设置默认数据源()和其他数据源();调用的的方法的时候,会先调用。原创 2022-12-11 21:13:46 · 1219 阅读 · 0 评论 -
【RestTemplate详解】Spring MVC中使用RestTemplate访问REST服务详解
在Java Web开发中,我们通常需要通过GET、POST请求其他系统提供的服务。其中,JDK自带的HttpURLConnection、Apache HttpClient等方式都可以实现。当然,这些方式都有一个很明显的缺陷,那就是代码很繁琐。而Spring提供的RestTemplate封装了这些库的实现,可以让我们的HTTP请求更加简洁、直观。在RestTemplate中定义了11个独立的操作,它们分别是:接下来,我将对常用的几个方法分别介绍。12345678910111213141516171819202原创 2022-12-07 23:01:46 · 1108 阅读 · 0 评论 -
Java中的Get和Post请求,使用万网接口判断域名是否已被注册
一 通过Get请求验证域名是否已被注册万网提供了一个免费的接口来查询域名是否已被注册,http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=域名比如说我们在浏览器中输入:http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=aliyun.com最后返回:123456200原创 2022-12-07 22:58:58 · 373 阅读 · 0 评论 -
【HttpClient详解】HttpClient的几种基本用法实例
package cn.zifangsky.httpclient;import java.io.File;import java.util.ArrayList;import java.util.List;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFo原创 2022-12-07 22:57:08 · 793 阅读 · 0 评论 -
【日志系统最全】Spring Cloud Sleuth使用ELK收集&;分析日志
本文基于Spring Cloud Greenwich SR2,理论兼容Spring Cloud所有版本。原创 2022-12-01 13:53:57 · 911 阅读 · 0 评论 -
【工具类分享】JWT操作工具类分享
/ 支持的算法详见:https://github.com/jwtk/jjwt#features。// 测试6: 这是一个被篡改的token,因此会报异常,说明JWT是安全的。// 测试2: 如果能token合法且未过期,返回true。// 将我改成你生成的token的第一段(以.为边界)// 将我改成你生成的token的第二段(以.为边界)// 将我改成上面生成的token!// 你也可以改用你喜欢的算法。// 测试5: 解密Payload。// 测试1: 生成token。// 测试3: 获取用户信息。原创 2022-11-29 14:55:08 · 209 阅读 · 0 评论 -
【springboot项目详解】springboot项目整合-注册功能模块开发
2.JQuery封装了一个函数,称为$.ajax()函数,通过对象调用ajax函数,可以异步的加载一个请求,依靠的是JAVAScript提供的一个xhr(xmlHttpResponse),封装了这个对象。在控制层抽离一个父类,在这个父类中统一的处理关于异常的相关操作,编写一个BaseController类,在这个类中,统一的处理异常。3.正在执行数据插入操作的时候,服务器、数据库宕机。1.runtimeException异常,作为这个异常的子类,然后在定义具体的异常类型来继承这个异常,业务层异常的基类。原创 2022-11-02 22:31:04 · 986 阅读 · 2 评论 -
【最详细demo】 Java 的定时任务了大全汇总
首先讲了下定时任务是什么?接着讲了有哪些实现方式?对这些方式进行介绍。纯手写单线程死循环,配合线程的等待机制的方式(不推荐,麻烦,问题多多)使用 JDK 提供的 Timer 配合 TimerTask 的方式(不推荐,单线程)使用 JDK 提供的多线程的 ScheduledExecutorService 的方式(可代替 Timer,多线程的)使用 Spring 提供的定时任务的方式(推荐,更加方便,可异步)原创 2022-10-28 09:54:19 · 1609 阅读 · 0 评论 -
【已解决详细demo】Springboot 一行代码实现文件上传 20个平台!少写代码到极致
用了这个工具确实极大的减少了上传文件所带来的代码量,提升了开发效率,使用过程中暂未发现有什么坑,原创 2022-10-28 09:51:33 · 421 阅读 · 2 评论 -
【注解汇总】操作日志记录注解
OperLog(value = "菜单管理", desc = "修改", param = false, result = true)原创 2022-10-10 14:23:25 · 399 阅读 · 0 评论 -
【最全最详细】Jenkins+Docker 一键自动化部署 SpringBoot 项目
本文章实现最简单全面的一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。原创 2022-09-16 13:53:27 · 556 阅读 · 0 评论 -
【springboot异步处理】Spring Boot + @Async
异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。上述的同步调用虽然顺利的执行完了三个任务,但是可以看到执行时间比较长,若这三个任务本身之间不存在依赖关系,可以并发执行的话,同步调用在执行效率方面就比较差,可以考虑通过异步调用的方式来并发执行。主程序在异步调用之后,主程序并不会理会这三个函数是否执行完成了,由于没有其他需要执行的内容,所以程序就自动结束了,导致了不完整或是没有输出任务相关内容的情况。可以看到,通过异步调用,让任务一、二、三并发执行,有效的减少了程序的总运行时间。原创 2022-08-24 20:06:54 · 779 阅读 · 0 评论 -
【springboot系列】自定义一个拦截器,附源码
Spring MVC中的拦截器()类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。自定义一个拦截器非常简单,只需要实现方法:该方法会在控制器方法前执行,其返回值表示是否知道如何写一个接口。中断后续操作。当其返回值为true时,表示继续向下执行;当其返回值为false时,会中断后续的所有操作(包括调用下一个拦截器和控制器类中的方法执行等)。方法:该方法会在控制器方法调用之后,且解析视图之前执行。原创 2022-08-22 16:28:47 · 365 阅读 · 0 评论 -
【最详细实战】实战项目添加操作日志(aop、注解实现)
OperationLog(module = "添加商品模块", desc = "添加商品操作", operationType = OperationType.ADD)* 后置通知,在目标方法完成之后调用通知,此时不会关 心方法的输出是什么。* 前置通知,方法调用前触发 -记录开始时间。// 接收到请求,记录请求内容。// 记录方法开始执行的时间。//获取当前登录人信息。6、在依赖里,排除logging。5、log4j2配置文件。原创 2022-08-22 15:16:51 · 862 阅读 · 2 评论 -
Java:将大文件拆分工具
java大文件拆分工具(过滤掉表头)原创 2022-08-10 15:00:10 · 463 阅读 · 0 评论 -
利用Navicat Premium导出数据库表结构信息至Excel
CHARACTER_MAXIMUM_LENGTH 长度,COLUMN_DEFAULT 默认值,tablename:填写要导出excel的表。COLUMN_TYPE 数据类型,IS_NULLABLE 是否为空,COLUMN_COMMENT 备注。-- 如果不写的话,默认查询所有表中的数据。打开一个空白的Excel文档,Ctrl+V。COLUMN_NAME 列名,DATA_TYPE 字段类型,-- 填写要导出表结构的数据库名称即可。database:填写数据库名称;-- 表名,填写要导出的表的名称。...原创 2022-08-10 10:12:49 · 1207 阅读 · 0 评论 -
【springboot系列】自定义一个拦截器,附源码
demo具体源码。原创 2022-07-29 14:16:52 · 170 阅读 · 0 评论 -
【springboot日志】logback.xml常用配置详解
maxHistory,可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,,例如设置为30的话,则30天之后,旧的日志就会被删除。file,用于指定配置文件的路径,他的作用在于,如果你有多个配置信息的话,可以直接写在配置文件中,然后通过file引入。totalSizeCap,可选节点,用来指定日志文件的上限大小,例如设置为3GB的话,那么到了这个值,就会删除旧的日志。5、root节点,必选节点,用来指定最基础的日志输出级别,他有俩个自己点可以用来应用appender,格式化日志输出。...原创 2022-07-29 10:17:38 · 1915 阅读 · 0 评论 -
【全局唯一id】分库分表之后,id 主键如何处理?
更重要的是,UUID不具有有序性,会导致B+树索引在写的时候有过多的随机写操作(连续的ID可以产生部分顺序写),还有,由于在写的时候不能产生有顺序的append操作,而需要进行insert操作,将会读取整个B+树节点到内存,在插入这条记录后会将整个节点写回磁盘,这种操作在记录占用空间比较大的情况下,性能下降明显。这个snowflake算法相对来说还是比较靠谱的,所以你要真是搞分布式id生成,如果是高并发啥的,那么用这个应该性能比较好,一般每秒几万并发的场景,也足够你用了。...原创 2022-07-19 12:14:52 · 192 阅读 · 0 评论 -
【SpringBoot系列】Spring Boot+Redis 分布式锁:模拟抢单
redis的普通key一般都允许覆盖,A用户set某个key后,B在set相同的key时同样能成功,如果是锁场景,那就无法知道到底是哪个用户set成功的;这里jedis的setnx方式为我们解决了这个问题,简单原理是当A用户先set成功了,那B用户set的时候就返回失败,满足了某个时间点只允许一个用户拿到锁。某个抢购场景时候,如果没有过期的概念,当A用户生成了锁,但是后面的流程被阻塞了一直无法释放锁,那其他用户此时获取锁就会一直失败,无法完成抢购的活动;PXkey过期时间单位设置为毫秒(EX单位秒)...原创 2022-07-19 10:20:24 · 413 阅读 · 0 评论 -
【【SpringBoot系列】最详细demo--自定义日志脱敏组件,简单3 步完成 Spring Boot 的日志脱敏
最详细demo--自定义日志脱敏组件,简单3 步完成 Spring Boot 的日志脱敏原创 2022-07-19 09:46:25 · 605 阅读 · 0 评论 -
【超全涵盖超全面】Intellij IDEA 中的各种调试代码技巧,轻松定位 Bug 问题
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。所以学习下如何在IntellijIDEA中使用好Debug,主要包括如下内容一、Debug开篇二、基本用法&快捷键三、变量查看四、计算表达式五、智能步入六、断点条件设置七、多线程调试八、回退断点九、中断Debug十、附JRebel激活。...原创 2022-07-18 19:05:47 · 1906 阅读 · 0 评论 -
【免费好用】节假日查询接口
holiday_overtime用来指定要查询的节假日调休(加班),99为全部调休,多个使用英文逗号分隔枚举。holiday节假日,这里使用两位数字枚举表示节假日,其中特殊数字10表示非节假日,特殊数字99表示全部节假日。节假日查询接口提供了丰富的查询参数,所有参数都为可选参数,可灵活搭配使用,多个条件之间为&&的关系。平时在开发的过程中经常会用到查询节假日的功能,但由于节假日是每年由国务院统一公布,我们。holiday用来指定要查询的节假日,99为全部节假日,多个使用英文逗号分隔枚举。......原创 2022-07-18 15:31:46 · 6155 阅读 · 0 评论 -
servlet filter详解
在写一个springmvc项目中想对用户的请求进行拦截,只有登录用户才能访问资源。这时候可以使用到SpringMVC的拦截器Intercepter,但是这个只能局限在SpringMVC中使用,如果想更加通用一点,最好使用ServletFilter实现这个需求。本文将通过几个实际的例子展示下Servlet中的Filter的使用。...原创 2022-07-18 13:25:18 · 1746 阅读 · 0 评论 -
【SpringBoot系列】最详细demo--集成JWT实现接口权限认证
为了实现我自己能够手动抛出异常,我自己写了一个123456789}}}原创 2022-07-15 15:26:05 · 3371 阅读 · 0 评论 -
【SpringBoot系列】最详细demo-- 集成Swagger2
Swagger是一个简单但功能强大的API表达工具。它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swagger。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。Swagger2可以利用注解快速、自动地生成接口文档页面,方便调用方查阅!这一篇讲解如何在SpringBoot中集成Swagger2.先来张效果图。...原创 2022-07-15 15:19:23 · 622 阅读 · 0 评论