Java面试
文章平均质量分 78
java面试题,实战
良枫
AIGC、AI绘画 and Java后台开发
展开
-
【Java实战】Mybatis plus根据数据库表自动生成代码
首先生成一个maven项目,不会生成的参考(写的过程中遇到过的问题:mybatis-plus 生成controller中的代码, RequestMapping除了双斜杠问题@RequestMapping("//article")。解决方法: pc.setModuleName(null) )原创 2023-10-18 15:50:03 · 755 阅读 · 0 评论 -
【Java实战】创建第一个Springboot项目Hello world
没有旗舰版的Idea授权,所以安装了社区版的idea。不知道从何时开始,社区版IDEA的插件不好用了,所以就换了个方法生成Springboot项目。原创 2023-10-17 19:58:23 · 419 阅读 · 0 评论 -
【Java实战】Mysql读写分离主从复制搭建保姆级教程
MySQL 的数据同步通常采用主从复制(Master-Slave)的方式。主从复制基于二进制日志(binlog)。主服务器(Master)在 binlog 中记录数据更改,从服务器(Slave)将这些日志读取并应用到自己的数据库,以此实现数据的同步。从服务器有两个线程:IO线程从主服务器读取 binlog 并保存在本地的中继日志(relay log);SQL线程读取中继日志,执行其中的事件,确保从服务器数据与主服务器保持一致。原创 2023-10-17 13:10:07 · 302 阅读 · 0 评论 -
MySQL常见数据类型、特点以及使用场景
INT:4字节,范围从-2,147,483,648到2,147,483,647(有符号),0到4,294,967,295(无符号)。VARCHAR:可变长度字符串,占用的字节数根据存储的数据长度而变化,最多65,535字节。SMALLINT:2字节,范围从-32,768到32,767(有符号),0到65,535(无符号)。用于中等大小的整数。TINYINT:1字节,范围从-128到127(有符号),0到255(无符号)。BIGINT:8字节,范围更大,适用于非常大的整数,如用户ID或订单号。原创 2023-09-27 00:05:17 · 480 阅读 · 1 评论 -
MySQL索引失效场景,索引优化,索引原理
不必搜索整个数据库,通过使用索引,数据库系统可以直接找到存储在磁盘上的特定行的地址。索引失效指的是在进行数据库查询时,虽然存在合适的索引,但由于某种原因,查询并没有使用该索引,从而可能导致性能下降。与普通索引类似,但要求索引列的所有值都是唯一的(不包括NULL值,因为在MySQL中,多个NULL值是被视为相互不同的)。InnoDB存储引擎的表中,数据的物理存储顺序与主键的顺序相同,也即主键索引是聚簇索引。文章主要有以下内容:MySQL性能优化、索引优化、索引失效,索引原理、索引分类。使用R-Tree算法。原创 2023-09-25 21:19:31 · 163 阅读 · 0 评论 -
MySQL慢查询优化、日志收集定位排查、慢查询sql分析
MySQL慢查询日志收集、定位,慢查询分析、排查。如果返回值是'OFF',你需要开启它。默认情况下,超过10秒的查询会被记录为慢查询。默认情况下,只有不使用索引的查询才会被记录。等待一段时间后,可以查看`/path/to/your/logfile.log`来定位慢查询。你可以手动查看日志,或者使用工具如`mysqldumpslow`来帮助分析日志内容。在定位到具体的慢查询后,可以使用`EXPLAIN`语句来进一步分析查询执行计划,并基于此进行优化。慢查询日志可能会很大,所以定期轮转和清理是很有必要的。原创 2023-09-25 12:51:06 · 581 阅读 · 0 评论 -
数据库连接池druid参数详解
在使用Druid连接池时,当开启了缓存PreparedStatement功能时,每个连接都会缓存一定数量的PreparedStatement对象,以便在需要执行SQL语句时能够快速获取。需要注意的是,缓存PreparedStatement虽然可以提高SQL执行的效率,但同时也会占用一定的内存资源。在上面的配置中,druid.stat.mergeSql=true表示启用SQL合并功能,druid.stat.slowSqlMillis=5000表示将SQL执行的时间阈值设置为5000毫秒。原创 2023-03-10 00:28:50 · 14247 阅读 · 1 评论 -
用crontab添加定时任务
程序可能出现崩溃级的bug,但这种bug可能十天半月才出现一次。修改起来比较困难,验证也非常耗时。这时候为了保证程序持续稳定运行,就需要一个监控程序了。功能:监控进程 demo-admin.jar 是否存在,如果不存在就启动它。实现方式:使用crontab -e 添加定时任务, 每分钟都执行脚本文件 demo_startup.sh脚本:demo_startup.sh: 判断进程demo-admin.jar是否存在,不存在就执行 nohup java -jar demo-admin.jar &am原创 2021-05-06 15:12:57 · 6205 阅读 · 0 评论 -
【Java面试】指令重排引发问题及解决方案
指令重排是指在程序执行过程中,为了优化性能,编译器或处理器可能会重新安排代码指令的执行顺序,但要求不改变程序的最终结果。在多线程环境中,指令重排可能会引发一些问题,因为线程之间的交互可能导致意外的结果。原创 2023-08-22 09:40:55 · 1120 阅读 · 1 评论 -
【Java面试】redis雪崩、穿透和击穿详解
1.Redis雪崩是指在某一时刻,缓存中大量的缓存数据同时失效或过期,导致大量的请求直接打到后端数据库,导致数据库负载剧增,引发性能问题甚至崩溃。这通常是因为缓存数据的过期时间设置过于集中,或者在同一时间段内大量缓存同时失效造成的。2.Redis穿透是指恶意或者异常请求查询一个不存在于缓存和数据库中的数据,导致每次请求都会直接访问数据库,增加了数据库负担。这可能是攻击者故意进行的,也可能是由于业务逻辑问题造成的。3.原创 2023-08-17 12:40:57 · 1539 阅读 · 4 评论 -
【Java面试】HashMap和HashTable的区别、HashMap底层实现原理和扩容机制
当链表长度达到一定阈值时,链表会被转换为红黑树,以减少查找、插入和删除操作的时间复杂度。因此,红黑树主要用于优化哈希碰撞导致的性能问题,对于较小的链表,仍然使用链表存储。红黑树相对于链表在查找、插入和删除操作上具有更好的性能,其时间复杂度为 O(log n),而链表的时间复杂度为 O(n)。的底层实现原理基于哈希表,使用数组存储键值对,通过哈希函数映射到数组索引。在解决哈希碰撞问题时的一种优化手段,可以提高大链表情况下的性能。它是一种自平衡的二叉搜索树,用于优化查找、插入和删除操作的性能。原创 2023-08-16 23:06:27 · 953 阅读 · 1 评论