springBoot
文章平均质量分 71
springBoot
ZNineSun
大道至简,返璞归真
展开
-
RocketMq详解:二、SpringBoot集成RocketMq
在上一章中我们对Rocket的基础知识、特性以及四大核心组件进行了详细的介绍,本章带着大家一起去在项目中具体的进行应用,并设计将其作为一个工具包只提供消息的分发服务和业务模块进行解耦。原创 2024-06-10 21:52:34 · 1362 阅读 · 0 评论 -
RocketMq详解:一、RocketMQ 介绍及基本概念
RocketMQ 是阿里巴巴开源的分布式消息中间件,现已成为 Apache 软件基金会的顶级项目。支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。它里面有几个区别于标准消息中件间的概念,如Group、Topic、Queue等。系统组成则由Producer、Consumer、Broker、NameServer等组件组成。原创 2024-04-28 17:48:33 · 8678 阅读 · 0 评论 -
SpringBoot接入轻量级分布式日志框架GrayLog
Graylog 日志监控系统Graylog 是一个开源的日志聚合、分析、审计、展现和预警工具。在功能上来说,和 ELK 类似,但又比 ELK 要简单很多。依靠着更加简洁,高效,部署使用简单的优势很快受到许多人的青睐。当然,在扩展性上面确实没有比 ELK 好,但是其有商业版本可以选择。部署 Graylog 最简单的架构就是单机部署,复杂的也是部署集群模式,架构图示如下所示。我们可以看到其中包含了三个组件,分别是 Elasticsearch、MongoDB 和 Graylog。其中。原创 2023-12-18 19:12:53 · 3157 阅读 · 0 评论 -
注解方式优雅的实现Redisson分布式锁
通常我们都会将redisson实例注入到方法类里面,然后调用加锁方法进行加锁,如果其他业务方法也需要加锁执行,将会产生很多重复代码,由此采用AOP切面的方式,只需要通过注解的方式就能将方法进行加锁处理。/*** @date 2023年11月27日String errorDesc() default "系统正常处理,请稍后提交";/*** @date 2023年11月27日String errorDesc() default "系统正常处理,请稍后提交";/**原创 2023-11-27 20:08:05 · 858 阅读 · 0 评论 -
SpringBoot实现pdf添加水印
在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。本文将介绍几种方案来实现PDF添加水印。原创 2023-07-09 23:01:33 · 908 阅读 · 0 评论 -
Spring Boot 如何快速过滤出一次请求的所有日志?
本文讲述了如何使用MDC工具来快速过滤一次请求的所有日志,并通过装饰器模式使得MDC工具在异步线程里也能生效。有了MDC,再通过AOP技术对所有的切面植入requestId,就可以将整个系统的任意流程的日志过滤出来。使用MDC工具,在开发自测阶段,可以极大地节省定位问题的时间,提升开发效率;在运维维护阶段,可以快速地收集相关日志信息,加快分析速度。原创 2023-01-31 14:56:04 · 742 阅读 · 0 评论 -
Error(3, 32) java 无法访问org.springframework.boot.SpringApplication
如果以上步骤还无法解决,那有可能就是你的jdk版本和SpringBoot版本不兼容,自己按照下面的版本对应一下吧。原创 2022-12-09 17:11:33 · 6166 阅读 · 0 评论 -
Spring Boot超大文件上传,实现秒传
分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。断点续传是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传或者下载未完成的部分,而没有必要从头开始上传或者下载。本文的断点续传主要是针对断点上传场景。通俗的说,你把要上传的东西上传,服务器会先做MD5校验。原创 2022-12-08 19:54:35 · 8203 阅读 · 1 评论 -
SpringBoot配置https
由于HTTPS具有良好的安全性,在开发中得到了越来越广泛的应用,像微信公众号、小程序等的开发都要使用HTTPS来完成。对于个人开发者而言,一个HTTPS 证书的价格还是有点贵,但是呢,国内的一些云服务器厂商提供免费的HTTPS证书,一个账号可以申请数个,当然,在jdk中提供了一个Java数字证书,我可以也可以利用这个工具生成一个数字证书。原创 2022-11-22 18:57:43 · 1600 阅读 · 1 评论 -
Spring Boot+Netty+Websocket实现后台向前端推送信息
Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的API的客户端/服务器框架。可能在此之前你没有接触过,不过不要担心,下面我们通过一个消息推送的例子来看一下netty是怎么使用的。2.设置主启动类3.NettyServer4.MyChannelHandlerPool通道组池,管理所有websocket连接5.WebSocketHandler处理ws以下几种情况:6.Netty配置管理全局Channel以及用户对应的channel(推送消息)7.s原创 2022-11-16 13:44:17 · 2774 阅读 · 0 评论 -
SpringBoot集成monogoDB
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。原创 2022-09-28 16:38:49 · 853 阅读 · 0 评论 -
Redis+Guava实现高性能的二级缓存
我们开发中经常用到 Redis 作为缓存,将高频数据放在 Redis 中能够提高业务性能,降低 MySQL 等关系型数据库压力,甚至一些系统使用 Redis 进行数据持久化,Redis 松散的文档结构非常适合业务系统开发,在精确查询,数据统计业务有着很大的优势。同时我们在处理redis的热key时,最常用的解决方案便是通过本地缓存+redis缓存的方式,当然本地缓存的实现有很多,如:caffeine,ehcache,guava等,这样的话就可以将缓存的数据直接读到本地缓存了,本文通过google的。原创 2022-09-28 00:27:43 · 3197 阅读 · 1 评论 -
SpringBoot集成ShardingJDBC实现MySQL读写分离
如果你已经完成了数据库的主从配置,那接下来我们就具体的开始看看读写分离是怎么实现的。访问:http://localhost:8080/getAllUser。同时在主库里创建数据库:qw(名字自己随便取),同时新增表:user。访问:http://localhost:8080/addUser。可以看出:插入数据执行的是主库,而查询执行的则是从库。原创 2022-09-26 01:33:03 · 403 阅读 · 0 评论 -
Mybatis 中的 DAO 接口和 XML 文件里的 SQL 是如何建立关系的?
SqlSource以及动态标签SqlNodeMappedStatement对象Spring工厂Bean以及动态代理SqlSession以及执行器2、针对有两个XML文件和这个Dao建立关系是否会冲突的问题:不管有几个XML和Dao建立关系,只要保证唯一即可。原创 2022-09-08 17:37:15 · 345 阅读 · 0 评论 -
聊聊spring事务失效的12种场景
在使用@Transactional注解声明事务时,有时我们想自定义回滚的异常,spring也是支持的。可以通过设置参数,来完成这个功能。} }如果在执行上面这段代码,保存和更新数据时,程序报错了,抛了等异常。而BusinessException是我们自定义的异常,报错的异常不属于BusinessException,所以事务也不会回滚。即使rollbackFor有默认值,但阿里巴巴开发者规范中,还是要求开发者重新指定该参数。这是为什么呢?原创 2022-09-03 11:14:17 · 213 阅读 · 0 评论 -
猿创征文|SpringBoot 集成 thumbnailator (图片缩放,区域裁剪,水印,旋转,保持比例)
之前在公司工作的时候,曾经做过企业的数据加密,其中就包含图片,文档以及pdf的水印添加问题,好久没弄有些遗忘了,今天又重新整理了一下,也顺便给自己留个记录。thumbnailator 是 Google 开源的图片处理库,支持:图片缩放,区域裁剪,水印,旋转,保持比例。下面跟着我的操作,大家一起走遍。首先确保自己已经搭建好了一个SpringBoot的web项目。......原创 2022-09-01 15:21:04 · 733 阅读 · 0 评论 -
maven打包错误: Failed to execute goal org.apache.maven.pluginsmaven-resources-plugin3.2.0resources
其实上面的错误提示也很明显:它说是。原创 2022-08-08 21:57:14 · 2496 阅读 · 2 评论 -
token 过期后,如何自动续期?
JWT token的 payload 部分是一个json串,是要传递数据的一组声明,这些声明被JWT标准称为claims。除了以上标准声明以外,我们还可以自定义声明。下面代码片段实现了生成一个带有过期时间的token。JWT设置了过期时间以后,一旦过期,那么接口就不能访问了,需要用户重新登录获取token。如果经常需要用户重新登录,显然这种体验不是太好,因此很多应用会采用token过期后自动续期的方案,只有特定条件下才会让用户重新登录。......原创 2022-08-04 12:44:13 · 4010 阅读 · 0 评论 -
SpringBoot+flowable快速实现工作流
在简单了解flowable后与activiti框架相比的第一感觉就是开发方便快速,易与springBoot等各种框架快速整合。如果项目中需要快速实现一些工作流的相关功能那么用此框架是一个不错的选择。我先给大家简单的对flowable做个介绍吧。Flowable提供了一个组高效的核心开源业务流程引擎,为开发人员,系统管理员和业务用户提供工作流和业务流程管理(BPM)平台。全部用Java编写,并且基于Apache 2.0许可的开源,代码在社区维护。其核心是一个快速,经过试验和测试的动态BPMN流程引擎,附带DM原创 2022-07-17 15:09:58 · 6536 阅读 · 5 评论 -
分库分表-ShardingSphere
有人就开始疑惑Sharding-JDBC和Sharding-Sphere有什么区别呢?sharding-jdbc后续发展为Sharding-Sphere,包含sharding-jdbc、Sharding-Proxy、Sharding-Sidecar。概述:ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数原创 2022-06-19 01:28:49 · 545 阅读 · 0 评论 -
SpringBoot集成neo4j实战
文章目录1.图数据库Neo4j介绍1.1 什么是图数据库(graph database)1.2 为什么需要图数据库1.3 Neo4j特点和优势Neo4j的特点Neo4j的优点1.4 Neo4j - 数据模型2.安装Neo4j3.Neo4j常用sql语句4.SpringBoot集成neo4j4.1 添加依赖4.2 在application.properties中配置连接信息5.实战5.1 新增实体类5.2 新建持久化类(PersonRepository)5.3 测试新增删除修改查询建立联系1.图数据库Neo原创 2022-05-26 17:19:14 · 6816 阅读 · 6 评论 -
解决required a bean of type ‘org.springframework.web.client.RestTemplate‘ that could not be found
1.问题描述我们使用@Autowired 装配RestTemplate时提示:Could not autowire. No beans of ‘RestTemplate’ type found.2.原因错误提示说RestTemplate没找到,这是因为在 Spring Boot 1.3版本中,会默认提供一个RestTemplate的实例Bean,而在 Spring Boot 1.4以及以后的版本中,这个默认的bean不再提供了,我们需要在Application启动时,手动创建一个RestTem原创 2022-04-27 22:31:03 · 5237 阅读 · 0 评论 -
idea快速实现将SpringBoot项目打包Docker镜像并部署
文章目录 1.修改docker的配置文件 2.配置端口开放 3.IDEA安装Docker插件 4.IDEA配置docker 5.SpringBoot整合Docker配置5.1 安装pom依赖5.2 build镜像5.3 启动镜像 1.修改docker的配置文件修改文件信息路径如下:/etc/docker/daemon.json在配置文件中添加以下内容: "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]注意:如果没有原创 2022-04-12 16:30:12 · 4314 阅读 · 2 评论 -
SpringBoot集成redis
1.添加依赖 <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2.添加配置# REDIS (RedisPro原创 2022-03-15 21:26:14 · 188 阅读 · 0 评论 -
使用Hutool发送邮件、生成二维码、验证码
Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。1.生成二维码首先需要引入hutool依赖,以及使用比较广泛的二维码工具类zxing。如下: <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId>原创 2022-02-18 10:41:41 · 11992 阅读 · 0 评论 -
Spring Boot 实现接口的各种参数校验
在我们进行接口开发时,在对参数的接收时,我们需要冗余复杂的校验规则 来进行接口参数的校验,接下来推荐一个好用的校验工具Spring Validation。Java API规范 (JSR303) 定义了Bean校验的标准validation-api,但没有提供实现。hibernate validation是对这个规范的实现,并增加了校验注解如@Email、@Length等。Spring Validation是对hibernate validation的二次封装,用于支持spring mvc参数自动校验原创 2022-01-24 15:27:38 · 6391 阅读 · 7 评论 -
使用redis分布式锁模拟10万人抢单
什么是分布式锁,我之前有一篇文章已经写得非常清楚,包含原理和方法,点击此处查看接下来我们要实现的抢单方法 则是基于最简单的redis的setnx方法来进行实现添加maven依赖<!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-d原创 2021-12-29 19:41:36 · 964 阅读 · 2 评论 -
java实现延时处理
业务场景:1.数据库轮询1.1 思路1.2 实现1.2.1在启动类上添加注解@EnableScheduling,如下图所示:1.2.2 创建配置类,添加注解@Scheduled1.3 优缺点2.JDK的延迟队列2.1 思路2.2 实现2.3 优缺点3.时间轮算法3.1 思路3.2 实现3.2.1 添加maven依赖3.2.2 具体实现3.3 优缺点4.redis缓存4.1 利用redis的zset4.1.1 添加redis依赖4...原创 2021-12-07 15:40:44 · 11541 阅读 · 0 评论 -
rabbitMq实现延迟队列
业务场景:1.生成订单30分钟未支付,则自动取消,我们该怎么实现呢?2.生成订单60秒后,给用户发短信1 安装rabbitMqwindows安装ubuntu中安装2 添加maven依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp --> <dependency> <groupId&原创 2021-12-07 15:34:10 · 9338 阅读 · 1 评论 -
SprinbgBoot配置日志
在我们项目的日常维护中,日志是十分重要的问题排查方式,接下来我通过lombok中包含日志系统来看一下SpringBoot中如何配置相关日志信息,并且将日志信息输出到指定目录文件中。1.配置lombok点击此处查看2.如何使用日志在我们需要输出日志的类上添加注解@sl4j然后通过log.error();log.warn();log. info();log.debug();的方式在我们的代码中输出我们想要的日志级别。优先级从高到低分别是 ERROR、WARN、INFO、DEBUG3原创 2021-11-23 14:58:47 · 433 阅读 · 0 评论 -
SpringBoot引入jieba分词
1.添加maven依赖 <!-- https://mvnrepository.com/artifact/com.huaban/jieba-analysis --> <dependency> <groupId>com.huaban</groupId> <artifactId>jieba-analysis</artifactId> <ve原创 2021-11-17 16:00:53 · 1825 阅读 · 1 评论 -
线程异步在项目中的使用
在我们进行海量数据的处理时,如果通过传统的方式也就是同步的方式进行查询等操作,对用户的响应时间是不友好的。而引入线程异步操作之后,则会大大改善我们查询等操作消耗的时间。我们同时对两个均含有10万条数据的表进行查询,未使用线程异步的代码如下: public void unusedThread() { long startTime = System.currentTimeMillis(); //获取开始时间 List<TbUser> tbUserList =原创 2021-09-29 13:24:09 · 265 阅读 · 2 评论 -
解决mybatisplus 主键id报错,Cause java.lang.IllegalArgumentException argument type mismatch
解决方案:在实体类的主键上添加@TableId(type = IdType.AUTO)如下所示: @TableId(value = "select_record_id", type = IdType.AUTO) private Integer selectRecordId;原创 2021-09-18 13:16:15 · 526 阅读 · 0 评论 -
springBoot 实现文件提交(form表单提交)
Springboot 中使用 RestTemplate 向另一个RESTful api 请求multipart file方式如下:@RequestMapping("/upload") public String postData(HttpServletResponse response, HttpServletRequest request) throws IOException, AWTException { response.setHeader("Access-Control-原创 2021-09-09 14:50:17 · 3020 阅读 · 0 评论 -
java实现屏幕截图
话不多说直接上代码 /** * 屏幕截图 * * @param imageName 存储图片名称 比如: screen * @param path 图片路径 比如: C:\Users\NineSun\Desktop\java实现屏幕截图\ * @param imgType 图片类型 png 或 jpg * @throws AWTException * @throws IOException */ pu原创 2021-09-09 14:44:52 · 2055 阅读 · 1 评论 -
SpringBoot 线程池
在我们做数据迁移之类的操作时,可能会由于数据量过大导致迁移时间很长,此时我们可以通过线程池来进行插入的优化而线程池的选取则可以用Spring提供的对ThreadPoolExecutor封装的线程池ThreadPoolTaskExecutor,直接使用注解启用.使用步骤1.创建一个线程配置类import com.example.threadpoolexecutor.executor.VisiableThreadPoolTaskExecutor;import org.slf4j.Logger;imp原创 2021-09-07 13:12:54 · 267 阅读 · 0 评论 -
解决zuul启动之后显示HTTP Status 500 – Internal Server Error错误
问题描述:我使用spring cloud集成zuul时,项目可以运行起来,但是当通过路由进行访问时提示HTTP Status 500 – Internal Server Error错误产生原因:springBoot版本和spring-cloud-starter-netflix-zuul版本不一致在未修改之前我的配置如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/原创 2021-08-24 20:49:16 · 1752 阅读 · 0 评论 -
解决zuul返回页面乱码的问题
在application.properties文件中添加如下配置:# 解决返回页面中文乱码问题server.servlet.encoding.enabled=trueserver.servlet.encoding.force=trueserver.servlet.encoding.charset=UTF-8原创 2021-07-28 14:38:25 · 541 阅读 · 0 评论 -
java 操作大数据量的Excel
1.需求分析对于百万级数据量的数据从excel中读取和写入到数据库,主要耗费时间的地方就在读取excel,解析文件信息,以及频繁的和数据库建立连接所产生的耗时,所以我们从以下几个方向去解决:EasyExcel + 缓存数据库查询操作 + 批量插入EasyExcel用于解决对于excel的操作所花费的时间,下面是开发人员对其的评价:缓存数据库查询操作以空间换时间逐行查询数据库校验的时间成本主要在来回的网络IO中,优化方法也很简单。将参加校验的数据全部缓存到HashMap 中。直接到 Ha原创 2021-07-01 15:27:41 · 2053 阅读 · 1 评论 -
SpringBoot设置md5加密
本文章将介绍不含密码盐以及含有密码盐的md5在SpringBoot中的应用import java.security.MessageDigest;import java.util.Base64;public class EncryptedUtils { private static final String CipherSalt = "1qNcIUyGASa2FQKRxOXALA==";//对应字符==>ninesun /** * 加密md5 *原创 2021-06-25 14:25:06 · 1937 阅读 · 2 评论