自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 项目场景题:排查与解决方案

摘要: 本文针对中高级Java开发面试中的典型线上问题,提供了系统化的排查思路和解决方案。内容覆盖接口性能、JVM、数据库、缓存、消息队列等九大类场景,重点强调"现象确认->影响范围->分层排查->定位根因->临时止损->长期优化"的解决路径。

2026-08-12 23:35:28 196

原创 Java全套高频面试题

本文整理了Java后端开发面试中的高频知识点,涵盖Java基础、集合、并发、JVM、Spring框架、MySQL、Redis、Linux命令、设计模式、OOM排查、慢SQL优化以及分布式微服务架构等内容。 Java基础 数据类型、==与equals区别、参数传递方式 面向对象特性、重载与重写、String特性 异常处理、泛型、反射机制 集合框架 ArrayList/LinkedList区别、HashMap原理 ConcurrentHashMap线程安全实现 集合遍历与fail-fast机制 并发编程 线程池

2026-08-10 21:16:00 199

原创 OOM 定位流程与案例

参数是否异常,比如时间范围过大、导出数据量过大、一次查询过多数据等。第四步,如果有 heap dump(

2026-08-12 23:37:36 226

原创 一、Java基础高频面试题

自动装箱是基本类型自动转成包装类型,比如int转Integer;自动拆箱是包装类型自动转回基本类型。它让代码写起来更方便,但我会特别注意空指针风险,比如Integer为null时拆箱成int会直接报错。所以我的经验是,业务对象字段如果可能为空,使用时要先判空。装箱方便,拆箱要防空泛型就是把类型参数化,让代码在编译阶段就约束数据类型。它的好处主要有三个:提高类型安全、减少强转、提升代码复用性。我的理解是,泛型本质上是在编译期把很多类型错误提前暴露出来。泛型把类型问题前移到编译期。

2026-08-11 23:50:14 264

原创 二、Java 集合高频面试题

fail-fast是集合迭代器的一种快速失败机制。遍历过程中如果检测到集合结构被非迭代器方式修改,就会抛出。集合维护modCount迭代器维护遍历时发现两者不一致就抛异常fail-fast不是并发安全保证,只是一种尽力检测机制。第一是数据结构层面,比如数组、链表、红黑树决定了查询、插入、删除的复杂度。第二是源码机制层面,比如HashMap的 hash 扰动、扩容、树化,以及的 CAS 和桶级别锁。第三是业务实践层面,比如数据量大时提前设置容量,用Map。

2026-08-11 23:48:59 313

原创 项目排查类场景案例

说明:这份内容偏“真实面试回答模板”,适合回答“你线上排查过什么问题”。

2026-08-10 21:34:51 667

原创 pdf skill

如果 PDF 包含图片,尝试使用 `pdf2image` 转换为图片并保存,但仅描述图片内容(不进行 OCR,除非用户特别要求)。description: 分析 PDF 文件,提取文本、表格、图片描述等结构化内容,并生成格式规整的 Word 文档(.docx)。- 如果用户要求识别图片中的文字(OCR),提示需要额外的 OCR 引擎(如 Tesseract),并询问是否启用。- 如果 PDF 为扫描件(纯图像),建议用户先启用 OCR,否则只能提取空文本。- 如果用户指定只提取某几页,只处理指定范围。

2026-08-05 15:42:09 233

原创 MySQL 非关系型数据库底层剖析

mysql 底层数据结构,原理剖析

2024-12-19 11:34:52 1159

原创 Spring底层源码分析

遍历每一个BeanDefinition,然后解析这个Bean的作用域,生成Bean的名称 判断是否继承了AbstractBeanDefinition,如果继承了就设置BeanDefinition的默认值,判断是否能被用来做依赖注入 判断是否继承了AnnotatedBeanDefinition,然后解析@Lazy、@Primary、@DependsOn、@Role、@Description,根据这些注解的信息,给BeanDefiniton的属性赋值。

2024-07-25 18:01:01 1794

原创 JAVA AOP操作日志

AOP逻辑实现,插入日志。

2023-01-02 13:10:17 911 2

原创 负载均衡策略

重试策略(com.netflix.loadbalancer.RetryRule):在一个配置时间段内(超时时间),当选择服务实例不成功,则一直尝试选择一个可用的服务实例。权重策略(com.netflix.loadbalancer.WeightedResponseTimeRule):会计算每个服务的权重,越高的被调用的可能性越大。最佳策略(com.netflix.loadbalancer.BestAvailableRule):遍历所有的服务实例,过滤掉故障实例,并返回请求数最小的实例。

2023-01-02 13:01:32 275

原创 Java的流操作

Java的流操作。

2023-01-02 01:10:41 238

原创 Linux安装rabbitMQ

本次安装采用组合的安装方式:1. Erlang 使用 .tat.gz的安装包解压去安装()2. rabbitmq-server使用rpm的方式进行安装())el6:CentOS 6.x 的下载el7:CentOS 7.x 的下载el8:CentOS 8.x 的下载。

2022-10-05 13:03:03 1601

原创 github创建仓库以及上传项目到github

git add . (.代表文件夹下的所有文件,将所有文件内容添加到git)4.鼠标右键选择Git Bash Here。3.打开所要上传的工程项目的目录。1.本地电脑安装了git。2.远程仓库已经创建好。

2022-09-16 11:06:49 680

原创 Mapper文件跟Mapper.xml文件映射问题

Mapper文件跟Mapper.xml文件映射问题。

2022-08-25 23:46:28 540

原创 Linux系统下安装redis

由于redis是由C开发的,所以在安装之前确保Linux系统内已经安装了gcc编译器。界面,一个简单的程序,允许直接从终端向Redis发送命令,并读取服务器发送的回复。使用命令 vi ./install_server.sh,加上注释即可#第五步:执行 install_server.sh文件。如果出现以下问题,按照下面的截图,加上注释即可。2. 编译安装:make install。1. 进入文件下载位置(可要可不要)第二步(解压下载文件包)第一步(执行安装命令)第三步(进入到该目录)

2022-08-21 18:20:13 432

原创 Spring + MyBatis

MyBatis ORM(对象-关系映射):完成对象数据到关系型数据映射的机制称为对象-关系映射 (1)MyBatis是一个ORM框架,也是一个持久层框架;MyBatis封装了JDBC,将数据库中的表数据自动封装到对象中。这样就可以以面向对象的方式操作数据了。 (2)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索,使用简单的XML或注解用于配置和原始映射,将接口和JAVA的POJOS映射称数据库中的记录。 ...

2022-08-21 17:41:16 885

原创 vue动态样式通过计算属性绑定的方法

vue的动态样式绑定

2022-02-26 11:49:09 1385

原创 JavaWeb上传图片不实时显示的问题

配置以下两个类即可import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;//配置类@Configurationpubl.

2022-02-19 13:30:05 623

原创 Java设计模式

单例模式概述:顾名思义就是只有一个实例,并且她只负责创建自己的对象,这个类提供了访问其唯一的对象的方式,可以直接访问,不需要实例化该列的对象。核心代码:构造方法私有化,private实现单例模式的几种方式①懒汉式:实例需要用到的时候才会去创建,用的时候才会去检查有没有实例,如果有就返回,没有就新建一个实例。使用synchronized关键字来保证线程安全//懒汉式public class LanHan{ private static LanHan instance;

2021-10-14 22:48:49 135

原创 Java Web面试题

什么是Servlet?作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器的上的数据库或应用程序之间的中间层;使用Servlet可以手机来自网页表单的用户输入,可以动态的创建网页。Servlet的生命周期加载-----实例化-------初始化--------处理请求------服务结束GET和POST请求的区别?① GET请求的数据量较小,不能大于2KB,POST传递的数据量比较大,一般默认为不受限制。② GET是不安全的,在传输数据过程中,数据被存放在URL..

2021-10-12 00:26:49 190

原创 java Web的三大组件

Servlet概述:Servlet在javaWeb中扮演着一个中转处理器,他连接了客户端和服务器端的信息交互和处理Servlet的生命周期:第一阶段:实例化,会调用构造方法第二阶段:初始化,会调用init()方法第三阶段:请求处理,调用service()方法第四阶段:销毁阶段,调用destory方法Filter(过滤器)概述:...

2021-09-25 17:58:42 231

原创 java反射机制

什么是反射机制?(1)反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法(2)对于任意一个对象,都能够调用它的任意一个方法和属性(3)这种动态获取信息以及动态调用对象的方法的功能我们称为java语言的反射机制反射机制的作用(1)在运行时判断任意一个对象所属的类(2)在运行时构造任意一个类的对象(3)在运行时判断一个类所具有的成员变量和方法(4)在运行时调用任意一个对象的方法(5)生成动态代理实现反射机制的方法创建对象...

2021-09-23 01:19:50 129

原创 java访问权限

public protected default private 同类 √ √ √ √ 同包 √ √ √ 子类 √ √ 其它 √

2021-09-19 21:52:46 130

原创 几个常用的排序算法思想

冒泡排序(Bubble Sort)思想(升序排序):比较相邻的两个元素。如果第一个元素比第二个元素大,就交换两个元素的位置,重复这项操作,直至没有再需要交换的元素,说明排序完成代码实现public void BubbleSort(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length-1; j++) { if(arr[j]>arr[j+1])

2021-09-17 23:18:14 275

原创 JAVA中抽象类和接口的区别

抽象类 接口 单继承 多实现 有构造方法 无构造方法 有成员变量 没有成员变量,只有常量(默认public static final修饰) 抽象类是自下而上的抽象的过程,抽象类提供通用实现,是对某一类事物的抽象 接口是自上而下的抽象的过程,接口规范了某些行为,是对某一行为的抽象 可以包含非抽象的普通方法 所有方法必须都是抽象方法,只能是public类型 可以包含静态方法 不能包含静态方法 可以包含静态成员,访...

2021-09-16 15:10:33 135

原创 JAVA中的集合

集合类型(1)Set (2)List (3)Map接口 Collection 和 Map单列集合概述:在内存中以单列的形式存储Collection<<interface>>双列集合概述在内存中以双列的形式存储特点双列的形式存储数据key-value 元素是成对出现的,通过key访问value值 key不能有重复值,并且key有且至于一个null值,无序,value可以有重复值且可以...

2021-09-16 15:00:50 180

原创 JAVA中的工具类

API:应用程序接口java API:java应用程序接口,简单来说就是java给开发者提供的一套类和接口API文档:Java API文档中类和接口的说明书,通过查阅API文档可以了解JDK中的每个类和接口的功能及作用工具类 Object类 包装类 String类 StringBuffer和StringBuilder Date类 Calendar类 SimpleDateFormat类 DecimalFormat和N.

2021-09-16 14:28:06 514

原创 java中的垃圾回收机制

概述JAVA中的垃圾回收机制是自动的,它是保证程序健壮的主要手段,同时也避免了回收内存带来的代码繁琐。注意(1)java中的垃圾回收机制采用的是多线程技术实现的,垃圾回收功能是一条优先级比较低的线程(2)垃圾回收机制仅仅作用于堆内存,和栈内存无关JAVA中可回收对象的判定方法(1)引用技术算法: 引用技术算法中,堆中的每个对象实例都有一个引用计数(count)。当一个对象被创建时,且将该对象实例分配一个变量,该变量计数初始值设置为1.对象被引用一次就+1,如果引用...

2021-09-16 11:09:54 350

原创 JVM内存结构

2021-09-16 10:22:34 103

原创 JAVA中类加载的过程

顺序: 加载 ---- 连接 ---- 连接(验证,准备,解析)---- 初始化加载JVM将用到的.class对应的字节码文件加载进内存(方法区),将字节码常量池转换成运行时常量池。连接验证:验证类的正确性目的:主要是为了保证类加载进来的字节流符合虚拟机规范,不会造成安全问题 1.文件格式的验证 2.元数据的验证 ...

2021-09-16 09:20:21 94

原创 JAVA中数组和集合的区别

数组 数组是定长的,数组一旦定义了就不能被改变 数组可以存放基本数据类型,也可以存放引用数据类型 数组只能存放同一类型的数据 数组是一种数据结构集合 集合是不定长的,可扩容的 集合只能存放引用数据类型 集合可以存放不同的数据类型的接口 集合的数据结构由不同集合的类型来决定的...

2021-09-16 02:14:53 107

原创 equals 和 “==“ 的区别

equals 只能用于比较引用数据类型,Object中的equals方法比较的是两个对象的内存地址是否相同,等价与 "=="。"=="可以用于比较基本数据类型,也可以比较引用数据类型。当比较基本数据类型的时候比较的是内容是否相同;当用于比较引用数据类型的时候比较的是两个对象地址是否相同Object中的子类可以重写equals()方法,但是具体的功能是根据不同类中定义的功能也会有所不同,比如String中的equal()方法就是比较两个字符串内容是否相同...

2021-09-16 02:06:00 91

原创 HashTable 和HashMap的区别

Map的概述Map是一个接口,提供了一种映射关系,其中的元素都是以键值对的形式存储的,能够根据key快速找到value 特点:键(key)不能重复,值(value)可以重复HashTable 和 HashMap 的概述二者底层的数据结构实现都是链表+数组的方式实现的 HashTable继承了 Dictionary,但是这个类已经过时了,一般我们现在都是实现的Map接口,而不是扩展Dictionary这个类。HashTable实现了一个哈希表,它将键(key)映射到值(valu...

2021-09-16 01:55:35 491

Java中高级开发, 3-5年高频面试题

Java中高级开发, 3-5年高频面试题

2026-08-12

Spring5.3.10底层源码分析

Spring底层源码分析 SpringIoc加载流程分析 SpringBean对象的创建过程

2024-07-25

空空如也

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

TA关注的人

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