- 博客(100)
- 收藏
- 关注
原创 CompletableFuture
方法签名: 或 使用场景:需要“算出一个结果”的任务(查库、HTTP、计算等)(无返回值) 方法签名: 或 使用场景:只做副作用(写日志、发 MQ),不需要结果示例1.3 线程池选择1.3.1 不指定线程池(默认使用 默认使用 。适用场景:短小的 CPU 计算(执行快、不会阻塞线程)。风险:如果把阻塞型 IO(HTTP/DB/文件)丢进默认池,容易把公共池线程占满,拖慢所有同池任务。当你调用:它的源码里其实是:也就是说:默认线程池 = 这是一个全局共
2025-09-04 14:37:33
758
原创 Nginx
回答要点Nginx 是一个高性能Web 服务器,常用作反向代理、负载均衡、静态资源服务、限流。在 Java Spring Boot 项目中,Nginx 主要作用是:把用户请求转发到后端 Spring Boot(反向代理)。提供 Vue/React 打包后的静态页面。做 HTTPS 证书处理(终止 SSL,后端只收明文 HTTP)。做简单的限流、防刷。标准回答示例👉。
2025-08-29 11:30:51
794
原创 常见限流算法
把时间切成一格一格的窗口(如 1s 一格)。每格内最多放行 N 次,请求数超过 N 就拒绝。:当前窗口的计数器count,窗口大小W(如 1s),阈值N。(现在属于第几个窗口)。如果window_id变了,该窗口的count=0;count += 1;若count > N→,否则。:用当前时间戳整除窗口大小来定位窗口,窗口之间是“跳变”的。:实现最简单、读写最少。:窗口交界处可能出现“例如在窗口末尾瞬间打满 N 次,下个窗口开始又立刻打满 N 次,短时间内等效 2N。
2025-08-27 16:06:53
981
原创 Elasticsearch
使用.must(QueryBuilders.matchQuery("bio", "程序员")).build();类型方法/关键词新增或更新save(user)删除查询所有findAll()精确查询模糊匹配多字段匹配分页排序数值范围时间范围原生查询聚合分析判断索引存在创建索引。
2025-08-02 20:03:54
736
原创 Spring 事件机制
Component@OverrideSystem.out.println("监听到用户注册:" + event.getUsername());
2025-06-26 12:48:32
511
原创 Spring Boot 自动装配(自定义 Starter)
Bean@AutoConfiguration // 👈 Spring Boot 3.x 推荐用法,替代 @Configuration@Bean📌是 Spring Boot 3 新增的注解,用来标记自动配置类(等价于注册)。
2025-06-24 10:11:21
1273
原创 Spring Boot 项目初始化
是 Spring Boot 提供的一个函数式接口,声明如下:该接口只有一个方法,会在 Spring Boot容器启动完成后被自动调用。你可以将它理解为一种“钩子函数”,用于执行初始化逻辑。
2025-06-22 19:53:02
372
原创 Windows 中使用 Claude Code
WSL(Windows Subsystem for Linux)是微软提供的一种兼容层,允许在Windows 系统中运行完整的 Linux(如 Ubuntu)环境,就像在真实的 Linux 系统上一样。使用 WSL 后,可以在 Windows 上运行 npm、Python、Docker、Claude Code 等只支持 Linux 的工具。
2025-06-19 22:47:39
10296
4
原创 推送项目到GitHub
💡 SSH 一旦设置好,今后推送/拉取都不需要输账号密码,且不会受 HTTPS 网络限制影响。登录 GitHub → 右上角头像 →。第一次运行会提示输入。
2025-06-19 14:49:23
251
原创 Spring Boot 参数验证
这个依赖包含了 Hibernate Validator(JSR-380 规范的实现)和必要的 Spring 验证支持。- 必须大于等于指定值(字符串形式表示)- 必须小于等于指定值(字符串形式表示)- 集合/字符串/数组大小必须在范围内。- 级联验证,用于验证对象中的嵌套对象。- 数字必须大于等于指定值。- 数字必须小于等于指定值。- 必须是过去或现在的日期。- 必须是将来或现在的日期。- 值必须为 false。- 必须是有效的邮箱格式。- 值必须为 null。- 值必须为 true。
2025-05-12 21:03:05
662
原创 Spring Boot 中的重试机制
Retryable注解是 Spring Retry 模块提供的,用于自动重试可能会失败的方法。在微服务架构和分布式系统中,服务之间的调用可能会因为网络问题、服务繁忙等原因失败。使用@Retryable可以提高应用的稳定性和容错能力1。
2025-05-11 20:19:36
1176
原创 Java 设计模式
单例模式的定义是:简单说,就是一个类只new一次,后面都复用同一个对象。节省内存(避免反复创建同一对象)保持全局统一性(比如日志类、缓存管理器、数据库连接池)控制共享资源(保证线程安全)在Spring中:默认情况下,所有@Bean都是单例模式管理的。只要一个类被注册到Spring容器里(比如加了、、),Spring容器在启动的时候就创建一个实例,整个容器里共享这一份实例。调用代码:输出结果: 说明和是同一个实例。✏️手写示例 + (双重检查锁定)✅ 2. 工厂模式(Fa
2025-04-27 20:45:40
1200
原创 基于Reactive的Spring Security(Spring Webflux)
因为 Spring Cloud Gateway 基于 WebFlux/reactor-netty 实现,是一个典型的非阻塞、响应式的网关。:Servlet 容器下(Tomcat、Jetty等)的 Spring Boot Web 项目,或者传统的 Spring MVC 应用。(Reactive 模型,如 Spring Cloud Gateway 项目),就用 ServerHttpSecurity。配置中的一个重要部分,它允许你自定义当安全相关异常发生时(如认证失败、访问被拒绝等)的处理方式。
2025-04-15 17:27:57
1088
原创 Java后端序列化工具 Jackson 和 FastJSON
FastJSON 2.x 提供了。,但如果数据格式错误,会抛出。FastJSON 也可以解析。Jackson 还可以解析。Jackson 会抛出。
2025-03-12 15:33:03
594
原创 MySQL 性能优化
生产环境的数据库通常承载着高并发、大数据量的业务请求,因此在定位慢 SQL 时需要特别注意对系统性能的影响,避免因监控和分析操作导致数据库性能进一步下降。
2025-02-27 23:46:38
1286
原创 Java多线程
你可以通过自定义各种参数来精确控制线程池的行为,如核心线程数、最大线程数、线程空闲超时时间、任务队列的类型等。当线程池的任务队列已满且最大线程数已经达到上限时,线程池需要一种策略来处理新提交的任务。是 Java 并发包(JUC)中提供的一种更强大的线程管理方式,特别适用于需要获取线程执行结果的场景。是用于管理和调度线程的一种机制,能够有效地控制并发任务的执行。是 Java 线程池框架的核心接口,提供了常用的线程池管理方法。方法用于关闭线程池,调用此方法后线程池不再接受新的任务,但会等待已提交任务执行完成。
2025-02-25 18:01:48
998
原创 动态规划算法
状态定义是动态规划的基础,它决定了我们如何将一个问题分解为子问题,并通过子问题的解来推导出原问题的解。在动态规划中,状态通常通过一个数组(如。
2025-02-21 14:00:36
484
原创 Java中的分布式(概念说明)
分布式系统(Distributed System):由多台服务器(或节点)协同工作,对外提供一个整体服务。不同节点之间通过网络通信来协同处理请求或共享数据,相对于「单体应用」而言,可以带来更高的吞吐量可用性和灵活扩展能力。
2025-02-14 15:35:37
4427
3
原创 Spring 事务管理
有以下限制(同类内部调用失效、private 方法不生效、跨线程无效等)故在这些场景下需要手动控制事务。AOP(Aspect-Oriented Programming)本质是。Spring 提供了 7 种事务传播级别,默认是。记录不会插入数据库(因为事务回滚)。注解来管理事务,这种方式更简单易用。,在指定的连接点(方法调用)执行。Spring Boot 提供了。(开启事务、提交、回滚)。
2025-02-10 16:26:34
1024
原创 ThreadLocal
在多线程环境中,如果多条线程都要访问(读写)同一个全局变量,就会遇到并发、安全、数据一致性等问题。我们可能需要加锁、加 volatile 等,或者想办法把这个变量变成方法参数层层传递,十分繁琐。但有些场景,数据其实不需要被线程之间共享,而是“线程私有”的。当前线程处理的是“请求A”,里面存了“用户ID=1001”;另一个线程处理“请求B”,里面存了“用户ID=2002”;这两条线程对 “用户ID” 的值并没有交互或共享的必要,每个线程只关心“自己的用户ID”即可。如果我们希望快速地在。
2025-02-05 23:38:21
813
原创 NIO 和 Netty 在 Spring Boot 中的集成与使用
Netty 是一个基于 Java NIO 的异步事件驱动网络应用框架,专注于高性能和可扩展的网络通信应用开发。它封装了底层 NIO 的复杂性,使开发者无需直接处理。
2025-01-22 01:18:11
1722
原创 Spring boot框架下的RocketMQ消息中间件
Producer 是负责发送消息到 RocketMQ 的组件。它可以将消息发送到指定的 Topic。
2025-01-16 15:36:20
1182
1
原创 数据库主键生成策略
方法原理与特性优点缺点适用场景自增列依赖数据库自增特性简单、插入性能高、占用空间小不适合分布式、易预测、依赖单点单机或中小型系统UUID基于随机数/时间等生成 128 位标识分布式友好、无需中心化协调、难预测存储占用大、索引性能差、无序分布式环境、需要跨系统或难以预测的主键场景雪花算法分布式高效生成 64 位长整型 ID,含时间戳、节点 ID 等高并发、有序、全局唯一依赖时间、实现复杂、时钟回拨问题大规模分布式系统、高并发业务(如电商订单、日志追踪 ID 等)
2025-01-08 13:59:12
1543
原创 WebClient
WebClient是 Spring 5 引入的一个基于响应式编程模型的 HTTP 客户端。与传统的相比,WebClient 采用了Reactor库,支持非阻塞式(异步)调用,可充分利用多核 CPU 资源,提升高并发场景的吞吐量。它能够非常灵活地构造并发送 HTTP 请求(支持 GET、POST、PUT、DELETE、PATCH 等所有常见方法),并以流MonoFlux)的方式处理响应结果。默认情况下,在遇到 4xx/5xx 状态码时会抛出。
2025-01-06 22:14:01
3732
1
原创 Spring Boot 框架下的过滤器
destroy()通过@Component注解将过滤器注册为 Spring Bean,Spring Boot 会自动加载并将其添加到过滤器链中。@Component/*doFilter通过手动注册过滤器,可以指定 URL 匹配规则和执行顺序。/api/*setOrderSpring 提供了一个扩展类,它是对标准过滤器的增强,用于确保在一次请求中只执行一次过滤逻辑(防止重复过滤)。可以通过@Component或注册,方式与标准过滤器一致。
2025-01-06 20:02:21
1858
1
原创 RedissonClient
Redisson 是基于 Redis 的 Java 客户端,扩展了 Redis 的基础功能,提供了分布式锁、分布式集合、队列、信号量、限流器等高级功能。它不仅可以作为一个 Redis 客户端进行普通的 Redis 数据操作,还特别适用于分布式系统中需要高可用性、高并发控制和多线程支持的场景。
2024-12-23 17:24:53
2194
原创 IntelliJ IDEA中的语言级别版本与目标字节码版本配置(附上Java LTS JDK版本区别)
Java 版本的命名历史:1.x 与 xJava 1.8Java 8这并不是两个不同的版本,而是同一个版本的不同写法。官方名称里 JDK 8 的内部版本号是1.8.0_xxx,但对外统一称作 “Java 8”。Java 1.7Java 7,依此类推。之后 Oracle 为了简化版本号,从Java 9开始统一使用整数版本没有再继续使用“1.9”、“1.10”的叫法。所以1.8 与 18 并非同一个版本!1.8” 代表Java 8。18” 代表Java 18。
2024-12-17 15:27:27
8916
1
原创 有/无状态会话 与 Session 与 Spring Security
尽管默认情况下 Spring Security 使用 Session 来维持认证状态,但在某些场景下(如 RESTful API 或微服务架构),可能更倾向于无状态认证方式(例如基于 JWT)。在这种情况下,可以配置 Spring Security 使其不依赖于 HTTP Session,而是通过每个请求携带的 Token 来进行认证。这意味着一旦用户通过认证(例如通过表单登录),其认证状态会被保存到 Session 中,从而在后续的请求中无需重新认证。,但也可以自定义实现,比如无状态认证(详见后文)。
2024-12-12 15:03:58
1372
原创 调试模式下启用 Java 异常断点
是 Spring Boot 提供的一组开发工具,用于提升开发效率。它通常只在开发环境中使用。功能,用于在程序抛出特定异常类型时,自动暂停程序运行并定位异常抛出的代码位置。是 Spring Boot DevTools 提供的一个内部异常,用于实现。在调试模式下,IntelliJ IDEA 提供了。
2024-12-12 15:02:27
1047
原创 结合Spring Security的两种用户登陆认证以及授权方案
确保项目的 (Maven)或 (Gradle)中包含以下必要的依赖。这些依赖提供了 Spring Boot 的 Web、Security、模板引擎(如 Thymeleaf)、数据访问(如 JPA)等功能。Maven 示例:说明:创建一个配置类 ,配置 Spring Security 的过滤器链和认证管理器。通过在 中使用 方法,自动启用默认的 ,并配置 所需的 和 。关键配置说明:禁用 CSRF:授权规则: 表单登录配置: 登出配置: 会话管理: 3. 实现
2024-12-08 19:53:39
1261
原创 HttpServletRequest
是包下的一个接口,用于表示客户端发出的 HTTP 请求。在 Web 应用中,它提供了大量的方法来访问 HTTP 请求的各个组成部分,包括请求行、请求头、请求参数、请求体等。在 Spring MVC 中,被封装在中,并通过控制器方法参数注入(例如,)自动处理请求。但你也可以显式地注入以获取更多请求的详细信息。是一个接口,它代表了 HTTP 请求的各个部分,包括请求行、请求头、请求参数、请求体等信息。Spring MVC 简化了许多操作,通过注解如等,自动将请求参数映射到方法参数中,你不需要显式地访问。
2024-12-05 22:26:03
1115
原创 Spring Security集成JWT
JWT(JSON Web Token)是一种用于在不同系统之间安全地传递信息的无状态令牌。它通常用于 身份验证 和 授权,尤其在现代Web应用和API中非常常见。JWT是通过对传输的数据进行编码和签名来确保其完整性和安全性。JWT的特点:JWT由三个部分组成,每一部分都是用Base64Url编码的,并通过"."(点)连接起来,格式如下:(1) Header(头部)Header包含两部分内容:示例:这里,"alg" 表示签名算法(HMAC SHA256),"typ" 表示JWT的类型。Pa
2024-12-04 21:54:03
2502
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅