
spring
文章平均质量分 54
蓝天⊙白云
这个作者很懒,什么都没留下…
展开
-
同一个类中,事务生效问题
异常处理:如果private方法抛出运行时异常(即继承自RuntimeException的异常),并且该异常没有被捕获,事务会回滚。如果private方法抛出的是检查异常(checked exception),默认情况下事务不会回滚,除非你明确配置了@Transactional注解的rollbackFor属性。在这个例子中,outerMethod是有事务的,innerMethod抛出运行时异常后,事务会回滚。如果private方法抛出运行时异常,且该异常没有被捕获,事务会回滚。原创 2025-02-05 14:35:09 · 411 阅读 · 0 评论 -
SpringBoot 项目 Jar 包加密
采用proguard-maven-plugin插件在单模块中此方案还算简单,但是现在项目一般都是多模块,一个模块依赖多个公共模块。下载到classfinal-fatjar-1.2.1.jar 依赖,在当前依赖下cmd执行java -jar classfinal-fatjar-1.2.1.jar -C命令,会自动生成一串机器码。需要在启动类的pom.xml文件中加如下插件即可,需要注意的是,改插件时要放到spring-boot-maven-plugin插件后面,否则不起作用。yml配置文件留下空白。转载 2024-11-15 11:47:51 · 448 阅读 · 0 评论 -
java Queue中 remove/poll/take, add/offer/put, element/peek区别
不阻塞阻塞不阻塞阻塞不阻塞。转载 2023-07-14 15:37:44 · 1177 阅读 · 0 评论 -
java8中函数式接口特性
返回一个组合函数, 首先执行before function的apply方法, 将它的返回作为输入参数再应用当前的function。结果:先执行value -> value * 2 >>5*2=10,再执行value -> value - 1, 10-1=9。先执行value -> value - 1 >>5-1=4,在执行value -> value * 2 结果是8。1.Function 有参有返回型函数、Function 函数的表现形式为接收一个参数,并返回一个值。* @return 函数的结果。转载 2023-07-14 15:09:07 · 471 阅读 · 0 评论 -
dependencyManagement和dependencies的区别
模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。如果项目中不写依赖项,则会从父项目。2)dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要的依赖。是不会从父项目中继承的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取。modules:一个项目有多个平级模块,也叫做多重模块,或者合成项目,modules实现平级模块管理。转载 2023-04-26 14:30:45 · 267 阅读 · 0 评论 -
only regular white space (\r, \n, \t) is allowed between tokens
该异常是由于Spring Cloud Feign 请求其他微服务时json数据被压缩导致的,可以调整feign配置如下。转载 2023-03-01 21:27:10 · 874 阅读 · 0 评论 -
FeignClient注解属性详解
在配置feignClient属性的时候,常常感到比较模糊,现在总结一下。原创 2023-02-23 15:55:07 · 1227 阅读 · 0 评论 -
Feign接口Get请求自动转化成POST
在入参的时候如果没有通过注解指定,此时的参数会自动封装到body中,feign检测到body里面有请求参数就会默认使用post请求。使用 @SpringQueryMap 可以在 get 请求的时候使用对象传递参数,说明和例子如下。param1=xx&userId=xx&course_id=xxx”解决方法也很简单,如果是多个参数,只需要在参数前加@SpringQueryMap即可。【特别注意】使用@SpringQueryMap的情况下,需要使用。或者针对单个参数使用@RequestParam指定参数名。原创 2023-02-23 15:22:14 · 1093 阅读 · 0 评论 -
Spring特殊注入功能(注入Map集合实现策略模式)
上面通过@Resource注解将TaskAbstractHandler类型的对象注入到Map集合中,再根据消息体中的任务编号从taskHandlerMap对象或获取到具体的执行任务对象,从而根据任务编号执行不同的策略。注意:接口也是一样的道理;转载 2022-12-30 18:24:39 · 2420 阅读 · 0 评论 -
postman请求参数详解
If-Modified-Since 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT。If-Range 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。对应信息头-Content-Type:application/octet-stream,只能上传二进制文件,且没有键值对,一次只能上传一个文件, 也不能保存历史,每次选择文件,提交;原创 2022-12-29 15:08:29 · 9883 阅读 · 0 评论 -
在springboot 中使用 nacos 做配置中心
版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。比如项目名称为nacos-config-client,当前环境为test,格式文件为properties,那就需要新建一个dataId为nacos-config-client-test.properties配置。在bootstrap.yml添加spring.cloud.nacos.config.name就可以设置dataId。转载 2022-12-19 15:23:15 · 7731 阅读 · 0 评论 -
类型转换工具
【代码】类型转换工具。原创 2022-12-13 11:16:26 · 161 阅读 · 0 评论 -
http请求工具类
【代码】http请求工具类。原创 2022-12-13 11:02:51 · 329 阅读 · 0 评论 -
exist和in的区别
(3)如果使用的是not in与not exists,直接使用not exists,因为not in 会进行全表扫描,不走索引,not exists会走索引。对于主表数据较多时,我们使用in速度比exist更快。即优先查询数据较少的子表b。子表b较大时,使用exist插叙速度更快(都会使用索引)。即优先查询较小的主表a。(1)使用in,sql会先执行子查询;即先查询b表,在查a表;(2)使用exists,sql会先进行主表查询,再进行子查询;原创 2022-10-24 14:50:25 · 538 阅读 · 0 评论 -
SpringBoot打包插件详解(spring-boot-maven-plugin)
如果想让构建出来的原始jar(没有引入插件相关的包并且没有更改MANIFEST.MF)不被重新打包(重新打包会引入spring-boot-maven-plugin定制的配置和jar包),可以对spring-boot-maven-plugin插件配置classifier属性,自定义一个可运行jar名称,这样该插件就不会对原始的jar重命名操作了。MODULE,将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何Launcher。JAR,即通常的可执行jar。转载 2022-10-20 16:59:42 · 7048 阅读 · 0 评论 -
java线程池ThreadPool处理线程异常
如果用execute提交的任务,会被封装成了一个runable任务,然后进去 再被封装成一个worker,最后在worker的run方法里面跑runWoker方法, 里面再又调了我们最初的参数 runable任务的任务,并且用try-catch捕获了异常,会被直接抛出去,因此我们在execute中看到了我们的任务的异常信息。所以在submit提交的时候,里面发生了异常, 是不会有任何抛出信息的。submit()想要获取异常信息就必须使用get()方法!(2)submit() 不能抓异常。原创 2022-10-14 16:38:13 · 602 阅读 · 0 评论 -
dependency中的scope说明
的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了。今天梳理一下maven的scope。转载 2022-09-16 13:55:45 · 1336 阅读 · 0 评论 -
dependencyManagement和dependencies区别
在利用pom管理引用包时,如果是单项目的话就直接在dependencies引用了,若有一个大工程项目里面包含多个子模块,则为了所有项目模块包的版本统一和好管理,则需要用到dependencyManagement,但两者使用场景有所区别。2.dependencyManagement里只是声明依赖(可以理解为只在父项目,外层来声明项目中要引入哪些jar包),因此子项目需要显示的声明需要的依赖。只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取。原创 2022-09-16 13:41:38 · 725 阅读 · 0 评论 -
工作流引擎对比
工作流,是指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。在微服务、云计算、服务编排、LCDP等大环境下,camunda的前景优势会慢慢体现出来,作为下一代的工作流引擎,也会逐渐引起更多人的关注。Activiti和Flowable作为传统的工作流引擎,其设计思想和理念还是很值得CRUD boy们去学习研究下的。转载 2022-09-14 10:13:32 · 1768 阅读 · 0 评论 -
java获取文件路径总结
也可以使用getResourceAsStream方法获取流,不使用getClassLoader可以使用getResourceAsStream(“/配置测试.txt”)直接从resources根路径下获取,SpringBoot中所有文件都在jar包中,没有一个实际的路径,因此可以使用以下方式。返回:/F:/develop/local_project/mq/demo/target/classes/com/my/demo/带了“/”号后,得到的结果和classLoader是一致的。原创 2022-09-08 09:48:13 · 6241 阅读 · 0 评论 -
SOAP协议学习和使用
通过使用Transformer对象和SOAPElement对象,我们就可以方便的实现读入一个XML,转换成SOAPElement,之后构造成SOAPMessage,最终发送给web service。我们可以想到,在java 程序中发送一个SOAP request,不管是用什么方法,最终发送出去的一定就是一个标准的SOAP request。AttachmentPart可以有零个或多个,可以理解为,它是SOAP中可以携带的附加信息,例如图片,音频等信息。我们可以方便的创建一个SOAPMessage。......原创 2022-08-05 13:31:42 · 1906 阅读 · 0 评论 -
RocketMQ的分布式事务机制(事务消息)
假设有两个独立部署的系统A、B,A系统提供下单服务,B系统提供扣款服务,下单之后必须扣款,它们的数据库也是独立部署的,这就是一个典型的。转载 2022-08-03 16:58:33 · 3760 阅读 · 0 评论 -
JWT详解
参考。原创 2022-08-03 14:49:23 · 141 阅读 · 0 评论 -
Nginx对上游服务的心跳检测健康检查
2.check_http_expect_alive当上游服务器返回匹配的响应状态时,认为上游服务器存活。需要注意的是,间隔时间不能太短,否则可能因为心跳检查包太多造成上游服务器挂掉,同时要设置合理的超时时间。nginx_upstream_check_module支持tcp心跳和http心跳检测。3.rise检测成功多少次后,上游服务器被标识为存活,并可以处理请求。1.check_http_send检查时发送的HTTP请求内容。2.fail检测失败多少次后,上游服务器被标识为不存货。...转载 2022-07-30 22:32:54 · 2177 阅读 · 1 评论 -
PageHelper分页插件学习
分页插件提供了多个可选参数,这些参数使用时,按照上面两种配置方式中的示例配置即可。dialect默认情况下会使用PageHelper方式进行分页,如果想要实现自己的分页逻辑,可以实现Dialect()接口,然后配置该属性为实现类的全限定名称。下面几个参数都是针对默认dialect情况下的参数。使用自定义dialect实现时,下面的参数没有任何作用。分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。你可以配置属性来指定分页插件使用哪种方言。oracle,mysql,,,,,,.........原创 2022-07-20 17:23:21 · 139 阅读 · 0 评论 -
Swagger重点配置项
如果元素类型为自定义类型,如UserDto,则必须此步骤,以便swagger能够找到这个元素对应的类型。path(用于restful接口)–>请求参数的获取@PathVariable(代码中接收注解)header–>请求参数的获取@RequestHeader(代码中接收注解)query–>请求参数的获取@RequestParam(代码中接收注解)body–>请求参数的获取@RequestBody(代码中接收注解)如果元素类型为原生类型,如int、String之类的,无需此步骤。...原创 2022-07-19 09:51:31 · 1126 阅读 · 0 评论 -
SpringBoot整合Swagger3.0
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。Swagger 的优势支持 API 自动生成同步的在线文档:使用 Swa原创 2022-06-28 16:39:02 · 4755 阅读 · 0 评论 -
(CRLF)回车换行问题0x0D和0x0A
今天在需求文档中看到了如标题样的描述,特此学习记录一下。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。所以,如果你需要跨平台处理文本文件,可能会被回车换行搅得有点头大。我们平时按得Enter到底是回车还是换行?在MS的系统中纯文本格式按一个回车键是输入了两个字符,一个回车一个换行。在LINUX系统中则只是一个回车。软硬回车概念:硬回车就是普通我们按回车产生的,它在换行的同转载 2022-06-24 10:01:44 · 1965 阅读 · 0 评论 -
SpringMVC框架中转发和重定向的实现及区别
在项目开发中使用springMVC框架时,当Controller控制层对请求进行处理完成后,向其它资源进行跳转时,可以使用请求转发与重定向来实现,如果根据所要跳转的资源类型来分,可以跳转到页面与跳转到其它处理器。在之前学习servlet开发中,转发和重定向是由request对象和response对象完成的。那么在SpringMVC框架中是如何完成的呢?一般情况下,在SpringMVC框架开发中Controller控制层的方法返回字符串类型时会被当成逻辑视图名,然后根据视图解析器设置的拼接路径来返回视图。而如原创 2022-06-15 10:11:59 · 353 阅读 · 0 评论 -
Vue上传文件案例,文件参数和其他参数同时传递(转载)
需求简述: 文件上传,从前端页面上 通过选择本地文件或拖拽文件 将文件上传到阿里OSS上,并将记录写进数据库;其中有文件流为参数,还有用户信息啥啥啥的其他参数都要同时从前端传到后端去;html<template> <el-dialog title="上传音乐" :visible.sync="isShow" @update:visible="val => $emit('update:visible', val)"转载 2022-03-09 15:35:38 · 3606 阅读 · 0 评论 -
mysql索引不生效的情景
如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引对于组合索引,不是使用的第一部分(第一个),则不会使用索引like查询是以%开头,如’world%’;隐式转换导致索引失效;如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引,因为mysql会进行隐式转换。如果mysql估计使用全表扫描要比使用索引快,则不使用索引没有查询条件,或者查询条件没有建立索引查询条件使用内置函.原创 2021-10-12 14:26:10 · 127 阅读 · 0 评论 -
mysql优化-子查询in和exist
1. mysql in和exist的用法区别(1)IN()查询适合B表数据比A表数据小的情况,IN()查询是从缓存中取数据SQL优化:对于where xxx in 子句效率极其低下问题,经过in的子句外包装一层select xxx from( … )as tmp 后,极大优化效率。update clear_res set candelete=0 where resid in( select resourceid from ( select distinct resourceid fro原创 2021-10-12 14:19:28 · 498 阅读 · 0 评论 -
Java获取相对路径文件
1. 文件在src下class.getResourceAsStream("")获得的是相对路径class.getClassLoader().getResourceAsStream("")加载器获得是绝对路径Class.getResourceAsStream(String path) :(1)不以 “/” 开头时,默认是从此类所在的包下取资源。(2)以**“/”**开头,则是从ClassPath(Src根目录)根下获取。Class.getClassLoader.getResourceAsStrea原创 2021-10-11 17:14:25 · 15783 阅读 · 0 评论 -
java实现mysql数据库备份
Java实现调用Linux脚本实现数据库备份;public static void dbBackup(String username, String authenticate, String dbName, String destination, String backName){ File backupDir = new File(destination); LOGGER.info("进入方法:dbBackup"); if(!backupDir.exist原创 2021-09-10 16:02:17 · 592 阅读 · 0 评论 -
Cron表达式学习
首先推荐大家一个CRON表达式在线生成网站 http://cron.qqe2.com/ 1.cron表达字符含义 cron表达式:* * * * * *,其实就是一个字符串, 字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,其中常用为六个域。 ...转载 2021-09-07 14:13:04 · 959 阅读 · 0 评论 -
mysql索引原理和应用
一、介绍1.什么是索引?一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。2.为什么要有索引呢?索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询转载 2021-07-29 16:57:27 · 163 阅读 · 0 评论 -
java实现mysql数据库备份功能
public static Process linuxEnv(String command){ Process ps = null; try { String[] commands = { "/bin/sh", "-c", command }; ps = Runtime.getRuntime().exec(commands); }catch (Exception ex){ ex.pri.原创 2021-07-09 17:34:00 · 2215 阅读 · 5 评论 -
mysql数据库备份
一、数据库备份和还原命令1. 导出表结构 (-d参数)导出一个库中的所有表结构mysqldump -h localhost -u root -p -d db_name > db_name.sql导出一个库中的一张或多张表的表结构(user表)mysqldump -h localhost -u root -p -d db_name user> user.sql导出多个库的所有表结构mysqldump -h localhost -u root -p -d --databases dbn原创 2021-07-09 17:28:25 · 118 阅读 · 0 评论 -
Springboot配置log4j2配置文件和log4j2.xml详解
最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方案)以及log4j2配置文件的详解,就需要我们来好好聊一聊了。本文就专门来讲解下log4j2.xml配置文件的各项标签的意义。一、Springboot依赖(1)剔除spring web包含的依赖<dependency> <groupId>org.springframework.boo原创 2021-07-05 17:20:57 · 8952 阅读 · 0 评论 -
Spring的@Scheduled注解实现定时任务
项目经常会用到定时任务,实现定时任务的方式有很多种。在Spring框架中,实现定时任务很简单,常用的实现方式是使用注解@Scheduled。@Scheduled 常用来实现简单的定时任务。例如凌晨1点跑批,每10秒查询支付状态等SpringBoot项目1、配置在spring boot的启动类上加@EnableScheduling注解,允许支持@Scheduled:2、任务类3、结果cron 表达式1.cron一共有7位,但是最后一位是年(1970-2099),可以留空,所以我们可以写6转载 2021-06-30 14:19:36 · 435 阅读 · 0 评论