- 博客(114)
- 收藏
- 关注

原创 StandardThreadExecutor源码解读与使用(tomcat的线程池实现类)
StandardThreadExecutor 是 Apache Tomcat 中的一个线程池实现类,是 Tomcat 生命周期中的池化线程资源的封装。StandardThreadExecutor是为了更好地适应Tomcat容器中HTTP请求的处理而设计的。通过优先创建非核心线程来执行任务,避免了任务在等待队列中长时间积压,从而提升了服务器的响应速度。
2024-11-02 17:37:20
929
1

原创 ReentrantLock(可重入锁)源码解读与使用
ReentrantLock是一种独占式的可重入锁,位于JUC包下,是Lock接口的默认实现类。有三个特性:支持可重入,支持公平与非公平特性,提供堵塞锁和非阻塞锁两种获取方法(lock和trylock)其中内部锁的竞争是基于AQS实现的,当某一线程获取锁后,将state值+1,并记录下当前持有锁的线程,再有线程来获取锁时,判断这个线程与持有锁的线程是否是同一个线程,如果是,将state值再+1,这样就实现了锁的可重入。当线程释放锁时,将state值-1,当state值减为0时,表示当前线程彻底释放了锁,唤
2024-04-25 20:21:31
8833
52

原创 CyclicBarrier(循环屏障)源码解读与使用
CyclicBarrier可以让一组线程互相等待,直到最后一个线程也准备就绪后,它们才能继续运行。就好比几个朋友约好一起吃晚餐,必须等到所有人到齐后才能入座就餐。CyclicBarrier实现了这种"集体出发"的功能,每次所有线程就位后,它们可以执行一个预先指定的任务,然后继续向前推进。有趣的是,CyclicBarrier与CountDownLatch不同,它可以重复使用。这也从侧面体现了两者在设计理念上的差异。借鉴了AQS的精髓,CyclicBarrier内部通过ReentrantLock和Con
2024-04-23 22:00:48
7942
73

原创 CountDownLatch(倒计时器)源码解读与使用
在很多的面经中都看到过提问 CountDownLatch 的问题,正好我们最近也在梳理学习AQS(抽象队列同步器)、CAS操作等知识,而 CountDownLatch 又是JUC包下一个比较常见的同步工具类,我们今天就继续来学一下这个同步工具类!CountDownLatch 是一个多线程同步辅助类,它允许一个或多个线程等待一系列操作在其他线程中完成。这个机制类似于一场赛跑,选手们在起跑线准备,等待发令枪响后才能开始比赛。
2024-04-22 21:24:43
8169
58

原创 CAS机制(Compare And Swap)源码解读与三大问题
CAS(Compare And Swap)作为一种无锁编程技术,被广泛应用于Java的并发编程中。它通过利用CPU指令在操作数据时先比较内存值是否发生变化,如未变化则更新,否则重试循环直到成功为止,从而实现非阻塞的原子操作。CAS操作的优势在于避免了传统悲观锁导致的线程阻塞和切换开销,适用于读操作远多于写操作的应用场景。但它也存在着经典的ABA问题、无法保证多个共享变量的原子性以及在高并发写操作时自旋会导致CPU时钟周期浪费等缺陷。在JDK1.5之后,通过版本号机制来解决了ABA问题。对于长时间自旋
2024-04-21 20:26:05
8999
62

原创 利用AQS(AbstractQueuedSynchronizer)实现一个线程同步器
我们在上篇文章带领大家阅读了AQS的源码,理解了AQS的底层实现,AQS 为构建锁和同步器提供了一些通用功能的实现,今天我们就实践一下,基于AQS实现一个同步器,看看AQS如何帮助我们快速构建同步器。同步器是一种用于线程同步的工具,控制多个线程对共享资源的并发访问。如Semaphore信号量,CountDownLatch (倒计时器)、CyclicBarrier(循环屏障)都属于同步器。
2024-04-20 21:28:41
13705
67

原创 AQS(AbstractQueuedSynchronizer,队列同步器)源码解读
AQS 的全称为 AbstractQueuedSynchronizer ,翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。AQS为Java的并发包提供了强大的同步支持。通过内置的FIFO队列来完成资源获取线程的排队工作,并且利用一个被volatile关键字修饰的int类型的变量表示同步状态。AQS 为构建锁和同步器提供了一些通用功能的实现,许多同步类实现都依赖于它,如常用的ReentrantLock、Semaphore等。
2024-04-19 21:15:28
13787
48

原创 Semaphore(信号量)源码解读与使用
Semaphore 是一个在多线程环境中用于控制对共享资源的访问的同步器(synchronizer),它是 Java 5 中引入的 java.util.concurrent(JUC)包的一部分。Semaphore 维护了一个许可集,线程在执行前必须从 Semaphore 获取一个许可。如果没有许可可用,线程将阻塞等待,直到其他线程释放许可。可以用来限制数据库连接数、限制服务器可处理请求数等。
2024-04-17 20:17:25
13585
30

原创 Java多线程实战-从零手搓一个简易线程池(四)线程池生命周期状态流转实现
在前面几篇文章中,我们已经实现了线程池的核心功能:任务队列、执行逻辑以及线程管理。本次我们将继续扩展补充线程池的功能,为线程池添加生命周期管理。通过引入生命周期,我们能够更加灵活地管理和控制线程的创建、运行和销毁过程。可以更好地处理资源分配、任务调度和系统稳定性等方面的问题。
2024-04-09 21:19:28
14797
80

原创 Java多线程实战-从零手搓一个简易线程池(三)线程工厂,核心线程与非核心线程逻辑实现
在上一节我们实现了线程池内部的基本运转逻辑,池化了线程资源进行任务处理,细心的同学可以发现,我们上章没有划分核心线程与非核心线程的概念,在JDK官方的提供的线程池中,线程池中的线程从概念上分为核心线程和非核心线程,核心线程是线程池中长久存在的线程,默认不会被回收,而非核心线程在空闲时间超过设置的最大空闲时间时会被回收,当然,我们也可以通过设置一个属性来运行核心线程被回收。
2024-04-02 15:24:52
14703
47

原创 Java多线程实战-从零手搓一个简易线程池(二)线程池实现与拒绝策略接口定义
在前面的文章中,我们讲解了任务堵塞队列的实现,这篇文章会基于任务堵塞队列实现一个简易的线程池,在后续的文章中,还会继续对本章编写的线程池进行功能扩展和优化。
2024-03-27 14:44:09
244769
6

原创 Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列
开个新坑-手搓简易线程池。本系列文章将从零开始,一步步手工编码实现一个简单但功能完备的线程池。我们将逐步介绍线程池的各个核心组件,并分析它们的作用和实现思路。通过这个过程,我们可以更好地掌握多线程编程的技巧,并培养编码能力和系统性思维。
2024-03-25 20:22:10
250102
82
原创 GraphQL与REST在微服务接口设计中的对比分析与实践
本文对比分析了GraphQL与REST在微服务接口设计中的优缺点,并结合真实电商平台实战案例与代码示例,提供选型建议与性能验证,帮助开发者在项目中做出精准决策。
2025-07-16 16:00:43
539
原创 深入解析Kubernetes Pod安全策略与Admission Controller
本文深入探讨Kubernetes Pod安全策略与Admission Controller的原理与实践,涵盖安全背景、关键原理、源码解读、实战示例及优化建议,帮助开发者构建安全可靠的容器平台。
2025-07-16 13:01:14
477
原创 RocketMQ性能优化实战指南:原理与实践
全面解读RocketMQ在高并发场景下的性能优化实践,从网络、存储、刷盘策略到线程池、GC调优及监控方案,附生产级配置与代码示例。
2025-07-16 08:00:55
609
原创 Hystrix与Resilience4j在微服务熔断降级中的应用对比与实战
本文对比了Hystrix与Resilience4j在微服务熔断降级中的主要差异与应用场景,并通过实战示例验证了Resilience4j在性能与可扩展性方面的优势。建议新项目优先选型Resilience4j,同时对遗留项目保持Hystrix兼容,逐步平滑迁移。文章由优快云用户原创,转载请保留出处。
2025-07-15 13:01:56
230
原创 基于OAuth2与JWT的微服务API安全架构设计分享
本文基于OAuth2与JWT协议,深入解析微服务API安全架构设计,涵盖核心原理、关键源码、实战示例与优化建议,适用于有一定基础的后端开发者构建高效、无状态认证授权体系。
2025-07-15 08:00:57
315
原创 Kafka事务消息与Exactly-Once语义实战指南
本文结合生产环境实战经验,深入剖析Kafka事务API及Exactly-Once端到端保障策略,提供完整的代码示例与常见坑点解决方案,助力后端开发者快速实现高可靠消息投递。
2025-07-14 16:01:17
514
原创 Istio、Linkerd与Kuma服务网格方案对比分析与实践验证
本文对比分析了Istio、Linkerd与Kuma三种主流服务网格方案,从架构原理、功能特性、资源消耗、部署复杂度与性能表现等维度进行深入探讨,并通过实战示例在 Kubernetes 集群中验证效果,为微服务治理选型提供切实可行的参考。
2025-07-14 13:01:27
451
原创 Spring Cloud Config 与 Nacos 配置中心方案对比实战指南
本文深入对比了Spring Cloud Config与Nacos两种配置中心方案,从架构原理、优缺点、实战接入和最佳实践角度,帮助读者选择合适的配置管理解决方案。
2025-07-14 09:24:56
924
原创 大规模电商系统分库分表实战经验分享
结合实际大规模电商系统场景,介绍分库分表的选型、架构设计、Spring Boot与ShardingSphere集成、性能调优及常见坑解决方案,帮助开发者高效落地分库分表方案。
2025-07-13 18:46:38
972
原创 基于Redis Streams的实时消息处理实战经验分享
本文分享了基于Redis Streams实现高性能实时消息处理的生产环境实战经验,包括选型、代码示例、问题排查和优化建议。
2025-07-13 18:43:16
975
原创 MongoDB性能优化实战指南:原理、实践与案例
本文深入探讨MongoDB性能优化的原理及实践,通过真实生产案例,介绍索引优化、数据分片、读写分离等策略,并提供可运行示例代码,帮助后端开发者提升MongoDB性能。
2025-07-13 15:28:16
435
原创 微服务环境下的灰度发布与金丝雀发布实战经验分享
本文结合真实生产环境,分享在微服务架构中实施灰度发布与金丝雀发布的实战经验,涵盖业务场景、技术选型、实现方案、常见问题及解决方案,以及最佳实践建议,帮助后端开发者在复杂环境下平滑实现线上版本升级。
2025-07-12 20:39:21
453
原创 Spark计算性能优化实战指南
本文结合生产环境10TB数据处理场景,系统分享Spark计算性能优化实战经验,从技术选型、参数调优到数据倾斜处理与资源管理,提供可落地的代码示例和配置建议,帮助后端开发者提升Spark作业性能。
2025-07-12 16:27:53
366
原创 Spring Security 安全认证深度解析与实战指南
本文深入解析Spring Security的核心原理及其实战应用,从基础配置到源码剖析,再到安全性能优化,为后端开发者提供一份切实可行的实践指南。
2025-07-12 16:07:23
254
原创 ELK日志分析实战指南:生产环境部署与优化
本文分享了ELK在生产环境中的部署、日志采集、索引管理以及性能优化实践,提供完整配置与示例,帮助开发运维团队构建高效可靠的日志分析平台。
2025-07-12 13:23:19
371
原创 Kubernetes自动扩缩容方案对比与实践指南
本文从多种 Kubernetes 自动扩缩容解决方案入手,对 HPA、VPA、Cluster Autoscaler、KEDA 等方案进行对比分析,并结合真实生产环境案例,给出选型建议与最佳实践。
2025-07-12 13:21:48
621
原创 大规模集群下 Prometheus 监控架构实战经验分享
本文结合真实生产环境,深入分享在大规模集群中构建和优化 Prometheus 监控架构的实战经验,包括高可用设计、服务发现、数据存储、告警方案与性能调优,提供完整代码示例与最佳实践。
2025-07-11 09:38:45
430
原创 Docker镜像构建与缓存优化实战指南
本文从实际业务场景出发,分享Docker镜像构建与缓存优化的实战经验和最佳实践,深入讲解构建流程、缓存策略与常见问题排查,助力提升镜像构建速度和稳定性。
2025-07-11 09:34:54
409
原创 缓存穿透与击穿多方案对比与实践指南
本文深入对比缓存穿透与缓存击穿的多种解决方案,结合生产环境实战案例,分析各方案优缺点并给出选型建议与最佳实践,帮助后端开发者有效提升系统性能和稳定性。
2025-07-10 21:10:25
531
原创 生产环境CI/CD流水线构建与优化实践指南
本文结合真实生产环境场景,分享从项目初始化、工具选型、流水线架构设计,到并行构建、缓存策略、蓝绿/金丝雀发布等优化实践,着重实战经验和踩坑总结,帮助读者快速打造高效稳定的CI/CD流水线。
2025-07-10 20:52:39
903
原创 Spring Boot微服务中集成gRPC实践经验分享
本文分享了在生产环境中Spring Boot微服务集成gRPC的实践经验,包括场景背景、技术选型、实现方案、踩坑与解决方案及最佳实践,帮助开发者快速上手并提升性能和可维护性。
2025-07-09 17:34:53
792
原创 Spring WebFlux 响应式编程原理与实战指南
本篇文章深入解析了Spring WebFlux的响应式编程原理,结合真实项目场景提供完整的代码示例与性能优化建议,帮助后端开发者快速上手并掌握高并发下的响应式架构设计。
2025-07-09 15:17:04
384
原创 Java内存模型在高并发场景中的应用与优化实践
本文深入剖析Java内存模型(JMM)在高并发场景下的原理与应用,结合关键源码和实际示例,分享实战中的优化策略与最佳实践,帮助开发者提升多线程性能与稳定性。
2025-07-08 16:54:32
703
原创 Kubernetes Operator开发实战指南
本文基于生产环境实际场景,深入分享 Kubernetes Operator 开发全过程,从需求背景、技术选型、代码实现到常见问题排查,帮助开发者快速上手并构建自主可控的应用运维流程。
2025-07-08 14:47:56
784
原创 RocketMQ死信队列问题排查与实战解决方案
本文深入剖析RocketMQ死信队列常见问题,从现象描述、定位流程、根因分析到实战解决与预防措施,全方位提供可运行的代码示例与生产环境优化建议,帮助后端开发者高效排查与应用死信队列。
2025-07-07 15:52:42
743
原创 PostgreSQL性能优化实践指南:从原理到实战
本文深入解析PostgreSQL数据库性能优化的关键原理和实践方法,从系统架构、查询执行引擎、索引策略、配置调优等方面展开,结合实际场景和示例讲解核心配置及SQL优化技巧,提供可操作的调优建议与最佳实践,帮助有一定数据库基础的后端开发者在生产环境中实现高性能、稳定可靠的PostgreSQL服务。
2025-07-07 15:50:08
898
原创 MySQL慢查询优化实战指南
本文从真实生产场景出发,结合慢查询日志、EXPLAIN分析、索引优化、SQL重写、分区分表等技术手段,深入分享MySQL慢查询优化的实战经验与最佳实践,帮助开发者在高并发环境中有效提升数据库性能。
2025-07-06 16:00:43
598
原创 Redis+Caffeine双层缓存策略对比与实践指南
高并发压力:在电商、社交和金融等场景,流量暴增时,后端需要稳定快速地响应请求。数据库直接读写容易成为瓶颈。远程缓存瓶颈:Redis作为分布式缓存,虽然具备高吞吐,但网络IO和单实例内存有限,可能产生延迟抖动或雪崩风险。本地缓存局限:Caffeine、Guava等本地缓存访问速度极快,但只存在于单节点,无法实现多实例共享,且容易造成缓存不一致。双层缓存价值:结合两者优点,本地拦截大部分热点请求,Redis负责跨实例共享和持久化,形成本地—远程的二级缓存架构,平衡性能与一致性。双层缓存架构。
2025-07-06 15:58:29
1368
繁体简体字幕转换工具1
2024-02-11
Snipaste - 高效桌面截图与贴图神器(类似QQ截图)
2024-02-07
Gif123 屏幕Gif录制工具 -windows
2024-02-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人