自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java秋招关于面试储备技能指南——系统性突破技术壁垒,掌握面试主动权!

Java秋招面试技能储备指南!—— 系统性突破技术壁垒,掌握面试主动权亲爱的开发者,当你翻开这份指南时,你正站在Java技术栈的广袤疆域前,而秋招的战场已悄然拉开序幕。在激烈的竞争中,技术深度决定offer高度,知识体系决定认知边界。这不是一份简单的知识点罗列,而是我们结合数十家一线大厂(阿里、腾讯、字节、美团等)近年Java岗位面试真题,提炼出的 「高频考点全景图」 和 「能力跃迁路线」。无论你是初探Java世界的学子,还是渴望突破瓶颈的进阶者,我们都将共同拆解三个核心问题:考什么?

2025-07-09 13:19:26 2827

原创 JVM架构与调优实战:成为Java性能优化专家

回顾 JVM 技术原理与参数调优要点,其对 Java 应用性能提升功不可没。从理解底层架构、把握类加载脉搏,到依据应用画像雕琢各项参数,再到深入调试 JIT 相关代码以及妥善处理内存问题,每一步都是性能飞跃契机。展望未来,随着 Java 生态演进、硬件革新,JVM 持续进化,自适应调优等智能特性将更强大,助力开发者轻松驾驭复杂业务性能挑战,深挖 Java 应用潜能。

2025-07-20 15:11:15 421

原创 JAVA并发编程之使用篇

线程:是进程中的一个执行路径。一个进程可以包含多个线程,这些线程共享进程的内存空间。

2025-07-20 15:10:41 330

原创 JVM核心知识全面指南与解析

当老年代需要回收时,JVM会触发Full GC,这时候不仅回收老年代,还会回收新生代的空间,甚至可能清理方法区(在JVM 8之前是持久代,现在是元空间)。:当老年代的内存需要回收时,JVM会进行Full GC,它会回收新生代和老年代,甚至可能还会回收方法区(在JVM 8之前是持久代,现在是元空间Metaspace)。栈空间通常是有限的,因此它的大小是有限制的。:如果老年代的空间不足以容纳即将晋升的对象,JVM可能会触发一次Full GC,尝试回收老年代中的垃圾对象,并腾出空间来接纳新晋升的对象。

2025-07-20 15:09:26 274

原创 深入解析 Java 的 switch 语句

深入解析 Java 的 switch 语句在 Java 编程中,switch语句是一种常用的控制流语句,它能够根据变量的不同值执行不同的代码块。与if-else语句相比,switch语句在处理多个条件判断时更加简洁和清晰,尤其适用于对一个变量的多个可能值进行判断的场景。本文将详细介绍switch语句的基本语法、使用示例、穿透特性、Java 12 和 Java 13 引入的switch表达式和yield关键字,并讨论常见问题及其解决方案。一、switch 语句的基本语法。

2025-07-20 15:07:12 480

原创 Java 工作流组件选型

这里引入了 Camunda 的核心启动器 camunda-bpm-spring-boot-starter 和 Web 扩展 camunda-bpm-spring-boot-starter-webapp,以及必要的 Spring Boot 依赖。以下是 application.yml 的配置示例:​​​​​​。以 Spring Boot 2.x 为例,以下是 pom.xml 中的配置:​​​​​​​。我们以一个简单的请假流程为例,文件名为 leave-request.bpmn:​​​​​​​。

2025-07-20 15:04:40 285

原创 Java集合框架深度解析:核心接口、实现类与应用场景

Java集合框架诞生于JDK 1.2版本,其核心目标是解决传统数组的局限性(如固定长度、缺乏动态扩展能力),并通过统一的接口规范提升代码的可维护性和复用性。Collection:用于存储单一元素,派生出了ListSet和Queue三大子接口。Map:以键值对(Key-Value)形式存储数据,键唯一且不可重复。集合框架的优势体现在三个方面:提供高性能的数据结构(如动态数组、红黑树)、支持泛型类型安全、通过迭代器(Iterator)实现统一的遍历机制。Java集合框架是开发高效、可维护应用的核心工具之一。

2025-07-20 15:01:07 431

原创 浅析JVM invokedynamic指令和Java Lambda语法

Java 不会强制要求你使用 @FunctionalInterface 注解来标记你的接口是函数式接口,然而,作为API作者,你可能倾向使用@FunctionalInterface指明特定的接口为函数式接口,这只是一个设计上的考虑,可以让用户很明显的知道一个接口是函数式接口。总之,我们可以用MethodHandle来作为【方法变量】,变相的将【Java方法】提升为【一等公民】,从而可以在BSM中用Java代码实现动态编排、决策,返回合适的方法指针。这不是JVM的限制,而是Java语言层面的限制。

2025-07-20 15:00:30 508

原创 目前推荐使用的JDK版本分析总结

随着Java的升级迭代,目前已有很多版本,那么,在企业级开发中,到底使用哪个版本呢?基于每个版本的特性、版本间的差异,及生态兼容及支持等,提供更深入的技术分析,希望帮助到所有开发者,在使用时做出最佳选择。‌:当前市场占有率最高的成熟LTS版本,支持到2029年;‌:支持至2026年,适合尚未完全适配新特性的保守型项目;‌:新项目首选,尤其适用于需要高并发、低延迟的云原生应用和微服务架构。‌:最新的LTS版本,支持到2031年4;‌:稳定优先的企业级项目,或需逐步升级的遗留系统过渡版本。

2025-07-20 14:59:23 95

原创 深入剖析Java Condition机制:原理、实现、规范与实战案例全解

一个Lock可关联多个Condition(如生产者消费者模型中的"非满"、"非空"条件)Condition是Java 1.5引入的显式锁(Lock)配套机制,用于替代传统的。:每个Condition维护独立的FIFO等待队列(与AQS同步队列分离)禁止在Condition等待中嵌套调用其他锁操作,防止死锁。:将条件队列的头节点转移到AQS同步队列参与锁竞争。:生产者可能唤醒其他生产者,存在无效竞争。原因:底层操作系统可能导致线程无故唤醒。:避免无效线程唤醒,显著提升性能。可精准唤醒指定条件队列。

2025-07-20 14:55:06 110

原创 Java 内存管理原理解析及内存故障排查实践

JVM回收的主要目标是堆内存,对象主要的创建分配内存在堆上进行,堆可以想象成一个对象池子,对象不停创建放入池子中,而JVM垃圾回收是不停的回收池子中一些被标记为可回收对象的对象,启动回收线程进行打扫战场,当回收对象的速度赶不上程序的创建时,池子就会立马满,当满了之后从而发生溢出,就是常见的OOM。GC的速度和堆的内存中存活对象的数量有关,与堆内存所有的对象无关,GC的速度和堆内存的大小无关,如一个4GB大小的堆内存和一个16GB的堆内存,只要2个堆内存存活对象都是一样多的时候,GC速度都是基本差不多。

2025-07-20 14:53:53 440

原创 Java、Python、Go 命名规范大体检

语言规范写法示例代码注释小驼峰(首单词小写,后续单词首字母大写)强类型声明,读起来像一句“标准话”。全小写 + 下划线简洁自由,像串成一锅下划线火锅。驼峰式(首字母大写导出,小写私有)(导出)userName := "Bob" (私有)一行搞定声明与赋值;首字母决定包内外可见性。小吐槽:Java 看见下划线:我这是在写变量,还是在开挖掘机?Python 论者:驼峰敲得手抽筋,还是下划线最舒心。Go 酷咖:随它驼还是划,性能和并发才是王道。2语言规范写法示例代码注释全大写 + 下划线。

2025-07-18 13:56:46 272

原创 Java 泛型 - 泛型构造函数

在 中,构造函数本身可以是泛型的,无论它所在的类是否是泛型类。也就是说,即使一个类已经定义了自己的泛型参数,它的构造方法仍然可以声明自己的类型参数。这在某些场景下非常有用,能够提供更灵活的类型推断。在 泛型编程中:泛型类:类本身带有泛型参数,例如 。泛型方法:方法带有泛型参数,例如 。泛型构造函数:构造方法带有泛型参数,即即使类本身是泛型的,构造方法仍然可以声明额外的泛型参数。解释:类 是一个泛型类,它的类型参数 在类级别定义。构造函数 是泛型的,它声明了一个额外的类型参数 。实例化时:

2025-07-18 13:55:52 535

原创 Java后端开发面经总结

链表树化长度为8是根据泊松分布,hash冲突达到8的概率极低。解树化阈值为6是为了避免频繁的树化和解树化(设置差值作为缓冲)。悲观锁:认为并发冲突一定会发生,先加锁再访问。如Java的内置锁(如synchronized、ReentrantLock),数据库行锁等。悲观锁适合冲突频率高,需要保证强一致性的场景。乐观锁:认为并发冲突很少发生,先操作再检查冲突。无锁机制,如CAS算法、版本号机制、MVCC等。乐观锁适合冲突频率低,读多写少的场景。

2025-07-18 13:46:14 335

原创 Java线程池知识点小结

在当今软件开发领域,高性能和高并发处理能力成为了衡量应用程序质量的重要标准之一。Java 作为一门广泛使用的编程语言,在支持多线程和并发编程方面提供了强大的工具——线程池。本文将深入探讨Java线程池的原理、实现方式及其优化技巧,旨在帮助开发者更好地理解和利用这一重要机制,从而构建更加高效稳定的并发系统。Hi,我是,是个不断在硬核技术上作死的技术人,是,也是开源项目的维护者之一,熟悉也会一点,偶尔也会在边缘徘徊。

2025-07-18 13:44:55 637

原创 Java基础第二章 基础语法

在讲述java的基础语法的时候首先我们需要进行Java开发环境的配置。首先是下载JDK,设置环境变量(设置了系统变量可以让我们在任何目录下可以执行Java相关的命令)。安装教程注释数据类型基本类型 数据类型bit位取值范围示例包装类型boolean1一个bit位,1,0,反别代表true falsetrue/falseBooleanbyte8-128~12756Bytechar16每个 表示一个 Unicode 码点,即从 到 ACharactershor

2025-07-18 13:43:36 813

原创 JAVA面试核心知识点-Spring 原理之Mybatis 缓存

MyBatis 缓存,就像酒,喝一点提神,喝多了上头。用得好,性能翻倍;用不好,BUG 找不着。建议大家开启缓存前,多问自己一句:“我准备好为它背锅了吗?如果你喜欢这种“边学边笑”的写作风格,欢迎点个 👍 或在评论区调戏我(当然我只会缓存一小时)!下一期我们讲讲“Spring Boot 里的缓存门派”,看谁才是真正的“缓存宗师”。如需更多 Java 幽默技术文章,请继续召唤我。

2025-07-18 13:42:48 290

原创 那些奇奇怪怪却又妙趣横生的Java知识

既不是102,也是100,而是2。这个地方确实有点考眼力,i=+ 2这个算式里面,等号=后面的+不是运算符,而正负符号,如果把它改成负号-,那么输出的结果就变成了-2。而new的方式则是创建了一个新的对象,直接比较它们的引用,返回的结果当然就是false了。上面的代码竟然输出true和false,一个为真,一个为假,也是够奇怪的,比较的方法完全一样,只是数值稍有差异,而且差得也不多,怎么结果就不一样了呢?又是考眼力的时候,像下面的代码,你乍一看,以为代码被注释了,程序不会输出任何结果,但事实是这样吗?

2025-07-18 13:40:55 186

原创 分享 Java 开发中常用到的设计模式

大家都是按需要开发,都是一个职级的同事,为什么有些人的思路就很清晰,代码也很整洁、易懂;而自己开发,往往不知道怎么下手设计,写完了也是bug一堆,codereview的时候更是频频被怼...感觉每天都是CURD,写重复的代码,做类似的需求,怎么才能提高自己的水平?每每看到大佬的代码,或者优秀框架的源码,总是似懂非懂,怀疑自己是不是缺少了哪些知识?如果你有这些问题,或者思考过这些问题,那么你起码意识到了自己的不足,这其实是没有熟练掌握软件开发中的重要技能-设计模式而导致的。

2025-07-18 13:40:02 694

原创 9个很实用的Java开发技巧:包含代码和详解

在大伙的日常Java 开发中,总会有一些技巧,能够很好的帮助我们提高代码质量和项目的开发效率。这里,我来给大家分享下具体的技巧实践,并附上实际案例,帮助大家在实际工作中,可立刻应用起来。需要根据不同的场景,选择 ArrayList、LinkedList、HashMap、TreeMap中合适的数据集合结构处理数据。解析:合适的集合数据结构,可以提升程序性能,比如:HashMap 适合做快速查找,TreeMap 适合用在排序的场景等。解析:良好编码习惯,合理的注释和统一规范,是成熟团队必不可少的。

2025-07-18 13:38:45 202

原创 Java基础知识总结(超详细整理)

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的属性或方法(对父类进行扩展),也可以拥有父类的属性和方法,并且通过自己的方法再次实现父类的方法(重写)。静态方法:使用static修饰的成员方法叫做静态方法,静态方法可以不依赖于任何对象进行访问(对于静态方法来说,是没有this的),由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。如果b的值为true,计算x的值,运算结果为x的值;

2025-07-18 13:36:11 467

原创 史上最详的Java进阶知识

自定义异常,异常就是一个类,首先先定义一个异常类, 当遇到异常条件的时候,抛出异常,也就是 throw new AgeException("can say something");自定义异常,一般继承 RuntimeException(运行时异常),因为这样就有默认的异常处理机制,比较方便。

2025-07-17 13:58:50 721

原创 Java 实际开发中积累的几个小技巧

目前从事一线 Java 开发今年是第 3 个年头了,从 0-1的 SaaS、PaaS 的项目做过,多租户下定制化开发项目也做过,项目的 PM 也做过...在实际的开发中积累了一些技巧和经验,包括线上 bug 处理、日常业务开发、团队开发规范等等。现在在这里分享出来,作为成长的记录和知识的更新,希望与大家共勉。

2025-07-17 13:57:55 655

原创 【Java开发】Java开发基础知识整理汇总

22、mybatis(1 自定义mybatis框架、2 mybatis入门、3 架构分析、4 常用API、5 配置与事务管理、6 mapper代理、7 数据封装、8 动态sql、9 关联查询、10 性能优化、11 查询缓存、12 SSM整合)2、面向对象(类、对象、封装、继承、多态、构造器、super、this、接口、抽象类、权限修饰符、内部类、Random、ArrayList、String、Arrays、Math)6、多线程(1 线程概念、2 线程同步、3 Lock、4 线程生命周期、5 线程池)

2025-07-17 13:56:27 396

原创 Java 常见合并集合几种方式总结(List、Set、Map)

Java 提供了多种方式来合并集合(List、Set、Map),不同场景下可选择最合适的方法。

2025-07-17 13:55:56 217

原创 Java web分布式架构面试题大揭秘

分布式架构是一种将系统拆分成多个独立的子系统,并将这些子系统分布在不同的计算机节点(或称为分布式节点)上,通过网络协议相互通信和协作,共同完成系统功能的架构模式。例如,大型电商平台如淘宝,每日面临海量的用户浏览、下单等请求,若采用集中式架构,一台服务器根本无法承受如此高的并发压力。而分布式架构则将商品展示、订单处理、库存管理等功能拆分成不同的子系统,分别部署在多台服务器上,这些服务器分布在不同的机房甚至地域,通过网络紧密协作。

2025-07-17 13:53:44 578

原创 优秀架构师必须掌握的10大架构思维:从技术到战略的全面拆解

思维类型关键问题工具/方法抽象思维核心问题是什么?DDD、UML系统思维组件如何相互作用?系统动力学、链路追踪演进思维如何支持未来变化?分阶段迁移、防腐层折中思维优先级是什么?决策矩阵、SWOT分析技术的深度决定你能走多快,思维的广度决定你能走多远。架构师的成长,本质是思维模式的升级。

2025-07-17 13:51:13 581

原创 Spring 原理之Tomcat 架构

Tomcat 是个值得尊敬的“Web 搬砖人”:懂接收(Connector);会分发(Engine);懂管理(Context);能干活(Servlet);还能加班(多线程处理)。如果你觉得它慢了,不妨先看看你项目里的for循环、分页SQL和N+1 问题,Tomcat只负责“跑腿”,别啥都让它背锅。

2025-07-17 13:50:06 543

原创 优秀架构师必须掌握的“架构整洁之道”——从思维模式到系统驾驭

一个优秀的架构师,绝不仅仅是技术的掌控者,更是复杂系统的设计者、业务与技术的桥梁、风险的预见者与价值的创造者。o评估方案性价比: 在“自研 vs 开源/商业方案”、“新潮技术 vs 成熟技术”、“过度设计 vs 刚好满足”之间,选择综合成本(包含开发、运维、风险)最低的方案。避免为了技术而技术。成功的架构需要跨职能团队(开发、测试、运维、产品、业务)的理解、认同与协作才能落地。o建立领域模型: 运用领域驱动设计(DDD)思想,用业务语言建模核心实体(如电商的“订单”、“库存”),确保架构真实反映业务。

2025-07-17 13:47:41 202

原创 SpringBoot的3种六边形架构应用方式

六边形架构的核心价值在于将业务逻辑与技术细节分离,提高系统的可维护性、可测试性和灵活性。无论选择哪种实现方式,都应该坚持这一核心原则,保持领域模型的纯粹性和边界的清晰性。需要特别说明的是,架构应该服务于业务,而非相反。选择合适的架构方式,应以提高开发效率、系统质量和业务适应性为目标。

2025-07-17 13:44:25 734

原创 Java架构核心基础知识硬核整理,赶快收藏起来吧!!!

数据结构是计算机存储组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。接下来分别介绍下常见的数据结构类型。

2025-07-17 13:33:46 285

原创 Java的Spring框架

Spring 是一个轻量级的 Java 开发框架,它具有众多强大的特性,如依赖注入(DI)、面向切面编程(AOP)、IoC 容器、事务管理等。下面我们将通过具体的实践来学习这些特性。

2025-07-16 13:42:01 306

原创 一份Java架构技术图谱,谱写一位Java程序员的8年心酸实战史

略显青涩(这tmd P 图也太过了吧),好了不吐槽他了,我最佩服他的就是他对工作的热爱,那股冲劲,用了整整八年的时间,造就了他现在的辉煌。他是我见过最努力肯学的程序员,一个非科班出身的程序员(基本上像他这么不要命工作的也英年早逝了吧),一个学到老,活到老的程序员。根据他多年的实战经验以及学习积累,总结了一套适应当前互联网技术的Java架构体系,供各位学习中或实战中的同僚们借鉴,有好的建议可以在评论区留言。3.5. SpringCloud应用及源码解读。2.5. RabbitMq消息中间件。

2025-07-16 13:40:34 217

原创 2025年Java主流开发框架及项目选型指南

后端框架的选型需聚焦云原生适配性(Kubernetes、Serverless)、性能(QPS、延迟)、开发效率(自动配置、代码生成)及生态成熟度(中间件支持)。MySQL采用分层架构(连接层、服务层、存储引擎层),存储引擎可插拔(如InnoDB、MyISAM),设计理念以“轻量、高效、开源”为核心,适合快速迭代的Web应用。SQL分散在代码中(需频繁切换文件);中后台系统(如企业ERP)、C端用户交互复杂的应用(如电商平台、SaaS工具),尤其适合需要服务端渲染(SSR)或静态站点生成(SSG)的场景。

2025-07-16 13:39:11 665

原创 Java学习系列-Spring控制反转(IoC)3种实现方式

@Service、@Controller、@Repository 注解将类交给Spring管理(new),成为Spring组件或者叫Bean;通过 XML 文件显式定义 Bean 及其依赖关系,是早期 Spring 的主要配置方式。这种方式配置与代码完全分离,但是XML文件冗长,维护成本高,缺乏类型检查。XML配置:src/main/resources/spring.xml。,通过注解自动扫描和注册 Bean,减少XML配置。代替spring.xml配置文件;

2025-07-16 13:37:02 188

原创 全栈开发不再迷路!这套 Java 框架稳了:SpringBoot + Shiro + Bootstrap + Thymeleaf

✅ 一键生成代码,页面 / 控制器 / 权限菜单全部就绪✅ 支持国际化,服务端与前端多语言自由切换✅ 支持多数据源、数据权限、自定义按钮控制,企业级特性全都有✅ 集成服务监控、缓存监控、SQL监控,方便系统运维。

2025-07-16 13:36:04 287

原创 一文搞懂各种架构(业务架构、应用架构、数据架构...)

紧接着业务模式越来越复杂,订单、商品、库存、价格等各个模块都很深入,比如价格区分会员等级,访问渠道(app还是PC),销售方式(团购还是普通)等,还有大量的价格促销,这些规则很复杂,容易相互冲突,需要把分散到各个业务的价格逻辑进行统一管理,以基础价格服务的方式透明地提供给上层应用,变成一个微内核的服务化架构,即微服务。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。有的模块则是IO密集型的,需要更大的内存。

2025-07-16 13:34:49 483

原创 Java 架构设计的基本原则:构建稳健、可维护和可扩展的系统

设计模式是在软件设计中反复出现的问题的通用解决方案,它们是前人经验的总结,有助于解决特定的架构和设计问题。Java 架构设计的基本原则,包括 SOLID原则、设计模式和代码重构,为构建高质量的软件系统提供了重要的指导。通过合理运用这些原则,我们可以创建出更易于维护、可扩展、高性能的软件系统。在实际开发中,需要根据具体的项目需求和场景灵活运用这些原则和方法,不断优化代码结构和性能,以满足不断变化的业务需求。同时,持续学习和实践这些原则,将有助于提高开发团队的技术水平和软件的整体质量。

2025-07-16 13:31:28 1014

原创 高级系统架构设计师-架构案例-层次式架构设计

3.4.1 XML文档分为两类: 一类是以数据为中心的文档,这种文档在结构上是规则的,在内容上是同构的,具有较少的混合内容和嵌套层次,人们只关心文档中的数据而并不关心数据元素的存放顺序,这种文档简称为数据文档,它常用来存储和传输Web数据。另一类是以文档为中心的文档,这种文档的结构不规则,内容比较零散,具有较多的混合内容,并且元素之间的顺序是有关的,这种文档常用来在网页上发布描述性信息、产品性能介绍和E-mail信息等。所谓静态,是指池中的连接是在系统初始化时就分配好的,并且不能够随意关闭。

2025-07-16 13:29:05 411

原创 架构设计全流程讲解:从理论到实践

跟踪技术趋势(云原生、Service Mesh等)划分限界上下文(Bounded Context)接口隔离(ISP):客户端不应依赖不需要的接口。自动化运维的搭建等.单一职责(SRP):每个类/模块只做一件事。开闭原则(OCP):对扩展开放,对修改关闭。与业务方深入沟通,明确业务目标和约束条件。学习分布式系统理论(CAP、BASE等)掌握主流框架设计思想(Spring等)理解业务需求, 识别核心领域和子域.依赖倒置(DIP):依赖抽象而非实现。里氏替换(LSP):子类可替换父类。数据结构需求,持久化需求。

2025-07-16 13:26:26 269

空空如也

空空如也

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

TA关注的人

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