自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java结构型模式---装饰者模式

装饰者模式是一种结构型设计模式,其核心思想是动态地将责任附加到对象上,从而实现对对象功能的扩展。与继承相比,装饰者模式提供了更灵活的替代方案,它通过组合的方式在运行时为对象添加新功能,而无需修改其原有结构。装饰者模式是一种非常实用的设计模式,它通过组合而非继承的方式为对象提供了灵活的功能扩展能力。在实际开发中,装饰者模式常用于需要动态扩展对象功能的场景,如 Java I/O 流、GUI 组件等。

2025-07-09 23:29:15 398

原创 Java结构型模式---适配器模式

适配器模式是一种结构型设计模式,其核心思想是将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式就像一个 "转换器",将两个不兼容的接口进行适配。适配器模式是一种非常实用的设计模式,它通过引入一个适配器类来解决接口不兼容的问题,使得原本不能一起工作的类可以协同工作。对象适配器通过持有适配者类的实例并实现目标接口来实现适配。类适配器通过继承适配者类并实现目标接口来实现适配。双向适配器允许两个不兼容的接口可以互相适配。

2025-07-08 17:47:23 687

原创 Java结构型模式---代理模式

代理模式是一种非常实用的设计模式,它通过引入代理对象来控制对真实对象的访问,提供了增强功能、控制访问和提高性能的能力。在实际开发中,动态代理和 CGLIB 代理更为常用,它们提供了更灵活的代理机制。代理模式是一种结构型设计模式,其核心思想是通过创建一个代理对象来控制对另一个真实对象的访问。代理对象在客户端和真实对象之间起到中介作用,允许在不改变真实对象的前提下,对其进行增强或控制。静态代理是指在编译时就已经确定代理类和被代理类的关系,代理类需要手动编写。

2025-07-08 17:45:27 538

原创 Java创建型模式---原型模式

原型模式是一种创建型设计模式,其核心思想是通过复制(克隆)现有对象来创建新对象,而无需依赖显式的类实例化过程。这种模式适用于创建对象成本较高(如初始化时间长、资源消耗大)或需要避免复杂的对象创建逻辑的场景。原型模式是一种非常实用的设计模式,它通过复制现有对象来创建新对象,避免了复杂的对象创建过程,提高了性能和灵活性。在实际开发中,根据对象的复杂度和需求,可以选择浅克隆或深克隆来实现原型模式。- 复制对象时,仅复制对象本身及其基本数据类型字段,而引用类型字段仍指向原对象的引用。

2025-07-07 19:03:29 527

原创 Java创建型模式---建造者模式

建造者模式是一种创建型设计模式,其核心思想是将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。建造者模式允许你分步构建一个复杂对象,通过相同的构建步骤可以得到不同的表示形式。建造者模式是一种非常实用的设计模式,它能够将复杂对象的构建过程与表示分离,提高代码的可维护性和可扩展性。在实际开发中,链式调用的建造者模式更为常见,它简化了经典模式的结构,使代码更加简洁易用。

2025-07-06 00:33:04 565

原创 Java创建型模式---工厂模式

工厂模式是一种创建型设计模式,其核心思想是将对象的创建和使用分离。通过使用工厂模式,可以将对象创建逻辑集中管理,提高代码的可维护性和可扩展性。工厂模式是一种非常实用的设计模式,它能够将对象的创建和使用分离,提高代码的可维护性和可扩展性。在实际应用中,需要根据具体场景选择合适的工厂模式实现。简单工厂模式是工厂模式的基础实现,它定义了一个创建对象的类,根据参数的不同返回不同类的实例。抽象工厂模式提供一个创建一系列相关或依赖对象的接口,而无需指定它们具体的类。:实现简单,将对象创建和使用分离。

2025-07-05 22:38:16 585

原创 Java创建型模式---单例模式

单例模式是一种创建型设计模式,其核心思想是确保一个类仅有一个实例,并提供一个全局访问点来获取这个实例。单例模式虽然简单,但在实际应用中需要根据具体场景选择合适的实现方式,同时注意处理好各种边界情况,确保单例的唯一性和安全性。:实现复杂,需要理解 volatile 关键字的作用。:类加载时就创建实例,可能造成资源浪费。:线程安全,延迟加载,性能优化。:线程安全,延迟加载,实现简单。:同步方法开销大,影响性能。:延迟加载,避免资源浪费。:实现简单,线程安全。:线程安全,延迟加载。

2025-07-05 22:15:43 509

原创 Java中String、StringBuffer和StringBuilder的区别

在 Java 里,String和这三者都是用于处理字符串的类,但它们在本质、线程安全性以及性能方面存在明显差异。

2025-07-04 12:09:21 260

原创 java中==和equals的区别

equals比较方式适用场景比较内容==基本数据类型引用数据类型值引用(内存地址)equals引用数据类型内容(需类重写该方法)

2025-07-04 11:35:36 233

原创 Intellij IDEA中Maven的使用

通过以上步骤,你可以在 IDEA 中高效使用 Maven 管理项目依赖、构建和部署。是 Maven 项目的核心配置文件,用于管理依赖和插件。

2025-07-03 23:55:21 997

原创 java依赖注入方法

依赖注入主要有以下几种方式,每种方式各有特点,适用于不同场景:finalnull。

2025-07-02 23:34:43 451

原创 SpringSSM

SSM 框架组合通过分工协作,解决了 Java 开发中 Web 层、业务层、持久层的核心问题,是企业级开发的经典选择。

2025-07-02 23:30:50 917

原创 Redis为什么是单线程

Redis 选择单线程,是为了在内存数据库的核心场景(高频、轻量操作)中,通过避免多线程开销和复杂性,最大化性能和稳定性。其高效的 I/O 模型和后续的多线程优化(如网络 I/O 多线程),进一步弥补了单线程的局限,使其成为高性能缓存和数据库的标杆。

2025-07-01 21:35:39 874

原创 Java中for与foreach

特性普通for循环foreach循环语法复杂度较高较低索引访问支持不支持修改集合结构需谨慎操作不允许,会抛出异常适用范围灵活,适用于各种场景仅适用于遍历代码可读性较低(循环逻辑复杂时)较高一般来说,如果你需要访问索引或者修改集合结构,建议使用普通for循环;如果只是简单地遍历集合或数组,使用foreach循环会让你的代码更加简洁。

2025-06-30 21:42:16 393

原创 Java 接口性能优化三

拒绝经验主义,依赖数据决策优化前必须通过监控工具量化瓶颈(如用 SkyWalking 确认是数据库慢查询还是 Redis 超时),避免凭「感觉」优化 —— 例如盲目加索引可能导致写入性能下降,反而得不偿失。平衡性能与可维护性过度优化会导致代码复杂度飙升(如为减少 3ms 耗时引入复杂的异步逻辑),后续维护成本剧增。需设定「性能阈值」(如 P99 响应时间 < 500ms),达标后即可停止优化,优先保证代码可读性。随业务增长动态迭代。

2025-06-29 00:45:00 1844

原创 Java 接口性能优化二

数据库是接口性能的「重灾区」—— 超过 60% 的接口响应慢问题可追溯至低效的数据交互。优化需从「SQL 执行效率」「索引设计」「连接管理」三个维度突破。SQL 优化:让查询「少走弯路」核心原则:减少无效数据扫描,让数据库「只做必要的工作」。常见问题与优化:** 避免 SELECT ***:问题:返回冗余字段,增加数据传输量,无法利用覆盖索引。优化:明确指定需要的字段,如。通过 EXPLAIN 分析 SQL。

2025-06-29 00:15:00 1396

原创 Java接口性能优化一

在 Java 开发中,接口响应慢是最常见的性能痛点之一。用户点击按钮后等待超过 3 秒就可能失去耐心,系统吞吐量不足则会导致高峰期请求堆积甚至超时。这类问题往往不是单一环节的故障,而是代码逻辑、数据交互、框架配置、底层资源等多链路共同作用的结果。

2025-06-28 00:20:34 710 1

原创 java代码规范

【代码】java代码规范。

2025-06-28 00:00:53 611

原创 Java项目规范

保持接口单一职责,避免臃肿。:定义常量替代硬编码值。或 Optional。

2025-06-26 13:32:46 1177

原创 EJB知识

EJB 是服务器端组件模型,提供事务管理、安全控制、远程访问等企业级服务,无需手动编写底层代码。

2025-06-25 23:48:08 812

原创 Tomcat

Tomcat 是一个开源的 Servlet 容器,由 Apache 软件基金会开发,用于运行 Java Web 应用程序。它实现了 Servlet 和 JSP 规范,能够处理 HTTP 请求,并为 Web 应用提供运行环境。:支持 Session 复制和分布式部署,通过 mod_jk 或 mod_proxy 与 Apache HTTP Server 集成。接口,支持统一的生命周期管理(init、start、stop、destroy)。:Web 应用的部署描述符,定义 Servlet、过滤器和安全约束。

2025-06-25 14:24:49 625

原创 MyBatis与MyBatis-Plus的区别

通过以上对比可以看出,MyBatis-Plus 在保持 MyBatis 核心功能的基础上,显著提升了开发效率,尤其适合以 CRUD 操作为主的项目。但在复杂 SQL 场景下,仍需要结合 MyBatis 的原生能力。

2025-06-24 12:37:15 1273

原创 JavaServlet解析

JavaServlet 是运行在 Web 服务器上的小型 Java 程序,用于处理客户端请求并生成动态响应。它是 Java EE 平台的核心组件之一,主要用于开发 Web 应用程序。

2025-06-23 16:06:43 515

原创 Java泛型

并增强了代码的复用性。理解类型擦除、通配符和泛型限制是掌握泛型的关键。在实际开发中,泛型广泛应用于集合框架、反射 API 和设计模式中。Java 泛型是 JDK 5 中引入的一项重要特性,它提供了编译时类型安全检测机制,允许在编译时检测到非法的类型。,即在类、接口或方法中使用类型参数,使得代码可以处理多种数据类型,同时保持类型安全。Java 泛型通过参数化类型提供了编译时类型安全,避免了运行时的。限制通配符类型必须是。限制通配符类型必须是。:通过反射或工厂模式。Java 泛型是通过。

2025-06-23 00:23:41 701

原创 Java Lambda表达式

Lambda 表达式让 Java 更具函数式编程风格,通过简洁的语法和函数式接口,大幅提升代码可读性和生产力。Lambda 表达式是 Java 8 引入的重要特性,它基于函数式接口,允许你将功能视为方法参数,或将代码视为数据。Java 8 的 Stream API 大量使用 Lambda 表达式,用于集合的过滤、映射、归约等操作。,它没有名称,但有参数列表、函数主体、返回类型,可能还有异常列表。通过函数式接口的默认方法组合多个 Lambda。接收函数式接口作为参数或返回函数式接口的方法。

2025-06-22 20:03:33 614

原创 Java多线程

线程是程序中执行的最小单位,一个进程可以包含多个线程。例如,浏览器可以同时下载文件、播放视频和渲染页面,这些都是通过不同线程实现的。

2025-06-21 18:43:32 705

原创 MySQL 数据库索引详解

给多个字段一起建索引,比如,相当于 “组合目录”。

2025-06-20 19:50:11 1007

原创 Java中乐观锁和悲观锁

读多写少:优先使用乐观锁,配合Atomic类或。写多读少:优先使用悲观锁,配合或。高并发场景:考虑分段锁(如)或LongAdder。分布式系统:使用数据库版本号或 Redis 实现乐观锁,或基于 ZooKeeper 实现分布式悲观锁。现代 JDK 中,锁机制不断演进,从偏向锁到VarHandle,性能和灵活性持续提升。开发者需根据具体场景选择合适的锁策略,并关注 JDK 新特性以优化并发性能。

2025-06-20 08:15:00 1231

原创 Java Map 深度解析

特性HashMapTreeMap底层结构哈希表哈希表 + 双向链表红黑树哈希表 + CAS + 锁时间复杂度 (插入 / 查询)O(1)O(1)O(log n)O(1)顺序性无插入 / 访问顺序键有序无线程安全否否否是null 键 / 值支持支持支持仅值支持不支持适用场景通用场景LRU 缓存范围查询高并发环境通过深入理解各类型 Map 的底层实现和特性,开发者可以根据具体业务场景做出最优选择,避免常见陷阱,充分发挥不同 Map 实现的性能优势。

2025-06-19 21:01:06 927

原创 Java Set 接口底层源码深度解析

特性HashSetTreeSetEnumSet数据结构哈希表哈希表 + 双向链表红黑树位向量顺序保证无插入 / 访问顺序自然 / 定制排序枚举定义顺序元素要求实现 equals ()同上实现 Comparable枚举类型添加 / 删除时间O(1)O(1)O(log n)O(1)空间效率中中(多维护链表)高(树结构)极高(位操作)线程安全否否否否替代方案同上无无。

2025-06-19 17:39:58 1141

原创 深入解析 Java List 实现类的底层原理

在 Java 集合框架中,List接口是最常用的接口之一,其实现类在不同场景下表现各异。以下从数据结构、源码实现、性能特征及典型应用场景四个维度进行更深入的解析。

2025-06-18 20:58:21 815

原创 ELK在Java的使用

Bean从基础概念出发,认识了 ELK 技术栈的三个核心组件。学习了在 Java 项目中集成 ELK 的基本步骤。掌握了中级应用中日志过滤与增强以及自定义指标监控的方法。了解了高级应用中集群部署、性能优化和安全配置的要点。学习了 Kibana 可视化的相关知识。掌握了与 Spring Boot 集成的方法。了解了故障排查的常见方法和最佳实践。通过合理运用 ELK 技术栈,可以显著提升 Java 应用的可观测性和运维效率。

2025-06-17 00:01:11 837

原创 Java日志使用

新手:可先使用 JUL。项目:建议采用 SLF4J + Logback 的组合。大型系统:可考虑引入 ELK Stack 进行日志聚合与分析。通过合理运用日志,能极大提升系统的可维护性和问题排查效率。

2025-06-16 23:23:11 587

原创 红黑树:Java 实现与核心原理详解

红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它通过对每个节点进行着色(红色或黑色)并遵循特定规则,确保树的高度始终保持在对数级别,从而保证插入、删除和查找操作的时间复杂度为 O (log n)。本文将详细介绍红黑树的 Java 实现及其核心原理。

2025-06-16 02:56:31 512

原创 JWT 双签发认证过程

在 Java 项目中实现 JWT 双签发认证(即同时生成 Access Token 和 Refresh Token),核心流程包括以及。

2025-06-15 00:07:56 706

原创 阿里云OSS

通过以上设计,Java 项目中的 OSS 中间件可实现存储服务的高效管理与灵活扩展,同时保证系统的性能、安全性和可维护性。实际应用中可根据业务需求进一步优化接口与功能,例如集成文件预览、元数据检索等高级能力。

2025-06-14 00:00:19 1145 1

原创 Kafka知识点

Apache Kafka 是一个开源的分布式事件流平台,最初由 LinkedIn 开发并开源。它基于发布 - 订阅模式,设计目标是处理高吞吐量、实时数据流。Kafka 的核心价值在于:消息系统:数据管道:数据存储:流处理平台:Kafka 架构主要由以下组件构成:Producer(生产者):Consumer(消费者):Consumer Group(消费者组):Broker(代理):Topic(主题):Partition(分区):Replica(副本):Controller:Zookeeper(2.8.0 之前

2025-06-13 08:15:00 759

原创 Java发展史

Java 作为一种广泛使用的计算机编程语言,拥有着丰富的发展历程。

2025-06-12 02:30:00 868

原创 Kafka

Apache Kafka 是一个分布式流处理平台,最初由 LinkedIn 开发,现在是 Apache 软件基金会的顶级项目。它被设计用于处理实时数据流,具有高吞吐量、可扩展性和容错性等特点。Kafka 集群由多个 Broker 组成,每个 Broker 是一个独立的服务器。主题被分为多个分区,每个分区可以有多个副本以提高容错性。ZooKeeper 负责维护集群的元数据和协调工作。

2025-06-11 00:02:59 1425

原创 Spring Security

建议从简单的表单登录开始,逐步尝试 JWT、OAuth2 等复杂场景,并通过实战项目巩固知识。遇到问题时,结合官方文档和调试工具(如断点跟踪过滤器链)分析流程,逐步掌握其底层逻辑。(Spring Boot 2.7+ 需实现。

2025-06-10 23:59:04 1129

【铁路智能运维管理】基于Spring AI的铁路设备维修系统设计与实现:集成ZhiPu AI对话模型和RAG功能

内容概要:本文档介绍了基于“铁路智能运维管理系统”的Spring AI应用开发,重点展示了AI在“铁路设备维修”模块和专业知识顾问中的应用。开发环境需满足Spring Boot 3.2.x及以上版本和JDK 17及以上的要求。文档详细描述了如何引入必要的依赖项,如ZhiPu AI,并配置相关参数。具体实现包括普通聊天对话、检索增强生成(RAG)和工具调用三大功能。聊天对话通过配置ChatClient实现,RAG利用Redis Stack进行矢量数据库查询,而工具调用则通过ToolConfig类实现信息检索和采取行动。最后,文档指出当前项目的不足之处,如知识库庞大时工具回调受影响等问题。 适合人群:具备一定Java编程基础,尤其是熟悉Spring Boot框架的研发人员,特别是从事铁路智能运维系统开发的技术人员。 使用场景及目标:①了解如何在Spring Boot项目中集成AI功能;②掌握通过ZhiPu AI实现聊天对话、检索增强生成和工具调用的具体步骤;③探索AI在铁路设备维修管理和专业知识顾问中的应用场景。 其他说明:此项目仅展示了Spring AI的主要功能,相关业务逻辑尚不完善,且存在一些尚未解决的问题,如知识库庞大时工具回调的影响等。建议开发者在实践中不断优化和完善系统功能。

2025-05-14

空空如也

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

TA关注的人

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