自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java技术八股学习Day36

版本控制是记录文件 / 项目内容变化的系统,支持回溯历史版本、对比修改差异、定位问题根源,适配个人开发与团队协同场景。

2026-02-04 16:27:12 696

原创 Java技术八股学习Day35

Maven 是基于 C 语言开发的开源项目管理工具,基于项目对象模型(POM)管理项目的构建、报告和文档。POM 以pom.xml文件形式存在,包含项目坐标、依赖、插件等核心配置。Maven 核心作用:提供标准化项目构建方式、便捷管理依赖、统一项目结构。

2026-02-04 16:15:42 802

原创 Java技术八股学习Day34

Redis 事务是将多个命令打包,按顺序执行且不被中途打断的功能,通过MULTI(开启事务)、EXEC(执行事务)、DISCARD(取消事务)、WATCH(监听键)实现。WATCH可监听指定键,若执行EXEC前键被其他客户端修改,整个事务不执行;同一事务内修改监听键则事务正常执行。

2026-02-03 12:10:06 686

原创 Java技术八股学习Day33

Redis 是基于 C 语言开发的开源内存NoSQL数据库,以 KV 键值对存储数据,支持持久化,读写速度极快。核心特性包括:支持多种数据类型、事务、Lua 脚本、发布订阅、集群方案(Sentinel/Cluster),无外部依赖,推荐 Linux 生产环境部署。

2026-02-03 11:28:46 517

原创 Java技术八股学习Day32

MySQL 分为 Server 层和存储引擎层,Server 层包含连接器(身份认证、权限验证)、查询缓存(MySQL 8.0 移除)、分析器(语法解析)、优化器(生成执行计划)、执行器(执行 SQL 并调用存储引擎);核心优势包括成熟稳定、开源免费、文档丰富、操作简单、兼容性好、支持事务与高可用方案(分库分表、读写分离),广泛用于各类系统的数据持久化存储。常见类型包括普通索引、唯一索引、主键索引、复合索引、前缀索引,InnoDB 中主键索引为聚簇索引,数据存储在索引叶节点。手机号用 VARCHAR。

2026-02-02 16:36:39 603

原创 Java技术八股学习Day31

定义 / 修改 / 删除等数据库对象的结构,操作,不可通过ROLLBACK回滚。

2026-01-31 10:57:23 575

原创 Java技术八股学习Day30

NoSQL(Not Only SQL)泛指非关系型数据库,核心针对键值、文档、图形等类型数据存储,天生支持分布式、数据冗余和数据分片特性,旨在提供可扩展、高可用、高性能的大规模数据存储解决方案。需澄清常见误解:NoSQL 并非不能存储关系型数据,只是存储方式与关系型数据库不同,典型代表有 Redis、MongoDB、HBase、Cassandra 等。

2026-01-30 14:01:41 755

原创 Java技术八股学习Day29

数据库(DB):由数据库管理系统管理的、有组织的信息集合,是数据的存储载体。数据库管理系统(DBMS):操纵和管理数据库的大型软件,负责数据库的建立、使用和维护,是用户与数据库的交互接口(如 MySQL、Oracle)。数据库系统(DBS):由软件(DBMS)、数据库(DB)和数据库管理员(DBA)组成的完整系统。数据库管理员(DBA):负责全面管理和控制数据库系统的角色,保障数据库的稳定运行。

2026-01-30 11:59:33 694

原创 Java技术八股学习Day28

布隆过滤器是一种空间高效的概率型数据结构,核心作用是快速判断 “元素是否在集合中”,具有 “假阳性(误判存在)、无假阴性(不存在必准确)” 的特性。它不存储元素本身,仅通过哈希函数映射标记元素存在状态,相比哈希表、红黑树等结构,空间复杂度极低,查询和插入效率均为 O (k)(k 为哈希函数个数),适用于海量数据场景下的快速去重或存在性校验。核心步骤:初始化二进制位数组(可用 BitSet 实现)、实现 k 个哈希函数(如 MurmurHash、MD5 截取索引)、编写插入和查询逻辑。

2026-01-29 10:59:57 527

原创 Java技术八股学习Day26

Shell 是用户与 Linux 操作系统之间的命令行接口,本质是 “对 Linux 命令的逻辑化处理”,可接收并执行用户输入的命令,支持批处理,占用资源少、效率高。它与 GUI 并列,是操作系统的重要交互方式,主流版本为 Bash Shell。

2026-01-28 22:10:58 663

原创 Java技术八股学习Day27

Linux 是自由开源的类 Unix 操作系统,核心是 Linux 内核(由 Linus Torvalds 发起开源项目),单独内核无法构成完整系统,需搭配软件、文档及管理工具形成发行版本。其核心设计理念源自 Unix 的 “一切皆文件”,将硬件设备、网络接口等资源均抽象为文件,通过统一接口管理。

2026-01-27 19:50:30 534

原创 Java技术八股学习Day25

虚拟内存是逻辑存在的内存空间,并非真实物理内存,核心作用包括:隔离进程(进程拥有独立虚拟地址空间,互不干扰)、提升物理内存利用率(仅加载进程当前所需数据)、简化内存管理(程序员无需直接操作物理内存)、支持内存共享(动态库仅加载一份)、提高安全性(控制物理内存访问权限)、提供超大可用内存(物理内存不足时借用磁盘空间)。

2026-01-26 20:38:26 602

原创 Java技术八股学习Day24

操作系统(OS)是管理计算机硬件与软件资源的核心软件,内核(Kernel)是其核心部分,负责内存、设备、文件、进程等管理,屏蔽硬件复杂性,为应用程序提供统一接口。核心功能包括 6 点:进程 / 线程管理(创建、调度、通信)、存储管理(内存 / 外存分配回收)、文件管理(读写、创建删除)、设备管理(硬件请求处理、设备启动)、网络管理(网络配置、通信、安全)、安全管理(身份认证、访问控制)。用户态:进程权限低,仅能访问自身数据,无法直接操作硬件资源,需通过系统调用请求内核服务;

2026-01-23 20:27:39 639

原创 Java技术八股学习Day23

UDP(用户数据报协议)是无连接、尽最大努力传输的报文协议,核心特点包括:无连接(发送数据前无需建立连接)、不可靠(不保证数据到达、不按序、无重复检测)、无状态(不维护连接信息)、面向报文(保留应用层消息边界)、头部开销小(固定 8 字节)、支持单播、多播、广播,传输效率高,适用于实时性要求高、可容忍少量丢包的场景。IP(网际协议)是网络层核心协议,定义了数据包(IP 数据报)的格式,负责跨网络的路由和寻址,使数据包能在不同网络(如局域网、广域网)之间传输,最终到达目标设备,是互联网的基础协议。

2026-01-22 11:38:41 674

原创 Java技术八股学习Day22

基于 TCP 的全双工通信协议,客户端与服务器仅需一次握手即可建立持久连接,双方可随时发送数据。适用于视频弹幕、实时消息推送、实时游戏、多用户协同编辑等场景。

2026-01-21 21:06:00 964

原创 Java技术八股学习Day21

快速定位 Java 进程:使用jps;实时监控 GC 状态、类加载情况:使用jstat;线上动态调整 JVM 参数、查看参数配置:使用jinfo;生成堆快照、分析内存泄漏:使用jmap生成快照,配合 MAT/VisualVM 分析;线程死锁、长时间停顿排查:使用jstack或 JConsole 的死锁检测功能;全面监控与性能分析:使用 VisualVM(整合多工具功能);离线内存深度分析:使用 MAT(专注堆快照解析)。

2026-01-17 09:00:00 575

原创 Java技术八股学习Day20

本文为 Java 开发者提供了一份实用的 JVM 常用参数配置指南,旨在帮助读者理解和优化 Java 应用的性能与稳定性。建议显式设置初始与最大堆内存 (-Xms, -Xmx,通常设为一致) 和新生代大小 (-Xmn或),这对 GC 性能至关重要。澄清了的实际作用(首次触发 Full GC 的阈值,而非初始容量),并强烈建议设置以防止潜在的本地内存耗尽。**垃圾收集器选择与日志:**介绍了不同 GC 算法的适用场景,并强调在生产和测试环境中开启详细 GC 日志 (-Xloggc。

2026-01-16 16:44:23 1092

原创 Java技术八股Day19

自定义类加载器需继承 ClassLoader 抽象类,推荐重写 findClass () 方法(不打破双亲委派模型),仅在父类加载器无法加载时,通过该方法自定义字节流获取逻辑(如解密加密的 .class 文件);若需打破双亲委派模型,则需重写 loadClass () 方法,改变 “先委派父类加载” 的默认流程。自定义类加载器的父加载器可通过构造函数指定,可是内置类加载器或其他自定义类加载器,通过组合关系复用父加载器逻辑。

2026-01-16 16:23:30 866

原创 Java技术八股学习Day18

类的生命周期包含 7 个阶段,按顺序为加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading),其中验证、准备、解析统称为连接(Linking)阶段,核心流程为 “加载→连接→初始化→使用→卸载”。解析动作针对类 / 接口、字段、类方法等 7 类符号引用,例如将方法的符号引用转换为方法表中的偏移量,确保方法可被调用。方法,真正执行类中定义的 Java 代码。

2026-01-15 15:48:23 589

原创 Java技术八股学习Day17

JVM 堆(GC 堆)是垃圾回收核心区域,基于分代收集思想划分:JDK1.7 及之前分为新生代(Eden 区、两个 Survivor 区 S0/S1)、老年代、永久代;JDK1.8 后永久代被元空间(本地内存实现)取代,新生代和老年代结构保持不变。内存分配遵循三大原则:对象优先在 Eden 区分配,Eden 区满则触发 Minor GC;大对象(需大量连续内存,如字符串、数组)直接进入老年代,避免新生代频繁 GC;

2026-01-14 20:05:05 727

原创 Java技术八股学习Day16

JVM 运行时数据区分为和两大块,线程私有区域随线程创建 / 销毁而生命周期一致,包括程序计数器、虚拟机栈、本地方法栈;线程共享区域随 JVM 启动 / 退出而存在,包括堆和方法区(JDK1.8 后为元空间),此外还有直接内存(非 JVM 规范定义,属于堆外内存),各区域分工明确,共同支撑 Java 程序的运行。

2026-01-09 18:07:18 809

原创 Java八股技术学习Day15

该模式的核心结构为:以 InputStream/OutputStream/Reader/Writer 作为抽象组件(被装饰的基类),FileInputStream/FileReader 等为具体组件(基础流实现),FilterInputStream/FilterWriter 等为抽象装饰器(继承抽象组件且持有其引用),BufferedInputStream/BufferedReader 等为具体装饰器(实现具体增强功能)。

2026-01-08 11:45:51 267

原创 Java技术八股学习Day14

乐观锁假设多线程访问共享资源时冲突概率极低,核心思想是 “先操作后校验”,不加锁直接执行操作,仅在提交时通过特定机制(如 CAS、版本号)判断资源是否被修改,若未修改则执行成功,否则重试或返回失败;悲观锁则假设冲突必然发生,核心思想是 “先加锁再操作”,访问资源前先获取锁,确保同一时间仅一个线程能操作资源,其他线程需等待锁释放,本质是通过独占锁规避冲突。

2026-01-07 21:16:50 735

原创 Java技术八股学习Day13

线程池是管理线程的资源池,任务提交时直接从池中获取线程处理,任务完成后线程不销毁,而是返回池中等待下一个任务,避免频繁创建和销毁线程的开销。为什么要用线程池?一是降低资源消耗,线程可复用,减少创建 / 销毁线程的开销;二是提高响应速度,核心线程常驻,任务无需等待线程创建即可执行;三是提高线程可管理性,可配置核心参数(核心线程数、最大线程数等)控制并发量,避免资源耗尽,且支持监控线程池运行状态,便于调优。

2026-01-05 21:12:15 931

原创 Java技术八股学习Day12

线程执行时会有程序计数器、栈信息等运行状态(上下文),当线程因主动让出 CPU(如 sleep ()、wait ())、时间片用完、阻塞(如 IO 请求)或被终止时,会退出 CPU 执行。此时需保存当前线程上下文,待后续恢复执行,同时加载下一个线程的上下文,这个过程就是上下文切换。上下文切换会占用 CPU 和内存资源,频繁切换会降低系统整体效率。wait () 的作用是让持有对象锁的线程进入等待状态并释放该对象锁,而每个对象都拥有独立的对象锁,需操作对应的对象来释放锁,因此定义在 Object 类中;

2025-12-31 13:38:48 897

原创 Java技术八股学习Day11

且该方法为泛型方法,传入基本类型数组时,会将数组本身作为集合唯一元素,需使用包装类型数组;的内部固定大小 List,不支持 add/remove/clear 等修改方法,否则会抛出。,前者可读性更强且多数集合的时间复杂度为 O (1);遍历去重,该方法需遍历所有元素(时间复杂度 O (n)),性能较差。时,value 为 null 会抛出 NPE 异常,因底层调用的。),该方式既指定了返回数组类型,又因 JVM 优化节省空间;方法,传入类型完全一致、长度为 0 的空数组(如。,时间复杂度接近 O (1);

2025-12-30 11:41:45 364

原创 Java技术八股学习Day10

一是 2 的幂次方时,hash% length 等价于 hash&(length-1),位运算比取余运算更高效;二是扩容时,元素新位置仅需判断哈希值高位,高位为 0 则位置不变,为 1 则原索引 + 原容量,能让元素分布更均匀;三是简化扩容机制,提升扩容效率,避免哈希冲突加剧。

2025-12-30 11:25:14 865

原创 Java技术八股学习Day09

ArrayListObject[]数组。VectorObject[]数组。LinkedList:双向链表(JDK1.6 之前为循环链表,JDK1.7 取消了循环)。详细可以查看(阻塞队列)是一个接口,继承自Queue。阻塞的原因是其支持当队列没有元素时一直阻塞,直到有元素;还支持如果队列已满,一直等到队列可以放入新元素时再放入。常用于生产者-消费者模型中,生产者线程会向队列中添加数据,而消费者线程会从队列中取出数据进行处理。

2025-12-25 10:56:30 882

原创 Java技术八股学习Day08

语法糖(Syntactic sugar)代指的是编程语言为了方便程序员开发程序而设计的一种特殊语法,这种语法对编程语言的功能并没有影响。实现相同的功能,基于语法糖写出来的代码往往更简单简洁且更易阅读。for-each就是一个语法糖。

2025-12-23 20:22:16 460

原创 Java技术八股学习Day07

动态代理最典型的应用场景就是Spring AOP。Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么 Spring AOP 会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候 Spring AOP 会使用Cglib生成一个被代理对象的子类来作为代理何谓SPI?

2025-12-09 16:44:42 1034

原创 Java技术八股学习Day06

还有 notify 和 notifyAll 方法,它们都是用于多线程同步的,和 synchronized 配合使用,作用是唤醒等待当前对象锁的线程。然后是 clone 方法,用于创建对象的浅拷贝,默认是浅拷贝意味着如果对象有引用类型属性,拷贝后的对象和原对象会共享该引用属性。方法是本地方法,也就是用 C 语言或 C++ 实现的。首先最常用的是 equals 方法,它的默认实现是比较两个对象的内存地址,也就是和 == 的效果一样。还有clone()方法,返回类的名字实例的哈希码的 16 进制的字符串。

2025-12-08 19:24:50 578

原创 Java技术八股学习Day05

1.抽象方法 2.默认方法 3.静态方法 4.私有方法泛型是 Java 编程语言中的一个重要特性,它允许类、接口和方法在定义时使用一个或多个类型参数,这些类型参数在使用时可以被指定为具体的类型。泛型的主要目的是在编译时提供更强的类型检查,并且在编译后能够保留类型信息,避免了在运行时出现转换异常。Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射。

2025-12-05 15:33:09 707

原创 Java技术八股学习Day04

面向对象和面向过程的区别POP 的编程方式通常更为简单和直接,适合处理一些较简单的任务。对象的相等和引用相等的区别。

2025-12-05 13:54:17 803

原创 Java技术八股学习Day03

所谓可变长参数就是允许在调用方法时传入不定长度的参数。另外,可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数。遇到方法重载时会优先匹配固定参数的方法,因为固定参数的方法匹配度更高。另外,Java 的可变参数编译后实际会被转换成一个数组,我们看编译后生成的class文件就可以看出来了。

2025-12-03 17:16:54 552

原创 Java技术八股学习Day02

当 long 类型进行左移/右移操作时,由于 long 对应的二进制是 64 位,因此求余操作的基数也变成了 64。可以的,long和int可以互转,因为long类型的范围比int大,所以int转long可以自动转换,但是long转int需要进行强转,可能会导致数据丢失。自动类型转换(隐式转换):当目标类型的范围大于源类型时,Java会自动将源类型转换为目标类型,不需要显式的类型转换。例如,将int转换为long。数值型:整数型(byte,short,int,long),浮点型(float,double)

2025-12-02 21:40:26 898

原创 Java技术八股学习Day01

Java SE是Java的标准版,Java EE是Java的企业版。简单来说,Java SE 是 Java 的基础版本,Java EE 是 Java 的高级版本。JVM是一个“桥梁”,是实现Java跨平台的关键,Java代码首先被编译成字节码文件,然后JVM将字节码文件翻译位机器语言,从而实现Java程序的运行。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。JVM(Java虚拟机)作为Java程序的运行平台,负责执行编译后的字节码。

2025-12-01 17:34:35 870

原创 LeetCode学习之LeetCode-142环形链表II

LeetCode学习之LeetCode-142环形链表II

2023-02-14 17:34:38 173

原创 LeetCode学习之LeetCode-141环形链表

LeetCode学习之LeetCode-141环形链表

2023-02-14 17:01:36 214

原创 LeetCode学习之LeetCode-83删除排序链表中的重复元素

LeetCode学习之LeetCode-83删除排序链表中的重复元素

2023-02-14 16:20:17 195

原创 LeetCode刷题之LeetCode-21合并两个有序链表

LeetCode刷题之LeetCode-21合并两个有序链表

2023-02-13 23:18:09 225

空空如也

空空如也

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

TA关注的人

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