在Java中,关键字和保留字是两类具有特殊意义的标识符,它们被语言本身占用,不能作为变量名、方法名、类名等自定义标识符使用。理解它们的区别与用途,是掌握Java语法的第一步。 查看官网关键字和保留字: https://docs.oracle.com/javase/tutorial/java/nuts ...
前言 什么是MVC MVC英文是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计规范,本质上也是一种解耦。 Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。 Vie ...
1. 什么是注释? 注释(comment)。对Java程序中的代码进行文字性解释说明。不会被Java编译和运行。 2. Java注释 Java中的注释主要分为三类: 类型 语法 用途 单行注释 // 注释内容 对代码进行简短说明,编译时忽略 多行注释 /* 注释内容 */ 可跨行,用于较长的解释或临 ...
实现 是类对接口行为规范的 "兑现",核心作用是弥补单继承不足、定义行为标准,是接口多态的基础;泛型 参数化类型,编译时检查类型安全,消除强制转换,核心是类型参数(T/E 等),实现代码复用。 ...
一般初学者开发第一个Java程序,我们习惯称之为:HelloWorld。 1. Java程序的开发步骤 Java程序开发一般分为三步:编写、编译、运行。 将Java代码编写到以.java结尾的源文件中。 通过javac.exe命令对源文件(.java)进行编译,编译后在当前源文件所在目录会自动生成一 ...
大家好,我是R哥。 一周时间,Spring Boot 连发两个版本: 这版本速度也太快了吧,跟不上了,不过好在都是小版本更新,主要是一些 bug 修复和依赖升级,没什么大问题。 本次更新要点 Spring Boot 4.0.5 版本主要包含 17 个漏洞修复、文档改进和依赖升级,重点说说 Sprin ...
前言 Netty 是一个高性能、异步事件驱动的网络应用框架,广泛应用于 RPC、消息队列、游戏服务器等高并发场景。本文从零开始,带你掌握 Netty 的核心概念和实战技巧。 一、为什么选择 Netty? 传统 Java NIO 的痛点:API 复杂,学习曲线陡峭;需要手动管理 Selector、Ch ...
前言 在高并发场景下,同步阻塞是性能杀手。Java 8 引入的 CompletableFuture 彻底改变了异步编程的写法。 一、为什么需要 CompletableFuture? 传统 Future 的痛点: future.get() 会阻塞当前线程 无法链式组合多个异步任务 异常处理繁琐 二、基 ...
前言 Spring Cloud是Java微服务开发的事实标准,但很多开发者对它的核心组件还是一知半解。本文从零搭建一个完整的微服务项目,涵盖服务注册(Nacos)、网关(Spring Cloud Gateway)、负载均衡(LoadBalancer)三大核心组件。 一、项目架构 microservi ...
大家好,我是R哥。 Spring AI 1.1.3 正式发布了。。 除了 Spring AI 1.1.3,2.0.0 也来到了 M3 版本了,相信再过一阵子就要正式 GA 了,1.0.4 也发布了,大家可以根据自己的需要选择合适的版本。 说说主线版本 Spring AI 1.1.3 吧,这次一共带来 ...
前言 容器化部署已经成为现代Java应用的标准配置。本文用完整的实战案例,带你从零构建Spring Boot应用的Docker镜像,并实现生产级部署。 一、环境准备 Docker Desktop (Windows/Mac) 或 Docker Engine (Linux) Spring Boot 3. ...
UTC时间戳验证两个日期是否为同一天的核心原理在于:时间戳是绝对的时间点,而“天”是依赖于特定时区(如UTC)的人为划分区间。通过将两个绝对时间点转换到同一时区后,比较它们的年、月、日是否完全相同。 具体原理可分以下几步理解: 1. 时间戳的本质 Unix时间戳(通常指秒数或毫秒数)是从 1970- ...
前言 AI Agent是2026年最热门的技术方向之一。本文用LangChain4j带你从零开始构建一个Java智能体,实现对话、工具调用和记忆功能。 一、什么是AI Agent? AI Agent(智能体)是能够自主决策并执行任务的AI系统,核心能力: 理解意图:解析用户自然语言 规划任务:分解复 ...
开篇结论 加锁的对象是索引,加锁的基本单位是 next-key lock,它是由记录锁和间隙锁组合而成的,next-key lock 是左开右闭区间,而间隙锁是左开右开区间。 在只使用记录锁或者间隙锁就能避免幻读现象的场景下, next-key lock 就会退化成记录锁或间隙锁。 假设这个表,id ...
前言 线程池是Java并发编程的核心组件,也是面试必考题。本文从原理到实战,带你全面掌握线程池的7个关键点。 一、为什么需要线程池? 每次创建线程都有开销: 线程创建需要调用系统API,开销大 线程销毁也需要开销 大量线程会消耗内存 线程池解决问题: 线程复用,减少创建销毁开销 控制最大并发数 提供 ...
全局锁 flush tables with read lock 执行后,整个数据库就处于只读状态了,这时其他线程执行以下操作,都会被阻塞: 对数据的增删改操作,比如 insert、delete、update等语句; 对表结构的更改操作,比如 alter table、drop table 等语句。 全 ...
前言 Redis缓存是Java开发中最常用的技术之一,但缓存穿透、击穿、雪崩三大问题也是面试高频考题。本文结合实战代码,带你彻底搞懂这三大难题。 一、缓存穿透 问题描述 查询一个数据库和缓存中都不存在的key,每次请求都打到数据库,大量请求可能拖垃数据库。 解决方案 1. 缓存空对象 @Servic ...
索引的作用 说白了索引就是数据的目录,根据索引去查数据必然比在库中一行记录一行记录的查更快 索引分类 按数据结构分类 Mysql的数据是存储在磁盘中的,每次从磁盘中读取数据都需要进行一次IO。一个表的数据在磁盘上由于插入顺序的原因肯定不是顺序存放,如果按照表字段内容顺序查找,如果一个500万条数据的 ...
是的,Hutool 的 TimedCache 会在到期时自动清理缓存项,但它的清理机制是基于"惰性清理"和"定期清理"两种策略结合,而不是立即清理。 核心清理机制 1. 惰性清理(Lazy Eviction) TimedCache<String, Object> cache = new Tim ...
大家好,我是R哥。 Java 25 刚发布半年之久(Java 25 正式发布),很多人可能还没听说过,现在 Java 26 又来了,我真的人麻了啊。。。 需要注意的是,Java 26 并不是 LTS(长期支持版本),千万不要用在生产环境里,因为它许多特性还在预览阶段,可能会有不兼容的变动。 废话不多 ...