SPRING JVM Shutdown Hook 的注册与行为分析

--- ### **1. JVM 的信号处理与 Spring 的联动** #### **(1)JVM 的响应** • **SIGTERM 信号的作用**:`kill -15` 是操作系统通知进程终止的“软终止”信号。JVM 接收到此信号后,会启动 **Shutdown Hook** 机制,依次执行所有注册的关闭钩子(如 Spring 的钩子)。 • **强制终止与优雅终止的区别**:`kill -9`(SIGKILL)会直接终止进程,不触发任何钩子;而 `kill -15` ...阅读全文

java技术圈 2025-03-26 00:15:19 dalang

如何保障Redis与数据库双写一致性

--- ### **1. 先更新数据库,再删除缓存(推荐方案)** #### **核心流程** 1. **更新数据库**:优先完成数据库的写入操作,确保数据持久化。 2. **删除缓存**:立即删除Redis中对应的缓存数据,使后续请求触发缓存回填。 #### **优点** • **减少不一致窗口期**:数据库更新成功后,缓存被删除,下次读请求会重新加载最新数据。 • **避免并发写冲突**:无缓存更新操作,降低因并发更新导致的数据错乱风险。 #### **潜在问题*...阅读全文

java技术圈 2025-03-25 19:58:23 dalang

Netty Boss EventLoopGroup 的多线程设置

--- ### **一、Boss EventLoopGroup 的多线程设置** 1. **默认配置与适用场景** • **单线程模式**:在大多数情况下,BossGroup 只需 **1 个线程**(即单个 `NioEventLoop`),即可高效处理连接请求。原因在于: ◦ 连接建立(Accept)是轻量级操作,单线程足以应对高并发连接。 ◦ 多线程会导致资源浪费,且无法提升连接处理效率(底层 `ServerSocketChannel` 仅...阅读全文

java技术圈 2025-03-25 18:17:58 dalang

Netty 的 ​Boss-Worker EventLoop 模型

Netty 的 **Boss-Worker EventLoop** 模型是其高性能网络通信框架的核心设计,结合了 Reactor 线程模型和异步非阻塞 I/O 机制。 --- ### **一、Boss EventLoopGroup 与 Worker EventLoopGroup** 1. **Boss EventLoopGroup** • **职责**:负责监听客户端的连接请求(Accept 事件),并将新建立的连接(`Channel`)分配给 Worker Event...阅读全文

java技术圈 2025-03-25 17:59:35 dalang

为什么Redis集群选择16384个槽位而非65536个槽位

关于Redis集群选择**16384个槽位**而非65536个槽位的原因,核心与**心跳数据包的空间占用**、**网络传输效率**和**实际应用场景**密切相关。 --- ### **1. 心跳数据包的槽位存储方式** Redis集群节点间通过**心跳包**定期交换节点配置信息,其中包含一个关键字段:`myslots`。该字段以**位图(bitmap)**形式表示当前节点负责的槽位。 • **位图存储原理**:每个槽位对应一个二进制位(bit),若该槽由节点负责,则对应位为1,否...阅读全文

java技术圈 2025-03-25 17:16:30 dalang

Netty无锁串行化设计和其Reactor模型

Netty 的**无锁串行化设计**和其**Reactor模型与非阻塞I/O的关系**是理解其高性能架构的核心。以下从设计原理、技术实现及概念区别三方面展开分析: --- ### 一、Netty 的无锁串行化设计 #### 1. **核心思想** Netty 的无锁串行化设计旨在通过**单线程内串行处理同一连接的所有I/O事件和业务逻辑**,避免多线程竞争锁导致的性能损耗。其核心逻辑包括: • **事件绑定到固定线程**:每个 `Channel` 从建立到销毁的整个生命周期都绑...阅读全文

java技术圈 2025-03-25 16:40:08 dalang

tomcat的nio1和nio2

Tomcat 的 NIO(即传统 NIO,通常称为 NIO1)和 NIO2(即异步 NIO)在底层对操作系统的依赖有所不同 --- ### **1. NIO1 的底层依赖** • **Linux 系统**: Tomcat 的 NIO1(使用 `Http11NioProtocol`)底层依赖 Java NIO 库,而 Java NIO 在 Linux 上默认通过 **epoll** 实现多路复用。这是因为 JDK 在 Linux 平台会自动选择 `epoll` 作为 `Se...阅读全文

java技术圈 2025-03-25 16:04:30 dalang

有了servlet filter为何spring又新增了interceptor

Servlet 的 Filter 和 Spring 的 Interceptor 虽然都用于请求拦截,但两者的设计目标、适用场景和功能特性有本质区别。Spring 引入 Interceptor 并非重复造轮子,而是为了弥补 Filter 在业务开发中的局限性。 --- ### **一、设计目标的差异** 1. **Filter(过滤器)** • **定位**:属于 Java Servlet 规范,是 Web 容器(如 Tomcat)级别的组件。 • **核心任...阅读全文

java技术圈 2025-03-25 15:59:05 dalang

MySQL 的 LATERAL 派生表

--- ### **一、MySQL 的 LATERAL 派生表(横向关联)** 1. **功能支持** • **版本要求**:从 **MySQL 8.0.14** 开始支持 `LATERAL` 关键字。 • **核心作用**:在 `FROM` 子句中的派生表(子查询)中,允许直接引用外层表的字段,实现类似“逐行关联”的效果。例如: ```sql SELECT t1.id, t2.* FROM t1, LATERA...阅读全文

java技术圈 2025-03-25 14:39:41 dalang

mysql rr隔离级别,用statement的binlog是安全的吗

在 MySQL 的可重复读(Repeatable Read, RR)隔离级别下,使用 **statement 格式的 binlog** 是安全的,但需要结合其锁机制和事务执行顺序来理解。 --- ### **1. Statement 格式的 Binlog 安全性依赖事务顺序** • **Statement 格式的特性**: statement 格式的 binlog 直接记录 SQL 语句原文,而非具体的数据变更(如 row 格式)。这要求 **事务在主库和从库上的执行顺序...阅读全文

java技术圈 2025-03-25 11:15:50 dalang

DeepSeek+SpringAI实战AI家庭医生应用

DeepSeek+SpringAI实战AI家庭医生应用基于DeepSeek与SpringAI构建智能家庭医生应用实战引言随着人工智能技术的快速发展,医疗健康领域正经历着前所未有的变革。“获课”本文将详细介绍如何利用DeepSeek大语言模型和SpringAI框架,itxt.top/14061/ 开发一款功能完善的AI家庭医生应用。该应用能够为用户提供24/7的医疗咨询服务,包括症状分析、健康建议、用药指导等基础医疗服务。一、技术选型与架构设计1.1 核心技术栈DeepSeek:作为核心AI引擎,...阅读全文

java技术圈 2025-03-25 09:54:21 xiao_wen123

mysql驱动表与被驱动表

--- ### **一、无索引场景下 Nested Loop Join 的局限性** 1. **无索引时的全表扫描问题** 当两张表均无索引时,Nested Loop Join 的内层循环需要对大表进行全表扫描,导致时间复杂度为 **O(n × m)**(n 和 m 分别为两表的行数)。此时,无论小表驱动大表还是大表驱动小表,总扫描行数均为两表行数的乘积,性能提升确实微乎其微。 • **示例**:若小表 1 万行、大表 100 万行,总扫描行数为 1 万 × 10...阅读全文

java技术圈 2025-03-24 21:42:36 dalang

mysql意向锁IX锁 IS锁

--- ### **一、意向锁的自动性与触发条件** 1. **意向锁的自动性** InnoDB 存储引擎会 **自动添加意向锁**,无需用户手动干预。但 **并非所有事务都会加意向锁**,只有在以下场景中触发: • **行级锁操作**:当事务需要给 **某一行数据加共享锁(S)或排他锁(X)** 时,InnoDB 会先自动在表级添加对应的 **意向共享锁(IS)或意向排他锁(IX)**。 • **示例**: ```sql --...阅读全文

java技术圈 2025-03-24 19:57:30 dalang

【完结20周】LLM应用开发平台特训营

【完结20周】LLM应用开发平台特训营 大语言模型(英语:Large Language Model,简称LLM)是一种基于深度学习的人工智能技术,也是自然语言处理的核心研究内容之一 [6]。其核心是使用大规模数据集对模型进行训练,从而使其能够生成自然语言文本或理解语言文本的含义。这些模型通过层叠的神经网络结构,学习并模拟人类语言的复杂规律,达到接近人类水平的文本生成能力。大语言模型采用与小模型类似的Transformer架构和预训练目标(如 Language Modeling),与小模...阅读全文

java技术圈 2025-03-24 17:25:25 woaidaqipaiqiu1 等

云主机网络测试方法

本文分享自天翼云开发者社区《云主机网络测试方法》,作者:高淑杰测试指标pps:表示通过 UDP 进行批量数据传输时的数据传输吞吐量,能反映网络极限转发能力。bps:表示通过 TCP 进行批量数据传输时的数据传输吞吐量,能反映网络极限带宽能力。使用netperf进行网络测试0 环境准备创建两台相同配置 ECS, 其中一台作为server,另一台作为client规格:s7.xlarge.2镜像:centos 8.21 工具安装分别在两台ECS上安装netperftar zxvf netperf-2....阅读全文

java技术圈 2025-03-24 15:28:22 Tianyiyun

弹性云主机mysql数据性能测试

本文分享自天翼云开发者社区《弹性云主机mysql数据性能测试》,作者:高淑杰0 准备工作创建两台 ECS 虚机,两台虚机在同一个 vpc 下:server:安装 mysqlclient:安装 sysbench1 mysql 安装1 .依赖安装 yum -y install libaio yum -y install net-tools 2. 安装mysql wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11....阅读全文

java技术圈 2025-03-24 14:47:44 Tianyiyun

C++百万并发网络通信引擎架构与实现

C++百万并发网络通信引擎架构与实现获课♥》jzit.top/14254/获取ZY↑↑方打开链接↑↑在探讨C++百万并发网络通信引擎架构与实现中的分布式与集群结合时,我们首先需要明确两者的概念和特点,进而分析它们在网络通信引擎中的结合方式及其优势。分布式与集群的基本概念分布式系统:分布式系统是由多个独立的计算机节点通过网络连接在一起,共同协作完成一个或多个任务的系统。这些节点可以分布在不同的地理位置,每个节点都拥有独立的处理能力,可以执行不同的任务。分布式系统具有高度的可扩展性、可靠性和容错性。...阅读全文

java技术圈 2025-03-23 23:03:23 dfdghhy

小滴课堂-新版Vue3.4+ElementPlus全家桶开发视频项目实战

小滴课堂-新版Vue3.4+ElementPlus全家桶开发视频项目实战获课♥》jzit.top/14257/获取ZY↑↑方打开链接↑↑玩转 Vue 3 的模板语法与 Attribute 绑定Vue 3 是一款现代化的前端框架,以其简洁的模板语法和强大的响应式系统著称。模板语法和 Attribute 绑定是 Vue 开发中的核心概念,掌握它们可以极大地提高开发效率。本文将深入探讨 Vue 3 的模板语法和 Attribute 绑定技巧,帮助你玩转 Vue 3!一、Vue 3 模板语法基础Vue ...阅读全文

java技术圈 2025-03-23 23:02:08 dfdghhy

好奇代码的三木-Javascript+Nodejs全栈前端全能课

好奇代码的三木-Javascript+Nodejs全栈前端全能课获课♥》jzit.top/14350/获取ZY↑↑方打开链接↑↑在 JavaScript + Node.js 全栈前端课程里,原型与原型对象是极为重要的概念,它们构成了 JavaScript 独特的继承和对象系统。下面是对这两个概念的详细总结:原型与原型对象的基本概念1. 原型(Prototype)原型是 JavaScript 实现继承的一种方式。每个对象都有一个内部属性[[Prototype]](在浏览器环境中可以通过__prot...阅读全文

java技术圈 2025-03-23 23:00:41 dfdghhy