
java
文章平均质量分 73
致最长的电影
真正的勇气是上帝给你的一切!
展开
-
【MySQL】索引基础介绍
聚簇索引:将数据存储的顺序与索引顺序相同,找到索引也就找到了数据非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,本质上非聚簇索引存储的是聚簇索引的值,比如主键ID 每个InnoDB表具有一个特殊的索引称为聚簇索引(也叫聚集索引,聚类索引,簇集索引),如果表上定义有主键,该主键索引就是聚簇索引。如果未定义主键,MySQL 取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为主键,InnoDB 使用它作为聚簇索引。原创 2022-12-14 20:48:37 · 760 阅读 · 1 评论 -
【Java 基础】static 关键字的用法
在《Java 编程思想》有这样一段话:一句话描述就是:方便在没有创建对象的情况下来进行调用(方法/变量)。很显然,被 static 关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。static 是静态修饰符。什么是静态修饰符?在程序中,任何变量或者代码都是在编译时由系统自动分配内存来存储的。而所谓静态,就是指在编译后系统所分配的内存会一直存在,直到程序退出内存才会释放这个空间。也就是说,只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?在 Java原创 2022-06-20 15:58:53 · 1009 阅读 · 0 评论 -
【Java 基础】this 和 super 关键字的用法
在一个类的方法内部,如果我们想调用其成员变量,不用 this,我们会怎么做? 看上面的代码,我们在 ThisTest 类中创建了一个成员变量 name 属性,然后创建了一个 setName 方法,注意这个方法形参也是 String name,那么我们通过 name = name 这样赋值,会改变成员变量 name 为 “xiaoming” 的值吗? 打印结果是 “xiaoming”,而不是重新设置的 “zhangsan”,显然这种方式是是不能在方法内部改变成员变量的值原创 2022-06-16 13:37:03 · 1410 阅读 · 0 评论 -
【SpringBoot】单元测试类发现控制台有插入语句 sql,但是事实没有插入到数据库中的原因及解决办法
自己写了一个 demo,然后在单元测试类中写一个插入语句到数据库中的一个操作,发现控制台正常打印 insert sql 语句,但是在数据库中查询不到该数据单元测试类对插入、修改、删除操作会自动回滚掉,所以你在数据库中查询不到该数据。在单元测试类中添加一个 @Commit 注解就可以了,发现单元测试类可以提交事务了。...原创 2022-06-09 15:00:47 · 2022 阅读 · 0 评论 -
【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 · 3104 阅读 · 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 · 9842 阅读 · 3 评论 -
【MySQL】空值(Null)和空字符串(‘’)的区别
一、 NULL,空值,数字,汉字,字母根据上边的实操可以清楚看出:空值(Null)的长度是 Null,不确定占用了多少存储空间,但是占用存储空间的 空字符串('')的长度是0,是不占用空间的 字母和数字每个都占用一个长度 汉字在字段中存储一个字的长度为3二、区别在进行 count() 统计某列时候,如果用 Null 值系统会自动过滤掉,但是空字符会进行统计。不过 count(*) 会被优化,直接返回总行数,包括 Null 值。 当使用 is not null 或者 is null原创 2022-05-23 16:11:47 · 9542 阅读 · 0 评论 -
【Java 基础】空字符串 “” 和 null 的区别以及 equals 的常量为什么要把常量写在前面?
一、空字符串 ""类型:"" 是一个空字符串(String),长度为0,占内存,在内存中分配一个空间,可以使用 Object 对象中的方法。(例如:"".toString() 等)内存分配:使用双引号直接创建的字符串,称为字符常量。字符常量放在内存中的常量池。表示声明一个字符串类型的引用,其值为 "" 空字符串,这个引用指向 a 的内存空间、//不变性String a = "tom"; //字符常量,放在常量池a = "jack"; //常量池中有两个String对象原创 2022-05-23 13:51:37 · 1864 阅读 · 0 评论 -
【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 · 1767 阅读 · 0 评论 -
【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 · 59206 阅读 · 23 评论 -
【Java 基础】@Bean 注解在 @Configuration 和 在 @Component 下的区别
区别就是:@Configuration 中所有带 @Bean 注解的方法都会被动态代理(cglib 动态代理调用方法时重写成从 Spring 上下文中获取 bean),因此调用该方法返回的都是同一个实例,可以保证单例。 @Component 注解就是 new 一个新对象。一、起因当我在项目中看到 @Bean 注解的es创建客户端的方法放在了 @Component中,而不是放在 @Configuration 中,所以我就进一步查询了 @Bean 注解放在这两个注解里的区别二、代码测试案例1原创 2022-03-07 13:50:20 · 786 阅读 · 0 评论 -
【Java基础】@PostConstruct 和 @PreDestroy 注解的使用
一、概述Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及销毁前执行特定的操作。被这两个注解修饰的方法可以保证在整个 Servlet 生命周期只被执行一次,即使 Web 容器在其内部中多次实例化该方法所在的 bean。二、@PostConstruct 注解@PostConstruct 该注解被用来修饰一个非静态的 void() 方法。被 @PostConstruct 修饰的方法会在服务器加载 Servlet 的时候运行,并且只会被服务器执行一次,原创 2022-03-02 17:14:29 · 4618 阅读 · 0 评论 -
【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 · 8837 阅读 · 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 · 1615 阅读 · 0 评论 -
【Stream】java8新特性Stream流总结
一、什么是stream 在 java8 中增加了一个新的抽象接口 Stream API,使用 Stream 操作集合类似于使用 SQL 语句数据库查找数据类似,提供直观的方法进行操作。 Stream 将要处理的元素集合看作是一种流,流在管道中传输,并且可以在管道传输过程中对流进行处理,比如筛选、排序、聚合等操作 一个Java8 的stream是由三部分组成的。数据源,零个或一个或多个中间操作,一个或零个终止操作。 中间操作是对数据的加工,注意,中间操作是lazy操作,并不原创 2022-01-28 16:29:26 · 3328 阅读 · 0 评论 -
【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 · 11322 阅读 · 1 评论 -
【es】es修改字段text类型为date类型
一、概述首先说明es中索引的字段类型是不可修改的,只能是重新创建一个索引并设置好映射mapping,然后再将老索引的数据复制过去。二、原索引字段text类型三、操作步骤 创建索引,并指定映射mapping PUT /audit2{ "mappings": { "properties": { "@timestamp": { "type": "date" }, "@version": { "type":原创 2022-01-24 14:02:12 · 5567 阅读 · 2 评论 -
【quartz】定时任务时间在数据库中修改,无需启动服务
一、修改定时任务时间方法update qrtz_cron_triggers set CRON_EXPRESSION='0 */1 * * * ?' where TRIGGER_NAME='myTrigger1';update qrtz_triggers set NEXT_FIRE_TIME=0,PREV_FIRE_TIME=0 where TRIGGER_NAME='myTrigger1';第一条sql语句是更改表qrtz_cron_triggers,原来数据库中该任务是每5分钟执行一次原创 2022-01-06 17:13:45 · 4411 阅读 · 0 评论 -
【elasticsearch】es中document中id的数据生成现象
一、添加数据,不指定id时es会自动生成一个id 添加数据,不指定id时,但是内容是一样的:es中会添加该数据,但是id是不同的二、添加数据,指定id时es会生成自己指定的id添加数据,指定id,又添加一样的id的数据的时候:es中不会重复添加,因为此时es中认为是这个id里面内容的更新(UPDATED)操作,会更新这个id下的内容三、测试代码package com.example.es.test;import com.fasterxml.jack...原创 2021-12-24 16:10:43 · 3426 阅读 · 0 评论 -
java8新特性Stream流中anyMatch和allMatch和noneMatch的区别详解
1、anyMatch判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false。接口定义: boolean anyMatch(Predicate<? super T> predicate); 方法描述: 在anyMatch 接口定义中是接收 Predicate 类型参数,在Lamdba表达式中 Predicate<T> 是接收一个T类型参数,然后经过逻辑验证返回布尔值结果。这里anyMatch表示.原创 2021-11-12 16:57:43 · 41260 阅读 · 1 评论 -
【SpringBoot】通用改变状态接口
应用场景:上下架商品,显示隐藏状态改变代码案例:实体类/** 主键 */@NotBlank(message = "主键不能为空!")@ApiModelProperty(value = "主键ID")private String id;/** 状态:0.禁用、1.启用 */@NotNull(message = "状态不能为空!")@ApiModelProperty(value = "状态:0.禁用、1.启用 ")private Integer state;controll原创 2021-05-14 13:46:34 · 1251 阅读 · 0 评论 -
【异常报错】com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.c
在IDEA中,RabbitMQ启动的时候控制台报上面的错误:我的解决办法是:将之前生成的target文件删除,重新启动,然后不报错了原创 2020-08-24 13:59:46 · 1924 阅读 · 0 评论 -
【总结】IDEA中eclipse快捷键整理
全局搜索:ctrl + h代码格式化:ctrl + shift + f转换大小写:ctrl + shift + y向下复制一行:ctrl + alt + 向下键多行注释:ctrl + shift + /选择单行或者多行,向上或者向下移动:alt + 上下键收缩全部或者展开全部方法:收缩 ctrl - 展开 ctrl +SpringBoot使用Jrebel编译有改动的文件:ctrl + shift + F9定位到某一行:ctrl + L选中代码:shift + 上下左右键原创 2020-08-11 10:28:18 · 301 阅读 · 0 评论 -
【Java基础】多线程的解读
一、多线程的基本概念1.什么是进程一个进程中对应一个应用程序,例如:在windows操作系统启动Word就表示启动了一个进程。在java的开发环境下启动JVM,就表示启动了一个进程,现代的计算机都是支持多进程的,在同一个操作系统中,可以同时启动多个进程。2.多进程有什么作用?单进程计算机只能做一件事情多进程的作用不是提高执行速度,而是提高CPU的使用率进程和进程之间的内存是独立的...原创 2020-02-23 22:51:17 · 302 阅读 · 0 评论 -
【JavaWeb】转发和重定向的区别详解
一、转发和重定向1.请求转发:原创 2020-02-16 16:25:37 · 1158 阅读 · 0 评论 -
【Java基础】HashMap的原理详解
HashMap的数据结构:首先,HashMap中数据的存储是由数组与链表一起实现的。数组是在内存中开辟一段连续的空间,因此,只要知道了数组首个元素的地址,在数组中寻址就会非常容易,其时间复杂度为O(1)。但是当要插入或删除数据时,时间复杂度就会变为O(n)。链表是内存中一系列离散的空间,其插入和删除操作的内存复杂度为O(1),但是寻址操作的复杂度却是O(n)。那有没有一种方法可以结合两者的...原创 2020-02-13 22:52:00 · 374 阅读 · 0 评论 -
【Java基础】抽象类和接口的异同
一.概述一个软件设计的好坏,我想很大程度上取决于它的整体结构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用。面向对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用。既然面向对象设计的重点在...原创 2020-02-07 22:19:13 · 188 阅读 · 0 评论 -
【Java基础】String、StringBuffer和StringBuilder的实现原理和区别
一.简介:用来处理字符串常用的类有3种:String、StringBuffer和StringBuilderString是不可变字符串,字符串的值一旦确定,则不可修改(指内存种的值不可修改)频繁对String进行修改,会在内存种产生很多对象,垃圾数据,特别是当内存种引用的对象多了以后,JVM的GC机制就会开始工作,性能就会降低String类种提供了很多方法,但没有直接增删改等方法如...原创 2020-02-06 19:12:08 · 1294 阅读 · 0 评论 -
【Java基础】Math.round用法
1.Math.round用法java.lang.Math用于数学运算round() 四舍五入floor() 返回小于等于参数的最大整数ceil() 返回大于等于参数的最大整数public class Math用法 { public static void main(String[] args) { System.out.println("Math.round(...原创 2020-02-05 20:43:37 · 2053 阅读 · 1 评论 -
【Java基础】final的详细用法解读
一. final修饰变量1. final修饰基本数据类型变量和引用数据类型变量基本知识:被final修饰的变量,称为常量。常量的值是不可修改的。一般和static一起使用,称为静态常量。常量命名:字母全部大写数据在内存中的存储:java中的内存分为:栈内存和堆内存。特点:栈的存取速度比较快,栈的内存要小于堆内存。基本类型存储在栈空间中,引用类型 栈中的引用指向堆空间基本类型存...原创 2020-02-03 23:01:09 · 1094 阅读 · 1 评论 -
【Java基础】==、equals、hashcode方法详细解读与测试
如果一个变量指向的数据是对象类型,这时候涉及两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存。例如:Object o = new Object(); 变量o占一个内存,new Object()是占另一个内存。通俗来讲:new Object()创造了一个对象,类型是Object,而Object o则创造了一个可以存储Object类型对象引用的“引用存储器”,而等号=则把new Obje...原创 2020-02-02 18:20:36 · 633 阅读 · 0 评论