Java
文章平均质量分 85
我是唐青枫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java RabbitMQ 实战指南:从交换机、队列到可靠消息处理
RabbitMQ是一个基于AMQP协议的消息队列中间件,主要用于异步处理、系统解耦、流量削峰和任务分发。核心概念包括生产者、消费者、交换机、队列和路由机制。RabbitMQ支持多种交换机类型(Direct、Fanout、Topic等),满足不同消息路由需求。通过Docker可快速搭建RabbitMQ环境,Java客户端可通过原生API实现消息生产和消费。典型应用场景如订单系统拆分,将短信、邮件等非核心逻辑异步处理,提升系统响应速度和稳定性。原创 2026-07-07 09:23:31 · 108 阅读 · 0 评论 -
Java Maven 实战指南:从 POM、依赖管理到多模块构建
Maven简介与核心功能 Maven是Java项目标准化的构建和依赖管理工具,通过pom.xml配置文件实现: 统一项目目录结构 自动下载管理依赖 标准化构建流程(编译、测试、打包、发布) 支持多模块项目管理 核心机制: 坐标系统(groupId/artifactId/version)唯一标识构件 本地/远程仓库管理依赖 生命周期控制构建顺序 插件执行具体任务 典型使用场景: 开发时通过mvn compile编译 测试时通过mvn test运行测试 打包时通过mvn package生成jar/war 支持M原创 2026-07-06 11:29:54 · 191 阅读 · 0 评论 -
Java Future 与 CompletableFuture 实战指南:从异步结果到任务编排
本文介绍了Java中的Future和CompletableFuture异步编程工具。Future是Java 5引入的异步结果占位符,通过get()方法阻塞获取任务结果,支持超时和取消操作,但功能较为基础。CompletableFuture是Java 8增强的异步编程工具,实现了链式调用和任务编排功能,支持结果转换、异常处理、多任务组合等高级特性。两者的核心区别在于Future适合接收单个异步任务结果,而CompletableFuture更适合编排一组异步任务流程,提供了更灵活的异步编程范式。原创 2026-07-05 16:30:51 · 162 阅读 · 0 评论 -
Java 虚拟线程实战指南:从 Thread API 到 Spring Boot 高并发应用
Java 21引入了虚拟线程(Virtual Thread),这是Project Loom提供的轻量级线程实现。虚拟线程与传统平台线程不同,它不固定绑定操作系统线程,而是由JVM动态调度到少量平台线程上执行。当虚拟线程遇到I/O阻塞时,JVM会自动挂起并释放底层线程,提高并发处理能力。虚拟线程特别适合处理大量I/O密集型任务(如数据库访问、HTTP调用),能显著提升系统吞吐量,但对CPU密集型任务性能提升有限。创建方式包括Thread.startVirtualThread()、Thread.ofVirtua原创 2026-06-26 07:22:41 · 230 阅读 · 0 评论 -
Java Spring WebFlux 实战指南:用 Mono、Flux 和 WebClient 写响应式接口
摘要 Spring WebFlux 是 Spring 5 引入的响应式 Web 框架,采用非阻塞异步模型处理请求,适合高并发 I/O 场景。与传统的 Spring MVC 相比,WebFlux 基于 Reactive Streams,使用少量线程处理大量请求,特别适用于网关转发、流式接口和响应式数据访问。核心编程模型围绕 Mono(0/1个结果)和 Flux(0-N个结果)展开,提供丰富的操作符如 map、flatMap 处理异步数据流。典型应用场景包括高并发远程调用、SSE推送和 WebSocket,但不原创 2026-06-25 07:18:32 · 218 阅读 · 0 评论 -
Java JDBC 实战指南:从 Connection 到事务和连接池
本文介绍了JDBC(Java Database Connectivity)的基本概念及其在Java数据库编程中的核心作用。JDBC是Java访问关系型数据库的标准API,负责连接数据库、执行SQL、处理结果和控制事务。文章阐述了JDBC与常见框架(如MyBatis、JPA等)的关系,详细说明了核心接口(Connection、PreparedStatement、ResultSet等)的功能,并提供了MySQL驱动的Maven依赖配置。通过一个查询示例,展示了JDBC的标准使用流程,强调了使用PreparedS原创 2026-06-19 11:18:36 · 242 阅读 · 0 评论 -
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
Apache Tomcat 是一个轻量级的 Java Web 服务器和 Servlet 容器,主要用于运行 Java Web 应用,处理 HTTP 请求并调用 Servlet/Filter/Listener。它常与 Nginx 配合使用,Nginx 负责静态资源和反向代理,Tomcat 处理动态请求。Tomcat 9 适用于 Java 8 和老项目(使用 javax.servlet),而 Tomcat 10/11 适用于新项目(使用 jakarta.servlet),分别对应 Spring Boot 2 和原创 2026-06-18 14:43:27 · 257 阅读 · 0 评论 -
Java Flyway 实战指南:用 SQL 脚本管理数据库版本
Flyway是一个数据库迁移工具,通过SQL文件管理数据库变更,解决数据库结构随项目版本演进的问题。它适合需要SQL管理表结构、多环境数据库一致、自动执行变更等场景,常与ORM工具搭配使用。核心流程包括扫描脚本、检查历史表、执行未运行脚本并记录结果。Spring Boot项目中只需简单配置即可自动集成,推荐将版本化SQL脚本(如V1__create_table.sql)放在resources/db/migration目录下。Flyway通过历史表跟踪执行状态,避免重复运行,适用于建表、改表、初始化数据等操作原创 2026-06-17 06:51:30 · 250 阅读 · 0 评论 -
Java Liquibase 实战指南:让数据库变更像代码一样可追踪
Liquibase是一个数据库变更管理工具,主要用于跟踪和管理数据库结构演进,如创建表、添加字段、初始化数据等。它通过将变更记录在版本控制的文件中,确保不同环境的数据库结构一致,并支持变更追踪和回滚。Liquibase与ORM工具(如MyBatis、JPA)分工明确,前者管理表结构,后者处理业务数据操作。在Spring Boot项目中,Liquibase通过自动检查并执行未应用的变更(记录在DATABASECHANGELOG表中),结合合理的目录结构和配置(如主changelog文件组织版本变更),实现数据原创 2026-06-14 10:24:40 · 190 阅读 · 0 评论 -
Java Spring Data JPA 实战指南:Repository 查询、分页与实体映射
Spring Data JPA是Spring框架对JPA规范的封装,旨在简化数据库操作。它基于Hibernate等JPA实现,通过Repository接口提供CRUD、分页等功能,减少样板代码。在Spring Boot项目中,依赖spring-boot-starter-data-jpa即可使用,配合数据源配置实现ORM映射。核心优势在于实体驱动的开发模式,适合标准CRUD和简单查询场景。生产环境建议禁用自动DDL(ddl-auto: none),改用专业迁移工具管理表结构。原创 2026-06-10 07:36:34 · 210 阅读 · 0 评论 -
Java MyBatis 实战指南:XML 映射、动态 SQL 与数据访问层设计
MyBatis是一个以SQL为中心的Java持久层框架,它封装了JDBC重复代码(连接管理、参数绑定、结果映射等),同时保留了SQL控制权。核心价值在于开发者自定义SQL,框架处理参数绑定和结果映射。Spring Boot集成时,只需配置数据源和Mapper扫描路径,常用功能包括动态SQL、缓存和类型转换。相比全自动ORM,MyBatis更适合需要精细控制SQL的场景,通过Mapper接口与XML定义操作,简化数据库交互。原创 2026-06-09 09:37:08 · 217 阅读 · 0 评论 -
Java MyBatis-Plus 实战指南:用 BaseMapper、Wrapper 和分页写好数据层
MyBatis-Plus是一个MyBatis增强工具,主要用于简化单表CRUD操作,减少重复代码。它保留了MyBatis原生能力,同时提供通用Mapper、Wrapper条件构造器、分页插件等便捷功能。核心特性包括注解映射(@TableName等)、BaseMapper通用接口、LambdaQueryWrapper条件构建、逻辑删除和乐观锁支持。通过简单的配置和继承BaseMapper,开发者可以快速实现单表增删改查,而复杂SQL仍可通过XML实现。适用于后台管理系统等单表操作频繁的场景。原创 2026-06-08 07:25:04 · 254 阅读 · 0 评论 -
Java MyBatis-Flex 实战指南:从 BaseMapper 到 QueryWrapper 的轻量 ORM 用法
MyBatis-Flex 是一个基于 MyBatis 的增强框架,旨在简化单表 CRUD 操作,同时保留原生 SQL 的灵活性。它通过 @Table、@Id 等注解配置实体类,提供 BaseMapper 实现基础增删改查,并支持链式条件查询 QueryWrapper。对于复杂 SQL,仍可使用原生 MyBatis XML 或注解方式。主要特性包括减少重复代码、支持逻辑删除、分页查询等,适合需要平衡 SQL 控制与开发效率的项目。集成时需添加对应依赖,配置数据源,并通过 APT 生成表结构辅助类。原创 2026-06-03 07:15:38 · 190 阅读 · 0 评论 -
Java Optional 实战指南:优雅处理空值与链式转换
Java 8 引入的 Optional 类是一个容器对象,用于明确表示方法返回值可能为空的情况,让空值处理更清晰。它提供了多种方法优雅处理空值,如 ofNullable() 创建可能为空的 Optional,isPresent() 判断是否有值,orElse() 设置默认值,以及 ifPresent() 进行条件处理。Optional 能有效减少判空代码嵌套,防止 NullPointerException,并通过链式调用(如 map())简化取值和转换流程,使代码更简洁易读。原创 2026-06-02 22:12:17 · 256 阅读 · 0 评论 -
Java JdbcTemplate 实战指南:用 Spring 轻量完成数据库增删改查
Spring JdbcTemplate是Spring框架提供的轻量级数据库操作工具,简化了原生JDBC的繁琐流程。它将连接管理、资源释放和异常处理等固定操作封装,开发者只需关注SQL语句、参数绑定和结果映射。通过引入spring-boot-starter-jdbc依赖并配置数据源,即可自动注入JdbcTemplate实例。它支持增删改查、批量操作等常见功能,并提供RowMapper接口实现结果集到对象的转换。相比原生JDBC,JdbcTemplate显著减少了模板代码,提高了开发效率,是直接使用SQL又不想原创 2026-06-01 09:54:38 · 267 阅读 · 0 评论 -
Java 原生异步编程与Spring 异步编程 详解
Java异步编程是现代高性能应用开发的核心技术之一,它允许程序在执行耗时操作(如网络请求、文件IO)时不必阻塞主线程,从而提高系统吞吐量和响应性。// 核心线程数// 最大线程数// 队列容量// 空闲线程存活时间// 指定线程池return "线程池中的任务";}, pool);├─ 创建任务│ ├─ runAsync() -> 无返回值│ └─ supplyAsync() -> 有返回值├─ 处理结果│ ├─ thenApply() -> 转换。原创 2025-05-11 19:12:10 · 1114 阅读 · 0 评论 -
Java Spring 常用注解详解
Spring框架中提供了大量注解用于简化开发、提升代码可读性、实现依赖注入、事务管理、等功能。@Retention:注解生命周期(源码/编译期/运行时)@Target:注解使用范围(方法、字段、类等):是否生成Javadoc@Inherited:注解是否可被子类继承return "线程池中的任务";}, pool);原创 2025-05-10 12:09:12 · 1378 阅读 · 0 评论 -
Java Enum 枚举使用教程
Java枚举(enum)是Java 5引入的一种特殊类,用于表示一组固定的常量(如状态、类型等)。它结合了类型安全、代码可读性和面向对象特性,广泛应用于Java项目中(如等)SUCCESS, // 枚举实例(本质是 public static final)FAILURE,PENDING// SUCCESS// SUCCESS// 0// 遍历枚举SUCCESS(200, "成功"),FAILURE(500, "失败");// 200// 失败PLUS {},原创 2025-05-09 07:46:51 · 475 阅读 · 0 评论 -
Java lombok 使用教程
Lombok是Java的一个 编译器插件,用于简化Java中常见样板代码(如、构造函数、toString等)的编写,提高开发效率。原创 2025-05-07 07:36:14 · 509 阅读 · 0 评论 -
Java 泛型使用教程
Java泛型是JDK 5引入的一项特性,它提供了编译时类型安全检测机制,允许在编译时检测出非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型的好处:编译期检查类型安全避免强制类型转换(cast代码更通用,更易重用特性JavaC#类型安全✔️✔️灵活性❌(类型擦除限制)✔️(运行时保留泛型)泛型数组❌✔️基本类型支持❌(需包装)✔️泛型约束一般强大协变逆变复杂、通配符语法简洁、原生支持性能需装箱无装箱(对值类型更快)特性。原创 2025-04-21 07:25:09 · 805 阅读 · 0 评论 -
Java Streams 使用教程
Stream是Java 8引入的一个 函数式编程特性,可以让我们用声明式的方式操作集合(如等)。核心作用是:从集合中提取数据(流)对数据做中间操作(最后做终端操作(维度C# LINQ可读性简洁,但不支持 SQL 风格支持 SQL 风格,阅读更直观灵活性借助Collectors可以做很多操作LINQ本身功能更丰富多线程处理(粗粒度)PLINQ(细粒度)数据源支持Java 集合体系.NET 集合体系 + 数据库 IQueryable底层机制基于中间操作链和终结操作。原创 2025-04-20 17:30:06 · 674 阅读 · 0 评论 -
Java Lambda 表达式详解
Lambda表达式是Java 8引入的一种简洁的语法,主要用于 简化匿名内部类 的写法,特别适用于 函数式接口(使用使用Lambda// 8不是必须的,但加上后,编译器会强制检查该接口是否符合 函数式接口 规范(即只能有一个抽象方法)。原创 2025-04-09 05:59:43 · 955 阅读 · 0 评论 -
Java jakarta常用注解详解
它包括几个内置注释,用于验证输入并确保数据符合指定的规则。注释用于定义自定义列名或为实体的字段指定附加列属性(如可空、唯一、长度等))将根据底层数据库选择最合适的生成策略,如果没有提供策略,则这是默认策略。确保字段的长度(字符串、数组或集合)介于指定的最小长度和最大长度之间。当对象的属性本身是另一个具有约束的对象时,用法:将一个类标记为可嵌入,这意味着它可以嵌入到其他实体中。该注解用于定义主键值的生成策略,常见的策略有。),当数据库列的值自动增加时通常使用(例如,实体,这意味着它将被映射到数据库中的表。原创 2025-02-23 11:17:46 · 1399 阅读 · 0 评论 -
Java 现代化日期时间api使用教程
在Java中,处理日期和时间对于许多应用程序都是必不可少的。Java随着时间的推移而发展,随着Java 8的引入,引入了java.time包,为日期和时间操作提供了更现代、更全面的API。原创 2025-02-15 14:35:34 · 896 阅读 · 0 评论 -
Spring 的 ResponseEntity 包装器使用详解
在Spring中,是HTTP响应的包装器。它允许自定义响应的各个方面:HTTP 状态码响应主体HTTP 请求头使用允许完全控制HTTP响应,并且它通常用于服务中从控制器方法返回响应。原创 2025-02-10 21:13:25 · 778 阅读 · 0 评论 -
Java 注解使用教程
Java 1.5引入了注解,现在它在Java EE框架(如HibernateJersey和Spring)中被大量使用。Java注释是该语言的一个强大特性,用于向Java代码中添加元数据。它们不直接影响程序逻辑,但可以由工具、库或框架处理,以执行特定的任务(例如代码生成、验证或自定义处理)。先定义三个注解Retention;Target;Retention;原创 2025-02-06 22:09:17 · 1158 阅读 · 0 评论
分享