自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 【SpringBoot】@Autowired 和 @Resource 的使用

@Autowired 默认按照类型 (byType) 注入,如果按照类型注入时,匹配到多个结果,就会按照名称 (byName) 注入(ps:所以 @Autowired 也可以按照名称注入呦)。当 @Autowired 通过 byName 进行注入时,会获取属性的 name 进行匹配,例如:获取到的名字就是 userService,将获取到的属性名称 userService 与前面通过类型匹配到多个 bean 进行 name 比对,如果匹配出唯一结果,则结束。如果还是匹配出多个结果,则抛异常 NoUni

2024-02-19 15:02:45 1065

原创 【SpringBoot】策略和模板模式的思考与实践

实现接口的模板抽象类,定义了业务的流程顺序,以及抽象的支付方法。同时也实现了发送短信和邮件的方法,还有一个发送消息的方法。@Slf4j/*** 模板方法:处理业务流程*/@Override// step1 支付if (!result) {return Result.failed("支付失败!");// step2 发送短信和邮件通知到客户// step3 发送用户积分// step4 发送消息return Result.success("处理成功!");// 普通方法。

2024-02-04 14:53:16 980

原创 【SpringBoot】模板设计模式应用

常见的设计模式有23种,我们不得不提到模板方法设计模式,这是一种在软件开发中广泛使用的行为型设计模式之一。

2024-02-03 13:37:52 1341

原创 【SpringBoot】applicationContext.getBeansOfType(class)获取某一接口所有实现类,应用于策略模式

从上面的源码上我们可以看出来这个方法能返回一个接口的全部实现类(前提是所有实现类都必须由 Spring IoC 容器管理从上面的代码上(下面案例中工厂类有) ,Map 中的 String 的值是各个实现类的名称 busModeServiceImpl、trainModeServiceImpl(首字母小写),Map 中的 value 是各个 key 对应的策略实现类/*** 查询交通方式编码* @return 编码*//*** 查询交通方式的费用,单位:分* @return 费用*/

2024-02-01 17:24:49 1217

原创 【SpringBoot】ApplicationContextAware 与 @Autowired 注解效果是一样,但是时机不一样

如果将 LindContext 类中 @Component 注解去掉,没有将该 bean 注册到 spring 容器时,调用接口时会在 LindAware 中抛出对应的异常,来提示给开发人员如果将 LindAware 类中 this.lindContext = LindAware.applicationContext.getBean(LindContext.class);

2024-02-01 11:54:44 1121

原创 【SpringBoot】如何在 Utils 工具类中注入 Bean

在 controller 层想使用一个静态工具,这个静态工具要使用其它组件。

2024-01-31 17:23:20 1021

原创 【Java】成员变量和局部变量的区别

数据类型 变量名 = 变量值;先声明,后使用;变量都有其对应的作用域。

2024-01-30 17:16:28 895

原创 【SpringBoot】Bean 是什么?

定义。

2024-01-17 17:37:06 1601

原创 【MySql】悲观锁和乐观锁的介绍

当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。实现并发控制的主要手段分为乐观并发控制和悲观并发控制两种。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。乐观锁比较适用于读多写少的情况(多读场景),悲观锁比较适用于写多读少的情况(多写场景)。

2023-11-28 10:42:26 614

原创 【SpringBoot】ThreadLocal 的详解

ThreadLocal 叫做线程变量,意思是 ThreadLocal 中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal 为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLocal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量的线程都会初始化

2023-11-22 17:30:04 569

原创 【SpringBoot】Redisson 分布式锁注解和 @Transactional 注解一起使用问题

如果普通切面没指定 order 会比 transaction 后执行。当锁或者一些检查性切面被使用时如果条件不满足不能进入业务也会导致事务的开启产生了不必要的消耗,当并发高时尤为明显。因为声明式事务比较好用,生产中使用的比较多,只有为了控制事务粒度或者不需要抽出一个新的类(为了使事务生效)才会使用编程式事务。

2023-11-22 10:58:36 730

原创 【SpringBoot】Redission 的使用与介绍

*** 对 Redisson 的使用都是通过 RedissonClient 对象* @return*/@Bean(name = "redissonClient", destroyMethod = "shutdown") // 服务停止后调用 shutdown 方法// 1、创建配置// 2、集群模式// 根据 Config 创建出 RedissonClient 示例。

2023-11-20 17:46:25 1278

原创 【SpringBoot】序列化和反序列化介绍

是一种将对象以一连串的字节描述的过程;是一种将这些字节重建成一个对象的过程。将程序中的对象,放入文件中保存就是序列化,将文件中的字节码重新转成对象就是反序列化。

2023-11-14 11:56:11 1382

原创 【SpringBoot】FastJsonHttpMessageConverter 自定义转换器不生效的问题

我在使用 FastJsonHttpMessageConverter 自定义转换器的时候,我是写在了实现 WebMvcConfigurer 的方法里面,但是我项目中还有一个继承了 WebMvcConfigurationSupport 类,导致只有 WebMvcConfigurationSupport 生效,WebMvcConfigurer 里面的不能生效。

2023-11-14 11:04:20 483

原创 【SpringBoot】拦截器(Interceptor)的使用

拦截器(Interceptor)是一种特殊的组件,它可以在请求处理的过程中对请求和响应进行拦截和处理。拦截器可以在请求到达目标处理器之前、处理器处理请求之后以及视图渲染之前执行特定的操作。拦截器的主要目的是在不修改原有代码的情况下,实现对请求和响应的统一处理。@[email protected]("====拦截到了方法:{},在该方法执行之前执行====", methodName);// 返回 true 才会继续执行,返回 false 则取消当前请求@Override。

2023-10-17 11:55:40 3090 1

原创 【Springboot】Filter 过滤器的使用

过滤器 Filter 作为 Java 三大器之一,在 Java Web 的使用中有很高的地位。所谓过滤器,就是实现了 javax.servlet.Filter 接口的服务器端程序,就是对事物进行过滤的,在 Web 中的过滤器,当然就是对请求进行过滤,我们使用过滤器,就可以对请求进行拦截,然后做相应的处理,实现许多特殊功能。如登录控制,权限管理,过滤敏感词汇等。

2023-10-16 15:36:40 1629 2

原创 【Java】打印日志使用 JSON.toJSONString() 输出注意事项

【代码】【Java】打印日志使用 JSON.toJSONString() 输出注意事项。

2023-07-13 15:21:30 631

原创 【MySQL】幻读被彻底解决了吗?

幻读是数据库中的一种并发问题,指在同一事务中执行两次相同的查询,但第二次查询返回了第一次查询所没有的新数据行。前后读取的记录数不一致举个例子:这是一个电商的大致逻辑,一般用户购买商品后付的钱会先冻结在平台上,然后由平台在固定的时间内结算用户款,例如七天一结算、半月一结算等方式,在结算业务中通常都会涉及到核销处理,也就是将所有为【已签收状态】的订单改为【已核销状态】。

2023-07-07 15:10:43 1066

原创 【SpringBoot】AOP 自定义注解的使用详解

AOP 的全称为 Aspect Oriented Programming,译为面向切面编程,是通过预编译方式和运行期动态代理实现核心业务逻辑之外的横切行为的统一维护的一种技术。AOP 是面向对象编程(OOP)的补充和扩展。利用 AOP 可以对业务逻辑各部分进行隔离,从而达到降低模块之间的耦合度,并将那些影响多个类的公共行为封装到一个可重用模块,从而到达提高程序的复用性,同时提高了开发效率,提高了系统的可操作性和可维护性。AOP 是 Spring 框架中的一个核心内容。

2023-07-06 14:16:32 4404

原创 【MySQL】简介 MySQL 事务

多线程并发执行自然就会出问题,也就是聊到的脏写、脏读、不可重复读以及幻读问题,而对于这些问题又可以通过调整事务的隔离级别来避免,那为什么调整事务的隔离级别后能避免这些问题产生呢?这是因为不同的隔离级别中,工作线程执行。

2023-07-06 14:13:24 248

原创 【Java基础】Stream 流中 Collectors.toMap 的用法

Collectors.toMap() 方法是把List 转 Map的操作。

2023-02-06 15:51:39 8026 1

原创 【Java】Stream 流常见写法总结

stream 常见用法总结

2023-02-03 17:36:59 993

原创 【MySQL】索引基础介绍

聚簇索引:将数据存储的顺序与索引顺序相同,找到索引也就找到了数据非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,本质上非聚簇索引存储的是聚簇索引的值,比如主键ID​ 每个InnoDB表具有一个特殊的索引称为聚簇索引(也叫聚集索引,聚类索引,簇集索引),如果表上定义有主键,该主键索引就是聚簇索引。如果未定义主键,MySQL 取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为主键,InnoDB 使用它作为聚簇索引。

2022-12-14 20:48:37 677 1

原创 【Java 基础】static 关键字的用法

在《Java 编程思想》有这样一段话:一句话描述就是:方便在没有创建对象的情况下来进行调用(方法/变量)。很显然,被 static 关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。static 是静态修饰符。什么是静态修饰符?在程序中,任何变量或者代码都是在编译时由系统自动分配内存来存储的。而所谓静态,就是指在编译后系统所分配的内存会一直存在,直到程序退出内存才会释放这个空间。也就是说,只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?在 Java

2022-06-20 15:58:53 882

原创 【Java 基础】this 和 super 关键字的用法

在一个类的方法内部,如果我们想调用其成员变量,不用 this,我们会怎么做? 看上面的代码,我们在 ThisTest 类中创建了一个成员变量 name 属性,然后创建了一个 setName 方法,注意这个方法形参也是 String name,那么我们通过 name = name 这样赋值,会改变成员变量 name 为 “xiaoming” 的值吗? 打印结果是 “xiaoming”,而不是重新设置的 “zhangsan”,显然这种方式是是不能在方法内部改变成员变量的值

2022-06-16 13:37:03 1192

原创 【Java 基础】SpringBoot 中 @Transactional 注解的使用与实践

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。本篇只说明声明式注解。 事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)。 事务的四大特性:只需在方法加上 @Transactional 注解就可以了。如下有一个保存数据的方法,加入 @transactiona

2022-06-12 16:50:48 18635 7

原创 【SpringBoot】单元测试类发现控制台有插入语句 sql,但是事实没有插入到数据库中的原因及解决办法

自己写了一个 demo,然后在单元测试类中写一个插入语句到数据库中的一个操作,发现控制台正常打印 insert sql 语句,但是在数据库中查询不到该数据单元测试类对插入、修改、删除操作会自动回滚掉,所以你在数据库中查询不到该数据。在单元测试类中添加一个 @Commit 注解就可以了,发现单元测试类可以提交事务了。...

2022-06-09 15:00:47 1701

原创 【MyBatis】SpringBoot 和 MyBatis 一级缓存和二级缓存的介绍与代码实践

一、区别 List 是一个接口,而 ArrayList 是 List 接口的一个实现类。ArrayList 类继承并实现了 List 接口。 因此,List 接口不能被构造,也就是我们说的不能创建实例对象。而 ArrayList 就可以被构造。 List list; // 正确 list = nullList<Object> list = new List<>(); // 是错误的用法二、案例List<Object> list = n

2022-06-07 17:16:24 2785 2

原创 【Kafka】SpringBoot 整合 Kafka 以及 @KafkaListener 注解的使用

一、前提已经安装好 kafka我是在 windows 中安装的 Kafka,用于在本地测试用的Windows 安装 kafka二、新建 SpringBoot 项目1、添加项目依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId&

2022-05-27 15:59:09 9109 3

原创 【MySQL】空值(Null)和空字符串(‘’)的区别

一、 NULL,空值,数字,汉字,字母根据上边的实操可以清楚看出:空值(Null)的长度是 Null,不确定占用了多少存储空间,但是占用存储空间的 空字符串('')的长度是0,是不占用空间的 字母和数字每个都占用一个长度 汉字在字段中存储一个字的长度为3二、区别在进行 count() 统计某列时候,如果用 Null 值系统会自动过滤掉,但是空字符会进行统计。不过 count(*) 会被优化,直接返回总行数,包括 Null 值。 当使用 is not null 或者 is null

2022-05-23 16:11:47 8634

原创 【Java 基础】空字符串 “” 和 null 的区别以及 equals 的常量为什么要把常量写在前面?

一、空字符串 ""类型:"" 是一个空字符串(String),长度为0,占内存,在内存中分配一个空间,可以使用 Object 对象中的方法。(例如:"".toString() 等)内存分配:使用双引号直接创建的字符串,称为字符常量。字符常量放在内存中的常量池。表示声明一个字符串类型的引用,其值为 "" 空字符串,这个引用指向 a 的内存空间、//不变性String a = "tom"; //字符常量,放在常量池a = "jack"; //常量池中有两个String对象

2022-05-23 13:51:37 1582

原创 【Java 基础】静态常量放在 class 类中还是放在 interface 中

一、放在 class 类中package com.example.demo.utils;public class ParamUtils { private ParamUtils() {} public static final int A = 100; public static final int B = 200; public static final int C = 300;}类定义常量,需要定义成 final 且定义一个 private 的.

2022-05-09 14:31:12 1562

原创 【Java基础】Spring 中 Bean 的理解与使用

一、定义Bean 是 Spring 框架中最核心的两个概念之一(另一个是面向切面编程 AOP)Spring 官方文档对 bean 的解释是:In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, asse

2022-03-07 17:46:10 19887 12

原创 【Java 基础】@Bean 注解在 @Configuration 和 在 @Component 下的区别

区别就是:@Configuration 中所有带 @Bean 注解的方法都会被动态代理(cglib 动态代理调用方法时重写成从 Spring 上下文中获取 bean),因此调用该方法返回的都是同一个实例,可以保证单例。 @Component 注解就是 new 一个新对象。一、起因当我在项目中看到 @Bean 注解的es创建客户端的方法放在了 @Component中,而不是放在 @Configuration 中,所以我就进一步查询了 @Bean 注解放在这两个注解里的区别二、代码测试案例1

2022-03-07 13:50:20 699

原创 【Java基础】@PostConstruct 和 @PreDestroy 注解的使用

一、概述Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及销毁前执行特定的操作。被这两个注解修饰的方法可以保证在整个 Servlet 生命周期只被执行一次,即使 Web 容器在其内部中多次实例化该方法所在的 bean。二、@PostConstruct 注解@PostConstruct 该注解被用来修饰一个非静态的 void() 方法。被 @PostConstruct 修饰的方法会在服务器加载 Servlet 的时候运行,并且只会被服务器执行一次,

2022-03-02 17:14:29 2403

原创 【Java基础】基本类型和包装类的区别

前言Java 一种静态编程语言,所有变量和表达式是在编译时就确定的。同时,Java 又是一种强类型语言,所有的变量和表达式都有具体的类型,并且每种类型是严格定义的。在 Java中共有8种基本类型数据,同时每种基本类型又有对应的包装类。基本数据类型(默认值) 包装类(默认值) 取值范围 byte (0) Byte (null) -128~127 short (0) Short(null) -32768~32767 int (0) Integer..

2022-02-09 16:44:24 6053 2

原创 【Java】Stream流中Optional类的用法

一、概述Optional类主要解决的问题是臭名昭著的空指针异常(NullPointerException),提供了一些的方法代替过去的if-else处理逻辑,并与Stream流结合提供一致性的函数式编程。二、方法static <T> Optional<T> empty() 返回一个空的Optional对象 boolean equals(Object obj) Optional<T> filter(Predicate&l...

2022-02-08 14:20:40 1432

原创 【Stream】java8新特性Stream流总结

一、什么是stream 在 java8 中增加了一个新的抽象接口 Stream API,使用 Stream 操作集合类似于使用 SQL 语句数据库查找数据类似,提供直观的方法进行操作。 Stream 将要处理的元素集合看作是一种流,流在管道中传输,并且可以在管道传输过程中对流进行处理,比如筛选、排序、聚合等操作 一个Java8 的stream是由三部分组成的。数据源,零个或一个或多个中间操作,一个或零个终止操作。 中间操作是对数据的加工,注意,中间操作是lazy操作,并不

2022-01-28 16:29:26 3039

原创 【es】java使用es中三种查询用法from size、search after、scroll

一、三者之间的区别 from size: 深度分页或者size特别大的情况,会出现deep pagination问题。且es的自保机制max_result_window是10000,当查询数量超过一万就会报错 该查询的实现原理类似于mysql中的limit,比如查询第10001条数据,那么需要将前面的1000条都拿出来,进行过滤,最终才得到数据。(性能较差,实现简单,适用于少量数据) search after search_after缺点是不能够随机跳转分页,只能是一页一页的向后

2022-01-26 16:32:11 9700 1

原创 【es】es修改字段text类型为date类型

一、概述首先说明es中索引的字段类型是不可修改的,只能是重新创建一个索引并设置好映射mapping,然后再将老索引的数据复制过去。二、原索引字段text类型三、操作步骤 创建索引,并指定映射mapping PUT /audit2{ "mappings": { "properties": { "@timestamp": { "type": "date" }, "@version": { "type":

2022-01-24 14:02:12 4929 2

空空如也

空空如也

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

TA关注的人

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