易雪寒
永远做更好的自己!
展开
-
SpringBoot学习之EasyExcel解析合并单元格(三十九)
本解析主要采用反射来修改EasyExcel 返回的默认数据结构实现。原创 2024-08-08 17:37:25 · 182 阅读 · 0 评论 -
SpringBoot入门到精通之Hikaricp和Druid对比
较少。原创 2024-07-19 00:30:52 · 123 阅读 · 0 评论 -
Springboot学习之用EasyExcel4导入导出数据入门(三十八)
今天的内容到此结束,欢迎大家留言交流,我们一起进步学习。原创 2024-07-02 16:18:38 · 403 阅读 · 0 评论 -
SpringBoot学习之Redis下载安装启动【Mac版本】(三十七)
1、我们进入redis根目录安装make,右键根目录,选择【新建位于文件夹位置的终端窗口】,然后窗口会下载很多东西,如果没有报错就表示安装成功。2、我们下载的是redis-7.0.15.tar.gz,这是一个压缩包,我们双击解压这个压缩包,可以得到如下文件。2、进入src目录,使用下面命令连接redis服务,这里没有指定IP和端口就是默认本机和默认端口。4、使用redis,保存一个key为test2,value是“hello,world:“的数据。看到下面截图,就表示我们启动redis服务成功了。原创 2024-04-25 22:52:39 · 323 阅读 · 1 评论 -
SpringBoot学习之SpringBoot3集成OpenApi(三十八)
Springboot升级到3以后,就彻底放弃了对之前swagger的支持,转而重新支持最新的OpenApi,今天我们通过一个实例初步看看OpenApi和Swagger之间的区别.原创 2024-04-24 17:22:21 · 548 阅读 · 0 评论 -
SpringBoot学习之Redis下载安装启动【Windows版本】(三十六)
可以看到以服务的方式启动Redis失败了, 其原因是我们在上面已经启动Redis服务了,端口已经被占用了,想要启动以服务方式启动redis自然就失败了,办法就是关闭上面的Redis启动命令窗口以后再次执行就可以了。1、在上面地址栏中输入CMD,或者在根目录右键选择【在终端中打开】PowerShell,输入下面的命令,其中redis.windows.conf是redis的配置文件。2、 测试Redis。好了,今天Windows环境下下载安装和启动Redis就讲到了这里,我们下回再见。原创 2024-04-24 14:03:45 · 195 阅读 · 0 评论 -
SpringBoot学习之Kafka发送消费消息入门实例(三十五)
至于topic如何创建请参考本篇文章的上两篇文章:【SpringBoot学习之Kafka下载安装和启动【Windows版本】(三十四)】【SpringBoot学习之Kafka下载安装和启动【Mac版本】(三十三)】2、 我们成功在控制台看到了我们的消费者消费到了生产者发送的消息,其中第一条消息是我在上一篇文章中首次下载安装通过命令行发送给消费者的。这里我们定义一个Controller来生产消息,定义一个方法,方法中使用kafkaTemplate对象发送消息给指定的topic,1、加入kafka依赖。原创 2024-04-24 00:04:55 · 581 阅读 · 3 评论 -
SpringBoot学习之Kafka下载安装和启动【Mac版本】(三十三)
2、启动ZooKeeper服务,Kafka需要使用ZooKeeper,所以首先需要启动ZooKeeper服务,注意了Kafka是自带了Zookeeper的。3、进入到bin目录下执行 下面命令,看到截图所示没有报错,即表示Zookeeper启动成功。访问Apache Kafka官方网站下载最新版的Kafka二进制文件。在生产端输入信息后回车,到消费者端可以看到生产端发送的信息。--from-beginning:从头开始消费。看到截图这个就表示Kafka启动成功了。5、查看topic列表(可选)原创 2024-04-19 01:37:41 · 964 阅读 · 0 评论 -
SpringBoot学习之Kafka下载安装和启动【Windows版本】(三十四)
我们先进入到根目录,然后右键【在终端中打开】,输入下面命令启动zookeeper,4、找到conf目录下的server.properties文件,用编辑器打开,修改log.dirs目录如下,最后的kafka目录是我们手动增加的。3、我们先进入到根目录,然后右键【在终端中打开】,输入下面命令启动kafka服务,没有报错就是启动成功了。如果提示命令太长的,我们就把文件夹直接改成kafka,重复上面的操作,没有报错就是启动成功了。在根目录下,右键【在终端中打开】,输入下面命令创建一个叫test1的Topic。原创 2024-04-23 17:12:45 · 595 阅读 · 3 评论 -
SpringBoot学习之Kibana和Elasticsearch-Head的下载安装和启动(三十二)
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。原创 2024-04-08 03:06:32 · 420 阅读 · 0 评论 -
SpringBoot学习之ElasticSearch下载安装和启动(Mac版)(三十一)
本篇是接上一篇Windows版本,需要Windows版本的请看上一篇,这里我们继续把Elasticsearch简称为ES,以下都是这样。原创 2024-03-25 23:40:26 · 340 阅读 · 0 评论 -
SpringBoot学习之ElasticSearch下载安装和启动(Windows版)(三十)
本文先写windows下的下载安装和启动,后续有时间再补充docker版本下的,毕竟docker现在用的公司和个人太多了,这里我们后续对ElasticSearch简称为ES,不做赘叙。原创 2024-03-25 14:21:41 · 876 阅读 · 0 评论 -
SpringBoot学习之基于Log4j2的自定义日志初体验(三十)
对于一个Java程序员来说,创建一个SpringBoot项目重要性不言而喻,但是对于某些小白来说,仍然可能面临一些不可想象的困难,这里将所有我知道的总结如下。一、IDEA旗舰版【IDEA Ultimate Edtion】当你有办法搞到IDEA旗舰版j激活码或者买到正版的License时候,创建一个SpringBoot见会变得无比荒谬的简单1、File ----> New ------> Prject2、找到Spring Initializer,填写右边项...原创 2021-08-23 01:27:56 · 816 阅读 · 0 评论 -
SpringBoot学习之自定义注解和AOP切面统一保存操作日志(二十九)
这个注解是用来控制是否需要保存操作日志的自定义注解(这个类似标记或者开关)原创 2024-03-08 18:34:24 · 244 阅读 · 0 评论 -
代码整洁之道之优化if-else的8种方案(一)
可以消除if-else。上述方案都可以达到优化if-else的效果,但是采用那种方案还是要看具体的代码逻辑以及业务处理逻辑,重要的是要评估项目的复杂性、维护性和性能需求,选择最适合项目需求的优化方案。我们可以将一些操作(比如一些状态)的一些共性的方法抽象成一个公共接口,然后针对这些操作实现这些接口完成不同的逻辑,在调用时我们只需要传入对应的操作类即可,对外的操作方法都是同一个。我们日常开发的项目中,如果代码中存在大量的if-else语句,阅读起来非常的折磨(直接劝退),维护起来也很难,也特别容易出问题。原创 2024-02-28 14:17:44 · 84 阅读 · 0 评论 -
SpringBoot学习之集成JWT(二十八)
需要创建JWT拦截器,以用来对RestApi接口进行验证是否在提交请求时候带有合法的JWT,当然我们也可以自定义注解用来对没有JWT token的请求直接放行。可以看到,输入正确的token以后拦截器对于除登录注册以外的接口都予以放行通过,关于更多JWT的知识后续我们再补充讲解,我们下回再见。既然JWT需要创建和验证,那么我们需要新建一个工具类,其中包含核心两大方法创建JWT和验证JWT。登录swagger界面,我们直接测试登录和注册以外的接口,比如下面的根据ID获取用户的接口,原创 2023-05-23 22:28:12 · 467 阅读 · 0 评论 -
SpringBoot学习之集成Swagger3(二十七)
输入token,点击Authorize成功后,Authorize会变成Logout,点击Close即可,后面我们就可以随意访问任何需要验证登录的接口了。地址成功跳转后,界面大致如下,则表示swagger3基本配置成功。通过登录接口(登录数据自己在数据库中创建一些测试用户,userService部分此处不做详细说明),我们可以返回如下token。本篇文章内容较多,读者可以结合自己水平和理解能力酌情学习其中部分内容和代码,今天的内容到此为止,我们下次再见。-- Druid 数据连接池依赖 -->原创 2023-05-20 22:18:15 · 746 阅读 · 0 评论 -
SpringBoot学习之集成Redis(二十六)
redis的常用使用场景,可以做缓存,分布式锁,自增序列等,使用redis的方式和我们使用数据库的方式差不多,首先我们要在自己的本机电脑或者服务器上安装一个redis的服务器,通过我们的java客户端在程序中进行集成,然后通过客户端完成对redis的增删改查操作。由此可以说明我们的Redis可以成功的存取收据,今天的博客到此为止,如果有疑问的请留言,我们下次再见。如果有不知道怎么下载和安装Redis的网友,请留言我再考虑补充,类似博客网上随手可得,此处不表。原创 2023-05-20 19:11:55 · 122 阅读 · 0 评论 -
SpringBoot学习之自定义注解(二十五)
SpringBoot学习之自定义注解原创 2022-08-06 02:23:57 · 199 阅读 · 0 评论 -
SpringBoot学习之注解校验参数@Validated@Valid(二十四)
SpringBoot学习之注解校验参数原创 2022-08-04 23:17:29 · 264 阅读 · 0 评论 -
SpringBoot学习之事件监听ApplicationListener和@EventListener(二十三)
事件监听是Spring提供的一种重要的通讯技术,他可以最大限度的解耦对象之间的关系,通过事件监听来实现对象之间的通讯一、内置事件序号 Spring 内置事件 & 描述 1 ContextRefreshedEvent ApplicationContext 被初始化或刷新时,该事件被发布。这也可以在 ConfigurableApplicationContext接口中使用 refresh() 方法来发生。此处的初始化是指:所有的Bean被成功装载,后处理Bean被检原创 2022-05-21 01:43:32 · 345 阅读 · 0 评论 -
SpringBoot学习之Mybatis-Plus实现多数据源(二十二)
用过Mybatis-Plus的小伙伴一定对其炫技般的功能赞叹不已,今天我们来实战讲解他的另一个非常重要的功能:多数据源切换功能。所谓多数据源切换就是我们的项目用到了至少两个以上的数据库,我们希望可以随时随地自由的切换我们想要操作的数据库,自己利用AOP或者其他方式自己实现是一项比较麻烦的事情,但是今天看看利用MyBatis-Plus只需要简单的几步就能完美的让我们实现该功能。一、添加对应的starter<dependency> <groupId>c...原创 2022-05-18 01:59:20 · 284 阅读 · 0 评论 -
SpringBoot学习之EasyExcel2.2.3导入导出Excel(二十一)
项目中经常需要解析Excel表格并读取数据,之前很多人用过POI,但是POI技术明显有点老旧,存在的问题很多,比如当文件较大时候就会存在内存溢出,而且代码臃肿设计落后,不支持注解式编程,这些问题都严重影响了POI的学习和使用。为了解决POI的不足,阿里巴巴推出了开源Excel解析工具EasyExcel,并且现在已经升级到EasyExcel2.x版本【关于EasyExcel1.x版本实例请看我之前的一篇文章或者网上其他网友】,2.x版本进一步优化精简了代码提高了易用性,加强...原创 2022-01-09 14:55:59 · 526 阅读 · 0 评论 -
SpringBoot学习之统一异常处理(二十)
异常处理是Java程序员最头痛的问题之一,存在的问题如下:有些异常是可以预料的,有些异常是无法及时预料到的,能预料的异常可以处理,那不能预料的异常怎么办? 预料到的异常每个人处理方式不一样,有的程序员会选择向上抛出,抛出了还要考虑有没有上层代码处理呢? 有的程序员选择自己手动处理异常,即使自己手动处理,每个程序员处理方式和处理结果也不一样返回的异常提示也不一样?那有没有办法呢,有!今天我们就来讲一下Java开发中的统一异常处理,彻底解决这上面三个恼火的问题。在学习本...原创 2021-12-17 02:10:13 · 734 阅读 · 0 评论 -
SpringBoot统一结果处理和统一异常处理
二、Java 项目构建 -- 统一结果处理1、为什么使用统一结果? 大部分前后端项目采用 JSON 格式进行数据交互,定义一个统一的数据规范,有利于前后台的交互、以及信息处理。2、数据格式?如何处理?代码实现?(1)数据格式? 是否响应成功(success: true / false) 响应状态码(code:200 / 400 / 500 等) 状态码描述(message:访问成功 / 系统异常等) 响应数据(data:处理的数据)【输出格式如下所示:】原创 2024-04-26 01:07:48 · 77 阅读 · 0 评论 -
SpringBoot学习之统一JSON结构自动封装(十九)
SringBoot开发中经常涉及到前后端接口对接,后端需要把数据封装成固定JSON结构以方便前端更好的解析和使用,比如这样:常规操作是我们定义一个统一返回结构,在拿到数据以后自己手动封装一下,比如用下面这个结构:package com.xu.wemall.commons.utils;import com.xu.wemall.commons.enums.ResultEnum;import lombok.Data;import java.io.Serializa...原创 2021-12-03 01:45:47 · 747 阅读 · 0 评论 -
SpringBoot学习之Swagger3和开源升级界面(十八)
一、创建一个spring boot 项目二、 pom.xml里引入包<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version></dependency>三、创建SwaggerConfig配置.原创 2021-12-02 03:45:27 · 701 阅读 · 0 评论 -
Springboot学习之线程池任务调度类ThreadPoolTaskScheduler(十七)
springboot中有一个bean,ThreadPoolTaskScheduler,可以很方便的对重复执行的任务进行调度管理;相比于通过java自带的周期性任务线程池ScheduleThreadPoolExecutor,此bean对象支持根据cron表达式创建周期性任务。...原创 2021-08-26 03:04:11 · 882 阅读 · 0 评论 -
SpringBoot学习之手把手教你怎么用IDEA实现远程调试(十六)
一般时候我们都是选择在本地打断点,然后启动debug调试程序,但是有时候可能本地调试没有毛病,但是远程运行就出现一些奇奇怪怪的问题,所以我们这个时候必须用到远程调试。以下操作是基于2021版IDEA和JDK1.8版本,项目是一个标准的SpringBoot项目。一、配置远程调试配置1、点击图中位置,打开Edit Configuration2、点击这里的+号,找到Remote JVM Debug3、配置远程调试二、启动你的项目通过SSH远程工具登...原创 2021-08-14 23:30:08 · 542 阅读 · 0 评论 -
SpringBoot学习之Spring消息事件处理机制(十五)
1. 使用ApplicationEventPublisher 发布事件复制下面全部代码,右键包名,粘贴即可生成java类,执行即可看到效果。事件机制:需要自定义一个事件类继承ApplicationEvent;需要自定义一个监听器类实现ApplicationListener接口,或普通类的方法中使用@EventListener注解;使用默认发布器ApplicationEventPublisher发布即可;事件类不需要注入到IOC;监听器需要注入到IOC;ApplicationEventPubl原创 2021-06-04 03:11:03 · 710 阅读 · 1 评论 -
Spring Boot学习之Profile多环境的配置(十四)
Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活 ,制定参数等方式快速切换环境多profile文件形式:--格式:application - {profile}.properties :eg :application-test.propertiesapplication-pro.properties多profile文档块模式:...原创 2021-06-01 03:52:48 · 485 阅读 · 0 评论 -
SpringBoot学习之四种读取properties和yml文件的方式(十三)
一、使用`@ConfigurationProperties`注解将配置文件属性注入到自定义配置对象类中(1)、首先定义配置对象原创 2021-05-30 02:39:07 · 276 阅读 · 0 评论 -
SpringBoot学习之springboot整合ActiveMQ【Topic模式】(十二)
上文已经详细介绍了点对点模式(Queue)下的消息队列,今天就来再介绍一下消息队列的另一种模式:订阅模式。一、订阅模式的流程生产者产生一条消息message放入一个topic中,该topic已经三个消费者订阅了,那么被放入topic中的这条消息,就会同时被这三个消费者取走(当然他们必须都处于在线状态),并进行“消费”。其实就类似现实生活中的手机接收推送。二、订阅模式的应用场景...原创 2020-02-17 04:14:30 · 454 阅读 · 0 评论 -
SpringBoot学习之springboot整合ActiveMQ【Queue模式】(十一)
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。消息形式支持点对点和订阅-发布。一、ActiveMQ是什么ActiveMQ是消息队列技术,为解决高并发问题而生 ActiveMQ生产者消费者模型(生产者和消费者可以跨平台、跨系统) ActiveMQ支持如下...原创 2020-02-17 03:26:32 · 226 阅读 · 0 评论 -
SpringBoot学习之如何优雅的校验参数(十)
前言做web开发有一点很烦人就是要校验参数,基本上每个接口都要对参数进行校验,比如一些格式校验 非空校验都是必不可少的。如果参数比较少的话还是容易 处理的一但参数比较多了的话代码中就会出现大量的IF ELSE就比如下面这样:这个例子只是校验了一下空参数。如果需要验证邮箱格式和手机号格式校验的话代码会更多,所以介绍一下validator通过注解的方式进行校验参数。什么是Validat...原创 2020-02-15 20:44:04 · 1014 阅读 · 0 评论 -
SpringBoot学习之基于Mycat分库分表(九)
一、背景随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。二、什么是分库分表简单来说,就是指...转载 2019-12-17 17:22:31 · 168 阅读 · 0 评论 -
Springboot学习之RabbitMq实现延时队列【取消超时订单】(八)
测试前言RabbitMQ 作为目前应用相当广泛的消息中间件,在企业级应用、微服务应用中充当着重要的角色。特别是在一些典型的应用场景以及业务模块中具有重要的作用,比如业务服务模块解耦、异步通信、高并发限流、超时业务、数据延迟处理等。这篇文章带领大家使用RabbitMQ实现延时队列1.搭建项目环境工欲善其事,必先利其器,接触一个新技术之前,肯定要先安装环境和工具,本篇文章不提供安装教程,...原创 2019-12-20 18:23:19 · 3140 阅读 · 1 评论 -
SpringBoot学习之zookeeper、dubbo入门项目实战(七)
项目结构dubbo-demo dubbo-api:提供api接口,一般存储实体类和接口服务 dubbo-provider:dubbo生产者提供服务,一般存储接口具体实现 dubbo-customer:dubbo消费者使用服务,分发请求一、新建项目dubbo-demo1、新建Maven项目,File-->new-->Project,选择Maven2、...原创 2019-10-14 16:06:27 · 528 阅读 · 0 评论 -
SpringBoot学习之自定义注解AOP统一打印请求日志(六)
其实,小哈在之前就出过一篇关于如何使用 AOP 切面统一打印请求日志的文章,那为什么还要再出一篇呢?没东西写了?哈哈,当然不是!原因是当时的实现方案还是存在缺陷的,原因如下:不够灵活,由于是以所有 Controller 方法中的方法为切面,也就是说切死了,如果说我们不想让某个接口打印出入参日志,就办不到了; Controller包层级过深时,导致很多包下的接口切不到;今天主要说说如何...原创 2019-05-08 11:27:11 · 1989 阅读 · 4 评论 -
SpringBoot学习之用ResponseEntity批量下载压缩文件(五)
我看了很多网上的demo,先生成ZIP压缩文件,然后再下载。我这里是生成ZIP文件流 进行下载。(核心代码没多少,就是一些业务代码)@RequestMapping(value = "/")public ResponseEntity<byte[]> downloadInterviewFile() throws Exception { // 根据面试官主键编码 下载文件 ...原创 2019-10-18 11:08:25 · 4037 阅读 · 5 评论