自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Kafka 深入研究:从架构革新到性能优化的全面解析

Kafka 作为领先的分布式消息系统,经历了从依赖 ZooKeeper 到自管理的 KRaft 模式的重大架构变革,实现了更高的可靠性、可扩展性和性能。Kafka 4.0 的发布标志着这一演进的重要里程碑,彻底移除了对 ZooKeeper的依赖,引入了增量式重平衡协议和共享组等新特性,大幅提升了系统的灵活性和效率。关键技术演进点KRaft替代 ZooKeeper:Kafka 4.0 默认采用 KRaft 模式,实现了元数据的自管理,简化了部署和运维,提升了可扩展性和故障恢复能力。消费者组协议优化。

2025-09-04 02:27:34 1312

原创 redis哨兵模式的使用

通过以上步骤,Java 项目就能正确使用 Redis 哨兵模式,实现对 Redis 集群的高可用访问。当主节点发生故障时,整个过程对应用程序是透明的,无需人工干预即可自动切换到新的主节点。

2025-09-03 13:27:19 620

原创 Java类加载机制

继承,重写方法(推荐)或方法。应用场景:热部署、加密类解密、从非标准来源加载类等。Java 类加载机制通过 “加载 - 验证 - 准备 - 解析 - 初始化” 的流程,结合双亲委派模型,保证了类的安全加载和 JVM 的稳定性。理解类加载机制对排查类冲突、实现热部署等场景至关重要。

2025-09-01 22:23:45 780

原创 理解JVM

线程私有区(每个线程单独拥有):程序计数器、虚拟机栈、本地方法栈线程共享区(所有线程共用):堆、方法区(元空间)、运行时常量池程序计数器 = 员工的工作进度表虚拟机栈 = 员工的工作台(临时放正在处理的文件)本地方法栈 = 外包团队的工作台堆 = 公司的仓库(放所有货物)方法区 = 公司的档案库(存规章制度、人员结构)运行时常量池 = 档案库中的字典(快速查询常用信息)这样每个区域的职责和特点就比较清晰了~

2025-08-30 13:20:06 665

原创 理解Cookie 和Session

Cookie 是 “你手里的凭证”:存你设备上,帮你 “告诉网站你是谁”(靠 SessionID 或简单信息);Session 是 “网站手里的档案”:存服务器上,帮网站 “确认你是谁、能做什么”(靠 Cookie 传的 SessionID 找档案);没有 Session,Cookie 只能存简单信息(比如浏览记录),没法实现 “登录后保持身份”;没有 Cookie,Session 的 SessionID 传不到你手里,网站也认不出你。

2025-08-29 21:35:28 890

原创 java序列化

/ 自定义序列化逻辑// 先执行默认序列化// 自定义处理(如加密敏感字段)// 自定义反序列化逻辑// 先执行默认反序列化// 自定义处理(如解密)// 示例加密方法(简化)Java 序列化是对象持久化和网络传输的基础机制,通过实现接口、合理使用和transient关键字,以及自定义序列化逻辑,可以灵活应对各种场景。但需注意其安全性和性能问题,在分布式系统中可考虑更高效的序列化方案。

2025-08-29 21:30:10 998

原创 java中线程创建的四种方式

方式优点缺点适用场景继承 Thread简单直接单继承限制简单的线程任务实现 Runnable无继承限制,资源共享无法返回结果多线程共享资源实现 Callable可返回结果,可抛异常用法相对复杂需要获取执行结果线程池高效管理线程,复用线程需要理解线程池参数实际开发中推荐使用在实际开发中,推荐使用Runnable接口配合线程池的方式,既避免了单继承限制,又能高效管理线程资源。如果需要获取线程执行结果,则使用Callable接口。

2025-08-29 14:02:51 291

原创 java中sleep与wait的区别

特性sleep()wait()所属类Thread(静态方法)Object(实例方法)锁释放不释放锁释放锁使用场景控制执行间隔线程间通信(等待 / 唤醒)唤醒方式时间到自动唤醒需notify()或超时调用前提无需同步环境必须在中调用。

2025-08-28 21:57:26 350

原创 JDK8升级到JDK17的注意事项

升级过程中,建议建立详细的测试矩阵,确保所有功能在新 JDK 下正常工作,特别是涉及低级别 API 和反射的代码。

2025-08-28 20:02:31 516

原创 Java中JUnit知识点

JUnit 是 Java 中最常用的单元测试框架,用于编写和运行可重复的测试。

2025-08-27 19:29:46 926

原创 IDEA插件推荐

在 IntelliJ IDEA 中,合适的插件能显著提升开发效率和体验。

2025-08-26 23:31:31 438

原创 Java 项目中的安全认证体系

Java 项目的安全认证体系是一个多层级的综合方案,需结合框架(Spring Security/Shiro)、认证方式(用户名密码 / Token/OAuth2.0)、加密算法(BCrypt)和防护措施(HTTPS/CSRF),根据系统规模和场景灵活选择。核心目标是在安全性和用户体验之间找到平衡,既防止未授权访问,又不影响合法用户的操作效率。

2025-08-26 16:52:13 1399

原创 java保证代码的安全性方法

Java 代码的安全性需要 “防御式编程” 思维,从输入到输出的全链路进行安全控制,结合语言特性、标准库、安全框架及工具链,同时遵循行业最佳实践(如 OWASP Top 10),才能有效降低安全风险。

2025-08-25 23:00:10 540

原创 JAVA限流方法

/ 窗口大小(毫秒)// 窗口内最大请求数// 记录每个时间片的请求数(key:时间片起始时间,value:请求数)// 计算当前窗口的起始时间// 移除过期的时间片// 统计当前窗口总请求数// 记录当前时间片的请求(精确到100ms,可调整精度)// 使用示例(在Controller中)// 10秒内最多允许5次请求(按IP限流)// 为每个IP创建独立的限流器if (!return "IP:" + ip + " 请求过于频繁";

2025-08-24 23:19:49 726

原创 Hibernate详解

Hibernate 是 Java 领域最流行的 ORM(Object-Relational Mapping,对象关系映射)框架之一,它致力于解决 Java 对象与关系型数据库之间的映射问题,简化数据持久化操作,让开发者可以以面向对象的方式操作数据库,而无需过多关注底层 SQL 实现。

2025-08-24 23:15:39 1822

原创 MyBatis 和 MyBatis-Plus对比

选MyBatis:若项目业务复杂(多复杂查询)、对 SQL 可控性要求高(需频繁优化),或团队更习惯直接写 SQL。选:若项目以基础 CRUD 为主(如后台管理系统)、追求快速开发,或需减少重复代码(如自动填充、分页),可大幅提升效率。实际开发中,两者常结合使用:基础 CRUD 用 MP 简化开发,复杂查询用 MyBatis 的 XML 写原生 SQL,兼顾效率与灵活性。

2025-08-24 23:12:01 1118

原创 mybatis过渡到mybatis-plus过程中需要注意的地方

升级的核心是 **“增强而非重构”**:通过替换依赖、调整配置、适配注解,保留原有业务逻辑的同时,逐步引入 MP 的通用功能和插件。关键是确保版本兼容、测试覆盖,并根据团队情况逐步迁移,充分利用 MP 简化开发的优势。

2025-08-24 23:07:35 1051 1

原创 Java接口响应速度优化

减少不必要的计算和 IO(数据库、网络);利用缓存、并行、异步等手段提升效率;通过监控工具精准定位问题,避免盲目优化。需根据业务场景选择合适的方案(如高频读场景优先缓存,高并发写场景优先分库分表),同时兼顾代码可维护性。

2025-08-23 22:31:52 719

原创 Spring发布订阅模式详解

Spring 的发布订阅模式基于事件驱动,通过三大组件实现,配合@Async等注解,提供了灵活、解耦的组件通信方式。其核心价值在于降低组件间耦合度,提高系统的可扩展性和可维护性。

2025-08-22 23:48:10 819

原创 Java 项目中 MySQL 数据向 Redis 迁移的技术实践与深度剖析

将 MySQL 数据存入 Redis 的过程,本质上是 “根据数据的访问特征,将合适的数据分配到合适的存储资源”—— 让 MySQL 承担 “持久化、高一致性” 的职责,让 Redis 承担 “高频访问、高并发” 的职责,二者协同构建高效的存储层。在 Java 项目中落地时,需避免 “为了用 Redis 而用 Redis” 的误区:需先分析业务场景(如数据的访问频率、修改频率、一致性要求),再选择同步方式、读写策略;同时关注细节(如 key 的命名、过期时间的设置、异常处理),才能真正发挥两者的协同价值。

2025-08-21 23:12:30 1018

原创 JAVA中向量数据库(Milvus)怎么配合大模型使用

在 Java 中,向量数据库(以 Milvus 为例)与大模型的配合是实现 "增强大模型能力" 的核心方案,主要用于解决大模型 "知识时效性差"、"上下文长度有限"、"幻觉生成" 等问题。。

2025-08-20 23:55:05 1306

原创 JVM参数优化

JVM 参数优化的核心是 “基于应用特性 + 监控数据” 的动态调整:先通过基础参数搭建框架,再用工具定位瓶颈,最后针对性优化内存分配与 GC 策略。关键不是 “记住参数”,而是理解 “参数与内存 / GC 的关系”,并结合实际场景灵活调整。

2025-08-19 23:00:14 836

原创 SQL注入防御

【代码】SQL注入防御。

2025-08-18 23:52:14 206

原创 向量数据库

大规模生产场景:优先选Milvus(开源、可扩展)或Pinecone(云托管、零运维);轻量原型 / 小应用:选Chroma(零配置)或Qdrant(简单部署);混合检索(向量 + 结构化 / 文本):选Weaviate(易用)或Vespa(大规模);纯检索库(需自主搭服务):选Faiss(速度快、轻量)。实际选择时需结合 “数据规模、成本预算、运维能力、功能需求” 综合评估,必要时可先通过小规模测试验证性能。

2025-08-17 23:35:37 1221

原创 java常见的数据加密

Java 项目中,数据加密是保障信息安全的重要手段。

2025-08-17 16:18:15 646

原创 Java项目中短信的发送

发送短信的核心流程是:通过第三方服务商的 API 接口,将短信内容、接收号码等参数传递给服务商服务器,由服务商完成短信的实际下发。选择第三方短信服务商并完成注册配置;获取调用 API 所需的凭证(如 AccessKey、密钥等);在项目中引入服务商提供的 SDK 或通过 HTTP 请求调用 API;编写代码封装发送逻辑(参数校验、请求构建、响应处理);处理异常情况(网络错误、参数错误、余额不足等)。

2025-08-17 16:13:03 1037

原创 JAVA项目中邮件发送功能

Session: 表示邮件会话,是所有邮件操作的基础Message: 表示邮件消息,是邮件内容的容器Address: 表示邮件地址Transport: 负责发送邮件Store: 负责接收邮件(本文不涉及): 表示 MIME 类型的邮件消息: 表示多部分内容的容器,用于构建带附件或 HTML 内容的邮件必要的依赖库和配置核心类的作用和使用方法完整的邮件发送工具类实现发送不同类型邮件的示例常见问题及解决方案在 Web 应用中的集成建议。

2025-08-17 15:17:55 1188

原创 java项目怎么实现用户行为分析、漏斗转化、数据可视化报表。

在 Java 项目中实现用户行为分析、漏斗转化和数据可视化报表是一个系统性的工作,需要从数据采集、存储、分析到展示的完整链路设计。

2025-08-16 23:54:34 711

原创 java中消息推送功能

后端消息推送服务的核心是 **“连接管理”+“消息路由”**,小规模场景可用 Spring WebSocket + 本地会话;中大规模集群需结合 Redis 实现分布式会话与跨节点通信;物联网场景优先选 MQTT 协议。根据实时性和规模需求,可逐步迭代优化(从单机到集群,从基础功能到可靠性保障)。

2025-08-16 18:04:50 1264

原创 Java 中使用阿里云日志服务(SLS)完整指南

准备 SLS 资源与依赖→初始化客户端→调用 SDK 接口实现日志收发与管理。通过本文介绍的步骤,能快速将 Java 应用与 SLS 对接,实现日志的高效存储与灵活查询。实际开发中,可根据业务需求扩展功能,例如结合 SLS 的 “索引配置” 实现更精准的日志检索,或通过 “消费组” 实现日志的实时消费。如需更复杂的操作(如日志分析、告警等),可参考阿里云 SLS 官方文档获取详细指南。

2025-08-15 23:18:23 1569

原创 Java项目建立天气预报功能

在 Java 项目中实现天气预报功能的后端接入,主要涉及第三方 API 调用、数据解析和接口封装三个核心环节。

2025-08-15 00:31:28 312

原创 Java项目中地图功能如何创建

Java 后端实现地图功能的核心是集成第三方地图 API,辅以地理数据存储、缓存、坐标系转换等能力。优先使用成熟第三方服务,避免重复造轮子。重视空间索引和缓存,提升查询性能。处理好坐标系转换,避免地图偏移。做好 API 密钥保护和接口限流,保障服务稳定。通过以上方案,可快速实现稳定、高效的地图后端服务。

2025-08-13 21:50:42 759

原创 pom.xml父子模块配置

properties:统一管理版本号、路径等常量(子模块可直接引用)。:声明依赖版本(子模块引用时无需指定版本,统一由父模块管控)。:声明插件版本(类似依赖管理,子模块引用插件时无需指定版本)。build:公共的构建配置(如资源目录、插件等,子模块可继承或覆盖)。配置复用:公共配置(版本、插件)集中在父 POM,减少重复代码。版本统一:通过和确保所有子模块依赖版本一致,避免冲突。批量操作:父模块通过modules聚合子模块,支持 "一键构建 / 打包所有子模块"。

2025-08-11 18:27:26 1283

原创 java配置沙箱支付

沙箱支付是支付平台(如支付宝、微信支付)提供的模拟支付环境,包含测试用的 APPID、密钥、网关、测试账号等资源,其接口逻辑与正式环境一致,但交易仅为模拟,不涉及真实资金。核心作用:验证支付下单、支付跳转、异步通知、订单查询等全流程的正确性。

2025-08-10 23:09:29 1569

原创 Java中new的相关知识

new。

2025-08-10 23:05:34 678

原创 接口和抽象类

在 Java 中,接口(Interface)和抽象类(Abstract Class)都是实现抽象化的重要机制,用于定义规范和复用代码,但两者在设计目的、语法规则和使用场景上有显著区别。:可以有静态成员(变量、方法),静态变量在接口被首次使用时初始化(如被实现类引用),且接口没有构造代码块和构造器。关键字修饰的类,是 "不完整的类",可以包含抽象方法(未实现的方法)和具体方法(已实现的方法)。是其子类("狗是动物","猫是动物"),抽象类中可包含动物共有的方法(如。(在定义时已初始化),不需要构造器初始化。

2025-08-10 13:57:28 550

原创 java常见算法

每次从剩余元素中找到最小元素,放到已排序序列的末尾。重复比较相邻元素,将大的元素 "冒泡" 到末尾。采用分治法,将数组分成两半分别排序,再合并。在有序数组中,每次将搜索范围减半。将元素逐个插入到已排序的序列中。逐个检查每个元素直到找到目标。

2025-08-10 10:38:26 203

原创 java中Bean的生命周期

在 Spring 框架中,Bean 的生命周期是一个非常精细的过程,涉及多个阶段和扩展点。接口、初始化 / 销毁方法等,在各个阶段插入自定义逻辑,实现对 Bean 的精细控制。✅ 销毁逻辑通常包括:释放资源(关闭数据库连接、网络连接)、清理临时文件等。✅ 初始化逻辑通常包括:资源加载(数据库连接、文件读取)、缓存初始化等。通过上述生命周期,Spring 提供了强大的扩展能力,开发者可通过。实现 Spring 提供的接口,在属性赋值完成后执行。实现 Spring 提供的接口,执行销毁逻辑。

2025-08-10 00:11:35 592

原创 微服务的好与坏

Java 使用微服务的核心价值在于支持大规模复杂应用的灵活扩展和快速迭代,适合业务场景复杂、团队规模大、需要长期演进的系统(如电商平台、金融核心系统)。但其劣势也很明显 ——分布式复杂性、运维成本、团队能力要求都远高于单体应用。因此,是否采用微服务需结合实际场景:小型应用(如内部管理系统)用 Spring Boot 单体架构更高效;大型复杂系统则可通过 “先单体后微服务” 的渐进式拆分(如 DDD 领域驱动设计)平衡收益与成本。

2025-08-08 23:23:18 1175

原创 java分布式定时任务

Component@Autowired@Autowired// 初始化定时任务(每分钟执行一次)// 执行任务(加分布式锁)try {// 执行核心逻辑} else {log.info("任务被其他节点执行,当前节点跳过");// 释放锁。

2025-08-08 22:51:15 1168

【企业信息化开发】金蝶云星空应用开发考试题库:单选与判断题解析及插件开发技术要点

内容概要:本文档为《金蝶云星空应用开发考试题库》,包含大量关于金蝶云星空二次开发的技术题目,涵盖单选题和判断题,涉及开发插件、BOS平台配置、数据库操作、WebAPI调用、性能优化、安全规范、客户端适配等多个方面。重点考察开发者对金蝶云星空架构、插件机制(如单据维护插件、列表插件、服务插件等)、数据模型、事务处理、组织隔离、账表开发、代码规范及部署发布的掌握程度。题目附带详细解析,部分内容存在争议并标注了不同观点,体现出实际开发中的复杂性与最佳实践考量。; 适合人群:具备金蝶云星空BOS开发经验的初级至中级开发人员,准备参加金蝶认证考试或从事企业ERP二次开发的技术人员;熟悉C#、SQL、SVN及Visual Studio开发环境者更佳。; 使用场景及目标:①帮助开发者系统复习金蝶云星空开发核心知识点;②指导正确使用插件机制、API接口和数据库操作规范;③强化对性能优化、代码管理、部署流程的理解;④提升在真实项目中解决字段控制、组织隔离、事务提交等问题的能力。; 阅读建议:此资源以考题形式呈现,建议结合金蝶BOS开发手册和实际项目进行对照学习,重点关注插件生命周期、事件触发机制、服务注册位置、临时表使用规范等内容,并注意辨析争议题目的技术依据,避免在实际开发中踩坑。

2025-11-04

Java核心技术详解:从基础语法到并发编程及Spring框架的全面解析

内容概要:本文详细介绍了Java语言的核心特点、集合框架、并发编程、数据库相关知识、Redis、Linux基础、以及Spring和Spring Cloud框架的相关内容。Java语言的核心特点包括面向对象、平台无关性、强类型、垃圾自动管理、支持多线程、安全性、丰富的库、编译与解释并存、支持分布式、健壮性和开源社区支持。Java集合框架部分涵盖了List、Set、Map等常用集合类及其特性,如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等,并介绍了它们的实现原理和性能特点。并发编程部分探讨了线程、线程池、锁机制等内容,强调了线程安全的重要性。数据库部分详细讲解了MySQL的存储引擎、索引、事务、锁机制等。Redis部分介绍了其数据类型、持久化机制、内存淘汰策略、分布式锁等。Linux部分涵盖了命令行操作、系统日志、安全配置等内容。Spring和Spring Cloud部分则介绍了Spring框架的核心特性(如IoC、AOP)、Spring MVC的工作流程、Spring Boot的自动配置原理,以及Spring Cloud的微服务组件(如Eureka、Ribbon、Hystrix等)。 适合人群:具备一定编程基础,尤其是对Java、数据库、Linux和微服务框架感兴趣的开发者。 使用场景及目标: 1. **Java语言和集合框架**:帮助开发者深入了解Java语言的核心特性和集合框架的使用场景,提升代码编写和优化能力。 2. **并发编程**:适用于需要理解和实现多线程、线程池和锁机制的开发人员,

2025-07-25

【铁路智能运维管理】基于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关注的人

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