自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

print_helloword的博客

java相关知识

  • 博客(67)
  • 收藏
  • 关注

原创 Spring AOP + RocketMQ 实现企业级操作日志异步采集(实战全流程)

✅ 完整的 AOP + MQ 日志解耦链路✅ 支持幂等、异常重试、死信兜底✅ 易扩展为 ES、Kafka、ELK 分析方案加入日志链路追踪 TraceId使用消息压缩、限流机制引入 Prometheus + Grafana 监控消费速率。

2025-03-23 16:13:52 382

原创 主流的Java生态下权限管理框架

此方案为当前互联网Java开发生态的。(整体权限管理框架) +(细粒度数据权限控制)

2025-03-19 23:41:26 720

原创 CompletableFuture详解

是Java 8引入的一个类,用于异步编程,它提供了强大的功能来帮助开发者实现非阻塞式的编程,支持函数式风格,并能有效避免回调地狱(Callback Hell)。异步非阻塞:任务可在独立线程中异步执行,不影响主线程。链式调用:支持函数式编程,方便链式处理。组合与聚合:能简单地将多个异步任务结果组合。异常处理:可对异步任务中的异常灵活处理。是现代Java编程不可缺少的利器,熟练使用它能极大提升代码的并发性能、响应效率和优雅性。尤其在高并发、微服务、异步调用等场景中,熟悉并掌握至关重要。

2025-03-19 20:44:22 276

原创 Spring 声明式事务与传播行为详解:基于高并发业务示例

事务是一系列对数据库操作的逻辑单元,这些操作要么全部执行成功,要么全部回滚,保证数据的原子性、一致性、隔离性和持久性(ACID)。在高并发场景下,事务能防止多个并发操作对同一数据造成冲突或不一致,确保业务数据正确。} }@Entity@Id(用于 MANDATORY 示例)return id;} }

2025-03-11 22:07:30 966

原创 Spring面试问答

Spring是一个开源的轻量级Java开发框架,旨在简化企业级应用的开发。它提供了全面的基础设施支持,包括依赖注入(IOC)、面向切面编程(AOP)、事务管理、Spring MVC、Spring JDBC等模块,帮助开发者构建松耦合、易于测试和维护的应用程序。回答:IOC(Inversion of Control,控制反转):一种设计原则,旨在将对象的创建和管理职责从应用程序代码中转移到框架或容器中。通过IOC,应用程序组件之间的依赖关系由容器负责管理,而不是组件自身负责。

2025-03-07 21:21:30 122

原创 Spring Boot面试问答

Spring Boot是基于Spring框架的一个开源框架,旨在简化新Spring应用的初始化和开发过程。自动配置:根据项目依赖自动配置Spring应用,减少繁琐的XML或Java配置。起步依赖(Starters):通过一组预定义的依赖管理,简化项目的依赖配置。内嵌服务器:内置了Tomcat、Jetty等服务器,简化部署过程。生产就绪特性:集成了监控、健康检查等生产环境所需的功能(如Spring Boot Actuator)。命令行界面(CLI):支持通过命令行快速创建和测试Spring应用。

2025-03-07 21:20:39 1314

原创 Redis7面试问答

Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,支持多种类型的数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)、位图(Bitmaps)、超日志(HyperLogLogs)和地理空间索引(Geospatial Indexes)。缓存:由于其高性能,Redis 常用于缓存热点数据,减轻数据库负载。消息队列:利用列表和发布/订阅(Pub/Sub)功能实现消息队列。

2025-03-07 21:19:05 97

原创 Spring Boot集成RocketMQ:真实项目应用场景

以下是RocketMQ在Spring Boot中的典型应用场景,涵盖面试常见问题。使用Spring Boot创建一个项目,添加RocketMQ依赖。,消费者会打印消息。这是最基础的用法,面试中常被问到如何快速集成。:用户支付后,确保订单状态更新和消息发送一致。:ConsumerGroup内多实例负载均衡。:用户下单后,异步通知库存扣减和物流系统。:收集应用日志,确保按时间顺序处理。:订单未支付30分钟后发送提醒。:如何确保消息不丢失?:事务消息的实现原理?:延迟消息的实现机制?:如何保证消息顺序?

2025-02-25 20:28:56 856

原创 Java常用设计模式-代码实例详解

双重检查锁(Double-Checked Locking)确保线程安全,适用于延迟加载。确保一个类只有一个实例,并提供全局访问点。定义一个创建对象的接口,由子类决定实例化哪个类,推迟实例化到子类。:在一个电商系统中,需要一个全局日志管理器记录操作日志。:饿汉式在类加载时初始化,简单但不支持延迟加载。提供一种顺序访问集合元素的方法,隐藏底层实现。定义一对多依赖,主体状态变化时通知观察者。为对象提供代理,控制访问或增强功能。动态为对象添加职责,不修改原有类。:支持文件日志和数据库日志。

2025-02-21 21:38:30 683

原创 Linux系统启动Jar包详解—Java8

在开发和测试环境中,如果资源充足,可以不限制 JVM 大小,以便观察应用程序的实际内存使用需求。但在生产环境中,

2025-02-20 19:29:49 658

原创 Mysql面试问答

MySQL是一种开源的关系型数据库管理系统(RDBMS),基于结构化查询语言(SQL)进行数据管理和操作。MySQL由瑞典的MySQL AB公司开发,现属于Oracle公司。主要用途包括:Web应用程序数据库:如WordPress、Drupal、Joomla等内容管理系统。数据仓库:用于存储和分析大量数据。电子商务平台:如Magento、Shopify等。日志管理:存储和查询系统日志、应用日志等。企业应用:客户关系管理(CRM)、企业资源规划(ERP)等系统。

2025-02-17 14:30:00 18

原创 JVM面试问答

回答:回答:Java源代码的执行过程包括以下几个步骤:回答:JVM的主要组成部分包括:回答:JVM的内存结构主要包括以下几个区域:回答:回答:**双亲委派模型(Parent Delegation Model)**是Java类加载机制的一种策略,确保Java核心类库的安全性和稳定性。工作机制:请求加载类:递归委派:父类加载器尝试加载:优点:回答:在自定义类加载器时,需要注意以下几个问题:回答:在类加载过程中,Java虚拟机会按照以下步骤对类进行处理:回答:JVM的内存区域主要包括以下几个部分:回答:**新生代

2025-02-17 08:30:00 18

原创 Mybatisl面试问答

MyBatis 是一个优秀的持久层框架,通过简单的 XML 或注解来配置和映射原生信息,将接口方法调用转化为数据库操作。与 Hibernate 等ORM框架不同,MyBatis 不进行对象和数据库表的完全映射,而是更加灵活地编写SQL语句,适用于复杂查询和高性能需求的场景。Hibernate 采用全自动的对象关系映射,开发者无需编写SQL,但在复杂查询时可能不如MyBatis灵活。回答::是 MyBatis 的核心对象,用于创建SqlSession。通常在应用启动时创建一次,供整个应用共享。

2025-02-11 20:19:05 80

原创 JUC面试问答

回答:区别:回答:Java中创建和启动线程有两种主要方式:继承类:实现接口:推荐:实现接口更灵活,因为Java不支持多继承,可以同时继承其他类。回答:作用:工作原理:示例:注意:回答:可重入锁(Reentrant Lock):与的区别:功能丰富:灵活性:性能:解锁机制:示例:注意:使用时必须确保在所有可能的执行路径上都释放锁,否则会导致死锁。回答:线程的生命周期主要包括以下几个阶段:状态转换图:二、线程池(ThreadPool)6. 线程池的作用是什么?为什么要使用线程池?回

2025-02-08 13:00:00 33

原创 Java设计模式面试问答

回答:设计模式 是在软件设计过程中总结的、被反复验证的解决特定问题的通用模板。它们提供了一种标准的方式来组织和设计代码,促进代码的可重用性、可维护性和可扩展性。主要分类:总结:设计模式通过提供可复用的解决方案,帮助开发者应对常见的设计问题,提升代码质量和开发效率。理解并掌握这些模式,对于编写高质量的软件系统至关重要。回答:单例模式(Singleton Pattern) 是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。实现方式:饿汉式(Eager Initialization):在类加载时

2025-02-08 08:30:00 47

原创 Java集合面试问答

回答:Java集合框架是一组用于存储和操作数据的接口、类和算法的统一架构。它提供了多种集合类型,如列表(List)、集合(Set)、映射(Map)等,帮助开发者高效地管理和操作对象集合。集合框架的核心接口包括、、、等,而常用的实现类有、、、、、等。集合框架还提供了算法支持,如排序、搜索、同步等,极大地简化了数据处理的复杂性。回答:Java集合框架的主要接口包括::集合的根接口,定义了基本的集合操作。:有序集合,允许重复元素。:不允许重复元素的集合。:用于按特定顺序处理元素的集合。:不继承自Collectio

2025-02-07 21:59:50 124

原创 国内主流的Spring微服务方案指南

客户端层:如前端应用或移动端,通过 API 网关与后端服务交互。API 网关:统一入口,负责路由、负载均衡、安全、限流等功能。微服务层:由多个独立的微服务组成,每个服务负责特定的业务功能。基础设施层:包括服务注册与发现、配置管理、消息中间件、数据库、缓存、监控与追踪等。创建import comUser;

2025-01-13 21:14:47 852

原创 Java工程师必学的Linux知识点

Linux发行版(Distributions)是基于Linux内核构建的操作系统,通常包含内核、系统工具、应用软件和包管理器。常见的发行版包括:Linux的文件系统是一个单一的层次结构,从根目录()开始,包含多个子目录,每个目录有特定的用途。Linux中的每个文件和目录都有权限设置,分为所有者(User)、所属组(Group)和其他用户(Others),权限类型包括:使用命令查看文件权限。例如:解释:使用命令修改权限,例如:允许用户以超级用户或其他用户的身份运行命令,而无需切换用户。配置sudo权限:编辑

2025-01-09 21:19:32 1087

原创 Linux系统启动jar包--Java8

在开发和测试环境中,如果资源充足,可以不限制 JVM 大小,以便观察应用程序的实际内存使用需求。但在生产环境中,

2025-01-09 20:23:39 903

原创 Spring Boot自定义Starter

教程,分步骤讲解相关内容,包括。

2025-01-03 20:16:59 891

原创 Spring Boot对访问密钥加解密——HMAC-SHA256

客户端准备;拼出(通常包含 method、path、timestamp、bodyHash 等);在 HTTP 请求头里带上signaturetimestamp;用 JSON 作为请求体时,别忘了和服务端在bodyHash算法上保持一致。服务端通过找到对应的;按同样规则构造;计算 HMAC-SHA256 并和客户端的signature对比;一致则通过,不一致则 401/403;可加时间戳nonce限流等加强安全性。优点不需要公钥/私钥,也不需要。

2024-12-25 20:45:49 2195

原创 Spring Boot对访问密钥加密解密——RSA

import com//添加允许通过的keyId和keySecret public RsaAuthInterceptor() {");} try {// 2) RSA 私钥解密 String decryptedJson = rsaDecryptor . decrypt(encryptedData);

2024-12-25 17:07:04 1578

原创 Spring Boot中幂等性的应用

Spring Boot 中的幂等性实现,是确保接口安全性和数据一致性的关键。数据库唯一约束:简单场景,直接使用。Redis 分布式锁:高并发场景,提升性能。幂等字段校验:需要记录唯一请求的场景。幂等性设计不仅是接口安全的保障,更是系统稳定性的核心体现。

2024-12-25 09:31:25 457

原创 Java 调用 HTTP 接口的 7 种方式:全网最全指南

在开发过程中,调用 HTTP 接口是最常见的需求之一。本文将详细介绍 Java 中 7 种主流的调用 HTTP 接口的方式,包括每种工具的优缺点和完整代码实现。 是 Spring 提供的同步 HTTP 客户端,适用于传统项目。尽管从 Spring 5 开始被标记为过时,它仍然是许多开发者的首选。优缺点优点: 简单易用,适合快速开发。缺点: 已过时,不推荐用于新项目。2. 使用 WebClient 是 Spring 5 引入的现代化 HTTP 客户端,支持同步和异步调用。优缺点优点: 支

2024-11-26 15:39:27 3228

原创 Java 21 新特性详细教程

作为一个重要版本,Java 21 引入了多项语言增强和运行时改进,包含多个长期预览功能的正式发布(如虚拟线程),还推出了全新的功能(如字符串模板)。字符串模板提供了一种全新的字符串拼接方式,通过内嵌表达式动态生成字符串,类似于许多现代语言的模板字符串(如 JavaScript 的模板字符串)。虚拟线程是 Java 21 中正式发布的一项功能,旨在提供更轻量级的线程模型,可以在同一 JVM 上创建成千上万的线程。的增强,允许根据对象的类型或属性执行不同的操作。的核心成果,用于解决传统线程的高开销问题。

2024-11-19 09:11:15 1157

原创 Java 17 新特性详细教程

Java 17 提供了更强大的语言特性(如密封类、增强的 Switch 模式匹配),以及现代化的 API 和性能优化。Java 17 提供了许多语言特性和 API 改进,同时也移除了一些过时的功能,显著提高了语言表达能力和运行时性能。记录类是 Java 14 引入的一种特殊类,用于表示不可变数据对象。本文将详细介绍 Java 17 的新特性,配以丰富的示例代码,帮助你快速理解并掌握 Java 17 的使用。Java 17 引入了上下文终止处理器,增强了线程的生命周期管理。密封类是一种新特性,允许开发者。

2024-11-19 09:09:12 994

原创 Java 11 新特性详细教程

继承了 Java 8 和 Java 9 的特性,同时新增了许多实用功能。Java 11 提供了生产环境级别的稳定性和现代化编程功能,是现代 Java 开发的首选之一。本文将详细讲解 Java 11 的新特性、示例代码以及其实际应用场景,帮助读者全面掌握 Java 11。Java 11 支持在一个 Jar 文件中针对不同的 Java 版本提供不同的实现。Java 11 为 HTTP 客户端提供了新的 API,替代了旧的。类进行了增强,添加了许多实用方法,简化了常见的字符串操作。从 Java 11 开始,

2024-11-14 11:37:09 1743 2

原创 Java 8 新特性详细教程

Lambda 表达式是 Java 8 中引入的一种语法糖,用来替代匿名内部类,主要用于简化函数式接口的实现。通过 Lambda 表达式,代码可以更加简洁和优雅。

2024-11-14 11:35:37 1146

原创 Spring Boot实战:SSO和OAuth2.0

SSO(单点登录)是一种认证机制,它允许用户只需登录一次即可访问多个独立的应用系统,而不需要在每个系统上重复登录。SSO的核心是用户身份认证,即确定用户是谁,并在多个应用系统之间共享这一登录状态。OAuth 2.0 是一种授权协议,允许第三方应用在不暴露用户凭据的情况下,安全地访问用户的资源。OAuth 2.0 的核心是授权,即用户授权第三方应用访问其资源的权限,而不是直接进行用户认证。SSO主要解决用户认证问题,让用户在多个系统之间可以使用单一的登录状态,实现“登录一次,访问多处”的效果。

2024-11-05 16:30:34 2326

原创 Linux文件权限详解

Linux文件权限系统通过读、写、执行权限和三类用户的组合,提供了灵活的文件访问控制机制。通过chmodchown等命令,可以轻松地管理文件权限。同时,使用特殊权限(如SUID、SGID、Sticky Bit)可以增强系统的安全性和灵活性。了解和管理文件权限是Linux系统管理员和用户必须掌握的技能,特别是在多用户环境下,合理的权限设置可以有效保护系统的安全。

2024-10-25 09:51:11 1017

原创 SSL证书生成以及数据库配置SSL

使用日志查看数据库连接过程中的 SSL 连接信息。通过 SQL 查询验证数据库当前会话是否通过 SSL 连接。编写 Java 代码来捕获 SSL 会话的详细信息。使用网络抓包工具确认流量是否加密。

2024-10-25 09:49:17 2726

原创 ReentrantLock源码分析

通过 AQS 实现了可重入锁,并且支持公平锁和非公平锁两种模式。其核心逻辑主要通过Sync抽象类来管理,FairSync和分别实现了公平和非公平的锁获取机制。非公平锁:不考虑队列中的等待顺序,允许插队。公平锁:遵循先进先出的原则,保证锁的公平性。锁重入:线程可以多次获取同一把锁,并通过状态变量state记录锁的重入次数。通过深入理解的源码及其背后的AQS实现机制,我们可以更加清晰地掌握 Java 并发包中锁的实现原理。

2024-10-15 10:01:13 722

原创 AQS源码分析

(AQS)通过一个状态变量state和一个等待队列,提供了灵活的并发控制机制。无论是独占模式还是共享模式,线程都通过等待队列排队,竞争获取锁。当资源被释放时,等待队列中的线程依次被唤醒继续执行。AQS 通过模板方法模式将资源的具体获取与释放逻辑交给具体的同步器实现(如Semaphore等),而自身负责提供统一的线程管理、队列维护以及状态控制功能。这种设计使得 AQS 成为 Java 并发包中的基础同步工具,极大提高了锁的实现效率和灵活性。

2024-10-15 09:48:51 1003

原创 Nginx应用配置实战

通过上述步骤,你可以在 Nginx 中配置 HTTPS,并支持基于 STOMP 协议的 WebSocket。正确处理 WebSocket 的升级请求,确保 Nginx 代理能够支持 WebSocket 连接。配置 SSL 证书,以启用 HTTPS 和 WSS 加密连接。Spring Boot 的 WebSocket 端点配置,确保前端能够连接到正确的 WebSocket 服务。

2024-10-11 17:58:54 879

原创 基于STOMP 协议的 WebSocket 实现传输长字符串方案

通过这个完整的方案,你可以通过 STOMP 协议的 WebSocket 实现长字符串(超过 1MB)的稳定传输。前端分块传输:将大字符串分块传输,避免单次传输过大。心跳检测:通过前后端心跳配置,保持连接的活跃性。Tomcat 超时配置:确保 Tomcat 的连接超时时间大于心跳间隔时间。代理服务器配置:如果使用 NGINX,确保代理服务器允许长时间的 WebSocket 连接。性能优化:通过配置合适的线程池和资源来确保高并发和大消息处理。

2024-10-10 11:04:59 1124

原创 WebSocket 在 Spring Boot 中的高级应用指南

本文将详细介绍以下三种 WebSocket 的实现方式:1. 基于注解的 JSR 356 标准实现。2. 基于 Spring 的 `WebSocketHandler` 接口实现。3. 基于 STOMP 协议的实现。通过这些不同的方式,开发者能够灵活地实现实时通信,满足各种场景下的需求。

2024-09-27 16:42:56 1372

原创 深入理解 WebSocket:实时通信的利器

什么是 WebSocket?WebSocket 是一种网络通信协议,它允许服务器和客户端之间建立持久的双向通信通道,适用于高频率、低延迟的数据交换场景。在传统的 HTTP 通信中,每次请求都需要客户端发起并等待服务器响应,连接在请求结束后会关闭。这种模式在需要频繁交互的数据场景下效率低下。WebSocket 则通过一次连接握手后建立的持久连接,允许双向数据实时传输,极大地降低了通信延迟。1.1 WebSocket 与 HTTP 的区别特性 WebSocket HTTP连接模式 持久连接,支持双向通

2024-09-27 16:38:03 853

原创 深入理解 STOMP 协议:实时通信中的消息传输利器

● 协议扩展性有限:STOMP 的功能较为基础,虽然它在简单的消息传输场景中表现良好,但对于复杂的场景,如需要精准消息分发和多种 QoS 级别时,可能需要其他协议的支持(如 MQTT)。● 在线聊天应用:用户订阅某个聊天室的消息主题(如 /topic/chat/room1),然后通过 STOMP 发送消息到这个主题,所有订阅者都会即时收到消息。● 发布/订阅支持:STOMP 的内置发布/订阅模型使得消息的分发变得非常简单,开发者无需手动管理客户端的订阅和消息分发。

2024-09-27 16:36:50 1803

原创 JVM面试知识点手册

是 Java 语言的核心组件,负责将 Java 程序编译后的字节码(bytecode)转换为机器指令,并在目标机器上执行。JVM 提供了硬件和操作系统的抽象,使得 Java 程序具有跨平台的特性,即“一次编写,随处运行”(Write Once, Run Anywhere)。JVM 的核心作用字节码执行:JVM 负责执行 Java 编译器生成的字节码文件(.class 文件)。内存管理:JVM 提供自动的内存管理机制,通过垃圾回收(Garbage Collection, GC)回收无用对象,避免了内存泄漏。

2024-09-20 21:54:58 1316

原创 MYSQL面试知识点手册

MySQL是世界上最流行的开源关系型数据库管理系统之一,它以性能卓越、稳定可靠和易用性而闻名。MySQL 主要应用在 Web 开发、大型互联网公司、企业级应用等场景,且广泛用于构建高并发、高可用的数据驱动系统。MySQL 的发展历史MySQL 最早由瑞典公司 MySQL AB 开发,并于 1995 年首次发布。2008 年,MySQL 被 Sun Microsystems 收购,2010 年 Sun 又被 Oracle 收购,因此 MySQL 目前由 Oracle 维护和开发。

2024-09-20 21:50:11 1997

JUC面试知识点手册快速版

第一章:Java并发简介 1.1 什么是并发编程 1.2 Java中的并发编程模型 1.3 线程的生命周期 第二章:基础同步工具 2.1 synchronized关键字 2.2 volatile关键字 第三章:锁机制 3.1 ReentrantLock 3.2 ReadWriteLock 3.3 StampedLock 第四章:同步辅助工具 4.1 CountDownLatch 4.2 CyclicBarrier 4.3 Semaphore 4.4 Exchanger 第五章:原子类和无锁编程 5.1 AtomicInteger与AtomicLong 5.2 AtomicReference 第六章:线程池及其应用 6.1 ThreadPoolExecutor 6.2 ScheduledThreadPoolExecutor 第七章:Fork/Join框架 7.1 ForkJoinPool 等等

2024-09-04

空空如也

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

TA关注的人

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