- 博客(101)
- 收藏
- 关注
原创 Nginx 详解:高性能 Web 服务器与反向代理
Nginx是一款高性能的 Web 服务器和反向代理服务器。Nginx 是站在最前面的流量入口。
2026-01-28 15:04:07
549
原创 Nacos 详解:注册中心与配置中心
Nacos是阿里巴巴开源的一款服务发现与配置管理平台。Nacos 是集服务注册中心和配置中心于一体的微服务基础组件。Nacos 是微服务架构中的基础设施组件,用于解决服务发现和配置管理问题。
2026-01-28 14:59:06
619
原创 Tomcat 入门与核心原理
Tomcat是一个轻量级的 Java Web 容器,由 Apache 基金会维护。Tomcat 是用来运行 Java Web 应用的服务器。它实现了等 Java Web 规范提供 HTTP 请求的接收与处理能力Tomcat 是 Java Web 应用的运行基础,负责接收请求并驱动整个 Web 请求流程。
2026-01-27 16:31:16
765
原创 Git 入门与常用操作总结
Git是一个分布式版本控制系统,用于管理代码的历史版本。Git 用来记录代码的每一次变化,并支持多人协作开发。分支是从主线分出来的一条独立开发线路。在不影响主分支的情况下开发新功能。
2026-01-27 16:23:35
357
原创 什么是 Spring Cloud?
Spring Cloud 通过注册中心、配置中心、网关、负载均衡、熔断限流等组件,构建完整的微服务治理体系。Spring Cloud 是一套为微服务架构提供完整治理能力的生态体系,它解决的是分布式系统中的共性问题。
2026-01-27 16:06:43
976
原创 什么是微服务?
微服务(Microservices)是一种软件架构风格,它将一个复杂的应用拆分为多个小而独立的服务。只关注一个业务能力独立开发、独立部署通过网络(通常是 HTTP / RPC)进行通信微服务就是将系统按业务能力拆分成多个可独立运行的服务。微服务是一种以业务为中心、强调服务自治和独立部署的软件架构风格。
2026-01-27 15:27:25
835
原创 如何自定义一个 Spring Boot Starter?
在 my-spring-boot-autoconfigure 模块中创建自动配置类,一般放在 autoconfigure 包下。配置属性类用于读取 application.yml 或 application.properties 中的配置。该类不需要任何 Spring 注解,由自动配置类负责注册。目录下创建文件:spring.factories。创建一个简单的服务类,用于提供具体业务逻辑。无需任何额外配置,即可正常使用。因此我们创建一个名为。
2026-01-27 15:20:02
655
原创 Spring Boot 启动原理深度解析
Spring Boot 通过 SpringApplication.run() 创建并刷新 Spring 容器,加载自动配置并启动内嵌服务器,最终完成应用启动。
2026-01-26 18:15:43
759
1
原创 Spring Boot 自动装配原理深度解析
自动装配(Auto Configuration)Spring Boot 根据当前项目的依赖、环境和配置,自动为应用配置合适的 Spring 组件。“你引什么依赖,我就帮你配什么 Bean。Spring Boot 通过 @EnableAutoConfiguration 加载自动配置类,并借助条件注解按需向容器中注册 Bean。
2026-01-26 17:22:31
987
1
原创 Spring Boot 项目搭建过程
编写含 @SpringBootApplication 注解的主类,通过 SpringApplication.run() 方法启动 Spring Boot 应用,该注解自动开启组件扫描和自动配置。在 pom.xml 中引入 spring-boot-starter-parent 作为父 POM,统一管理 Spring Boot 及相关组件版本,简化依赖配置。引入 spring-boot-starter-web 依赖,自动集成 Spring MVC、嵌入式 Tomcat 等 Web 开发核心组件。
2026-01-26 17:07:02
380
原创 Spring MVC Restful 风格的接口流程是什么样的呢?
相应的,对于带有 @RequestBody 注解的方法参数,它也会用这个转换器将请求体中的 JSON 数据反序列化成 Java 对象。当在一个类上使用 @RestController 时,它会告诉 Spring 这个类中所有方法的返回值都应该被直接写入 HTTP 响应体中,而不再被解析为视图。当 Spring 检测到 @ResponseBody 注解时,它会使用 HttpMessageConverter 来将 Controller 方法返回的 Java 对象序列化成指定的格式,如 JSON。
2026-01-25 16:47:30
255
1
原创 Spring MVC 核心原理解析:从请求到响应到底发生了什么?
Spring MVC 是 Spring 提供的一个基于 MVC 模式的 Web 框架,用于构建 Web 应用和 REST 接口。一个 Servlet 处理大量逻辑请求分发、参数解析、业务处理耦合严重可维护性差、扩展成本高将 Web 请求处理过程进行职责拆分,让每一部分只做一件事。前端控制器统一调度职责拆分,组件协作高度可扩展的架构设计这也是它能够长期成为 Java Web 主流方案的原因。
2026-01-25 16:18:50
945
原创 Spring 事务机制详解:原理、传播行为与失效场景
子事务回滚不等于父事务回滚代理对象 + AOP 拦截 + 异常控制Spring 事务,本质是基于 AOP 的方法级事务管理机制。
2026-01-24 19:18:01
1049
原创 Spring MVC 四种核心传参形式详解
路径参数是 URL 路径本身的一部分,通常用于表示某个具体资源。其中的 1,就是一个典型的路径参数。请求参数通常以 key=value 的形式出现,存在于 URL 查询串或表单数据中。GET /users?请求体参数来源于 HTTP 请求体,通常是 JSON 格式,前后端分离项目中非常常见。"age": 18对象参数并不是单独的一种数据来源,而是Spring MVC 将请求参数自动绑定为 Java 对象的结果。类型参数来源典型注解常见场景路径参数URL 路径资源定位请求参数。
2026-01-24 17:06:27
728
原创 Spring 模块结构全景解析:你用的 Spring 到底包含了什么?
很多时候,我们是通过在使用 Spring,而忽略了它背后清晰、严谨的模块划分。构建正确的整体认知快速定位问题所在模块更深入理解 Spring 的设计思想Spring 并不是一个框架,而是一组围绕 IoC 容器构建的模块化解决方案。
2026-01-23 19:39:53
953
原创 Spring 核心原理解析:它到底解决了什么问题?
目录一、如果没有 Spring,Java Web 会遇到什么问题?二、Spring 的第一个核心思想:IoC(控制反转)三、为什么 Spring 一定要有“容器”?四、Bean 为什么要有完整的生命周期?五、AOP 并不是“附加功能”,而是必然产物六、Spring AOP 的本质是什么?七、Spring 在 Java Web 中扮演什么角色?八、Spring Boot 又做了什么?九、总结回答往往会变成一堆名词:IoC、AOP、Bean、自动装配……词都对,但逻辑是散的。先看一个最普通的业务场景:
2026-01-23 15:56:16
949
原创 Spring 的装配顺序详解(配置 → 扫描 → 注入 → 初始化)
Spring 装配顺序 = Spring 容器启动并准备可用 Bean 的整体流程装配关注的是“Bean 如何被放进容器并建立关系”生命周期关注的是“单个 Bean 从生到死”Spring 的装配顺序是:启动容器 → 加载配置 → 扫描组件 → 注册 BeanDefinition → 实例化 Bean → 依赖注入 → 初始化 → AOP 代理 → 容器就绪。Spring 装配顺序的本质,是容器围绕 BeanDefinition 展开的一次“建模 → 实例 → 代理”的过程。
2026-01-22 18:45:31
805
原创 Bean 的生命周期详解
Bean 的生命周期一个 Bean 从被 Spring 容器创建,到初始化,再到销毁的完整过程。生命周期由Spring 容器统一管理,而不是由开发者手动控制。1. AOP 在生命周期哪个阶段生效?BeanPostProcessor 的 postProcessAfterInitialization 阶段2. 为什么不推荐在构造器中做初始化?因为此时依赖尚未注入完成3. 单例 Bean 和原型 Bean 生命周期区别?类型销毁阶段Singleton容器关闭时Prototype。
2026-01-22 18:35:00
1073
原创 AOP(面向切面编程)详解:解耦横切关注点
AOP(Aspect Oriented Programming,面向切面编程)在不修改原有业务代码的前提下,对程序功能进行统一增强。@Aspect@ComponentSystem.out.println("方法执行前");AOP 是一种通过“代理 + 切面”实现的横切增强机制,是 Spring 的灵魂之一。
2026-01-22 13:35:45
363
原创 IoC(控制反转)详解:Spring 的核心思想
IoC(Inversion of Control,控制反转)是一种设计思想将对象的创建和依赖关系的维护,从程序代码中交给容器来完成。在传统开发中,对象的控制权掌握在程序员手中;而在 IoC 模式下,这个控制权被“反转”给了容器。IoC 是一种“把对象控制权交给容器”的设计思想,是 Spring 的基石。
2026-01-22 13:29:53
488
原创 一文搞懂 Filter、Listener、Interceptor 的区别与使用场景
属于Servlet 层作用范围广与 Spring无关无法获取 Controller 方法或注解信息不参与请求拦截关注生命周期常用于系统级初始化属于Spring MVC只作用于 Controller可获取方法、注解、参数适合细粒度权限控制对比项FilterListener所属规范ServletServletSpring MVC是否拦截请求是否是作用范围所有请求生命周期Controller可获取方法信息否否是执行顺序最外层无Filter 之后常见用途。
2026-01-22 13:21:50
679
原创 Elasticsearch 入门详解:核心概念与倒排索引原理
Elasticsearch 是一个开源的、分布式的、基于 RESTful API 的搜索和分析引擎。它建立在搜索引擎库之上,提供了全文搜索、结构化搜索、分析以及三者结合的能力。数据被分片并分布在多个节点上,支持故障转移和扩展。数据从被索引到可搜索只有轻微的延迟(通常为 1 秒)。使用标准的 HTTP 方法(GET, POST, PUT, DELETE)进行所有操作,交互非常简单。存储的是复杂的结构化数据,序列化为 JSON 格式。无需预先定义数据结构(Schema),可以自动推断数据类型。
2026-01-20 15:17:16
522
原创 Docker 新手入门指南:概念、流程与 Dockerfile 示例
Dockerfile 是一个创建镜像所有命令的文本文件,包含了一条条指令和说明, 每条指令构建一层,,通过 docker build 命令,根据 Dockerfile 的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建。有了 Dockerfile,,就可以制定自己的docker镜像规则,只需要在 Dockerfile 上添加或者修改指令,,就可生成 docker 镜像。# 1. 构建阶段# 使用 Maven 3.6.3 和 JDK 8 的镜像来构建 Java 项目# 2. 设置工作目录。
2026-01-20 15:15:18
416
原创 重写和重载的区别
摘要: 重载和重写是Java中方法处理的两种重要机制。重载发生在同一类中,方法名相同但参数列表不同,在编译时确定调用哪个方法;重写发生在父子类间,子类重写父类方法时需保持方法签名一致,但可修改内部实现,在运行时动态绑定。重写需遵循"两同两小一大"原则:方法名和参数列表相同,返回值类型和异常范围不大于父类,访问权限不小于父类。两者的核心区别在于作用范围不同(同类/父子类)、参数要求不同(必须不同/必须相同)以及绑定时期不同(编译时/运行时)。
2025-08-18 10:22:02
352
原创 用 CountDownLatch 优雅控制 100 个线程
本文介绍了使用CountDownLatch实现100个线程统一启动和同步完成的方案。通过两个CountDownLatch分别控制开始信号(startSignal)和完成状态(doneSignal),实现所有线程准备就绪后同时启动,主线程等待所有工作线程完成的效果。该方案无需复杂锁机制,通过简单的await()和countDown()调用即可实现线程同步,具有实现简单、可靠性高、性能优越的特点,特别适合并发测试、批量任务处理等需要"统一启动、全部等待"的场景。
2025-07-31 18:13:48
278
原创 ReentrantLock + Condition 交替打印ABC
本文展示了使用Java多线程实现ABC交替打印的解决方案。通过创建一个Printer类,利用ReentrantLock和Condition条件变量控制三个线程的同步执行。每个线程(A、B、C)分别对应一个Condition,当state变量的值不匹配当前线程的序号时,线程会进入等待状态。每次打印完成后,state递增并唤醒下一个线程,形成严格的ABCABC...交替打印顺序。该方案确保了三个线程能够协同工作,按照指定顺序各打印10次字母,最终输出10组ABC序列。
2025-07-31 18:09:47
325
原创 银行家算法
银行家算法是一种经典的死锁避免算法,通过预先判断资源分配的安全性来确保系统处于"安全状态"。其核心数据结构包括可用资源向量、最大需求矩阵、已分配矩阵和需求矩阵。算法执行分为四个步骤:请求合法性检查、模拟资源分配、安全状态检查和实际分配决策。该算法能有效避免死锁但存在计算开销大、需预知最大资源需求等局限性,适用于资源固定的场景,在操作系统资源管理中具有重要参考价值。
2025-07-31 18:02:05
1121
原创 深入理解 BIO、NIO、AIO
I/O模型对比:同步与异步、阻塞与非阻塞 摘要:本文对比了三种主要的I/O模型。BIO(阻塞I/O)采用同步阻塞方式,实现简单但资源消耗大;NIO(非阻塞I/O)通过多路复用实现同步非阻塞,提高了并发能力;AIO(异步I/O)采用异步非阻塞方式,通过回调机制实现最高效的资源利用。三种模型在编程复杂度、资源消耗和适用场景上各有特点,需要根据实际需求选择。同步/异步关注调用方式,阻塞/非阻塞关注等待状态,理解这些概念对开发高性能应用至关重要。
2025-07-25 16:26:19
546
原创 Dubbo的认识
本文介绍了分布式系统中Dubbo框架和RPC的核心概念。主要内容包括:1)Dubbo作为高性能Java RPC框架,具备远程调用、负载均衡和服务注册三大能力,适用于SOA架构;2)Dubbo架构包含服务提供者、消费者、注册中心等组件,支持多种负载均衡策略;3)RPC原理详解了远程调用的完整流程;4)分布式系统通过服务拆分提升性能;5)序列化与反序列化在对象传输中的作用。文章全面解析了分布式系统开发的关键技术点。
2025-07-24 17:52:33
737
原创 计算机网络
本文摘要: 本文系统介绍了计算机网络的核心协议与技术。首先分析了OSI与TCP/IP各层结构及功能,重点阐述了传输层的TCP与UDP协议。详细讲解了TCP的三次握手建立连接与四次挥手断开连接机制,以及TCP如何通过滑动窗口、流量控制、拥塞控制等实现可靠传输。此外,还介绍了HTTP状态码分类、Cookie与Session的区别、HTTP1.0与1.1的改进、URI与URL的概念,以及HTTP与HTTPS在安全性和资源消耗方面的差异。这些内容涵盖了计算机网络协议栈的关键技术要点。
2025-07-23 20:52:52
1203
1
原创 HTTPS证书体系,证书加密流程(通信体系)
HTTPS通过证书体系和加密机制实现安全通信。证书体系采用层级结构(根证书→中间证书→服务器证书),由CA机构背书验证服务器身份。通信过程分为TLS握手和数据传输两阶段:握手时通过非对称加密交换会话密钥,并完成证书验证;传输阶段则使用对称加密保证数据安全。这套机制解决了HTTP明文传输、身份伪装和数据篡改三大安全隐患,核心依赖客户端预装的根证书作为信任锚点,兼具安全性和效率。
2025-07-23 19:56:37
1641
原创 域名解析的过程
DNS域名解析是一个将域名转换为IP地址的层级查询过程。首先检查本地缓存(浏览器和系统缓存),若无结果则向本地DNS服务器查询。若仍无缓存,则按层级查询:从根服务器获取顶级域信息,再到顶级域服务器查询二级域,最后从权威服务器获取IP地址。解析结果会被各级缓存(如本地DNS服务器按TTL值缓存)以提高后续查询效率,最终将IP返回给用户设备进行连接。整个过程类似"网络通讯录"的多级查找机制。
2025-07-23 19:17:05
967
原创 Spring、Spring MVC、Spring Boot、Spring Cloud的联系和区别
Spring生态体系各组件分工明确:Spring提供IOC/AOP核心容器功能;SpringMVC基于Spring实现Web层MVC架构;SpringBoot通过自动配置简化Spring应用开发;SpringCloud在SpringBoot基础上构建微服务治理体系。四者呈递进关系,Spring是地基,SpringMVC专注于Web开发,SpringBoot实现快速构建,SpringCloud解决分布式问题,共同构成完整的Java企业开发生态。
2025-07-22 20:07:07
610
原创 Redis(二)
Redis持久化包括RDB快照和AOF日志两种方式,4.0版本支持混合模式。Redis事务通过命令打包执行但不支持回滚。缓存问题中,穿透可通过无效key缓存或布隆过滤器解决,雪崩可通过集群部署和随机失效时间避免。双删策略能保证缓存与数据库一致性。Redis集群有三种模式:主从复制实现读写分离,哨兵模式提供自动故障转移,Cluster模式通过数据分片实现扩展。不同模式适用于不同场景,共同提升Redis的高可用性、负载均衡和容灾能力。
2025-07-22 13:52:33
731
原创 Redis(一)
Redis是一个基于内存的C语言开发数据库,常用于缓存、分布式锁和消息队列。它通过内存存储提升响应速度,采用单线程模型简化维护,6.0版本后引入多线程优化网络IO性能。Redis支持多种数据结构(String、List、Hash、Set、SortedSet),满足计数、消息队列等场景需求。其采用定期删除+惰性删除策略管理过期数据,并提供8种内存淘汰机制(如LRU、LFU)应对内存不足问题,在性能和资源管理间取得平衡。
2025-07-21 17:09:32
974
原创 EXPLAIN:你的SQL性能优化透视镜
EXPLAIN是分析SQL性能的关键工具,通过展示查询执行计划帮助优化数据库操作。它显示访问表的方式(全表扫描或索引)、连接算法、执行顺序和预估成本等关键信息。主要关注type(访问类型)、rows(预估扫描行数)和Extra(额外信息)等字段,其中ALL和index表示低效扫描,Using temporary和Using filesort是常见性能瓶颈。通过添加合适索引、优化JOIN和子查询等方式可显著提升查询速度。EXPLAIN是诊断慢查询、验证索引效果的基础工具,结合统计信息和实际执行差异分析,为SQ
2025-07-20 16:27:23
1494
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅