自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 MyBatis与MyBatis Plus面试终极指南

在Java持久层框架领域,MyBatis以其灵活的SQL映射和优秀的性能表现,成为了众多企业的首选方案。而MyBatis Plus在MyBatis基础上进一步简化了开发流程,提供了强大的增强功能。本文将全面解析这两个框架的核心原理、高级特性以及面试中的高频问题,助你轻松应对技术面试。

2025-09-23 22:15:00 517

原创 Spring Boot面试终极指南:从基础到高级全面解析

Spring Boot是基于Spring框架的"约定优于配置"理念的快速应用开发工具。它通过自动配置和起步依赖,极大简化了Spring应用的初始搭建和开发过程。​​1. 创建autoconfigure模块​​​​2. 定义配置属性类​​​​3. 创建自动配置类​​@Bean​​4. 创建spring.factories文件​​@Component@Override// 检查自定义组件健康状态} else {

2025-09-23 18:15:00 615

原创 Spring框架面试终极指南:核心概念、高频问题与深度解析

作为一名Java开发者,Spring框架的掌握程度几乎决定了你的职业发展和技术水平。在当今的Java面试中,Spring相关问题出现的频率高达90%以上。本文将从Spring核心概念出发,全面解析面试中常见的Spring问题,帮助你在面试中脱颖而出。

2025-09-23 08:45:00 255

原创 深入理解JVM类加载与垃圾回收机制

​​答​​:双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成。​​好处​​:​​安全性​​:防止核心API被篡改​​避免重复加载​​:保证类的唯一性​​结构清晰​​:类加载器层次关系明确。

2025-09-22 22:00:00 691

原创 深入理解Java虚拟机内存模型

Java虚拟机(JVM)内存模型是Java程序员必须掌握的核心技术之一,不仅关系到程序性能优化、故障诊断,更是面试中的高频考点。据不完全统计,在Java中高级岗位面试中,JVM相关问题的出现概率高达85%!本文将带你系统性地学习JVM内存模型,从基础概念到高级应用,从学习复习到面试准备,全方位提升你的JVM功力。

2025-09-22 17:45:00 1067

原创 Java线程池深度解析

在现代高并发应用中,线程池是Java并发编程的核心组件。据统计,合理使用线程池可以提升系统性能30%-50%,同时避免资源耗尽导致的系统崩溃。阿里巴巴Java开发手册中明确要求:​​线程资源必须通过线程池提供,不允许在应用中自行显式创建线程​​。// 预启动所有核心线程static {

2025-09-22 11:00:00 1705

原创 Java并发安全解析

在当今高并发的互联网时代,多线程编程已经成为Java开发者的必备技能。然而,并发编程在提升系统性能的同时,也带来了复杂的安全性问题。据统计,约70%的生产环境问题与并发安全相关,且这类问题往往难以复现和调试。掌握并发安全知识,不仅是为了写出正确的代码,更是保障系统稳定性的关键。

2025-09-21 20:39:46 883

原创 Java并发编程深度指南:多线程

​使用CLH队列管理获取锁的线程通过state变量表示同步状态提供了acquire()和release()等模板方法。

2025-09-21 20:34:15 740

原创 Redis深度解析:核心数据结构、线程模型与高频面试题

Redis以其简洁的设计和卓越的性能成为了分布式系统不可或缺的组件。深入理解其数据结构实现和线程模型,能够帮助开发者更好地发挥Redis的潜力,构建高性能的应用程序。随着Redis的持续演进,如Disless模式等新特性的加入,这一经典技术将继续在云原生时代发挥重要作用。

2025-09-12 11:00:14 503

原创 MySQL基础全面解析

MySQL基础知识涵盖了从数据类型选择到复杂查询优化的各个方面。掌握这些核心概念对于构建高效、可靠的数据库应用至关重要。根据业务需求合理选择数据类型和表结构设计理解SQL执行顺序,编写高效的查询语句合理使用索引和约束保证数据完整性和查询性能在复杂场景下考虑使用事务和锁机制保证数据一致性持续学习和实践是掌握MySQL的关键,建议通过实际项目不断深化对这些概念的理解和应用。

2025-09-11 22:00:00 834

原创 MySQL索引深度解析

索引是一种​​数据结构​​,它能够帮助数据库系统快速定位到表中特定值所在的数据行,而无需进行全表扫描。MySQL中的索引本质上是对表中一列或多列的值进行排序的结构,类似于图书馆的图书检索系统。从计算机科学的角度来看,MySQL索引主要使用​​B+树​​数据结构(InnoDB引擎的默认索引类型),这也是为什么索引能够提供O(log n)时间复杂度的数据检索能力。MySQL索引是数据库性能优化的核心技术,正确使用索引可以带来显著的性能提升。深入理解业务查询模式,针对性创建索引。

2025-09-11 14:00:00 2015

原创 MySQL锁机制深度解析:从基础到高并发实战

MySQL锁机制是保障数据一致性的核心技术,不同存储引擎和隔离级别下的锁行为各有特点。根据业务场景选择合适的隔离级别为查询创建合适的索引避免锁升级设计事务时考虑锁的持有时间和范围高并发场景考虑使用乐观锁减少锁竞争监控和分析锁等待情况,及时优化正确理解和应用MySQL锁机制,能够在保证数据一致性的同时,最大化数据库的并发性能。注意:本文基于MySQL 8.0版本,不同版本的具体实现可能有所差异,请以实际使用的MySQL版本为准。

2025-09-11 08:00:00 746

原创 MySQL事务详解:从隔离级别到默认设置

在数据库管理中,事务是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全不执行。这是确保数据完整性和一致性的核心机制。MySQL作为最流行的关系型数据库之一,提供了完整的事务支持。​​原子性(Atomicity)​​:事务中的所有操作要么全部完成,要么全部不完成​​一致性(Consistency)​​:事务必须使数据库从一个一致状态转变为另一个一致状态​​隔离性(Isolation)​​:并发事务之间互相隔离,互不干扰​​持久性(Durability)​。

2025-09-10 21:13:43 856

原创 Java中线程的创建方式

创建方式返回值异常处理适用场景继承Thread无简单简单任务,不推荐实现Runnable无简单一般任务,最常用实现Callable有完善需要返回值的任务线程池灵活完善生产环境,资源管理灵活完善复杂异步编程。

2025-09-10 21:07:19 647

原创 Java中对象的创建方式详解

创建方式优点缺点适用场景new关键字简单直接,性能好编译时绑定,不够灵活大多数常规场景反射机制运行时动态创建,灵活性高性能开销大,代码复杂框架开发,动态加载clone方法创建对象副本,避免复杂初始化需要实现Cloneable,浅拷贝问题需要对象复制的场景反序列化跨网络/持久化重建对象需要实现Serializable,性能开销分布式系统,持久化存储工厂模式解耦创建逻辑,易于扩展增加代码复杂度需要灵活创建对象的系统选择哪种对象创建方式取决于具体的应用场景和需求。

2025-09-10 21:00:07 332

原创 ElasticSearch复习指南:从零搭建一个商品搜索案例

想象一下,你正在开发一个电商网站,商品数量达到百万级别。用户需要能够快速搜索商品,并且希望支持模糊匹配、按价格筛选、按分类过滤等功能。WHERE name LIKE '%手机%'随着数据量增加,这种查询会变得越来越慢,而且无法很好地支持模糊搜索和相关度排序。这就是ElasticSearch的用武之地。​​倒排索引​​是ES高性能搜索的基石​​合理的Mapping设计​​对搜索性能和准确性至关重要​​复合查询​​可以满足复杂的业务需求​​聚合分析​​提供了强大的数据分析能力​​性能优化​。

2025-09-09 22:02:16 776

原创 Spring Scheduler定时任务实战:从零掌握任务调度

在日常开发中,我们经常需要处理定时任务:每天凌晨的数据同步、每小时的统计报表、每5分钟的状态检查等。Spring框架提供了一个简单而强大的定时任务框架——Spring Scheduler,让我们能够以声明的方式轻松实现各种定时任务需求。本文将通过一个真实案例,带你从入门到掌握Spring Scheduler的使用。Spring Scheduler是Spring框架提供的定时任务调度器,它基于注解和配置的方式,让任务调度变得简单直观。支持cron表达式、固定延迟、固定频率等多种调度方式。

2025-09-09 21:54:50 1103 1

原创 深入理解数据结构:从数组、链表到B树家族

数据结构优点缺点典型应用场景数组随机访问快,内存紧凑大小固定,插入删除慢基础数据存储链表动态大小,插入删除快随机访问慢,内存分散队列、LRU缓存红黑树自平衡,操作稳定实现复杂有序集合、映射B树适合磁盘存储范围查询效率低文件系统B+树范围查询高效实现更复杂数据库索引B*树空间利用率高实现最复杂高性能数据库。

2025-08-20 11:39:55 656

原创 Java集合框架:Set、List、Map及HashMap底层实现详解

Java集合框架主要分为三大类接口:​​List(列表)​​:有序集合,元素可重复实现类:ArrayList、LinkedList、Vector​​Set(集)​​:无序集合,元素不可重复实现类:HashSet、LinkedHashSet、TreeSet​​Map(映射)​​:键值对集合实现类:HashMap、LinkedHashMap、TreeMap、Hashtable集合类底层结构线程安全有序性允许nullArrayList动态数组否插入顺序是LinkedList。

2025-08-20 11:27:44 800

原创 Java中的字符串:String、StringBuffer与StringBuilder详解

​​使用String​​:当字符串不需要频繁修改时,或者需要保证线程安全时​​使用StringBuffer​​:多线程环境下需要频繁修改字符串时​​使用StringBuilder​​:单线程环境下需要频繁修改字符串时(大多数情况)记住:在大多数现代应用中,由于单线程场景更常见,StringBuilder通常是性能最佳的选择。只有在明确需要线程安全的情况下,才应该选择StringBuffer。希望这篇博客能帮助你更好地理解和使用Java中的字符串类!

2025-08-20 10:32:58 340

原创 深入理解Java中的四类引用:强、软、弱、虚引用

Java的四类引用构成了灵活的内存管理机制:​​强引用​​:常规对象生命周期控制​​软引用​​:"柔性"缓存,内存不足时释放​​弱引用​​:不影响GC的临时关联​​虚引用​​:对象回收的精确通知合理使用这些引用类型,可以帮助我们:优化内存使用防止内存泄漏实现高效缓存精确控制资源释放理解这些引用类型,是成为Java高级开发者的重要一步。在你的项目中,是否遇到过适合使用这些引用类型的场景呢?

2025-08-19 21:35:44 654

原创 Java封装

封装是指将数据(属性)和行为(方法)包装在一个类中,并对外隐藏实现的细节。简单来说就是:把属性设为私有(private)提供公共(public)的方法来访问和修改这些属性封装是Java编程的基础概念,通过:将属性设为private提供public的getter和setter方法在方法中添加必要的业务逻辑这样可以构建更安全、更健壮的Java程序。记住:好的封装是优秀Java代码的开始!

2025-08-18 21:01:24 305

原创 Java中抽象类与接口的区别

抽象类是不能被实例化的类,它通常包含抽象方法(没有具体实现的方法)和具体方法(有实现的方法)。抽象类用于定义子类的通用行为和属性。// 抽象方法// 具体方法​​优先使用接口​​:当只需要定义行为契约时,接口是更好的选择,因为它允许多重继承且更灵活​​需要共享代码时使用抽象类​​:当相关类需要共享代码或需要定义模板方法时,抽象类更合适​​考虑Java版本​​:在Java 8+中,接口功能更强大,可以部分替代抽象类的功能​​组合优于继承​。

2025-08-18 20:30:56 627

原创 常用Linux指令:Java/MySQL/Tomcat/Redis/Nginx运维指南

希望这份Linux指令大全能帮助您更高效地进行服务器运维工作!根据实际环境,部分命令可能需要适当调整。

2025-08-12 17:12:45 590

原创 MySQL数据库中的密码加密详解

密码安全是数据库安全的核心部分,下面我将全面介绍MySQL中密码加密的各种方法,包括SHA-256、盐值加密等技术的实现原理和实际应用。

2025-08-12 11:51:47 737

原创 Java中使用Redis存储验证码实现登录操作

下面我将详细介绍如何使用Java和Redis实现验证码存储及登录验证的完整流程。

2025-08-12 11:32:04 356

原创 SpringBoot集成支付宝二维码支付接口详解

在电商和移动支付时代,集成支付宝支付功能已成为许多Java应用的必备功能。本文将详细介绍如何在SpringBoot项目中集成支付宝的二维码支付接口,包括从申请支付宝开发者账号到最终实现支付功能的完整流程。

2025-08-11 15:25:08 566

原创 基于ECharts的智慧社区数据可视化

ECharts是百度开源的一个基于JavaScript的可视化图表库,广泛应用于数据分析和展示场景。它具有丰富的图表类型、灵活的配置项和良好的交互体验。本文将介绍ECharts的核心功能和使用方法。或直接CDN引入:

2025-08-10 21:33:42 972

原创 基于百度地图API的社区地图展示技术实现

在现代Web应用中,地图功能已成为许多系统的标配功能,特别是在社区管理、位置服务等场景中。本文将介绍如何基于Vue.js和百度地图API实现一个社区地图展示功能,包括地图初始化、标记点展示、交互控制等核心功能。​​组件化开发​​:使用Vue Baidu Map组件库,以声明式的方式构建地图应用​​异步数据加载​​:地图准备好后再加载社区数据,避免不必要的请求​​交互增强​​:启用了多种地图交互功能,提升用户体验​​性能优化​​:使用v-for高效渲染多个标记点,并为每个标记点设置唯一key。

2025-08-10 21:28:51 389

原创 Linux环境下部署SSM聚合项目

第一步:上传jdk压缩安装包到服务器第二步:将压缩安装包解压第三步:配置环境变量编辑/etc/profile文件,在文件末尾添加以下内容:vim /etc/profile# 保存并退出:wq第四步:应用环境变量执行以下命令使配置生效:第五步:验证安装:执行以下命令检查JDK版本:首先检查是否有mysq环境检查是否有自带的mariadb数据库若存在则删除rpm -e --nodeps 安装包1、上传mysql压缩安装包到服务器2、解压3、修改解压后的名称4、创建存放数据的目录5、创建用户用户组,并将创建的用

2025-08-06 14:53:04 734

原创 Java面试题总结

在MyBatis映射文件中,B标签可以定义在A标签的后面。MyBatis在解析XML文件时是顺序解析的,但会先构建完整的DOM树后再处理引用关系,所以include引用的sql片段可以出现在引用它的语句之后。简化了JDBC代码提供SQL与代码分离的机制支持动态SQL提供强大的映射功能支持缓存机制插件扩展机制灵活SqlSessionMapper接口XML映射文件​​编程式事务​。

2025-08-02 16:09:19 907

原创 MyBatis-Plus乐观锁与雪花算法详解

​​乐观锁​​通过版本号机制解决并发更新问题,适合读多写少场景​​雪花算法​​提供分布式唯一ID,适合分库分表场景MyBatis-Plus内置支持这两种机制,简化开发工作实际应用中需要根据业务特点选择合适的方案。

2025-07-27 17:31:58 405

原创 MyBatisPlus(四)代码生成器与多数据源

​​代码生成器​​可以极大提高开发效率,自动生成各层基础代码​​多数据源​​配置简单灵活,适用于多种业务场景结合两者可以快速构建基于MyBatis-Plus的多数据源项目通过合理使用这些功能,可以显著减少重复代码编写,提高开发效率,让开发者更专注于业务逻辑的实现。

2025-07-27 16:29:14 1015

原创 MyBatisPlus(三)条件构造器与插件

在真正开发的过程中,组装条件是常见的功能,而这些条件数据来源于用户输入,是可选的,因。此我们在组装这些条件时,必须先判断用户是否选择了这些条件,若选择则需要组装该条件,若。上面的故事,如果是乐观锁,小王保存价格前,会检查下价格是否被人修改过了。如果是悲观锁,小李取出数据后,小王只能等小李操作完之后,才能对价格进行操作,也会保证。小李操作的时候,系统先取。上面的实现方案没有问题,但是代码比较复杂,我们可以使用带。是的,如果没有锁,小李的操作就。了,则重新取出的被修改后的价格,已更新,条件不成立,修改失败。

2025-07-27 14:39:45 875

原创 MyBatisPlus(二)常用注解

经过以上的测试,在使用MyBatisPlus实现基本的CRUD时,我们并没有指定要操作的表,只是在Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表由此得出结论,在确定操作的表时,由BaseMapper的泛型决定,即实体类型决定,且默认操作的表名和实体类型的类名一致若实体类类型的类名和要操作的表的表名不一致,会出现什么问题?我们将表user更名为t_user,测试查询功能程序抛出异常, Table。

2025-07-26 17:43:58 786

原创 Java面试题(中等)

所有类名包含Buffer的类的内部实现原理是什么?当对象不使用了要释放资源,目的是什么?UDP协议:无连接,不可靠但高效,适用于实时性要求高的场景,如视频会议、在线游戏、DNS查询等。TCP协议:面向连接、可靠传输,适用于要求数据完整性的场景,如文件传输、网页浏览、电子邮件等。什么是引用传递,什么是值传递,哪些语言支持引用传递?13. equals()方法的作用是什么?引用类型的强制类型转换需要注意什么?59. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?2. 多线程的使用场景有哪些?

2025-07-25 22:28:12 626

原创 Git的使用

在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。此时我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。git 仓库级别对应的配置文件是当前仓库下的.git/config (一台电脑多人使用)git diff --cached Test1.txt(对比暂存区和Git仓库)

2025-07-25 22:26:30 421

原创 MyBatisPlus(一)简介与基本CRUD

【代码】MyBatisPlus。

2025-07-25 21:30:09 271

原创 SpringBoot的介绍和项目搭建

SpringBoot 2.0.2.RELEASE:统一环境;给maven 的settings.xml配置文件的profiles标签添加。(SpringBoot所有的Java文件都要写在主程序的同包及其子包下)3.编写一个主程序;启动Spring Boot应用。4.编写相关的Controller、Service。(maven项目改变成springboot项目)2.导入spring boot相关的依赖。1.创建一个maven工程(jar)

2025-07-20 22:16:19 455

原创 MyBatis(三)

如果想查询 select u.*,a.money from user u left join account a on u.id = a.uid 语句的内容。需求的SQL语句:select * from user where id = 1 or id = 2 or id = 3。需求:查询的数据中包含account所有的字段,再包含用户的名称和地址。之前做过拼接SQL语句查询条件的查询,需要动态的拼接SQL语句。3.在AccountMapper接口中编写查询的方法。在User类中添加List的属性。

2025-05-24 22:44:41 634

空空如也

空空如也

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

TA关注的人

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