
中间件
文章平均质量分 93
流华追梦
15年+ IT从业经验,互联网高级算法工程师、Java语言专家、.Net专家、博客专家、阿里云专家、优快云2023博客之星,优快云付费资源项目实践专家,谢谢关注!
展开
-
Tomcat 源码详解第六课 -- 启动过程:Catalina 的加载
通过前两篇文章,我们知道了 Tomcat 的类加载机制和整体的组件加载流程;我们也知道通过 Bootstrap 初始化的 catalinaClassLoader 加载了 Catalina,那么进而引入了一个问题就是 Catalina是如何加载的呢?加载了什么呢?先回顾下整个流程,和我们分析的阶段看下 Bootstrap 中 Load 的过程。原创 2025-04-08 07:30:00 · 436 阅读 · 0 评论 -
Tomcat 源码详解第五课 -- 启动过程:类加载机制详解
Java是一门面向对象的语言,而对象又必然依托于类。类要运行,必须首先被加载到内存。我们可以简单地把类分为几类:Java自带的核心类Java支持的可扩展类我们自己编写的类为什么要设计多个类加载器?如果所有的类都使用一个类加载器来加载,会出现什么问题呢?假如我们自己编写一个类,它的实现可能有一定的危险性或者隐藏的 bug。而我们知道 Java 自带的核心类里面也有,如果 JVM 启动的时候先行加载的是我们自己编写的,那么就有可能出现安全问题!原创 2025-04-02 07:30:00 · 671 阅读 · 0 评论 -
Tomcat 源码详解第四课 -- 启动过程:初始化和启动流程
很多人在看框架代码的时候会很难抓住重点的,而一开始了解整体流程会很大程度提升理解的效率。我们看下整体的初始化和启动的流程,在理解的时候可以直接和 Tomcat 架构设计中组件关联上。原创 2025-02-24 07:00:00 · 388 阅读 · 0 评论 -
Tomcat 源码详解第三课 -- 源码分析准备和分析入口
catalina.bat 最终执行了 Bootstrap 类中的 main 方法。我们可以通过设定不同的参数让 Tomcat 以不同的方式运行。在 Idea 中我们是可以选择 debug 等模式启动 tomcat 的,也可以为其配置参数,在 catalina.bat 中我们看到了启动Tomcat 背后的运作流程。原创 2025-01-16 07:30:00 · 1512 阅读 · 0 评论 -
Tomcat 源码详解第二课 -- 理解Tomcat架构设计
所谓 Servlet,其实就是 Sun 为了让 Java 能实现动态可交互的网页,从而进入 Web 编程领域而制定的一套标准!在互联网兴起之初,当时的 Sun 公司(后面被 Oracle 收购)已然看到了这次机遇,于是设计出了Applet 来对 Web 应用的支持。不过事实却并不是预期那么得好,Sun 悲催地发现 Applet 并没有给业界带来多大的影响。经过反思,Sun 就想既然机遇出现了,市场前景也非常不错,总不能白白放弃了呀,怎么办呢?于是又投入精力去搞一套规范出来,这时 Servlet 诞生了!原创 2024-12-04 07:30:00 · 1054 阅读 · 0 评论 -
Tomcat 源码详解第一课 -- 如何设计一个简单的 Web 容器
在学习 Tomcat 前,很多人先入为主的对它的认知是巨复杂的;所以第一步,在学习它之前,要打破这种观念,我们通过学习如何设计一个最基本的 Web 容器来看它需要考虑什么;进而在真正学习 Tomcat 时,多把重点放在它的顶层设计上,而不是某一块代码上,思路永远比具体实现重要的多。我们在学习一项技术时,需要学习是它的知识体系,而不是碎片化的知识点。在构建知识体系时,我们往往需要先全局的看完一个教程或者一本书,这是构建的基础。原创 2024-11-01 09:14:31 · 777 阅读 · 0 评论 -
四种策略让 MySQL 和 Redis 数据保持一致
先阐明一下 MySQL 和 Redis 的关系:MySQL 是关系型数据库,用来持久化数据,一定程度上保证数据的可靠性;Redis 是 K-V 缓存,用来提升数据访问的性能。关于如何保证 MySQL 和 Redis 中的数据一致(即缓存一致性问题),这是一个非常经典的问题。使用过缓存的人都应该知道,在实际应用场景中,要想实时保证缓存和数据库中的数据一样,很难做到。基本上都是尽可能让他们的数据在绝大部分时间内保持一致,并保证最终是一致的。原创 2024-05-15 07:30:00 · 609 阅读 · 0 评论 -
Redis 为什么要分16个库
在实际的项目中,Redis 常被用作缓存、分布式锁、消息队列等的解决方案。但是在搭建好Redis 服务后,Redis 默认创建了16个数据库(db0 - db15),而在 Redis 集群下只有一个 db0 数据库。1. Redis 实例默认创建了16个数据库,且不支持自定义命名,以 dbX 的方式命名(db0 - db15)。2. 默认数据库的数量可以在配置文件中修改。原创 2024-01-12 08:00:00 · 1194 阅读 · 0 评论 -
消息中间件 —— ActiveMQ 使用及原理详解
一开始消息中间件的厂商繁多,且各个厂商之间没有统一的规范,这就导致了各消息中间件非常难以整合协作,因此,后来陆续出现了如 JMS 和 AMQP 这样的消息队列规范,提供了统一的标准,而 ActiveMQ 就是完全遵循 JMS 规范开发的消息队列。原创 2024-01-04 09:11:34 · 2382 阅读 · 3 评论 -
分布式锁详解
什么是分布式锁?线程锁和进程锁仅能满足在单机 JVM 或者同一个操作系统下,才能有效。跨JVM 系统,无法满足。因此就产生了分布式锁,完成锁的工作。1. DB 操作性能较差,并且有锁表的风险。2. 非阻塞操作失败后,需要轮询,占用 cpu 资源。3. 长时间不 commit 或者长时间轮询,可能会占用较多连接资源。原创 2023-12-05 09:17:37 · 1228 阅读 · 0 评论 -
Redis 缓存失效 之 缓存穿透、缓存击穿、缓存雪崩及其解决方案
缓存穿透、缓存击穿和缓存雪崩都是常见的缓存问题,下面分别介绍它们的定义和解决方法:指的是恶意用户或攻击者通过请求不存在于缓存和后端存储中的数据来使得所有请求都落到后端存储上,导致系统瘫痪。解决方案通常包括使用布隆过滤器或者黑白名单等方式来过滤掉无效请求,以及在应用程序中加入缓存预热等机制。指的是在高并发访问下,某个热点数据失效后,大量请求同时涌入后端存储,导致后端存储负载增大、响应时间变慢,甚至瘫痪。原创 2023-12-04 10:51:47 · 1079 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)全面讲解
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好得多,缺点是有一定的误识别率和删除困难。原创 2023-12-01 11:03:39 · 1469 阅读 · 0 评论 -
中间件 - 分布式协调服务Zookeeper
Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、命名服务、分布式同步、组服务等。 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数原创 2023-09-19 11:51:40 · 431 阅读 · 1 评论