自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

禾日香的博客

java方向

  • 博客(71)
  • 收藏
  • 关注

原创 MySQL面试总结

底层数据结构为B+树,根节点保存数据引用地址,叶子节点保存数据,且叶子节点为双向链表。会走age索引,但这个B+数获取不到name,所以根据主键查询全部数据(回表),再返回所有的列。聚簇索引只有一个,为主键id(没有主键id,会默认生成一个id作为主键),B+树叶子节点保存了全部数据(一行数据)。如表bb中字段id name age、id为主键(聚簇索引创建B+树),age为非聚簇索引(非聚簇索引创建B+树)。非聚簇索引可以有多个,为手工创建的。索引覆盖是,查询使用了索引,返回的列必须在索引中全部找到。

2024-06-26 11:10:08 287

原创 架构篇(spring、springMVC、springBoot、myBatis)

不是线程安全的。若bean中有可以修改的成员变量,是要考虑线程安全问题的。若bean中没有可修改的成员变量(无状态bean),是不需要考虑线程安全问题的。

2024-06-24 15:40:15 414

原创 redis面试总结

缓存击穿:redis中某一个key到了过期时间,但这个key还承接着大量的并发请求,导致并发到达数据库,导致数据库压力剧增(压垮、断掉)。解决:给key设置合理有效时间(对应热点key设置永不过期)。互斥锁(当缓存失效时,通过互斥锁来保护数据库的访问过程。当一个热点key失效时,用互斥锁方式,只让一个请求到数据库查询数据并加载到缓存)。逻辑过期(当查询缓存发现逻辑时间已过期时,会成功获取一个互斥锁,并开启一个新线程进行查询数据库重建缓存数据的操作,然后写入缓存并重置逻辑过期时间,最后释放锁。

2024-06-21 14:15:28 667

原创 java多线程面试总结

1.继承Thread类,重写run方法。2.实现Runnable接口,实现run方法。3.实现Callable接口,实现call方法,结合FutureTask。(可以获取线程的返回值)4.线程池创建线程。

2024-06-17 17:59:17 517

原创 集合面试总结

单例集合,list有序、可重复(arrayList、linkedList);set无序、不可重复(hashSet、treeSet)双列集合,map键值对(hashMap、concurrentHashMap)

2024-06-12 09:44:51 310

原创 redis基础

redis是用C语言开发的一个高性能键值对数据库。

2024-06-11 09:21:12 289

原创 Java多线程

1.核心线程数量2.最大线程数3.空闲线程最大存活时间4.时间单位5.任务队列6.创建线程工厂7.任务的拒绝策略。

2024-06-06 14:49:47 700

原创 MQ基础(RabbitMQ)

同步通信:就相当于打电话,双方交互是实时的。同一时刻,只能与一人交互。异步通信:就相当于发短信,双方交互不是实时的。不需要立刻回应对方,可以多线程操作,跟不同人同时聊天。

2024-06-03 10:12:04 1041 2

原创 分布式事务(seata)

分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,且属于不同的应用。它主要为了保证不同数据库的数据一致性,确保在一次大的操作(由不同的小操作组成)中,这些小操作要么全部成功,要么全部失败。

2024-05-31 09:38:38 273

原创 微服务保护-雪崩问题

微服务调用链路中的某个微服务故障,引起整个链路微服务都不可用,这就是雪崩。(在微服务中,某个微服务故障,导致整个微服务都不可用)

2024-05-30 11:19:24 558

原创 Docker容器网络互联

默认情况下:所有容器都是以bridge方式链接到Docker的一个虚拟网桥上。

2024-05-23 14:08:56 220

原创 Docker自定义镜像

镜像包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建自定义镜像就是把上述文件打包的过程。

2024-05-23 13:51:46 528

原创 Docker数据卷(volume)

数据卷是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。(容器内目录与宿主机目录对应的桥梁,修改宿主机对应的目录,docker会映射到容器内部,相当于修改了容器内的,反之也一样)数据卷将宿主机目录映射到容器内目录,方便我们操作容器内文件,或者方便我们迁移容器产生的数据。

2024-05-23 09:36:12 432

原创 MyBatisPlus分页

创建配置类@Bean//初始化插件//添加分页插件//设置分页上线。

2024-05-22 14:00:55 227

原创 MyBatisPlus逻辑删除

逻辑删除就是代码逻辑模拟删除,但不知道真正的删除数据。开发中,很多信息是不能被删除了,比较订单,资金流水等。

2024-05-22 13:47:47 262

原创 MybatisPlus中自定义sql

在开发过程中,可能会出现除了where条件,其它sql比较复杂,这时候就需要用到自定义sql了。

2024-05-22 11:55:06 484

原创 MyBatisPlus使用流程

版本号根据需要选取。

2024-05-22 11:33:39 668

原创 MyBatisPlus常用注解

MyBatisPlus是通过扫描实体类,并基于反射获取实体类类信息作为表字段信息。

2024-05-22 10:56:03 367

原创 Java常见的异常类型

11.ArithmeticException当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。10.IllegalArgumentException 抛出的异常表明向方法传递了一个不合法或不正确的参数。8.ArrayStoreException:试图将错误类型的对象存储到一个对象数组时抛出的异常;6.ClassCastException:当试图将对象强制转换为不是实例的子类时,抛出此异常。5.IOException:当发出某种io异常时抛出。

2024-05-17 10:01:29 202

原创 java日期格式化

在Java中,对于日期格式转换,最常用的方法通常是使用java.time包中的类(适用于Java 8及以上版本),或者类(适用于旧版Java)。然而,由于是线程安全的,并且提供了更直观和灵活的日期时间格式操作,因此在Java 8及以上版本中,它通常被视为首选。

2024-05-13 11:35:38 216

原创 java数据保留几位小数的问题

这个方法在格式化输出时非常常用,可以方便地控制小数位数,并且语法简洁易懂。它不仅可以用于格式化浮点数和双精度数,还可以用于格式化其他数据类型,如整数、字符串等。可能是最简单和最直接的方法。但是,如果你需要进行精确的数值计算或者需要更复杂的数字格式化,那么。在大多数情况下,如果你只是需要简单地格式化输出数字并保留几位小数,当需要进行精确的数值计算或者需要保留小数的位数较多时,方法允许你指定保留的小数位数,并可以选择舍入模式。示例代码: 保留两位小数,并且四舍五入。类通常是一个更好的选择。

2024-05-13 11:00:30 238

原创 @SaIgnore解释

SaIgnore注解允许特定的接口或方法被忽略鉴权,即用户无需登录或获取Token即可直接访问这些接口或方法。这在某些情况下是非常有用的,例如,当你需要公开某些API供外部系统调用,或者提供某些无需用户身份验证的服务时。

2024-05-13 10:16:22 715

原创 spring框架定时任务(@Scheduled)

在spring框架中,@scheduled注解是用于声明定时任务的,以最简单的方式来创建定时任务。

2024-05-13 10:03:30 253

原创 @Transaction注解详情解释

@Transaction注解详情解释

2024-05-11 13:59:24 1254 4

原创 JAVA 去除空格

JAVA 去除空格

2023-09-26 13:37:59 555

原创 若依 MyBatis改为MyBatis-Plus

主要内容:升级成mybatis-plus,代码生成也是mybatis-plus版本

2023-09-05 10:42:04 5081 5

原创 若依新建模块

若依新建模块

2023-09-04 17:54:57 665

原创 MQTT的快速认识

QOS为1时:消息会一直发送,直到返回收到信息(确保信息被收到[可能多次被接收到同一信息]);QOS为2时:发送一次,保证接收一次。(可能多次发送信息,但同一信息只会接收一次)。QOS为0时:发一次消息,不管是否接收到(数据不太重要,丢失一次无关);发布者连接,代理者响应连接。无发布消息时:发布者发送心跳,代理者响应心跳。该协议构建于TCP/IP协议 上,由IBM在1999年发布。断开连接:发布者断开连接。

2023-07-06 15:03:55 190

原创 Java判断一个字符串是否包含某个字符串

Java判断一个字符串是否包含某个字符串。方式一:contains()方法,方式二:startWith()方法,方式三:indexOf()方法

2023-06-15 10:45:38 19219 1

原创 Java集合内容或对象的某个值以逗号拼接(用逗号或其它字符链接集合内容)

Java集合内容或对象的某个值以逗号拼接(用逗号或其它字符链接集合内容)

2023-05-16 09:21:28 979

原创 MyBatis中<if>标签 test 注意事项

原因:MyBatis会把‘a’当成char类型,而不是字符串,所以不能进行判断。

2023-04-23 16:55:07 192

原创 Redis和Mysql如何保证数据的一致性

延迟双删: 先删除redis的缓存数据,再更新mysql,延迟几百毫秒在删除缓存中的数据。原因:第一次删除redis中的数据后,mysql在更新中。若这时有线程读取mysql中的值放到redis中,那么redis中的数据就又有了,没有删除掉。延迟几百毫秒后再删除redis中的数据,就可以让redis与mysql数据保持一致。

2023-04-12 11:06:34 87

原创 Sychronized和ReentrantLock的区别

sychronized锁的是对象,锁信息保存在对象头中,reentrantLock是通过int等标识锁的状态。sychronized会自动的加锁和释放锁,reentrantLock是需要手动加锁和释放锁。sychronized底层是jvm层面,reentrantLock是aip层面。sychronized是一个关键字,reentrantLock是一个类。

2023-04-12 10:56:47 75

原创 Sychronized的偏向锁、轻量级锁、重量级锁

当一个线程获取锁后,此时锁为偏向锁;若此时若有第二个线程来竞争锁,偏向锁就会升级为轻量级锁。轻量级锁是通过自旋来实现的,并不会阻塞线程。(自旋就是不停的获取锁资源)在锁对象的对象头中记录当前获取该锁的线程id,下次该线程就可以直接获取该锁。若自旋多次没有获取到锁,轻量级锁会升级为重量级锁,重量级锁会阻塞线程。

2023-04-12 10:49:08 114

原创 java中的异常体系

Exception包含RuntimeException(运行期异常)和非RuntimeException(非运行期异常)两类。非运行期异常:检查异常,是必须进行处理的异常,不然无法运行。Throwable下面有两个子类Exception和Error。Error可能是虚拟机,操作系统等方面错误。java中的所有异常都来自顶级父类Throwable。运行期异常:由程序逻辑引起,比如空指针、数组下标越界等。

2023-04-12 10:19:01 67

原创 SpringBoot的理解

继承之后可以做版本的管理,定义了版本信息。简单来说:spring-boot-starter-parent提供了一套管理依赖的方式,让使用者不用担心不同技术的依赖冲突。SpringBoot简化了Spring的使用难度,用默认配置代替了很多xml的繁重配置,大量避免了版本冲突。pringboot工程启用引导类启动程序,会初始化spring的容器并加载bean。(当前目录或当前子目录下面)Springboot用来简化spring应用的初始搭建和开发过程的。

2023-04-12 10:07:56 299

原创 事务的特性

一致性:事务开始前和结束后,数据库的完整性约束没有被破坏。有A-100,肯定有B+100.原子性:事务是一个整体,要么都执行,要么都不执行,不可能出现执行一半另一半不执行的情况。持久性:事务提交后,对数据库的操作是永久的,不可回滚的。隔离性:事务跟事务之间是互不干扰的。

2023-03-29 09:50:26 100

原创 spring的简单理解

aop是面向切面编程,是通过预编译和运行期间动态代理实现程序功能的技术。简单来说就是增强ioc对象方法的技术。aop的动态代理技术分别为:jdk基于接口的动态代理技术;cglib基于父类的动态代理技术。ioc容器就是个管理对象的容器;控制反转就是把对象的创建权交给spring的ioc容器,包含了对象的创建,使用,销毁。spring的核心是ioc容器和aop面向切面编程。

2023-03-29 09:24:17 69

原创 Redis有哪些数据结构,应用场景是什么?

集合:可以存多个元素,不可以重复。可以有数学集合上的交集,并集,差集操作。应用:共同关注的人等。字符串:可以存储字符串。应用:分布式锁,计算器,存json字符串等。哈希表:key-value的存储方式。应用:一般用于存储对象等。有序集合:元素排序(设置排序顺序)。列表:可以根据命令组合,当栈或者队列。

2023-03-24 09:24:43 77

原创 Mysql查询慢应该怎么优化

检查sql是否走了索引,若没有,优化sql利用索引。检查查询的字段是否都是必须的,或者有重复的。查询的数据是否太多,是否考虑分库分表。检查sql利用的索引是否为最优索引。

2023-03-24 09:14:22 99

空空如也

空空如也

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

TA关注的人

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