自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 资源 (2)
  • 收藏
  • 关注

原创 工具类记录之Guawa的Splitter

记录一下日常开发中常常使用到的工具类,今天记录的主要是的,非常的使用,具体的还是得需要大家去看看源码。,我们将字符串分割后转为集合可以这样做:使用根据逗号分割字符串后转为集合我们希望 结果集中的字符串没有空格然后我们又想 去掉集合中的空字符串元素...

2022-06-08 07:00:00 194 1

原创 Map的遍历几种方式

Map的遍历方式介绍

2022-06-07 22:14:06 1707

原创 RestTemplate使用详解及踩坑记录

最近项目中需要使用的形式进行调用第三方的服务,我们项目中使用的是进行交互调用。不像我们以前写的,需要写很多的工具类,基本上是开箱即用,本文主要是介绍其在spring boot项目中的基本使用,对于日常的开发等,基本上是没有问题。当谈论时,有一种常见的错误就是将其视为“基于的服务”——将作为另一种类型的远程过程调用(,)机制,就像一样,只不过是通过简单的来触发,而不是使用大量的命名空间恰好相反,与几乎没有任何关系。是面向服务的,并关注于行为和动作;而是面向资源的,强调描述应用程序的事物和名词。更简洁地讲,就是

2022-06-07 21:59:53 729

原创 Mysql使用之left join详解

简单理解就是把左边的表的记录全部找出来。系统会先用表和表做个笛卡儿积,然后以表为基表,去掉笛卡儿积中表部分为的记录。最后形成你的结果。进行左连接时,就有涉及到主表、辅表,这时主表条件写在后,辅表条件写在后面。

2022-05-31 22:31:06 18033

原创 Bug记录之日期格式化时注解@DateTimeFormat无效的问题

1.1 简述今天再写RestFul在写接口时,需要把前台传来的日期String类型转为Date类型,无论如何都不能完成日期格式的转换,直接报错,还是自己技艺不够高超,遂以这篇文章进行记录。想到前台传来的字符串日期格式转成实体的日期格式,这时我们可能会用到@DateTimeFormat注解在请求数据为非JSON格式时,这个注解是没有问题的,可用的;但是当请求数据为JSON格式时,问题就出现了此时如果请求参数没有加@RequestBody注解,那么请求参数不会执行类型转换操作,数据都是默认为空(基本

2022-05-25 07:00:00 675

原创 MyBatis Mapper.xml的choose/case标签详解

1.1 简述今天在开发时使用到了动态拼接where后面的sql语句,现进行简单的记录。1.2 choose详解MyBatis Mapper.xml的choose标签的作用类似于java中的switch语句,使用choose标签时为了避免使用大量的if元素。choose元素包含了when元素(对应java中的case语句),otherwise元素则对应java中的default语句。1.2.1 choose元素的DTD定义<!-- choose标签类似于java中的switch语句,用于大量的

2022-05-23 22:59:53 2892

原创 Bug记录之Mybatis中Mapper.xml文件的if判断问题

1.1 问题描述才疏学浅,今天在写一个sql语句时,用到了if判断,但是执行结果不是我想要的,遂记录这次的bug,供大家参考。上述表达,当传入参数validCoupon的值为“1”时,仍然不能执行if判断下的sql语句。1.2 剖析原因public class ExpressionEvaluator {   public boolean evaluateBoolean(String expression, Object parameterObject) {    bject value =

2022-05-23 22:25:10 1009

原创 今日踩坑记之Lombok使用@Builder注解带来的两大坑

1.1 简述今天做项目时使用@Builder注解,突然发现构造方法报错,本篇文章就这次的踩坑进行记录,以便同学们可以避坑。1.2 @Data和@Builder导致无参构造丢失单独使用@Data注解,是会生成无参数构造方法。单独使用@Builder注解,发现生成了全属性的构造方法。@Data和@Builder一起用:我们发现没有了默认的构造方法。如果手动添加无参数构造方法或者用@NoArgsConstructor注解都会报错!1.2.1 两种解决方法1、构造方法加上@Tolerate 注解,让l

2022-05-19 07:00:00 730 2

原创 开发中git提交代码注释规范

1.1 简述git commit -m “本次提交注释信息规范”1.2 注释分类feat: 修改/增加新功能fix: 修改bug的变更docs: 文档相关变更style: 不影响代码含义的变更(空白、格式、缺少符号等)refactor: 代码重构变更perf: 改进性能的变更test: 添加/修改现有的测试chore: Build, .gitignore或辅助工具、库(如文档生成)等变更1.3 示例如下1.feat:增加新功能git commit -m 'feat: xx'2.

2022-05-18 20:54:43 1179 1

原创 application/json与application/x-www-form-urlencoded详解

1.1 问题再现今天写项目的时候,前台发送数据到后端。前台的数据是发送了,但是后端收不到数据,后端我用@RequestBody,一直为null,然后去掉该注解,还是为null,再后来索性,只用一个IntegerNumber去接收,然而还是null…。最后请教了公司的程大神,才将bug解决掉了。错误代码如下: getUserList:function(){ $.ajax({ type:"post", url:this.api

2022-05-17 21:30:00 2507 1

原创 记一次开发中的问题解决方案 Content type ‘multipart/form-data;boundary=--------------------------49623828310252

1.1 问题简述今天在自我开发调试接口时,在使用PostMan发送请求时,出现了这个问题,现在通过博客进行记录一下。Content type 'multipart/form-data;boundary=--------------------------496238283102520395700876;这个接口是通过@RequestBody 的方式请求的,看下代码: @PostMapping("/") public RespBean addRole(@RequestBody Rol

2022-05-17 20:02:18 652 1

原创 Mybatis-plus 主键生成策略详解

1.1 简述Mybatis-plus提供了多种主键生成策略, 可以在Pojo类中主键上加注解进行配置,例如数据库主键自增 @TableId(type=IdType.AUTO)1.2 五种策略1.2.1 AUTO(自动增长策略)AUTO自动增长策略,这个配合数据库使用,Mysql可以,但是Oracle不行。不配合会报错,这里就不细展开了,有兴趣的同学可以去试一试。在主键字段上加上 @TableId(type = IdType.AUTO)@Datapublic class UserInfo {

2022-05-17 07:00:00 5608 2

原创 @ConfigurationProperties使用详解

1.1 简述在Spring Boot中注解@ConfigurationProperties有三种使用场景,而通常情况下我们使用的最多的只是其中的一种场景。本篇文章带大家了解一下三种场景的使用情况。1.1 场景一使用@ConfigurationProperties和@Component注解到bean定义类上,这里@Component代指同一类实例化Bean的注解。基本使用实例如下:// 将类定义为一个bean的注解,比如 @Component,@Service,@Controller,@Reposi

2022-05-13 08:00:00 12527 4

原创 数组的三种创建方式及其区别

1.1 Java创建数组有三种方式1.1.1第一种方式 int arr [ ] = new int [5] ; 属于动态创建,声明并创建内存空间,等待赋值。 //创建数组的第一种方式 //属于动态创建,声明并创建内存空间,等待赋值。 int arr[] = new int[5]; int value = arr[0]; //int没有赋值,默认为0 System.out.println("value = "+value);

2022-05-13 07:45:00 970 1

原创 @DateTimeFormat和@JsonFormat的区别

1.1 简介@DateTimeFormat和@JsonFormat都是处理时间格式化问题的,把其他类型转换成自己需要的时间类型。1.2 @DateTimeFormat和@JsonFormat详解1.2.1 所属依赖@DateTimeFormat和@JsonFormat分别属于spring和jackson,所以我们需要导入相应的包。 <dependency> <groupId>org.springframework.boot</groupI

2022-05-13 07:30:00 410 2

原创 @Mapper、@MapperScan详解

1.1 @Mapper注解:作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类添加位置:接口类上面@Mapperpublic interface UserDAO { //代码}如果想要每个接口都要变成实现类,那么需要在每个接口类上加上@Mapper注解,比较麻烦,解决这个问题用@MapperScan1.2 @MapperScan作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类添加位置:是在Springboot启动类上面添加

2022-05-12 08:00:00 921 2

原创 Springboot/MybatisPlus动态切换数据源

1.1 简述最近项目中有动态切换数据源需求,主要是要动态切换数据源进行数据的获取,现将项目中实现思路及代码提供出来,供大家参考。当然切换数据源还有其他的方式比如使用切面的方式,其实大体思路是一样的。1.2 设计思路与代码示例数据库连接池druid:<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starte

2022-05-12 07:30:00 2929 3

原创 MyBatisPlus之@TableField字段填充详解

1.1 简述MyBatisPlus中使用 @TableField完成字段自动填充1.2 字段填充策略 FieldFill值描述DEFAULT默认不处理INSERT插入填充字段UPDATE更新填充字段INSERT_UPDATE插入和更新填充字段1.3 实体类代码 /** * 创建人 */ @TableField(fill = FieldFill.INSERT) private Long creatorId;

2022-05-11 08:30:00 844 3

原创 自然排序和定制排序

1.1 简述上一篇文章我们介绍了stream排序的强大之处,今天我们来说说日常开发中常常使用的自然排序和定制排序。1.2 探究之排序方法这里先说我们平时用的两个排序方法:Collections.sort()和 Arrays.sort()分别用来给集合和数组排序。我们可以用这个给String类型排序,但是如果给我们定义的实体类型排序会怎么样呢?结果就是报错。为什么可以给String排序,而我们定义的实体类型却不可以呢? 因为String的底层实现了Comparable接口。所以我们也可以实现去解决问

2022-05-11 08:00:00 189 1

原创 Java日常开发之判空详解

1.1 字符串判空检查要了解字符串判空方法的区别首先要理解对象为空字符串""和null的区别1.1.1 "" 和 null 的区别null 是没有地址的,可以理解为空指针。当对象在构造器初始化时,如果没有被显示的赋于初值,那么会默认赋值为 null。"" 空字符串是一个 String 对象是有地址的,只是内容是空。关于构造器初始化,在没有显示赋予初值的情况下。默认将数值型赋为 0 , 布尔型是 false,对象引用则是 null。String 并不是基本数据类型,而是对象所以会被默认的赋予

2022-05-10 08:00:00 520 1

原创 MySQL获取某个表的信息

mysql安装成功后可以看到已经存在mysql、information_schema和test这个几个数据库。information_schema库中有一个名为COLUMNS的表,这个表中记录了数据库中所有表的字段信息。知道这个表后,获取任意表的字段就只需要一条select语句即可。例如:select COLUMN_NAME from information_schema.COLUMNS where table_name = 'your_table_name'; 上述的做法有一点问题,如果多个数据

2022-05-08 21:45:00 386 1

原创 两个集合取交集、并集、差集

1.1 简述有一个小需求,需要将两个集合中的元素求差集,这也是花了我不少功夫。现将集合常见的交集、并集、差集一些操作整理出来,有需要的小伙伴可以参考。1.2 示例详解1.2.1 使用JDK8自带的新特性我们都知道JDK8对于我们日常开发起到了很大的遍历,特别是提供了函数式编程,以及对应的Stream等。Java8 lambda表达式流操作不影响原始list对象,所以这也是我们在日常开发当中常常使用的方式。1.2.1.1 对象类型处理 List<Student> list1 =

2022-05-08 20:45:00 2405 1

原创 MyBatis处理MySQL日期类型

1.1 简述在日常的开发中,难免会遇到时间的比较或者区间等问题,该博文主要是正对Mybatis与MySQL数据库相结合的日期类型讲解。1.2 类型下面给大家列举了三种表示时间的类型:1.2.1 DATETIME显示格式:yyyy-MM-dd HH:mm:ss时间范围:[ '1000-01-01 00:00:00'到'9999-12-31 23:59:59']1.2.2 DATE显示格式:yyyy-MM-dd HH:mm:ss时间范围:['1000-01-01'到'9999-12-31']

2022-05-05 21:29:53 1336 1

原创 SpringBoot整合knife4j基本使用

1.1 简述最近做项目时,公司使用了knife4j,今天主要是讲解如何在Spring Boot项目如何配置使用。强烈建议大家使用Knife4j,因为它的前身是swagger-bootstrap-ui,是在Swagger的基础上进行了界面的优化,使用起来比Swagger舒服了太多。1.2 SpringBoot依赖和实例代码准备本实例基于SpringBoot搭建,所需要的配置和依赖很少,下面添加主要的依赖<dependency> <groupId>com.github.

2022-05-03 10:00:00 442 1

原创 谷歌浏览器F12查看请求信息

在页面完成登录之后,按F12调出开发者工具。可以取到token!

2022-05-02 23:30:00 28064 3

原创 callSuper = true的用法思考

1.1 简述我们知道一般@ToString和@EqualsAndHashCode注解是加在子类上的,其它注解大同小异。问题:使用继承时 调用@toString方法 默认不会输出父类中的字段。解决:设置@ToString(callSuper = true),callSuper属性为true 就可以实现toString方法输出父类中继承的属性。描述:默认有@ToString(callSuper = false),写不写都存在。1.2 示例讲解1.2.1 示例一父类:子类:加了@ToSt

2022-05-02 22:00:00 1698 1

原创 Spring Cloud Alibaba 熔断(Sentinel)

1.1 概述在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以通过 RPC 相互调用,在 Spring Cloud 中可以用RestTemplate + LoadBalanceClient和 Feign 来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证 100% 可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet 容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服

2022-04-23 23:00:00 866 2

原创 Spring Cloud Alibaba 创建服务消费者(Feign)

1.1 概述Feign 是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign注解和 JAX-RS 注解。Feign支持可插拔的编码器和解码器。Feign 默认集成了 Ribbon,Nacos 也很好的兼容了 Feign,默认实现了负载均衡的效果。Feign 采用的是基于接口的注解Feign 整合了 ribbon1.2 POM文件创建一个工程名为 hello-spring-cloud-alibaba

2022-04-23 22:00:00 492 1

原创 Spring Cloud Alibaba 创建服务消费者

1.1 概述服务消费者的创建与服务提供者大同小异,这里采用最原始的一种方式,即显示的使用 LoadBalanceClient 和 RestTemplate结合的方式来访问。1.2 POM文件创建一个工程名为 hello-spring-cloud-alibaba-nacos-consumer 的服务消费者项目,pom.xml 配置如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.

2022-04-23 20:30:00 166 1

原创 Spring Cloud Alibaba 创建服务提供者

1.1 概述通过一个简单的示例来感受一下如何将服务注册到 Nacos,其实和 Eureka 没有太大差别。1.2 POM文件创建一个工程名为hello-spring-cloud-alibaba-nacos-provider的服务提供者项目,pom.xml 配置如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww

2022-04-23 15:00:00 263 2

原创 Spring Cloud Alibaba 服务注册与发现(nacos)

1.1 简述由于SpringCloud之前采用的Eureka已经进入暂停维护阶段,所以我们采用阿里巴巴提供的Nacos组件,毕竟论流量中国是世界之最,十年的双十一经验,阿里的服务支持还是很靠谱的。Nacos 官网1.2 NacosNacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务

2022-04-22 22:15:00 512 1

原创 Spring Cloud Alibaba 创建依赖管理项目

1.1 简述当前 Spring Cloud Alibaba 的 2.1.0.RELEASE 版本基于 Spring Cloud Greenwich 开发,Spring Cloud Alibaba 项目都是基于 Spring Cloud,而 Spring Cloud 项目又是基于Spring Boot进行开发,并且都是使用 Maven 做项目管理工具。在实际开发中,我们一般都会创建一个依赖管理项目作为Maven的 Parent 项目使用,这样做可以极大的方便我们对Jar包版本的统一管理。1.2 创建依赖管

2022-04-22 21:30:00 813 1

原创 Spring Cloud Alibaba 简介

1.1 微服务介绍1.1.1 系统架构演变随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早起到现在,系统架构大体经历了下面几个过程:单体应用架构—>垂直应用架构—>分布式架构—>SOA架构—>微服务架构, 当然还有悄然兴起的Service Mesh(服务网格化)。接下来我们就来了解一下每种系统架构的优缺点。1.1.1.1 单体应用架构  互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这

2022-04-22 16:18:04 6931 1

原创 常见排序算法详解(插入排序、希尔排序、选择排序、冒泡排序、快速排序)

1.1 插入排序步骤:1.从第一个元素开始,该元素可以认为已经被排序2.取下一个元素tem,从已排序的元素序列从后往前扫描3.如果该元素大于tem,则将该元素移到下一位4.重复步骤3,直到找到已排序元素中小于等于tem的元素5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置6.重复步骤2~5动图演示如下:思路:  在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。按照此法对所有元素进行插入

2022-04-22 15:30:00 406 1

原创 FTP的主动模式和被动模式

1.1 PORT(主动模式)在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送FTP用户名和密码,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令,告诉服务端客户端采用主动模式并开放了端口。FTP服务器接收到PORT命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。1.2 PASV(被动模式)在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用户名和密码进行登

2022-04-22 10:10:54 16116 6

原创 Socket 保证长连接的两种方式

1.1 方法一:应用层自己实现的心跳包  由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已经掉线;同样,如果客户端在一定时间内没 有收到服务器的心跳包,则认为连接不可用。1.2 方法二:TCP的KeepAlive保活机制  因为要考虑到一个服务器通常会连接多个客户端,因此由用户在应用层自己实现心跳包,代码较多 且

2022-04-20 17:13:30 3166 2

原创 Docker基础

1.1 Docker出现的意义开发和运维两套环境,而环境配置十分麻烦。如在Windows上开发,要发布到Linux上运行。Docker给以上问题提出了解决方案:Java — Jar(环境)—打包项目带上环境(镜像)—Docker仓库(应用商店)—下载镜像—直接运行Docker的思想来自于集装箱,核心思想:隔离。即将应用打包装箱,每个箱子是互相隔离的,可以将服务器利用到极致。虚拟机Dockerlinux centos原生镜像(一个电脑)隔离镜像(最核心的环境 +jdk +

2022-04-17 11:20:24 110 3

原创 Oracle 使用rownum分页方式

1.1 概述rownum是Oracle数据库中的一个特有关键字,返回的是一个数字代表记录的行号。这篇文章主要介绍了oracle使用rownum的三种分页方式,需要的朋友可以参考下。rownum是Oracle数据库中的一个特有关键字,返回的是一个数字代表记录的行号。基础知识:rownum只能做<或者<=的条件查询,如果要rownum进行51到100这样的范围判断,需要先查询出每一行的rownum,再用那个序号做判断获取51到100的数据。1.2 分页详解1.2.1 三种分页的写法1.

2022-04-15 11:03:35 3758 4

原创 Nginx 详解【重点】

Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50000 个并发连接数。

2022-04-12 09:57:15 1494 3

原创 Nginx简介【重点】

Nginx同Apache一样都是一种web服务器,基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。  

2022-04-07 07:18:49 2331

Java Boot项目模板(自取)

1.自己搭建的基于springboot的项目模板,自己准备基于改模板在上面添加实现功能。 2.有需要的铜须,可以自行下载运行。

2022-02-23

GitHub 星标 高分,个人博客网站【强烈推荐】

蘑菇博客( MoguBlog ),一个基于微服务架构的前后端分离博客系统。Web 端使用 Vue + ElementUi , 移动端使用 uniapp 和 ColorUI。后端使用 SpringCloud + SpringBoot + Mybatis-plus进行开发,使用 Jwt + SpringSecurity 做登录验证和权限校验,使用 ElasticSearch 和 Solr 作为全文检索服务,使用 Github Actions完成博客的持续集成,使用 ElasticStack 收集博客日志,文件支持上传本地、七牛云 和 Minio.

2022-02-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除