
Springboot
文章平均质量分 73
springBoot
风情客家__
简述需要300字以内_(¦3」∠)_
展开
-
SpringBoot统计接口请求耗时的方法详解
接口请求时间的快慢就代表着获取到对应的数据的快慢,也代表着用户请求页面数据的快慢,常常可以借助接口请求快慢进行相应的优化!以往我们的做法可能是在每一个接口的方法中的开始添加当前时间,结尾用当前时间减去开始时间就表示该接口的访问时间。//此处的调用业务代码省略System.out.println("访问时间为:"+(System.currentTimeMillis()-startTime));return "访问接口成功";转载 2025-02-12 15:56:58 · 77 阅读 · 0 评论 -
Java泛型上下边界
这两种方式基本上解决了之前所说的问题,但是同时,也有一定的限制。原创 2025-02-11 18:14:14 · 422 阅读 · 0 评论 -
spring boot 2源码系列(六)- 自动装配
如果想自己写一个条件装配注解需要写一个Condition接口的实现类,然后搭配@Conditional注解。下面是一个例子。原创 2025-02-11 18:07:39 · 681 阅读 · 0 评论 -
定义VO,BO,PO,DO,DTO解读
VO,BO,PO,DTO这样分层还是很有意义的。尤其在团队成员较多的情况下,结构更加一目了然,同时也能很大程度避免多端系统数据所需不一致时,有人修改属性影响其他页面。但也完全没有必要教条主义,把这些全部用上,需要根据所开发的业务复杂度来取舍,如果本身业务逻辑不负责,照搬全上反而让开发变的更复杂。例如业务不复杂,根本没有多端展示的差异化,VO可以直接拿掉,直接使用DTO传输到前端数据即可。转载 2024-12-16 13:59:26 · 76 阅读 · 0 评论 -
后台开发必备:每个程序员都应掌握的缓存技术
本文详细地介绍了后台开发中的缓存技术,希望能对你的日常工作有所帮助和启发。熟练掌握各种缓存策略和机制,解决缓存问题,对于程序员而言至关重要,可以在很大程度上提升后台开发的效率、稳定性和用户体验。转载 2024-07-02 09:09:39 · 251 阅读 · 0 评论 -
CentOS 7 忘记密码后该怎么重置(root自定义名)密码
4.注意现在就要讲重点了,在网上一些博主讲的是把ro修改为rw,而当时我在找ro这个两个字母找的我头晕眼花就是没找到,最后最让我怀疑的就是这个r和o之间包了个反斜杠后来查阅相关资料原来这个反斜杠是由于屏幕太小自动系统自动添加的,当时我真无语了😅。长时间未用,忘记了密码登不上了,所以关于重置密码我在这里做一下总结。命令 (如果不是root,是自定义的用户名,就是以下格式。12.接下来回车就开始重启,下面这个会等待的时间长一点。9.然后输入密码,这里输入密码时没有显示个数的。2.就会进入下面那个页面。转载 2024-04-07 15:45:38 · 2442 阅读 · 0 评论 -
Spring Boot超大文件上传,实现秒传
分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。断点续传是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传或者下载未完成的部分,而没有必要从头开始上传或者下载。本文的断点续传主要是针对断点上传场景。通俗的说,你把要上传的东西上传,服务器会先做MD5校验。转载 2024-02-23 09:39:23 · 513 阅读 · 0 评论 -
SpringBoot和SpringCloud对应版本关系
在项目迭代过程中,经常会升级原有组件或者接入新的组件,有时候由于版本不匹配的问题往往容易出现各种集成bug以及jar包的版本冲突的问题,Spring官方有发布SpringBoot和SpringCloud的对应关系,此处记录以防忘记。后下拉有列举SpringBoot与SpringCloud对应关系表,左边SpringCloud版本,右边是SpringBoot版本,点击左侧链接可跳转github查看具体有哪些版本号。可找到SpringCloud与SpringBoot版本关系。转载 2024-01-02 11:17:30 · 1836 阅读 · 0 评论 -
如何优雅的写 Controller 层代码?
每个系统都会有自己的业务异常,比如库存不能小于 0 子类的,这种异常并非程序异常,而是业务操作引发的异常,我们也需要进行规范的编排业务异常状态码,并且写一个专门处理的异常类,最后通过刚刚学习过的异常拦截统一进行处理,以及打日志。为了跟前端妹妹打好关系,我们通常需要对后端返回的数据进行包装一下,增加一下状态码,状态信息,这样前端妹妹接收到数据就可以根据不同的状态码,判断响应数据状态,是否成功是否异常进行不同的显示。但是你要是这样返回给前端,前端妹妹就提刀过来了,当年约定好的状态码,你个负心人说忘就忘?转载 2023-12-25 12:20:37 · 363 阅读 · 0 评论 -
Springboot后端数据返回前端时,不返回null的字段
方式1其实有一定的局限性。如果项目里继承了WebMvcConfigurationSupport,那么方式1配置就失效了。方式2虽然能达到效果,但是每个实体类上都加注解,实在费劲。只需要在配置文件application上,增加。这种情况下,可以在实体类上加上。的类上,进行全局配置。转载 2023-12-22 17:45:47 · 2170 阅读 · 0 评论 -
高并发场景下的 HttpClient 优化方案,QPS 大大提升!
关于keep-alive,本文不展开说明,只提一点,是否使用keep-alive要根据业务情况来定,它并不是灵丹妙药。还有一点,keep-alive和time_wait/close_wait之间也有不少故事。在本业务场景里,我们相当于有少数固定客户端,长时间极高频次的访问服务器,启用keep-alive非常合适再多提一嘴,http的keep-alive 和tcp的KEEPALIVE不是一个东西。//如果没有约定,则默认定义时长为60s。转载 2023-09-11 09:29:20 · 265 阅读 · 0 评论 -
Spring Boot多级缓存实现方案
以上全部就是关于多级缓存的实现方案总结,多级缓存就是为了解决项目服务中单一缓存使用不足的缺点。应用场景有:接口权限校验,每次请求接口都需要根据当前登录人有哪些角色,角色有哪些权限,如果每次都去查数据库性能开销比较严重,再加上权限一般不怎么会频繁变更,所以使用多级缓存是最合适不过了;还有就是很多管理系统列表界面都有组织架构信息(所属部门、小组等),这些信息同样可以使用多级缓存来完美提升性能。转载 2023-08-10 13:44:27 · 441 阅读 · 0 评论 -
使用上 Spring 的事件机制,真香!
本文主要是简单的讲述了Spring的事件机制,基本概念,讲述了事件机制的三要素事件、事件发布、事件监听器。如何实现一个事件机制,应用的场景,搭配@Async注解实现异步的操作等等。希望对大家有所帮助。新增一个类,继承我们的。如下面代码,继承后定义了一个userId,有一个方法。这里就定义我们监听器需要的业务参数,监听器需要那些参数,我们这里就定义那些参数。/*** @Description 修改密码事件**/@Getter@Setter。转载 2023-07-21 11:02:58 · 151 阅读 · 0 评论 -
guava限流器RateLimiter使用简介(Springboot实现)
令牌产生的稳定速率,只是这里的速率是转换成了两个令牌生产之间的时间间隔(毫秒)。之所以是稳定速率,是因为SmoothWarmUp,在预热阶段产生令牌的速率会低于这个值。RateLimiter初始化的时候,传入的permitsPerSecond表示的是每秒产生的产生的令牌个数,也就是说令牌的生产速率的时间单位就给固定了,那么stableIntervalMicros = 1s/permitsPerSecond。原创 2023-07-18 14:10:12 · 8414 阅读 · 0 评论 -
万字深度解析:我们对高并发的误解太深了……
假设最大处理线程=1625,若每个用户仅发送一笔请求,且请求从客户端到服务端没有延迟的条件下,当并发用户数=1625时,能够保证RT=25ms,但当并发用户数>1625时,因为线程只能分配给1625笔请求,那多余的请求就无法保证RT=25ms。换个情况,还是将10个节点为一组,不过这次换成采用单机限流。两种限流对比下来,单机限流更强调单机的控制范围,但可能会造成额外的请求拒绝,但对单节点不会造成性能压力,而全局限流更强调整体的控制范围,虽不会造成额外的请求拒绝,但可能会对单节点造成性能压力,引发性能过载。转载 2023-07-15 09:30:33 · 101 阅读 · 0 评论 -
SpringBoot内置tomcat参数调优
可通过org.springframework.boot.autoconfigure.web.ServerProperties查看,其中包括属性tomcat、jetty、undertow三种服务器的设置,默认启用tomcat。每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求。原创 2023-07-11 14:57:25 · 9312 阅读 · 0 评论 -
扔掉okhttp、httpClient,这款轻量级 HTTP 神器好用到爆
Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而spring-boot是使用最广泛的Java开发框架,但是Retrofit官方没有支持与spring-boot框架快速整合,因此我们开发了retrofit-spring-boot-starter。retrofit-spring-boot-starter实现了Retrofit与spring-boot框架快速整合,并且支持了诸多功能增强,极大简化开发。转载 2023-07-06 10:02:11 · 203 阅读 · 0 评论 -
SpringBoot 通用限流方案(VIP珍藏版)
在大多数的微服务架构在设计之初,比如在技术选型阶段,架构师会从一个全局的视角去规划技术栈的组合,比如结合当前产品的现状考虑是使用dubbo?还是springcloud?作为微服务治理的底层框架。甚至为了满足快速的上线、迭代和交付,直接以springboot为基座进行开发,后续再引入新的技术栈等...所以在谈论某个业务场景具体的技术解决方案时不可一概而论,而是需要结合产品和业务的现状综合评估,以限流来说,在下面的不同的技术架构下具体在选择的时候可能也不一样。转载 2023-06-27 22:17:22 · 404 阅读 · 1 评论 -
快试试用 API Key 来保护你的 SpringBoot 接口安全吧
安全性在REST API开发中扮演着重要的角色。一个不安全的REST API可以直接访问到后台系统中的敏感数据。因此,企业组织需要关注API安全性。Spring Security 提供了各种机制来保护我们的 REST API。其中之一是 API 密钥。API 密钥是客户端在调用 API 调用时提供的令牌。在本教程中,我们将讨论如何在Spring Security中实现基于API密钥的身份验证。实现思路是从请求头中获取API Key,然后使用我们的配置检查秘钥。转载 2023-06-25 23:45:54 · 128 阅读 · 0 评论 -
SpringBoot 中的多线程事务处理太繁琐?一个自定义注解直接搞定!
本文是使用了两个注解共同作用实现的,主线程当做协调者,各子线程作为参与者/*** 多线程事务注解: 主事务*///子线程数量/*** 多线程事务注解: 子事务*/两个注解都是用在方法上的,须配合一起使用@MainTransaction注解用在调用方,其参数为必填,参数值为本方法中调用的方法开启的线程数,如:在这个方法中调用的方法中有2个方法用@Async注解开启了子线程,则参数为,另外如果未使用注解,则直接已无多线程事务执行(不影响方法的单线程事务)转载 2023-06-22 22:47:26 · 777 阅读 · 0 评论 -
spring boot手动开启事务
1)首先加入注解,这就是spring的jdbc框架中提供的事务管理方式。转载 2023-06-13 22:39:11 · 1636 阅读 · 0 评论 -
Springboot注解@Transactional(propagation = Propagation.REQUIRED)
【代码】Springboot注解@Transactional(propagation = Propagation.REQUIRED)转载 2023-06-12 17:49:53 · 1582 阅读 · 0 评论 -
EasyExcel -- Excel百万级数据导入导出
1.如此大批量数据的导出和导入操作,会占用大量的内存实际开发中还应限制操作人数。2.在做大批量的数据导入时,可以使用jdbc手动开启事务,批量提交。转载 2023-06-09 14:34:09 · 5498 阅读 · 6 评论 -
WARN No appenders could be found for logger错误
此时我发现我的log4j提示未使用的属性,我就知道是我创建方法不对,我直接在resources下创建一个file写上log4j.properties及其内容,真正的应该是。的错误,因为此次是一个maven工程,所以资源路径应该在resources下面(非maven,放在src的根目录下)提示我们当看到“没有记录器找到附加程序”和“请配置正确的log4j”,此时我就知道是我log4j.相信很多朋友会和我发生一样的日志错误,首先这是一次非常容易的错误,提示我们看Apache。转载 2023-05-30 16:55:29 · 749 阅读 · 1 评论 -
springboot项目初始化执行sql
【代码】springboot项目初始化执行sql。原创 2023-05-25 15:21:37 · 1295 阅读 · 0 评论 -
Failed to bind properties under ‘spring.datasource.druid‘ to javax.sql.DataSource:
在springboot1.5的版本中,使用的是spring4.x,而springboot2.x使用的是spring5.x,在spring5.x后,官方弃用了log4j,而建议并使用log4j2,因此要么降低版本使用spring4.x的spring boot版本,要么额外去引入log4j的jar包。log4j的版本引起的换个新版本就好了。转载 2023-05-24 12:45:02 · 1047 阅读 · 0 评论 -
springboot项目启动不起来,没有报错信息问题解决
整理完毕,完结撒花。转载 2023-05-24 11:10:33 · 1299 阅读 · 1 评论 -
springboot集成mybatis将对象序列化储存数据库(blob字段)demo
【代码】springboot集成mybatis将对象序列化储存数据库(blob字段)demo。转载 2023-05-24 10:47:19 · 737 阅读 · 0 评论 -
SpringBoot 8种异步实现方式
异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:「发送短信、邮件、异步更新等」,这些都是典型的可以通过异步实现的场景。转载 2023-05-15 12:08:06 · 3838 阅读 · 0 评论 -
spring security配置错误:Can‘t configure antMatchers after anyRequest
是由于配置错误,不仔细导致。转载 2023-05-12 14:42:39 · 1162 阅读 · 0 评论 -
@Import注解详解(Import)
(ConfigurationClass, SourceClass, Collection, boolean)方法中,就是处理Import注解类引入的bd信息。写一个importConfig类 import这个myClass类。(Set)方法,接口,注册自定义的普通类MyClassRegistry。初始化spring容器 调用test方法 看输出,方法 继而将自定义的bd注册到。当中交给spring去初始化。方法 最终执行到实现类的。转载 2023-05-10 15:08:09 · 509 阅读 · 0 评论 -
springboot整合邮箱功能二(普通邮件, html邮件, thymleaf邮件)
第二个参数要为true,表示开启识别html标签.默认是false,也就是不识别.方法和上面方法2中的代码是一致的,只相当于邮件内容还是html标签,现在就是使用的。开启的时候,需要通过手机发送一条信息作为验证,验证成功后,会给你一个。下文中所有的实现都是写在 EmailService 类中。如果发送的内容包括html标签,则需要。用于封装邮件中需要包含的信息。,将内容封装到该对象中,再。,这个后面我们要用到。原创 2023-05-08 14:12:31 · 4218 阅读 · 0 评论 -
springboot整合邮箱功能一(实战)
邮件发送其实是一个非常常见的需求,用户注册,找回密码、校验码等地方。如果使用短信还需缴费。这里发送者邮箱选用了163邮箱。原创 2023-05-08 11:52:34 · 4533 阅读 · 0 评论 -
springboot、SpringCloud 常见版本版本介绍
因为它的稳定性高,同时也是官方所推荐的版本。至于版本号的问题,大家根据自己的业务需求自主选择。Spring Boot的版本以数字表示。例如:Spring Boot 2.4.1.RELEASE -->基于以上的版本号的说明和自己多年的开发经验,我们通常会。主版本.次版本.增量版本(Bug修复)软件版本一般分为四个部分组成,原创 2023-05-06 11:15:43 · 1791 阅读 · 0 评论 -
SpringBoot中使用redis事务
redis事务只支持单机,不支持cluster需要开启事务时,只需要在对应的方法或类上使用注解即可,SpringBoot自动开启了@EnableTransactionManagement需要注意事务不生效的几种情况redis事务依赖于jdbc的事务管理。原创 2023-04-23 17:09:25 · 1700 阅读 · 0 评论 -
springboot使用redis事务
Redis Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。标记一个事务块的开始。执行所有事务块的命令。转载 2023-04-23 15:28:57 · 968 阅读 · 0 评论 -
SpringBoot整合Spring Security【超详细教程】
这段代码中,我们先定义了一个接口UserService去继承UserDetailsService,然后用UserServiceImpl实现了UserService,就相当于UserServiceImpl实现了UserDetailsService,这样我们就可以去实现loadUserByUsername()方法,内容很简单,就是用用户名去数据库中查出对应的SysUser,然后具体的验证流程就可以交给其它的过滤器去实现了,我们就不用管了。现在再去写一个测试类,调用RsaUtils中的相应方法去生成公钥和私钥。转载 2023-03-27 11:49:13 · 1131 阅读 · 0 评论 -
@Async失效情况
7、在Async 方法上标注@Transactional是没用的,但在Async 方法调用的方法上标注@Transactional 是有效的。6、类中需要使用@Autowired或@Resource等注解自动注入,不能自己手动new对象。4、spring无法扫描到异步类,没加注解@Async 或 @EnableAsync注解。直接使用 @Async 注解没指定线程池的话,即未设置TaskExecutor时。3、注解@Async方法使用static修饰也会失效。容量是:Integer.MAX_VALUE。转载 2023-02-28 15:37:29 · 183 阅读 · 0 评论 -
Spring事务失效的8种情况
原因:因为按照spring配置文件的加载顺序来讲,先加载springmvc配置文件,再加载spring配置文件,我们的事物一般都在srping配置文件中进行配置,如果此时在加载srpingMVC配置文件的时候,把servlce也给注册了,但是此时事物还没加载,也就导致后面的事物无法成功注入到service中。8、在类A里面有方法a 和方法b, 然后方法b上面用 @Transactional加了方法级别的事务,在方法a里面 调用了方法b, 方法b里面的事务不会生效。7、如果在加有事务的方法内,使用了try…转载 2023-01-12 16:31:12 · 458 阅读 · 0 评论 -
批处理框架 Spring Batch场景实战
概念词就不多说了,我简单地介绍下 , spring batch 是一个 方便使用的 较健全的 批处理 框架。为什么说是方便使用的,因为这是 基于spring的一个框架,接入简单、易理解、流程分明。为什么说是较健全的, 因为它提供了往常我们在对大批量数据进行处理时需要考虑到的日志跟踪、事务粒度调配、可控执行、失败机制、重试机制、数据读写等。转载 2022-12-01 13:59:40 · 438 阅读 · 0 评论