Java
文章平均质量分 89
Java
ReadThroughLife
计算机科学与技术硕士,前世界50强央企Python数字化转型培训讲师,前世界100强企业软件开发工程师
展开
-
基于 SpringBoot 2.7.x 使用最新的 Elasticsearch Java API Client 之 ElasticsearchClient
在调研了 spring-boot 2.7.10 版本的源码后发现,其实 2.7.x 版本已经引入了 ElasticsearchClient,并封装了新的客户端 ElasticsearchTemplate,但是并没有为其做自动装配,如果想要使用基于ElasticsearchClient 的 ElasticsearchTemplate,需要用户自己装配。即由提示可以知道,无法创建一个 ElasticsearchTemplate 类型的 bean.原创 2023-10-01 20:58:06 · 4905 阅读 · 0 评论 -
【已解决】Java 后端使用数组流 Array.stream() 将数组格式的 Cookie 转换成字符串格式
🎉工作中遇到这样一个场景:远程调用某个接口,该接口需要用户的。信息进行权限认证,认证通过之后才可以打通并返回数据。Debug 过程中拿到的。原创 2023-08-29 18:54:34 · 2398 阅读 · 0 评论 -
【已解决】Mybatis 实现 Group By 动态分组查询
🎉工作中遇到这样一个需求场景:实现一个统计查询,要求可以根据用户在前端界面筛选的字段进行动态地分组统计。,可能是一个字段、多个字段或者不进行分组查询,这都是由用户在前端决定的。原创 2023-08-29 17:25:40 · 9258 阅读 · 0 评论 -
【已解决】Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate[...]
🎉当在构造方法中,需要用到@Autowired注解依赖注入的 bean 时,启动程序会出现。时,依赖的对象还没有被注入,从而导致空指针异常。这是因为 Spring 在创建对象时,会。因此,在构造方法内部访问依赖对象。因此,从上面的代码可以得知,针对第二种方法,使用。原创 2023-08-12 13:11:27 · 16031 阅读 · 0 评论 -
【已解决】Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据
🎈在经过调研之后发现,某服务项目每周产生的数据量已经达到千万级别,每天将近能产生一百万的数据量写入到ES数据库中,加上之前的历史数据,目前生产环境ES数据量已经达到上亿规模。🎉工作中遇到这样一个需求场景:由于ES数据库中历史数据过多,占用太多的磁盘空间,需要定期地进行清理,在一定程度上可以释放磁盘空间,减轻磁盘空间压力。原创 2023-08-06 14:26:55 · 5627 阅读 · 4 评论 -
【已解决】Java 项目中利用 Redis 配合 Lua 脚本对短信推送消息做推送限制
在实际应用场景中,我们通常需要对短信推送消息做发送限制的处理,避免一定时间间隔内发送过多相同内容的推送短信对用户造成骚扰,也要防止攻击者恶意调用短信推送接口造成短信资源的极大浪费。尽管部分三方接口提供方的原生接口就已经做了限制,但是为了能够更好地满足定制化需求以及在编码过程中的疏忽造成接口重复调用导致资源浪费,因此我们需要在项目中做短信推送限制的处理。原创 2023-02-02 15:54:10 · 2336 阅读 · 0 评论 -
【已解决】Java 项目中接入天翼云短信推送接口
因此,接入的主要工作也是在第4个步骤,下面将重点介绍如何在代码层面调用API,实现发送短信功能。因此,对于每次接口的调用请求,都需要由。发送短信接口的请求参数、返回参数示例中的字段大小写问题,应该统一首字母小写,而官网文档给出的是大写,可以及时联系天翼云的客服人员咨询。🎉工作场景中遇到这样一个需求:在项目中接入天翼云短信发送接口,用于向用户推送短信消息,如短信验证码、系统信息推送以及推广信息等。最后,需要注意的是,经过本人前期的一些调研,发现天翼云短信服务官方文档因为历史原因,相关信息未能及时更新,如。原创 2023-01-31 15:20:06 · 4243 阅读 · 1 评论 -
【已解决】利用 Java 多线程并发编程提高数据处理效率
需求很简单,只设计一般的联动数据库查询以及数据库的更新操作,然而在编码实现过程中发现,由于主机的数量很多,导致循环遍历查询、更新时花费很长的时间,调用一次接口大概需要30-40 min 时间才能完成操作。💡因此,为了有效缩短接口方法的执行时间,便考虑使用多线程并发编程方法,利用多核处理器并行执行的能力,通过异步处理数据的方式,便可以大大缩短执行时间,提高执行效率。🎉那么在使用多线程异步更新的策略后,从当初调用接口所需的大概时间为。📍这里使用可重用固定线程数的线程池。,大大提高了执行效率。原创 2022-10-02 18:00:43 · 6633 阅读 · 4 评论 -
SpringBoot 项目中整合数据校验框架 hibernate-validator
早期的网站,用户输入一个邮箱地址,需要将邮箱地址发送到服务端,服务端进行校验,校验成功后再给前端一个响应。自从有了 JavaScript 后,校验工作可以放在前端去执行。那么为什么还需要服务端校验呢?因为前端传来的数据不可信,前端很容易获取到后端的接口,如果有人直接调用接口,就可能会出现非法数据,因此服务端也要数据校验。总的来说:校验参数基本上是一个体力活,而且冗余代码繁多,也影响代码的可读性,我们需要一个比较优雅的方式来解决这个问题。Hibernate Validator 框架刚好解决了这个问题,可以很优原创 2022-07-05 15:20:58 · 1779 阅读 · 6 评论 -
AntiSamy:防 XSS 攻击的一种解决方案使用教程
XSS 是跨站脚本攻击(Cross Site Scripting) 的简称,为不和 CSS(Cascading Style Sheets) 混淆,故将跨站脚本攻击缩写为 XSS. XSS 是指恶意攻击者往 Web 页面里插入恶意 Script 代码,当用户浏览该页时,嵌入其中 Web 里面的 Script 代码会被执行,从而达到恶意攻击用户的目的。有点类似于 SQL 注入。当网站攻击者发现这个漏洞,并攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各原创 2022-07-05 11:27:12 · 3204 阅读 · 0 评论 -
SpringBoot 整合 Dozer 映射框架
Dozer 是一个 Java Bean 到 Java Bean 的映射器,它递归地将数据从一个对象复制到另一个对象。Dozer 是用来对两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的调用 set 和 get 方法。最重要的是,Dozer 可以确保来自数据库的内部域对象不会渗入外部表示层或外部消费者,它还可以将域对象映射到外部 API 调用,反之亦然。映射框架在分层架构中作用很大,我们可以通过封装对特定数据对象的更改与将这些对象传播到其他层(即外原创 2022-07-04 22:59:55 · 1324 阅读 · 0 评论 -
在 SpringBoot 项目中使用 Swagger 接口文档演示
在一个项目开发过程中,当前端开发人员根据后端开发人员给出的 API 接口文档进行接口联调对接时,可能会出现这样的矛盾:前端开发人员抱怨后端开发人员给出的 API 接口文档和实际的情况有所出入,而后端开发人员由于繁重的开发任务已经身心俱疲,想到自己还要负责维护接口文档的任务更是不堪重负。这时就需要一个解决方案,希望它能够在后端开发人员进行接口开发时,能够帮助后端工程师自动生成相应的接口文档,当接口有变化时,也能够对文档进行及时更新,这样前端工程师在进行接口联调时,不会再出现发现文档和实际情况不一致的情况。幸运原创 2022-07-04 18:40:56 · 1080 阅读 · 0 评论 -
RestfulToolKit:便捷的 IDEA 接口测试神器
正如文章标题所写,RestfulToolKit 简单来说就是一个用来测试遵循 Restful 风格接口方法的插件工具,使得我们可以不用离开 IDEA 界面就可以完成接口测试工作。那么,它的作者是这样定义的:它是一套 RESTful 服务开发辅助工具集:首先,打开 IDEA 设置窗口(File->Settings),并选择 Plugins->Marketplace,切换到插件应用市场界面之后,在搜索栏中输入 ,在显示出现的搜索结果选择第一个结果,也就是下载次数最多的那个插件,点击 Install 进行安装(网原创 2022-06-14 20:30:57 · 9838 阅读 · 6 评论 -
【已解决】Java 中的可变参数应用
场景描述:在实际工作场景中遇到这样一个需求:根据筛选条件对某个模块进行查询,查询结果需要分页在前端页面显示,并将所有页的查询记录导出,生成 Excel 报表。问题描述:已经查询接口的参数需要包括:模块标识(指定对哪个模块进行查询)、查询字段(对模块的哪个字段进行查询)、查询字段值(用于精确或模糊匹配字段内容) 以及分页信息(Page);导出 Excel 报表接口的参数的主要参数除了查询接口中的分页信息以外,其他与查询接口参数一致。为了减少冗余代码的产生,这里采用 JDK 1.5 之后新增的可变函数(va原创 2022-05-27 18:31:13 · 1199 阅读 · 0 评论 -
你一定能看懂的 SpringBoot 自动装配原理
SpringBoot 自动装配原理1. 什么是 SpringBoot 自动装配2. SpringBoot 如何实现自动装配1. 什么是 SpringBoot 自动装配SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用 jar 包中的 META-INF/spring.factories 文件,将文件中配置的类型信息加载到 Spring 容器并执行类中定义的各种操作。对于外部 jar 来说,只需要按照 SpringBoot 定义的标准,就能将自己的功能装置原创 2022-05-16 13:59:19 · 1424 阅读 · 0 评论 -
【已解决】Due to limitations of the com.mongodb.BasicDocument, you can‘t add a second ‘$and‘ expression
在工作场景中遇到这样一个需求,对底层数据库中的某个字段进行筛选查询,即将不满足筛选条件的记录进行过滤掉,从而只要得到满足筛选的记录。需要说明的是,底层数据库使用的是 MongoDB,不同于传统的关系型数据库,它是一个分布式文档型数据库,在使用的语法上和关系型数据库差别较大。同样地,使用 Java 代码对 MongoDB 进行增删改查操作自然也有别于以往对关系型数据库的做法,spring 框架在包 org.springframework.data.mongodb.core 提供了一个操作类 MongoTem原创 2022-05-10 19:34:43 · 8682 阅读 · 0 评论 -
《Java I/O 模型》Java AIO
《Java I/O 模型》专栏文章索引👉《Java I/O 模型》Java BIO👉《Java I/O 模型》Java NIO📜在之前的两篇博客中,我们分别学习了传统的 Java BIO 和当今使用比较多的 Java NIO,那么最后一个阶段再简单了解一下 Java AIO 吧(由于种种原因,目前 Java AIO 使用的并不是很多,因此暂且简单的介绍一下)。📙Java AIO(Asychronous I/O) 即 Java 异步非阻塞 I/O,JDK 1.7 开始支持,它是对 JDK1.4 .原创 2022-05-08 17:50:58 · 735 阅读 · 0 评论 -
《Java I/O 模型》Java NIO
《Java I/O 模型》Java NIO1. Java NIO 介绍2. 缓存区(Buffer)1. Java NIO 介绍🎁Java NIO(New IO) 又被称为 Java Non-Blocking IO,是在 Java 1.4 开始引入的一个新的 IO API. NIO 支持面向缓冲区的、基于通道的 IO 操作,以更高效的方式进行文件的读写操作。传统 IO 的读写操作只能阻塞执行,线程在读写期间不能干其他事情。例如,调用 socket.read() 时,如果服务器一直没有数据传输过来,线程就原创 2022-05-07 07:30:00 · 1439 阅读 · 2 评论 -
《Java I/O 模型》Java BIO
《Java I/O 模型》Java BIO1. Java BIO 介绍2. BIO 模式下多发和多收消息3. BIO 模式下服务端接收多个客户端通信请求4. 伪异步 I/O 编程5. 基于 BIO 模式的文件上传1. Java BIO 介绍🎁Java BIO(Java Blocking I/O)是 Java 网络编程所支持的一种传统阻塞型 I/O 模型,服务器实现模式为一个连接一个线程,当客户端有连接请求时,服务器就启动一个线程进行处理,如果这个连接不做任何事情则会造成不必要的线程开销,此时可以通过线原创 2022-05-04 07:30:00 · 916 阅读 · 0 评论 -
《Java 虚拟机》 happens-before 与锁优化
《Java 虚拟机》 happens-before 与锁优化🚀1. happens-before🚀2. 锁优化🚁2.1 轻量级锁🚁2.2 锁膨胀🚁2.3 重量锁🚁2.4 偏向锁🚁2.5 其他优化🪂2.5.1 减少上锁时间🪂2.5.2 降低锁的粒度🪂2.5.3 锁粗化🪂2.5.4 锁消除🪂2.5.5. 读写分离🚀1. happens-before🎁 从 JDK 5 开始,Java 使用新的 JSR-133 内存模型,该内存模型使用 happens-before的概念来阐述操作之间的内存可见性。在 J原创 2022-05-03 07:30:00 · 1731 阅读 · 1 评论 -
《Java 并发编程》共享模型之无锁
《Java 并发编程》共享模型之无锁🚀1. 无锁解决线程安全问题🚀2. CAS 与 volatile🚀3. 原子整数🚀4. 原子引用🚀5. ABA 问题及解决🚀6. 原子数组和原子字段更新器🚀1. 无锁解决线程安全问题有如下需求,保证 account.withdraw 取款方法的线程安全interface Account { Integer getBalance(); void withdraw(Integer amount); /** * 方法内会启动 1000 个线程,每个线程做 -原创 2022-05-01 07:30:00 · 1095 阅读 · 0 评论 -
《Java 并发编程》线程池
《Java 并发编程》线程池🚀1. 自定义线程池🚀2. ThreadPoolExecutor🚁2.1 线程池状态🚁2.2 构造方法🚁2.3 newFiexedThreadPool🚁2.4 newCachedThreadPool🚁2.5 newSingleThreadExecutor🚀3. 提交任务🚀4. 关闭线程池🚀5. 任务调度线程池🚀1. 自定义线程池阻塞队列中维护了由主线程(或者其他线程)所产生的的任务主线程类似于生产者,产生任务并放入阻塞队列中线程池类似于消费者,得到阻塞队列中已有的任务原创 2022-04-30 07:30:00 · 2432 阅读 · 0 评论 -
在 IDEA 中使用 Git 图文教程
在 IDEA 中使用 Git 图文教程1. 配置 Git2. 创建项目远程仓库3. 初始化本地仓库3. 连接远程仓库4. 提交到本地仓库5. 推送到远程仓库6. 克隆远程仓库到本地7. 分支操作8. 总结1. 配置 Git想要在 IDEA 中使用 Git,首先就需要在 IDEA 工具中对 Git 进行相关的配置。打开 IDEA 设置,之后按照下面图片中的步骤进行操作即可。需要注意的是,在 Path Git executbale 中,也就是设置 Git 可执行路径中,找到本机电脑上 Git 的安装位置,原创 2022-04-04 21:38:10 · 106518 阅读 · 20 评论 -
《Java 并发编程》共享模型之不可变
《Java 并发编程》共享模型之不可变🚀1. 日期转换的问题🚀2. 不可变设计🚀3. 无状态🚀1. 日期转换的问题在运行下面的代码时,由于 SimpleDateFormat 不是线程安全的public class Test { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 0; i &原创 2022-04-26 13:57:32 · 1349 阅读 · 0 评论 -
《Java 并发编程》共享模型之管程
《Java 并发编程》共享模型之管程1 共享带来的问题1.1 临界区1.2 竞态条件2. synchronized 解决方案2.1 synchronized 语法2.2 synchronized 加在方法上3. 变量的线程安全分析4. Monitor 概念1 共享带来的问题1.1 临界区一个程序运行多个线程本身没有问题问题出在多个线程访问共享资源(1)多个线程读共享资源其实也没有问题(2)在多个线程对共享资源读写操作时发生指令交错,就会出现问题一段代码内如果存在对共享资源的多线程读写操作,称原创 2022-04-25 11:27:09 · 1895 阅读 · 0 评论 -
《Java 并发编程》进程与线程
Java 并发编程1. 基本概念1.1 进程与线程1.2 并行与并发1.3 应用1.3.1 应用之异步调用1.3.2 应用之提高效率2. Java 线程2.1 创建和运行线程2.1.1 通过继承 Thread 创建线程2.1.2 使用 Runnable 配合 Thread (推荐)2.1.3 FutureTask 配合 Thread2.1.4 小结1. 基本概念1.1 进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载到 CPU,数据加载到内存。在指令运行过程中还需原创 2022-04-22 20:48:11 · 1654 阅读 · 1 评论 -
《Java 虚拟机》运行期优化
5. 运行期优化5.1 分层编译JVM 将执行状态分成了 5 个层次:0层:解释执行,用解释器将字节码翻译为机器码1层:使用 C1 即时编译器编译执行(不带 profiling)2层:使用 C1 即时编译器编译执行(带基本的profiling)3层:使用 C1 即时编译器编译执行(带完全的profiling)4层:使用 C2 即时编译器编译执行profiling 是指在运行过程中收集一些程序执行状态的数据,例如【方法的调用次数】,【循环的 回边次数】等。即时编译器(JIT)与解释器的区别:原创 2022-04-17 14:03:05 · 812 阅读 · 0 评论 -
《Java 并发编程》共享模型之内存
Java 内存模型1. Java 内存模型1.1 原子性1.2 可见性1.3 有序性1. Java 内存模型Java 内存模型(Java Memory Model,JMM)是 JVM 规范中定义的一种抽象模型,用来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。JMM 体现在以下几个方面:原子性:保证指令不受到线程上下文的影响。可见性:保证指令不会受 CPU 缓存的影响。有序性:保证指令不会受 CPU 指令并行优化的影响。1.1 原子性原创 2022-04-14 11:12:00 · 964 阅读 · 1 评论 -
《Java 虚拟机》 类加载阶段
JVM 类加载阶段1. 加载2. 链接2.1 验证2.2 准备2.3 解析3. 初始化4. 类加载器4.1 启动类加载器4.2 拓展类加载器4.3 双亲委派模式4.4 自定义类加载器5. 运行期优化5.1 分层编译5.2 方法内联5.2.1 内联函数类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resoultion)、初始化(Initialization)、使用(Using)和卸载(Un原创 2022-04-13 18:33:46 · 1789 阅读 · 2 评论 -
《Java 虚拟机》类文件结构与字节码技术
JVM 类加载与字节码技术1. 类文件结构1.1 魔数1.2 版本号1.3 常量池1.4 访问标识与继承信息1.5 字段表信息1.6 方法表信息1.7 属性表集合2. 字节码指令2.3 图解方法执行流程1. 类文件结构我们直到,编译 .java 文件可以得到 .class 类字节码文件。下面是一个简单的名为 HelloWorld.java 文件public class HelloWorld { public static void main(String[] args) {原创 2022-04-11 18:59:36 · 1429 阅读 · 0 评论 -
《Java 虚拟机》 垃圾回收
JVM 垃圾回收1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法1.3 五种引用1.4 引用队列2. 垃圾回收算法2.1 标记-清除算法2.2 标记-整理算法2.3 复制算法3. 分代垃圾回收4. 垃圾回收器4.1 串行4.2 吞吐量优先1. 如何判断对象可以回收1.1 引用计数法定义:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为 0 的对象就是不可能再被使用的。弊端:循环引用时,两个对象的计数都为1,导致两个对原创 2022-04-06 21:04:14 · 1662 阅读 · 0 评论 -
《Java 虚拟机》 基本概念与内存结构
JVM 基本概念与内存模型1. JVM 基本概念2. JVM 内存模型2.1 程序计数器2.2 虚拟机栈2.3 本地方法栈2.4 堆2.5 方法区2.6 直接内存1. JVM 基本概念定义:Java Virtual Machine,Java 程序的运行环境(Java 二进制字节码的运行环境)。优点:一次编写,到处运行自动管理内存,具有垃圾回收的功能数组下标越界检查多态JVM、JRE、JDK、JavaSE 和 JavaEE 之间比较:2. JVM 内存模型整体架构2.1 程序计数原创 2022-04-01 14:26:02 · 2758 阅读 · 0 评论 -
RedisTemplate 的两种序列化方式
RedisTemplate 的两种序列化方式1. 自定义 RedisTemplate 进行序列化2. 使用 StringRedisTemplate 进行序列化RedisTemplate 可以接收任意的 Object 作为值写入 Redis,只不过写入前会把 Object 序列化为字节形式,默认采用 JDK 序列化。但是这种方式有两个缺点:可读性差。对键值对进行了序列化,中文字符串序列化后的内容表示为 16 进制表示的数据,可读性差。内存空间占用大。存储了额外的对象的类型信息,占用了内存空间。因此原创 2022-03-16 17:34:36 · 9728 阅读 · 0 评论 -
Spring 集成 Redis 模块的使用教程
为了方便 Java 对 Redis 进行操作,Spring 对 Redis 也进行了集成,集成的模块称为 SpringDataRedis,主要包括以下功能作用:提供了对不同 Redis 客户端的整合(Lettuce 和 Jedis)。提供了对 RedisTemplate 统一 API 来操作 Redis.支持 Redis 的发布订阅模型。支持 Redis 哨兵和 Redis 集群。支持基于 Lettuce 的响应式编程。支持基于 JDK、JSON、字符串、Spring 对象的数据序列化和反序列原创 2022-03-16 15:10:33 · 1459 阅读 · 0 评论 -
《Java 后端面试经》多线程与并发编程篇
《Java 后端面试经》并发编程1. 什么是线程,什么是进程?26. 线程的生命周期,线程有哪些状态27. sleep()、wait()、join()、yield() 的区别说说什么是线程安全?如何实现线程安全?追问1:synchronized 和 ReentLock 异同点?追问2:synchronized 和 volatile 的区别追问3:synchronized 锁升级的过程说一下?追问4:synchronized 锁的作用范围Java 中线程的状态有哪些?线程间的通信方式有哪些?Java中线程间通原创 2022-02-27 10:46:31 · 2349 阅读 · 0 评论 -
《Java 后端面试经》设计模式篇
《Java 后端面试经》设计模式篇你了解的设计模式有哪些?在 Spring 框架中都用到了哪些设计模式,并举例说明?设计模式的原则有哪些?你了解的设计模式有哪些?总的设计模式有 23 种,可以分为三大类:创建型模式(共五种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式(共七种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式(共十一种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访原创 2022-02-27 10:44:06 · 839 阅读 · 0 评论 -
《Java 后端面试经》JVM 篇
JVM 可以运行多种语言吗?JVM 只识别字节码,所以 JVM 其实跟语言是解耦的,也就是没有直接关联,只要符合 字节码规范,都可以由 JVM 运行。像 scala、Groovy、Kotlin 等语言都可以在 JVM 上运行。介绍一下 Java 运行时数据区域,并说一下每个部分都存哪些内容?Java 的运行时区主要包含虚拟机栈、本地方法栈、程序计数器、方法区和堆,其中堆和方法区是所有线程所共有的。而且虚拟机栈、程序计数器和本地方法栈是线程所私有的。虚拟机栈:(生命周期与线程相同)Java 中每个原创 2022-02-26 08:37:50 · 2190 阅读 · 0 评论 -
《Java 后端面试经》数据库篇
Java 后端常见面试题 day 0449. Mybatis 的优缺点50. Mybatis 与 Hibernate 对比51. #{} 和 ${} 的区别是什么52. 简述 Mybatis 的插件运行原理,如何编写一个插件52. 索引的基本原理53. Mysql 聚簇和非聚簇索引的区别55. MySQL 索引的数据结构,各自优劣?56. 索引设计的原则57. Mysql 锁的类型有哪些?58. MySQL 执行计划怎么看59. 事务的基本特性和隔离级别61. 关心过业务系统里面的 SQL 耗时嘛?统计过慢原创 2022-02-16 10:16:41 · 5231 阅读 · 2 评论 -
《Java 后端面试经》Java 基础篇
Java 后端面试题 day 011. 面向对象2. JDK、JRE 和 JVM 三者之间的区别1. 面向对象什么是面向对象?对比面向过程,是两种不同的处理问题的角度。面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象)、及各自需要做什么。比如:洗衣机洗衣服面向过程会将任务拆解成一系列的步骤(函数),1、打开洗衣机 -----> 2、放衣服 -----> 3、放洗衣粉 -----> 4、清洗 -----> 5、烘干面向对象会拆出人和洗衣机两个对象:原创 2022-02-12 23:20:12 · 4973 阅读 · 0 评论 -
《Java 后端面试经》 Java EE 篇
Java 后端常见面试题 day 0217. Java 中的异常体系18. GC 如何判断对象可以被回收19. 线程的生命周期,线程有哪些状态20. sleep()、wait()、join()、yield() 的区别21. 对线程安全的理解17. Java 中的异常体系Java 中的所有异常都来自顶级父类 Throwable.Throwable 下有两个子类 Exception 和 Error.Error 是程序无法处理的错误,一旦出现这个错误,则程序将被迫停止运行。Exception 不会导致程原创 2022-02-14 10:39:28 · 1769 阅读 · 2 评论