自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【面试问题】Java 接口与抽象类的区别

定义:使用abstract关键字声明的类,包含抽象方法(无实现)和具体方法(有实现)。特点不能被实例化,必须通过子类继承(extends子类必须实现所有抽象方法(除非子类也是抽象类)。可以包含构造方法、成员变量和非抽象方法。维度抽象类接口关系继承(is-a)实现(can-do)代码复用强(继承状态和实现)弱(仅契约,无实现复用)灵活性低(单继承)高(多实现)设计约束部分抽象(可包含具体方法)完全抽象(Java 8 前)最佳实践模板设计、公共逻辑抽取行为契约、功能组合口诀。

2025-03-19 22:30:49 1094

原创 解决Xshell连接出现“SSH服务器拒绝了密码,请再试一次”问题

在我们使用Xshell连接时正常是需要输入密码的。

2025-03-18 22:49:07 391

原创 Nacos简介、安装与使用(保姆级教程!!!)

Nacos 是 “Dynamic Naming and Configuration Service” 的缩写,即动态命名与配置服务。它致力于帮助开发者更轻松地构建、管理和维护分布式系统中的服务。通过 Nacos,开发者可以实现服务的自动注册与发现,动态配置管理,以及服务的健康检查等功能,大大简化了分布式系统的开发与运维。​ Nacos是一个开源的动态服务发现、配置和服务管理平台,由阿里巴巴开发和维护。

2025-03-05 22:58:49 1437

原创 如何用MySQL Workbench导入sql文件(保姆级教程!!!)

通过以上步骤,你就可以使用 MySQL Workbench 成功导入 SQL 文件。:选择此选项,用于导入单个 SQL 文件,然后就点击new给数据库表起一个名字。一定要选择这个,把数据和数据的结构一起导入进去。然后点击这个开始导入即可。连接我们的MySQL。

2025-03-05 22:36:28 991

原创 Java自动拆箱装箱/实例化顺序/缓存使用/原理/实例

本文详细介绍了Java中基本类型与包装类之间的自动拆箱和装箱操作,通过实例展示了它们的使用和原理。内容包括错误的Long和Integer比较方法,以及正确的比较方式。此外,还讨论了自动拆箱可能导致的空指针异常情况,并给出了一个基本类型与Object转换的示例。

2025-03-03 22:32:07 1015

原创 一篇搞懂什么是 Java 自动装箱与拆箱

Java 的自动装箱和拆箱特性是 Java 语言设计者为了提高代码的简洁性和可读性而引入的重要机制。它们在集合框架、方法参数传递和返回值等场景中发挥着不可或缺的作用,让我们能够像操作基本数据类型一样方便地操作包装类对象。

2025-03-03 22:20:42 1052

原创 一篇搞懂Java 中的异常处理

Java 异常处理对保障程序稳健运行至关重要。异常指程序运行时中断正常流程的意外情况,异常类皆继承自Throwable类。异常分检查型和非检查型,前者编译阶段必须处理,后者包含运行时异常与错误,编译器不强制处理。Java 通过try - catch块捕获处理异常,finally块用于释放资源。方法可通过throws声明、throw手动抛出异常,还能自定义异常类。遵循精确捕获、避免空catch块等最佳实践,能有效提升程序稳定性,助力开发者应对各类异常,编写出更可靠的 Java 程序。

2025-03-02 21:18:13 974

原创 【面试】Java 中的 BIO、NIO 和 AIO:区别、使用及实例

BIO、NIO 和 AIO 是 Java 中重要的 I/O 模型,对编写高效 Java 网络应用程序意义重大。本文先阐述 BIO 为阻塞式 I/O,线程执行 I/O 操作时会被阻塞,适用于并发连接少的场景并给出示例;接着介绍 NIO 是非阻塞式 I/O,通过通道和缓冲区及 Selector 提升并发处理能力,适用于高并发轻量级 I/O 场景并附代码;然后说明 AIO 是异步 I/O,操作异步完成通过回调通知线程,适用于高并发重量级 I/O 场景也有示例;

2025-03-02 21:04:32 1654

原创 Maven项目pom.xml project标签爆红解决方法

今天在打开项目的时候,发现了一个Maven项目的问题,在Maven项目的pom.xml文件中,project标签爆出了一个错误。总而言之,这个问题是说在project标签下的parent.relativePath标签指向的路径出现了错误,所以导致报错。要解决这个问题的方法也很简单,在parent标签下添加一个<relativePath/>标签即可。添加该标签之后,我们重新更新Maven项目,爆错就会消失了。项目就可以正常启动了。

2025-02-28 09:47:46 213

原创 MySQL 存储引擎:MyISAM 和 InnoDB 的区别

例如,在一个银行转账的应用中,从一个账户扣除金额和向另一个账户添加金额的操作可以放在一个事务中,确保不会出现数据不一致的情况。在实际应用中,也可以根据不同的表的特点,选择不同的存储引擎,以达到最佳的性能和数据管理效果。例如,在一个订单管理系统中,订单表中的客户 ID 可以作为外键关联到客户表中的客户 ID,这样可以保证订单表中的客户 ID 在客户表中一定存在。这在一些对数据一致性要求不高,只注重性能的场景中可能是可以接受的,但在需要保证数据完整性的应用中,MyISAM 就不太适用了。

2025-02-27 22:38:50 936

原创 Java中字符流和字节流的区别

在 Java 的 I/O 体系中,字节流和字符流都配备了缓冲机制的实现类,以此显著提升数据读写的效率。在 Java 编程实践中,最佳实践是:使用字符流读取文本文件,使用字节流读取非文本文件。

2025-02-27 15:10:06 897

原创 Java-- 异常--try/catch/finally 的执行顺序

中的异常未被处理,导致程序终止。中又出现异常,在执行。

2025-02-27 14:42:56 622

原创 Java-- 异常 / Exception-- 类型 / 原理

编译器将检查你是否为所有的 checked 异常提供了异常处理机制,比如说我们使用 Class.forName () 来查找给定的字符串的 class 对象的时候,如果没有为这个方法提供异常处理,编译是无法通过的。注意:下边的异常中的打印要用 System.err 而不是 System.out,不然会影响打印的顺序。Throwable 有两个直接的子类: Error、Exception。本文介绍 Java 的异常的类型及原理。

2025-02-27 10:51:12 374

原创 【面试】Java 之 String 系列 -- String 为什么不可变?

在 Java 编程中,String类是一个使用频率极高的类。而String对象具有不可变的特性,这一特性在 Java 设计中有着重要的意义。本文将深入探讨String不可变的含义、原因以及带来的好处。

2025-02-26 15:06:29 1051

原创 【面试】Java 之 String 系列 -- intern 方法的作用及原理

在 Java 语言中有 8 种基本类型和一种比较特殊的类型String。为了让这些类型在运行过程中速度更快、更节省内存,Java 提供了一种常量池(位于方法区)的概念。常量池就类似于一个 Java 系统级别提供的缓存。8 种基本类型的常量池都是由系统协调管理的,而String类型的常量池比较特殊。String直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用String提供的intern方法将其放到常量池。

2025-02-26 14:52:29 784

原创 【面试】Java 之 String 系列 -- 创建对象的个数及其原理

在 Java 编程中,String类是一个非常常用且重要的类,同时它的原理也是面试中经常被问到的知识点。其中一个常见的问题就是:某条语句会创建多少个对象。本文将详细介绍这个知识点。

2025-02-26 14:21:00 783

原创 【JVM】类加载器和双亲委派模型

开始介绍类加载器和双亲委派模型之前,简单回顾一下类加载过程。Class。

2025-02-26 08:37:14 1281

原创 一文读懂 Spring、Spring Boot 和 Spring Cloud

在一个复杂的微服务架构中,可能有众多的服务实例同时运行,当某个服务实例出现故障时,服务注册中心能够迅速察觉,并将其从可用服务列表中移除,确保服务消费者不会调用到故障实例,保障了系统的稳定运行。这就好比一个厨师,不仅要负责烹饪美食,还要亲自去种植蔬菜、饲养家禽,这样的负担无疑是沉重的,而且一旦食材的获取方式发生变化,厨师的烹饪流程也得跟着大改。比如,在一个电商系统中,如果订单服务出现故障,断路器会及时切断对订单服务的调用,并返回一个友好的提示信息,如 “系统繁忙,请稍后再试”,避免了整个系统的瘫痪。

2025-02-25 22:42:38 757

原创 缓存雪崩+穿透+击穿+预热只看这一篇就够了(超详细!)

当应用程序接收到非法的查询请求,如查询一个明显不存在的用户 ID 或者商品 ID 时,由于没有在缓存中找到数据,又直接去数据库查询,而数据库也没有相应记录,就会造成缓存穿透。例如,在一场热门的直播活动中,主播推荐的某款商品成为热点数据,其缓存突然失效,而此时大量用户同时点击购买该商品,这些请求都直接访问数据库,给数据库带来极大的压力。缓存雪崩,形象地说,就像是一场突如其来的雪崩,大量的缓存数据在同一时间失效,或者缓存服务器发生故障无法提供服务,导致原本被缓存拦截的大量请求瞬间如潮水般涌向数据库或后端服务。

2025-02-25 17:39:42 784

原创 数据库面试题(基础常考!!!)

在数据库领域,无论是日常开发还是面试场景,都有一些高频且重要的问题需要我们深入理解和掌握。本文将对这些常见面试题进行详细阐述,帮助大家更好地应对面试和实际工作中的挑战。

2025-02-24 22:06:01 1124

原创 Java基础常见的面试题(易错!!)

本文概述了Java面试中常见的十个问题,涉及多继承的限制、equals与==的区别、方法重载规则、String的不可变性、包装类的应用、Integer缓存、hashCode的重要性、类型擦除的概念、以及浅深克隆的区别。

2025-02-23 22:05:28 1369

原创 关于JVM常见的十道面试题(超详细!!!)

本文详细介绍了Java中的强引用、软引用、弱引用和虚引用,以及它们的使用场景。同时探讨了垃圾回收算法如标记-清除、标记-整理、复制和分代算法,以及JVM中的常见垃圾回收器G1和CMS的区别,强调了内存管理在Java中的重要性。

2025-02-23 14:52:12 1493

原创 Linux 常见面试题汇总

Linux 是一种类 Unix 的开源操作系统内核,它最初由芬兰人林纳斯・托瓦兹(Linus Torvalds)开发。Linux 操作系统基于 Linux 内核,并结合了各种自由软件和工具,形成了完整的操作系统。其特点包括开源、多用户、多任务、稳定性高、安全性强等。

2025-02-23 11:20:26 825

原创 Java 中 final 关键字的作用

关键字用于修饰类时,意味着这个类不能被继承,即它不能有子类。关键字用于修饰方法时,这个方法不能被其子类重写。这就像是给这个方法设置了一个 “保护罩”,确保其实现不会被改变。它可以修饰类、方法和变量,赋予这些元素不可改变的特性。关键字的作用,有助于我们编写出更安全、更高效且易于维护的代码。修饰引用数据类型变量时,变量存储的引用地址不能被改变,但对象本身的内容是可以修改的。关键字用于修饰变量时,这个变量一旦被赋值,就不能再被修改,成为了一个常量。修饰基本数据类型变量时,变量存储的值不能被改变。

2025-02-22 21:09:26 390

原创 Java 集合:单列集合和双列集合的深度剖析

键是唯一的,就像表格的索引,通过键可以快速找到对应的值。这使得它在随机访问元素时非常高效,就像在一本装订好的书中快速翻到指定页码一样。基于红黑树实现,它可以根据键的自然顺序或指定的比较器对元素进行排序。单列集合就像是一列整齐排列的数据队伍,每个元素都是独立的个体,按照一定的规则存储和组织。这就好比一个装满不同颜色气球的袋子,每个气球都是独一无二的,并且没有固定的排列顺序。这意味着我们可以通过索引来访问集合中的元素,就像在书架上按照编号查找书籍一样。基于哈希表实现,它通过键的哈希值来存储和查找元素。

2025-02-22 21:05:15 444

原创 Java 异常(Exception)全面解析:类型与原理

理解 Java 异常的类型与原理,是编写高质量 Java 程序的基础。合理运用异常处理机制,能够让程序在面对各种错误时保持稳定运行,可以更好的面对不同的Java后端面试,以便更好的去回答。

2025-02-22 19:24:11 1003

原创 Java中static关键字的全方位解析:用法、场景与实战示例

System.out.println("访问外部静态字段:" + outerStaticField);System.out.println("用户总数:" + User.userCount);:定义与外部类关联但无需访问外部实例的辅助类(如Builder模式)。:在类加载时执行一次,用于初始化静态资源(如加载配置文件)。// 可以直接访问外部类的静态成员。

2025-02-22 19:19:50 736

原创 基于SSM框架的宠物之家系统(有源码+论文!!!)

宠物之家系统的功能已经基本实现。本系统主要采用了SSM(Spring、Spring MVC、MyBatis)框架作为后端开发的基础,同时结合HTML、CSS、JavaScript以及jQuery库等前端技术实现了前后端的相互连接,为用户提供了便捷、高效的宠物管理体验。在后端开发方面,SSM框架的引入极大地简化了开发流程,提高了开发效率。Spring框架作为整个后端的核心使得代码更加模块化、易于管理。

2025-02-18 23:53:00 1214

原创 HashSet 的底层原理(简单易懂)

HashSet 的底层原理基于哈希表和 HashMap,通过哈希值来快速定位元素的存储位置,并使用链地址法解决哈希冲突。了解 HashSet 的底层原理,有助于我们在实际编程中更好地使用它,提高程序的性能。

2025-02-18 23:27:04 415

原创 深入理解Redis

Redis作为一款高性能的内存数据库,以其出色的读写速度、丰富的数据结构和强大的功能特性,成为Java后端开发中不可或缺的缓存和数据存储解决方案。通过掌握Redis的基本概念、与Java的集成方式以及在实际应用场景中的使用,开发者能够构建出更加高效、可靠的后端系统。在未来的开发中,随着业务的不断发展和技术的持续演进,Redis还将在更多领域发挥关键作用,值得开发者深入学习和探索。1. 高性能:由于数据存储在内存中,Redis的读写速度极快,能轻松应对高并发场景,大大提升系统的响应时间。

2025-02-18 00:53:34 582

原创 SpringBoot (看完就懂)

很多初学者在接触 Java 开发时,常常会听到 Spring Boot 这个词,但却对它的概念和作用感到模糊。简单来说,Spring Boot 是由 Pivotal 团队开发的一个基于 Spring 框架的开源框架,它的主要目标是简化 Spring 应用的初始搭建以及开发过程。在传统的 Spring 项目开发中,开发者需要进行大量的配置工作,例如配置 Servlet 容器、配置各种 Bean 的依赖关系、配置数据库连接等。这些配置工作不仅繁琐,而且容易出错,尤其是对于新手来说,很容易在配置过程中迷失方向。

2025-02-16 22:37:54 1035

原创 String、StringBuffer、StringBuilder 区别

在进行少量字符串操作时,String和的性能差异不明显;但在进行大量字符串拼接、替换等操作时,和的性能远高于String,而的性能又略高于。String和各有特点,在不同的场景下应根据实际需求进行选择。String适用于字符串内容不需要频繁修改的场景;适用于多线程环境下的字符串修改操作;适用于单线程环境下的字符串修改操作。正确选择合适的字符串处理类,可以提高代码的性能和效率。

2025-02-16 22:30:09 899

原创 Spring Boot 如何实现自动配置?

了解了 Spring Boot 自动配置的原理后,我们也可以自定义自动配置类。在 Spring Boot 应用中,当类路径中存在类,并且容器中没有类型的 Bean 时,会自动配置并创建Bean。Spring Boot 的自动配置功能通过 SPI 机制和条件注解,实现了根据项目依赖和配置自动为应用添加合适的配置类。这一机制不仅简化了开发过程,还提高了开发效率。开发者可以通过自定义自动配置类,满足特定的业务需求。

2025-02-16 22:26:33 902

原创 Java 后端面试必备:Java 中 == 和 equals 有什么区别

=:基本数据类型比较数值,引用数据类型比较内存地址。equalsObject类中默认比较内存地址,很多类重写后用于比较对象内容。在实际开发中,要根据具体需求选择合适的比较方式。对于基本数据类型,通常使用==;对于需要比较对象内容的情况,要使用重写后的equals方法。同时,在自定义类中,如果需要比较对象内容,也应该重写equals方法,以确保正确的比较逻辑。掌握好==和equals的区别,不仅能帮助我们在面试中脱颖而出,更能让我们编写出更健壮、更符合预期的 Java 代码。

2025-02-16 15:08:31 788

原创 Java 后端面试必备:聚簇索引和非聚簇索引的区别

聚簇索引决定了表中数据的物理存储顺序,即表中数据行的存储顺序与索引键的顺序一致。在具有聚簇索引的表中,数据按照聚簇索引列的值进行排序存储。例如,在一个员工信息表中,如果以员工编号作为聚簇索引,那么表中的数据会按照员工编号从小到大的顺序依次存储在磁盘上。聚簇索引和非聚簇索引在数据库索引体系中各有特点,理解它们的区别是 Java 后端开发面试中数据库知识考查的重点,也是在实际数据库设计和优化中必须掌握的技能。在面试中,清晰阐述两者区别并结合实际场景分析,能有效展示自己的专业能力。

2025-02-15 21:22:12 770

原创 Java 后端面试必备:ArrayList 和 LinkedList 区别

ArrayList和LinkedList在 Java 集合框架中各有优劣,理解它们的区别是 Java 后端开发面试的重要内容,也是实际开发中优化程序性能的关键。在面试中,能够结合数据结构、性能和应用场景详细阐述两者区别,将展现出扎实的技术功底。如果后续你还想了解更多关于 Java 集合框架的其他知识,如HashMap和TreeMap的区别等,欢迎随时告诉我。

2025-02-15 21:16:46 483

原创 Java 后端面试必备:对于 SQL 优化的理解

SQL 优化是 Java 后端开发人员必备技能,通过合理运用索引、优化查询语句、处理好 order by 和 in/exists 操作以及配置好数据库参数,能显著提升系统性能和资源利用率。在面试中,深入理解 SQL 优化原理和方法,结合实际案例阐述,能让面试官看到你的专业能力和解决问题的能力。如果后续你还想了解更多关于数据库优化的深入知识,如执行计划分析工具使用、存储过程优化等,欢迎随时告诉我。

2025-02-15 21:13:15 913

原创 Java 后端面试必备:怎么识别一个对象是否被回收

识别对象是否被回收是 Java 后端开发中垃圾回收机制的重要基础。引用计数法虽简单但有局限性,可达性分析法成为主流判定方式。理解这些内容,能帮助我们在面试中更好地应对相关问题,在实际开发中也能更深入地理解 Java 内存管理机制,进行更高效的程序开发与优化。如果后续你还想了解垃圾回收算法、内存调优等相关内容,欢迎随时告诉我,我可以进一步完善相关知识分享。

2025-02-15 20:06:40 718

原创 Java 后端面试必备:JVM 虚拟机的分区和功能

参考答案:JVM 内存主要分为程序计数器,用作线程执行字节码的行号指示器;Java 虚拟机栈,存储方法调用的栈帧;本地方法栈,服务于本地方法调用;堆,是对象和数组的分配区域,也是垃圾回收重点区域;方法区(元空间),存储类信息、常量等;直接内存,在 NIO 中优化 I/O 性能。JVM 内存分区知识在 Java 后端面试中至关重要,理解各分区功能、特性及常见问题,能帮助我们在面试中脱颖而出,也为实际开发中的性能优化、问题排查提供有力支持。

2025-02-15 20:02:56 648

原创 Java 后端面试必备:类加载机制

在 Java 后端开发领域,深入理解类加载机制是至关重要的,它不仅是面试中的高频考点,更是优化程序性能、解决复杂问题的关键。本文将全面剖析 Java 类加载机制,帮助读者掌握这一核心知识,为面试和实际开发助力。 在 Java 中,类的加载并非在程序启动时一次性完成,而是按需加载。当出现以下几种情况时,会触发类的加载: 在初始化阶段,会先被初始化为 10,然后被初始化为 20。2. 父类优先初始化:如果当前类有父类,会先初始化父类,然后再初始化子类。这保证了继承体系中父类的

2025-02-15 19:51:23 705

空空如也

空空如也

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

TA关注的人

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