- 博客(68)
- 收藏
- 关注
原创 Java后端面试——SSM框架面试题
摘要:本文总结了Spring框架、MyBatis等技术面试常见问题及答案。主要内容包括:Spring单例bean的线程安全性、AOP原理与应用、事务实现与失效场景、bean生命周期与循环依赖解决方案;SpringMVC执行流程与常用注解;SpringBoot自动配置原理;MyBatis执行流程、延迟加载原理及一二级缓存机制。这些知识点涵盖了企业级Java开发的核心技术栈,对面试准备和技术学习具有重要参考价值。
2026-03-20 11:26:09
319
原创 Java后端开发——消息中间件面试题
摘要:本文讨论了RabbitMQ和Kafka的消息可靠性保障机制。RabbitMQ通过生产者确认、持久化、自动重试和死信队列确保消息不丢失,采用镜像队列实现高可用。Kafka则通过异步回调、复制机制(acks=all)和手动提交offset保证消息可靠传输,利用分区和ISR机制实现顺序消费和高可用。两者都通过幂等性设计和唯一标识解决重复消费问题。此外,还介绍了RabbitMQ延迟队列实现、百万消息堆积处理方案,以及Kafka的高性能设计特点,包括零拷贝、消息压缩和分批发送等优化措施。
2026-03-20 10:38:54
309
原创 Java后端开发——MySQL面试题汇总
本文系统总结了MySQL性能优化与事务管理的核心知识点。在性能优化方面,详细介绍了慢查询定位方法(监控系统/SQL日志)、EXPLAIN分析工具、索引原理(B+树结构、聚簇/非聚簇索引)、索引优化策略(覆盖索引、创建原则、失效场景)以及SQL语句优化技巧(字段选择、分页处理、表连接方式)。在事务管理方面,深入解析了ACID特性、并发问题(脏读/不可重复读/幻读)、隔离级别(默认REPEATABLE READ)及实现机制(MVCC、undolog/redolog)。最后还介绍了主从同步原理和分库分表实践方案。
2026-03-20 10:28:37
411
原创 Java后端开发——Redis面试题汇总
本文探讨了Redis缓存系统中的三大核心问题:缓存穿透、缓存击穿和缓存雪崩。缓存穿透指查询不存在的数据导致数据库压力;缓存击穿是热点Key失效引发并发请求冲击;缓存雪崩则是大量Key同时过期或Redis宕机。解决方案包括布隆过滤器、互斥锁、随机过期时间等。此外,文章详细介绍了Redis持久化机制(RDB/AOF)、数据淘汰策略(LRU/LFU)、分布式锁实现(Redisson)及主从同步流程。最后分析了Redis高性能原因,包括单线程架构、I/O多路复用模型等。针对集群场景,讨论了哨兵模式、分片集群及脑裂问
2026-03-13 13:22:08
384
原创 Java后端开发——基础面试题汇总
本文全面介绍了Java编程语言的核心概念、特性及应用场景。主要内容包括: Java基础特性:平台无关性(JVM机制)、面向对象特性(封装、继承、多态)、内存管理(垃圾回收)。 数据类型与转换:8种基本数据类型及其包装类,类型转换方式(自动/强制转换),BigDecimal的精度优势。 面向对象设计:抽象类与接口区别,多态实现方式,设计原则(SOLID),内部类分类及特点。 关键特性详解: 反射机制原理及应用(动态加载、框架实现) 注解原理及运行时处理 异常处理体系(Checked/Unchecked异常)
2026-03-11 20:15:49
704
原创 LeetCode面试HOT100—— 206. 反转链表
本文详细解析了反转单链表的迭代最优解(头插法)。该方法通过三个指针(pre、cur、nxt)实现,时间复杂度O(n),空间复杂度O(1)。核心思路是将原链表节点逐个取出并插入新链表头部,最终返回pre指针指向的新链表头。文章通过逐行代码注释、分步演示(1→2→3→4→null示例)和关键细节分析,帮助读者彻底理解反转过程。特别强调了保存nxt指针的必要性和边界情况处理,总结为"保存下一个,反转当前,移动双指针"的操作口诀。
2025-12-02 18:04:47
974
原创 LeetCode面试HOT100——160. 相交链表
摘要 这段代码实现了相交链表问题的双指针最优解,时间复杂度O(n+m),空间复杂度O(1)。算法核心是让两个指针分别从两个链表头出发,遍历完一个链表后转向另一个链表,确保总路程相同。若相交,指针会在相交节点相遇;若不相交,则同时到达null。该方法相比哈希表解法节省空间,通过"你走我的路,我走你的路"的思路确保必然相遇或同时到达终点。关键点包括循环条件设计、指针转向逻辑以及边界情况处理,适用于各种链表长度组合。
2025-12-02 18:01:07
664
原创 Java加强零基础学习Day1——Map集合 && Stream流
本文摘要: Java集合框架中的Map集合和Stream流是两大核心功能。Map集合采用键值对存储数据,具有键唯一、值可重复的特点,常用实现类包括HashMap、LinkedHashMap和TreeMap,提供了多种遍历方式。Stream流是JDK8新增的API,结合Lambda表达式可高效操作集合数据,提供丰富的中间方法(过滤、排序、映射等)和终结方法,支持链式编程。通过代码示例展示了Map集合的基本操作和Stream流相比传统集合操作的优势,体现了现代Java编程的简洁性和高效性。
2025-11-27 21:14:03
255
原创 LCR 024. 反转链表
摘要:本文介绍了单链表反转的迭代算法实现。通过初始化prev、curr、nextTemp三个指针,逐步修改节点指向关系完成反转。关键步骤包括保存下一个节点(curr.next)、反转当前节点指向(curr.next=prev)、移动指针。以1->2->3->null为例,经过三次循环后链表变为3->2->1->null。算法时间复杂度O(n),空间复杂度O(1)。重点解释了初始循环时curr.next=prev如何将头节点指向null的过程,即通过指针赋值使节点1成为新链
2025-11-24 22:32:37
430
原创 数据结构算法学习day5——链表
本文介绍了三种链表结构的实现:单向链表、双向链表和双向环形链表。在单向链表中,详细讲解了节点定义、增删改查等基本操作,并比较了普通实现与带哨兵节点实现的区别。双向链表部分展示了如何通过prev和next指针实现双向遍历,以及头尾哨兵节点的应用。最后,双向环形链表通过哨兵节点自指形成环形结构,实现了更高效的插入和删除操作。全文通过代码示例详细说明了各类链表的实现要点和操作逻辑,为理解链表数据结构提供了实用参考。
2025-11-24 12:41:32
215
原创 JavaWeb零基础学习Day8——Tlias智能学习辅助系统(Web后端实战项目)
本文介绍了"Tlias智能学习辅助系统"的开发过程,重点分析了需求分析、技术实现和开发实践三个关键环节。系统定位为企业级学习管理平台,包含部门管理、员工管理、报表统计等六大功能模块,采用前后端分离架构,使用Java+SpringBoot+Vue等技术栈实现。开发过程中解决了Lombok注解失效、Nginx反向代理配置、RESTful接口设计等技术问题,详细阐述了部门管理的CRUD操作实现,包括参数接收、数据校验等关键点。文章还介绍了日志技术的应用,通过Logback实现日志分级管理。整个
2025-11-21 02:09:51
1041
原创 数据结构算法学习day4——数组
本文介绍了数组的基本概念及其在编程中的应用。数组是一种通过索引标识元素的连续存储数据结构,支持高效的随机访问(O(1)时间复杂度)。文章重点讲解了动态数组的实现,包括添加/删除元素时的容量检查和自动扩容机制(1.5倍增长),使用System.arraycopy进行元素移动。动态数组通过懒初始化优化内存使用,并在容量不足时自动扩容。最后简要提及了二维数组的概念。
2025-11-06 09:00:00
614
原创 JavaWeb零基础学习Day7——MyBatis
MyBatis是一款优秀的持久层框架,用于简化JDBC开发。本文介绍了MyBatis的基本使用方法,包括Mapper接口声明、SQL注解配置、单元测试以及数据库连接池概念。重点讲解了@Mapper和@Select注解的使用,展示了如何通过SpringBoot测试类执行查询操作。同时解释了方法引用System.out::println的原理和forEach遍历集合的用法。文章还对比了JDBC与MyBatis的区别,说明了数据库连接遗漏的危害,并简要提及了增删改查操作注意事项。最后指出在XML配置文件中可以更灵
2025-11-02 01:58:55
855
原创 数据结构算法学习day3——二分查找
本文介绍了二分查找算法的实现与优化。算法部分展示了两种Java实现:一种是传统二分查找,另一种优化了边界条件。针对常见问题进行了说明,包括区间选择、防止整数溢出、符号使用等。文章还讨论了算法评价标准,重点分析了时间复杂度的计算方法和表示方式(大O表示法)。最后展示了二分查找的扩展应用:寻找最左/最右侧元素,通过记录候选位置的方式实现了这一功能。这些实现都考虑了升序数组的特性,使用无符号右移运算符防止溢出,体现了对算法细节的深入思考。
2025-11-01 21:14:29
660
原创 JavaWeb零基础学习Day6——JDBC
摘要:本文介绍了JDBC的基本概念和使用方法。JDBC是Java操作关系型数据库的API,由数据库厂商提供驱动实现。通过示例展示了数据库修改和查询操作:1)使用Statement执行update语句更新数据;2)使用PreparedStatement执行select查询,并将结果封装到User对象。文章详细演示了连接数据库、执行SQL、处理结果集和释放资源的完整流程,指出此类模板化操作可由AI自动化生成,避免重复编码。
2025-10-31 02:05:24
896
原创 JavaWeb零基础学习Day5——MySQL
本文介绍了MySQL的基础学习路线,包括安装配置、数据模型和SQL语句操作。重点讲解了MySQL服务的启动/停止命令(net start/stop mysql)、修改root密码(mysqladmin命令)和登录方式(mysql -u -p)。同时提及后续学习内容:数据库基础操作、函数与约束、多表查询和事务处理。提供了完整的MySQL入门学习框架,适合零基础学习者系统掌握数据库知识。
2025-10-29 12:48:38
848
原创 数据结构算法学习day2——队列
本文介绍了队列的基本概念及其在银行排队系统等场景的应用。详细讲解了使用数组模拟队列的实现方法,包括初始化、判空判满、入队出队等操作。针对数组队列不可复用的问题,提出了环形队列的优化方案,通过取模运算实现队列空间的循环利用。文章包含完整的Java代码实现,演示了两种队列(普通数组队列和环形队列)的具体操作,并比较了它们的优缺点。环形队列通过调整front和rear指针的含义,有效解决了空间复用问题,提高了队列的实用性。
2025-10-28 12:35:02
607
原创 JavaWeb零基础学习Day5——Web基础
本文介绍了SpringBoot Web开发的基础知识和实践案例。主要内容包括:1. SpringBoot入门程序开发,展示如何创建Web应用并处理HTTP请求;2. HTTP协议详解,包含请求/响应格式及状态管理;3. 用户列表展示案例,实现数据读取、封装和响应;4. 分层解耦思想,讲解三层架构和IOC/DI实现原理;5. Bean管理和依赖注入的注解使用技巧。文章通过具体代码示例演示了SpringBoot的核心功能,帮助开发者快速掌握Web应用开发的关键技术。
2025-10-26 19:46:54
1144
原创 数据结构算法学习day1——稀疏数组
本文介绍了数据结构的基本分类和稀疏数组的应用。数据结构分为线性结构(如数组、链表、栈等)和非线性结构(如树、图等)。稀疏数组是一种用于存储大量重复值的优化方法,通过记录非零元素的位置和值来压缩存储空间。文章详细说明了二维数组与稀疏数组的转换过程,包括遍历原始数组、创建稀疏数组、存储非零元素等步骤,并提供了Java代码实现示例,展示了如何将棋盘数据转换为稀疏数组存储及恢复过程。
2025-10-24 14:18:08
427
原创 JavaWeb零基础学习Day4——Maven
Maven是一款基于POM模型的Java项目管理工具,主要功能包括依赖管理、项目构建和统一项目结构。它通过坐标唯一标识资源,由groupId、artifactId和version组成。IDEA集成Maven时需要配置pom.xml文件管理依赖,支持排除依赖和生命周期管理(clean、default、site)。单元测试方面,JUnit框架提供了断言和注解(如@BeforeAll)来规范测试流程,企业开发中需关注测试覆盖率。常见问题包括网络导致的依赖下载失败,可通过刷新或检查网络解决。
2025-10-20 13:07:30
1001
原创 牛客算法基础noob73 三角形面积
摘要:本文介绍了如何计算平面上三个不共线整数点构成的三角形面积,提供了完整的Java实现代码。程序通过创建Point和Triangle类来存储坐标信息,使用几何方法计算面积:当两边为竖直线时特殊处理,否则通过斜率和点到直线距离公式计算底边和高。重点解释了代码中"T.c.x"的含义,这是通过链式访问对象成员的方式获取三角形第三个顶点的x坐标,并详细说明了这种写法的合法性原理。程序最终输出保留两位小数的面积结果。
2025-10-15 17:16:40
475
原创 JavaWeb零基础学习Day3——Ajax & Element
本文介绍了Ajax技术及其在前后端交互中的应用,重点讲解了Axios简化Ajax请求的方法。概述了前后端分离开发模式,推荐使用YApi进行接口管理。详细说明了Vue脚手架搭建项目的方法和开发流程,并介绍了Element组件库的使用方式,包括常见组件的应用案例。最后提到项目打包部署时可能遇到的Nginx端口占用问题及解决方法。全文聚焦于现代Web开发中的关键技术点,为开发者提供了实用指南。
2025-10-13 23:02:37
1275
原创 牛客算法基础noob71 学生综合评估系统
牛客大学开发的学生综合评估系统通过学业成绩A和社会实践B(满分100)评定学生。优秀标准需同时满足:A+B>140且综合分S=A×70%+B×30%≥80。系统输入学生人数N及每个学生的id、A、B值,输出"Excellent"或"Not excellent"。评估逻辑已在Java代码中实现,通过判断两个条件来确定评定结果。
2025-10-13 23:01:22
425
原创 牛客算法基础noob70 两点间距离
这篇文章介绍了一个Java方法,用于计算二维平面上两点之间的欧几里得距离。方法接收两个Point对象作为参数,每个对象包含x和y坐标。通过提取两个点的坐标值,使用数学公式√[(x₂-x₁)² + (y₂-y₁)²]计算距离,最后返回double类型的距离值。该方法封装了基本的坐标提取和距离计算逻辑,适用于简单的二维几何计算场景。
2025-10-11 15:41:37
128
原创 牛客算法基础noob69 最厉害的学生
该Java程序用于找出总分最高的学生信息。输入N个学生的姓名和三科成绩,计算总分后比较,输出总分最高者(若总分相同则保留输入顺序靠前的)。程序使用Scanner读取输入,将第一个学生设为初始最优值,随后遍历比较更新最优值。最后用printf格式化输出结果,其中格式字符串"%s%d%d%d"分别对应姓名和三个成绩。关键点在于理解printf的格式说明符(%s匹配字符串,%d匹配整数)与参数列表的对应关系。
2025-10-11 00:29:39
662
原创 牛客算法基础noob68 凯撒解密
摘要:本文介绍了一个用于凯撒解密的Java函数,可将加密后的字符串还原为原始表白信。该函数接收加密字符串和位移次数n,通过将每个字母向后移动(26-n)步来实现反向解密(取模26处理循环)。具体步骤包括:计算有效位移、字符索引转换、反向位移运算及结果拼接。其核心思想是将"向前移n步"转化为等效的"向后移26-n步",与加密逻辑保持一致,便于统一计算。该解法时间复杂度为O(n),适用于小写字母字符串的解密需求。
2025-10-10 15:49:03
253
原创 JavaWeb零基础学习Day2——JS & Vue
JavaScript是一种跨平台的脚本语言,主要用于网页交互操作。文章介绍了JS的引入方式(内嵌脚本和外部脚本)、基础语法(变量声明、数据类型、运算符等)、函数定义、常用对象(Array、String、JSON),以及BOM和DOM操作。此外,还简要说明了事件监听机制和Vue框架的特点,包括数据双向绑定、常用指令和生命周期。内容涵盖了JS从基础到框架应用的核心知识点。
2025-10-10 09:00:00
1172
原创 牛客算法基础noob61 字符串操作
摘要:该题目要求处理一个字符串的多次字符替换操作。给定长度为n的字符串和m次操作,每次操作在指定区间[l,r]内将所有c1字符替换为c2。程序通过将字符串转为字符数组进行修改,最后输出结果字符串。关键点包括:1)处理1-based到0-based索引转换;2)遍历指定区间进行字符替换。Java实现采用Scanner读取输入,通过字符数组直接修改提高效率。时间复杂度为O(m*n)。
2025-10-03 21:25:46
396
原创 牛客算法基础noob60 牛牛的考试
文章摘要:牛牛根据"三长一短选最短、三短一长选最长、参差不齐选C"的规则答题。程序处理T道题目,每道4个选项,通过统计选项字符串长度特征自动选择答案:当有唯一最短选项时选最短,唯一最长时选最长,否则选C。该算法能帮助牛牛避免被旺仔哥哥惩罚。
2025-10-02 13:55:45
330
原创 JavaWeb零基础学习Day1——HTML&CSS
本文介绍了HTML和CSS的基础知识,包括HTML作为超文本标记语言的结构特点、常用标签(如img、h1-h6、a等)及其属性,以及CSS的三种引入方式(行内、内嵌、外嵌样式)。重点讲解了网页排版布局、表格表单的设计方法,并提供了详细代码示例。文章还涉及路径设置、样式优先级、文本修饰等实用技巧,适合前端开发初学者快速掌握网页基础开发技能。建议读者结合W3School等资源进行实践练习。
2025-10-02 12:52:35
1641
2
原创 牛客算法刷题noob57 凯撒加密
摘要:本文描述描述了一个密码生成问题,要求将给定的小写字母字符串每个字符向后错位n首都循环移位(z后是a)。输入 rechazadosn和字符串s,核心输出错位后的密码。解决方案使用Java实现,通过函数计算每个n次错位后的字符位置相对偏移,并通过模26运算确保循环处理。
2025-10-01 21:56:41
250
原创 牛客算法基础noob59 简写单词
文章摘要:定义了一种复合词简写规则,即提取每个组成单词的首字母并转为大写。输入一个由若干单词组成的复合词,输出其简写形式。输入规范包括单词数量、长度和分隔方式。输出要求将所有单词首字母大写后按原顺序连接。示例代码展示了Java实现方法:读取输入,分割单词,提取首字母并转换为大写后输出。
2025-10-01 21:54:13
319
原创 牛客算法基础noob58 无限长正整数排列字符串
这段Java代码实现了一个算法,用于查找由连续正整数拼接而成的无限字符串S中第n个字符。程序首先确定n所在的数字位数区间(1位、2位等),然后计算对应的具体数字,最后取出该数字的特定位置的字符。时间复杂度为O(logN),适用于n≤1000的情况。
2025-10-01 21:52:34
407
原创 牛客算法基础noob56 BFS
摘要:该Java程序实现了在给定字符串中查找不区分大小写的子串"Bob"首次出现位置的功能。程序首先检查字符串长度是否小于3,若是直接返回-1。否则将字符串转为小写,通过滑动窗口方式逐个检查连续三个字符是否为"bob",找到即返回起始下标。若遍历完未找到则返回-1,有效处理了边界条件和大小写问题。
2025-09-29 17:15:14
437
原创 MySQL零基础学习Day5——事务
本文介绍了数据库事务的核心概念与操作。事务是一组不可分割的操作集合,具有原子性、一致性、隔离性和持久性四大特性。文章详细说明了事务的提交方式设置(自动/手动)、基本操作命令(COMMIT/ROLLBACK)以及事务隔离级别,并分析了并发事务可能产生的脏读、不可重复读和幻读问题,为数据库事务管理提供了全面指导。
2025-09-28 10:00:00
878
原创 牛客算法基础noob54 斗兽棋
摘要:代码实现了一个基于四种棋子(elephant、tiger、cat、mouse)克制关系的博弈游戏。当牛牛或牛妹的棋子能吃掉对方时分别输出"win"或"lose",否则输出"tie"。但代码存在字符串比较错误,应使用equals()方法而非==运算符来比较字符串内容。修正后能正确判断棋子的克制关系,如输入"elephant tiger"将输出"win"。
2025-09-27 12:15:04
240
原创 牛客算法基础noob53 年轻人不讲5的
【摘要】本文针对年轻人使用数字"5"的不当行为提出批评,要求将数字字符串中的所有"5"替换为""。题目要求处理长度不超过10^6的数字字符串,给出Java实现方案:通过Scanner读取输入,将字符串转为字符数组遍历,遇到'5'即替换为''后输出。该解决方案使用O(n)时间复杂度,能高效处理最大长度的输入字符串。
2025-09-27 12:12:24
213
原创 MySQL零基础学习Day4——多表查询
摘要:数据库设计中存在三种多表关系:一对多(外键实现)、多对多(中间表)和一对一(唯一外键)。多表查询通过连接查询(内/外/自连接)和子查询实现,需消除笛卡尔积。子查询分为标量、列、行、表四种类型,分别适用不同场景。联合查询需保持列数和类型一致,UNION会自动去重。
2025-09-27 00:33:01
1250
原创 牛客算法基础noob52 扫雷
扫雷矩阵生成任务摘要本文档旨在明确扫雷矩阵生成任务的核心要求,具体如下:任务目标:根据初始扫雷矩阵(*表示地雷,.表示空白格)生成完整矩阵 —— 地雷位置仍输出*,空白格需计算并输出其周围 8 个方向(上、下、左、右及四对角线)的地雷总数。输入要求:先输入矩阵行数n和列数m(1≤n,m≤1000),后输入n行、每行m个字符(仅*和.,无空格)的初始矩阵。输出要求:输出n行完整矩阵,每行字符 / 数字紧凑无空格,行末无多余空格,空白格对应输出周围地雷数(0-8 的整数)。
2025-09-26 12:45:28
413
原创 MySQL零基础学习Day3——函数和约束
本文介绍了数据库中的函数与约束概念。函数部分包括字符串、数值、日期和流程控制函数的使用方法及案例,如生成随机验证码、日期推算等。约束部分解释了主键、非空、唯一性、检查等约束的作用,以及外键约束的两种常用行为(CASCADE和SET NULL),强调外键用于维护表间数据一致性和完整性。文章通过具体SQL示例演示了各种约束的创建方式。
2025-09-25 23:38:32
683
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅