当前位置: 首页 > news >正文

Spring生态学习路径与源码深度探讨

引言

Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。

一、Spring生态概述

Spring生态是一个庞大的体系,涵盖了从基础框架到高级应用的各种组件。以下是一些核心的Spring生态组件:

1. Spring Framework

Spring Framework是Spring生态的核心,提供了控制反转(IoC)和面向切面编程(AOP)两大核心特性。此外,Spring Framework还包含了MVC、JDBC、事务处理等多个模块,为开发者提供了全面的支持。

2. Spring Boot

Spring Boot是Spring Framework的扩展,旨在简化Spring应用的开发和部署。通过自动配置和启动器依赖,Spring Boot可以快速构建独立的、生产级的Spring应用。

3. Spring Cloud

Spring Cloud基于Spring Boot,提供了一套完整的微服务解决方案。它包括服务发现、配置管理、断路器、网关等多个组件,帮助开发者构建分布式系统。

4. Spring Security

Spring Security为Spring应用提供了全面的安全解决方案,包括认证、授权、加密等功能。它支持多种认证方式,并可以轻松地与Spring MVC、Spring Boot等集成。

5. Spring Data

Spring Data提供了一套简化的数据访问抽象,支持多种数据库和NoSQL存储。通过定义接口和简单的配置,开发者可以轻松地实现数据访问功能。

6. 其他组件

除了上述核心组件外,Spring生态还包括Spring Batch(批处理框架)、Spring AMQP(消息队列支持)、Spring Session(会话管理)等多个组件,这些组件共同构成了Spring生态的完整体系。

二、Spring生态学习路径

学习Spring生态需要一个系统的路径,从基础到高级,逐步深入。以下是一个详细的学习路径:

1. Java基础与面向对象编程

在学习Spring之前,需要掌握Java基础语法和面向对象编程思想。这包括Java SE的基础语法、集合框架、异常处理等内容。此外,还需要理解面向对象的设计原则,如SOLID原则、设计模式等。

2. Spring Framework核心原理

2.1 控制反转(IoC)

IoC是Spring的核心特性之一,它通过容器来管理对象的生命周期和依赖关系。学习IoC需要理解Bean的定义、装配和生命周期管理。Spring容器通过反射机制来创建和管理Bean,开发者可以通过XML配置文件或注解来定义Bean。

  • Bean的定义:Bean是Spring管理的基本单位,可以通过XML配置文件或注解来定义。XML配置方式使用<bean>标签来定义Bean,而注解方式则使用@Component@Service@Repository等注解来标记类为Spring管理的Bean。
  • Bean的装配:Bean的装配是指将Bean之间的依赖关系注入到Bean实例中。Spring提供了两种主要的依赖注入方式:构造器注入和设置方法注入。构造器注入通过构造器参数来注入依赖,而设置方法注入则通过setter方法来注入依赖。
  • Bean的生命周期:Bean的生命周期包括Bean的创建、初始化、使用和销毁等阶段。Spring容器在创建Bean实例后,会调用Bean的初始化方法(如@PostConstruct注解的方法),并在Bean不再需要时调用销毁方法(如@PreDestroy注解的方法)。
2.2 面向切面编程(AOP)

AOP是Spring的另一个核心特性,它允许开发者将横切关注点(如日志、事务管理等)与业务逻辑分离开来。AOP通过代理模式来实现,Spring提供了两种代理方式:JDK动态代理和CGLIB代理。

  • AOP的基本概念:AOP的核心概念包括切面(Aspect)、连接点(Joinpoint)、通知(Advice)、切点(Pointcut)和目标对象(Target Object)等。切面是一个横切关注点的模块化,它包含了通知和切点定义;连接点是程序执行过程中的某个点,如方法调用或异常抛出等;通知是在连接点上执行的动作,如前置通知、后置通知等;切点定义了通知应该应用于哪些连接点;目标对象是被代理的对象。
  • AOP的实现原理:Spring AOP通过代理模式来实现横切关注点的分离。当目标对象的方法被调用时,代理对象会拦截方法调用,并执行切面中的通知。Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK动态代理只能代理实现了接口的类,而CGLIB代理可以代理没有实现接口的类。
2.3 Spring MVC

Spring MVC是Spring框架中的一个模块,用于构建Web应用。它遵循MVC设计模式,将Web应用分为模型(Model)、视图(View)和控制器(Controller)三层。学习Spring MVC需要理解其请求处理流程、控制器、视图解析器等概念。

  • 请求处理流程:Spring MVC的请求处理流程包括DispatcherServlet的拦截、HandlerMapping的映射、HandlerAdapter的调用以及ViewResolver的视图解析等步骤。DispatcherServlet是Spring MVC的核心组件,它负责拦截所有的HTTP请求,并将请求分发到相应的处理器上。
  • 控制器:控制器是处理HTTP请求的核心组件,它负责接收请求、调用业务逻辑并返回响应。Spring MVC提供了多种控制器实现方式,包括基于注解的控制器和基于XML配置的控制器等。
  • 视图解析器:视图解析器负责将控制器返回的视图名称解析为具体的视图对象。Spring MVC支持多种视图技术,如JSP、Thymeleaf等,视图解析器会根据配置选择合适的视图技术进行渲染。

3. Spring Boot快速开发

Spring Boot简化了Spring应用的开发和部署过程。它提供了自动配置和启动器依赖等功能,使得开发者可以快速构建独立的、生产级的Spring应用。学习Spring Boot需要理解其自动配置原理、启动过程以及常用的启动器依赖。

  • 自动配置原理:Spring Boot的自动配置是通过@EnableAutoConfiguration注解来实现的。该注解会导入AutoConfigurationImportSelector类,该类会扫描classpath下的META-INF/spring.factories文件,并加载其中定义的自动配置类。自动配置类会根据项目的依赖和配置来自动配置Spring应用。
  • 启动过程:Spring Boot应用的启动过程包括创建SpringApplication对象、运行SpringApplication.run方法以及触发自动配置等步骤。SpringApplication是Spring Boot的启动类,它负责初始化Spring应用上下文并启动应用。
  • 启动器依赖:启动器依赖是Spring Boot提供的一组依赖描述符,它们包含了构建Spring Boot应用所需的所有依赖项。通过引入启动器依赖,开发者可以快速构建Spring Boot应用,而无需手动添加大量依赖项。

4. 微服务架构与Spring Cloud

微服务架构是一种将应用拆分为多个小型服务的架构风格。Spring Cloud提供了一套完整的微服务解决方案,包括服务发现、配置管理、断路器、网关等多个组件。学习Spring Cloud需要理解微服务架构的基本原理和Spring Cloud的各个组件的功能和使用方法。

  • 服务发现:服务发现是微服务架构中的核心组件之一,它负责将服务实例注册到服务注册中心上,并允许其他服务通过服务注册中心来发现服务实例。Spring Cloud提供了Eureka和Consul等服务发现组件,它们可以帮助开发者实现服务发现功能。
  • 配置管理:配置管理是微服务架构中的另一个重要组件,它负责集中管理服务的配置信息。Spring Cloud Config提供了集中的配置管理功能,允许开发者将配置信息存储在Git、SVN等版本控制系统中,并通过Spring Cloud Config客户端将配置信息注入到Spring应用中。
  • 断路器:断路器是一种容错模式,它允许服务在调用链中出现故障时快速失败并返回错误响应,从而避免故障在调用链中传播。Spring Cloud Hystrix提供了断路器功能,它可以帮助开发者实现服务的容错处理。
  • 网关:网关是微服务架构中的入口点,它负责接收外部请求并将请求路由到相应的服务实例上。Spring Cloud Zuul提供了网关功能,它可以帮助开发者实现请求的路由和过滤等处理。

5. Spring生态其他组件

除了Spring Framework、Spring Boot和Spring Cloud外,Spring生态还包括许多其他有用的组件。根据项目的需求,可以选择性地学习这些组件。例如,如果需要处理批处理任务,可以学习Spring Batch;如果需要与消息队列集成,可以学习Spring AMQP等。

6. 实战项目与经验积累

理论学习是基础,但实战项目才是检验学习成果的关键。建议通过参与实际项目来加深对Spring生态的理解和应用。在项目中遇到问题时,可以通过查阅官方文档、社区论坛和博客等方式来寻求解决方案。同时,也可以将自己的经验总结成技术博客或分享给同事,以巩固自己的学习成果。

三、Spring源码深度探讨

源码阅读是提升技术水平的重要途径之一。对于Spring这样的复杂框架来说,源码阅读更是必不可少。以下将详细探讨Spring源码中各个重点的底层实现逻辑。

1. IoC容器的底层实现

1.1 BeanDefinition的加载与注册

Spring容器在启动时,会读取配置文件或注解来加载BeanDefinitionBeanDefinition是Bean的元数据,包含了Bean的各种属性(如类名、作用域、依赖等)。Spring容器通过BeanDefinitionReader来读取配置信息,并将其注册到BeanDefinitionRegistry中。

  • XML配置方式:在XML配置方式下,Spring容器会使用XmlBeanDefinitionReader来读取XML配置文件,并解析出BeanDefinition对象。XmlBeanDefinitionReader会遍历XML文件中的<bean>标签,并将标签中的属性解析为BeanDefinition的属性值。
  • 注解配置方式:在注解配置方式下,Spring容器会使用AnnotatedBeanDefinitionReader来扫描类路径下的注解,并解析出BeanDefinition对象。AnnotatedBeanDefinitionReader会使用Java反射机制来读取类上的注解,并根据注解的属性值来构建BeanDefinition对象。
1.2 Bean的创建与管理

BeanDefinition注册完成后,Spring容器会根据BeanDefinition的定义来创建Bean实例。创建Bean实例的过程包括实例化、属性填充和初始化等步骤。Spring容器通过反射机制来创建Bean实例,并通过依赖注入来填充Bean的属性。在Bean创建完成后,Spring容器还会调用Bean的初始化方法来完成Bean的初始化过程。

  • 实例化:Spring容器会根据BeanDefinition中定义的类名使用反射机制来创建Bean实例。如果Bean是单例的,则Spring容器会将其缓存起来以便重用;如果Bean是多例的,则每次请求都会创建一个新的Bean实例。
  • 属性填充:在Bean实例化完成后,Spring容器会根据BeanDefinition中定义的属性信息来填充Bean的属性。这包括通过构造器注入、设置方法注入或字段注入等方式将依赖项注入到Bean中。
  • 初始化:在Bean属性填充完成后,Spring容器会调用Bean的初始化方法来完成Bean的初始化过程。初始化方法可以是用户自定义的方法(如使用@PostConstruct注解的方法),也可以是Spring容器提供的默认初始化方法。

2. AOP的底层实现

2.1 代理模式的应用

AOP通过代理模式来实现横切关注点的分离。Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK动态代理只能代理实现了接口的类,而CGLIB代理可以代理没有实现接口的类。在创建代理对象时,Spring会根据目标对象的类型来选择合适的代理方式。

  • JDK动态代理:JDK动态代理是Java标准库提供的一种动态代理机制,它使用java.lang.reflect.Proxy类来创建代理对象。JDK动态代理只能代理实现了接口的类,因为它通过接口来创建代理对象的代理类。在创建代理对象时,Spring会使用Proxy.newProxyInstance方法来生成代理类的实例,并将目标对象作为代理类的构造器参数传递给代理类。
  • CGLIB代理:CGLIB是一个强大的、高性能的代码生成库,它可以在运行时扩展Java类并生成子类。CGLIB代理可以代理没有实现接口的类,因为它通过生成目标类的子类来创建代理对象。在创建代理对象时,Spring会使用CGLIB提供的Enhancer类来生成目标类的子类,并将目标对象作为子类的构造器参数传递给子类。
2.2 切面与通知的执行

在代理对象创建完成后,当目标方法被调用时,代理对象会拦截方法调用,并执行切面中的通知。通知包括前置通知、后置通知、环绕通知等类型。Spring通过拦截器链来管理通知的执行顺序,确保切面中的通知能够按照预期的顺序执行。

  • 前置通知:前置通知是在目标方法执行之前执行的通知。它可以在目标方法执行之前进行一些预处理操作,如检查权限、记录日志等。
  • 后置通知:后置通知是在目标方法执行之后执行的通知。它可以在目标方法执行之后进行一些后处理操作,如更新缓存、发送通知等。
  • 环绕通知:环绕通知是在目标方法执行前后都执行的通知。它可以在目标方法执行之前和之后进行一些操作,并可以控制目标方法的执行(如是否执行目标方法、如何执行目标方法等)。

3. Spring MVC的底层实现

3.1 请求处理流程

Spring MVC的请求处理流程包括DispatcherServlet的拦截、HandlerMapping的映射、HandlerAdapter的调用以及ViewResolver的视图解析等步骤。DispatcherServlet是Spring MVC的核心组件,它负责拦截所有的HTTP请求,并将请求分发到相应的处理器上。

  • DispatcherServlet的拦截DispatcherServlet是Spring MVC的前端控制器,它负责拦截所有的HTTP请求。当请求到达时,DispatcherServlet会根据请求的URL和请求方法等信息来选择合适的HandlerMapping进行请求映射。
  • HandlerMapping的映射HandlerMapping是请求到处理器的映射器,它将请求的URL和请求方法等信息映射到对应的处理器上。Spring MVC提供了多种HandlerMapping实现,如RequestMappingHandlerMappingSimpleUrlHandlerMapping等。
  • HandlerAdapter的调用:在找到对应的处理器后,DispatcherServlet会使用HandlerAdapter来调用处理器的方法。HandlerAdapter是处理器适配器,它负责将请求参数传递给处理器的方法,并处理处理器的返回值。
  • ViewResolver的视图解析:处理器方法执行完成后,DispatcherServlet会使用ViewResolver来解析视图名称,并将其渲染为具体的视图对象。ViewResolver是视图解析器,它负责将视图名称解析为具体的视图实现。
3.2 控制器与视图解析

在处理器调用完成后,Spring MVC会将处理结果传递给视图解析器进行视图解析。视图解析器会根据处理结果来选择合适的视图进行渲染。Spring MVC支持多种视图技术,如JSP、Thymeleaf等。

  • 控制器:控制器是处理HTTP请求的核心组件,它负责接收请求、调用业务逻辑并返回响应。在Spring MVC中,控制器通常是一个实现了Controller接口的类,或者是一个使用了@Controller@RestController等注解的类。
  • 视图解析:视图解析是Spring MVC将处理结果渲染为具体视图的过程。在视图解析过程中,ViewResolver会根据处理结果中的视图名称来选择合适的视图实现进行渲染。Spring MVC支持多种视图技术,如JSP、Thymeleaf等,开发者可以根据自己的需求选择合适的视图技术。

4. Spring Boot的自动配置原理

Spring Boot的自动配置原理是通过@EnableAutoConfiguration注解来实现的。@EnableAutoConfiguration注解会导入AutoConfigurationImportSelector类,该类会扫描classpath下的META-INF/spring.factories文件,并加载其中定义的自动配置类。自动配置类会根据项目的依赖和配置来自动配置Spring应用。

  • @EnableAutoConfiguration注解@EnableAutoConfiguration注解是Spring Boot自动配置的入口点。当开发者在Spring Boot应用的主类上添加该注解时,Spring Boot会自动扫描classpath下的META-INF/spring.factories文件,并加载其中定义的自动配置类。
  • AutoConfigurationImportSelectorAutoConfigurationImportSelector类是Spring Boot自动配置的核心类之一。它负责扫描META-INF/spring.factories文件,并加载其中定义的自动配置类。在加载自动配置类时,AutoConfigurationImportSelector会根据项目的依赖和配置来选择合适的自动配置类进行加载。
  • 自动配置类:自动配置类是Spring Boot自动配置的具体实现。它们通常包含了一些条件注解(如@ConditionalOnClass@ConditionalOnBean等),用于判断当前项目是否满足自动配置的条件。如果满足条件,则自动配置类会将相应的Bean注册到Spring容器中,从而实现自动配置功能。

5. Spring Cloud的服务发现与配置管理

5.1 服务发现

Spring Cloud的服务发现是通过Eureka或Consul等组件来实现的。服务提供者在启动时会将自身的信息注册到服务注册中心上,服务消费者在调用服务时会从服务注册中心上获取服务提供者的信息。服务注册中心会定期检测服务提供者的状态,以确保服务的可用性。

  • Eureka:Eureka是Netflix开源的服务注册与发现组件。它包含了服务端和客户端两部分。服务端用于提供服务注册与发现的功能;客户端则负责将服务实例信息注册到服务端,并从服务端获取其他服务实例的信息。在Spring Cloud中,开发者可以通过引入Eureka的启动器依赖来快速集成Eureka服务注册与发现功能。
  • Consul:Consul是HashiCorp开源的服务网格解决方案,它提供了服务发现、配置管理和分段服务等功能。与Eureka类似,Consul也包含了服务端和客户端两部分。在Spring Cloud中,开发者可以通过引入Consul的启动器依赖来快速集成Consul服务注册与发现功能。

相关文章:

Spring生态学习路径与源码深度探讨

引言 Spring框架作为Java企业级开发中的核心框架&#xff0c;其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身&#xff0c;更需要深入理解其周边组件和工具&#xff0c;以及源码的底层实现逻辑。本文将从Spring生态的学…...

C++:set详解

文章目录 前言一、set概念介绍二、set的使用1. 插入删除相关2. 查找相关1&#xff09;find2&#xff09;count3&#xff09;lower_bound与upper_bound4&#xff09;equal_range 三、set的值是不能修改的原理四、基于哈希表的set总结 前言 根据应用场景的不同&#xff0c;STL总…...

(一)- DRM架构

一&#xff0c;DRM简介 linux内核中包含两类图形显示设备驱动框架&#xff1a; FB设备&#xff1a;Framebuffer图形显示框架; DRM&#xff1a;直接渲染管理器&#xff08;Direct Rendering Manager&#xff09;&#xff0c;是linux目前主流的图形显示框架&#xff1b; 1&am…...

Docker了解

Docker是一种容器化技术&#xff0c;它可以将应用程序和其依赖项打包到一个独立的、可移植的容器中&#xff0c;以便在不同的环境中运行。Docker基于Linux操作系统的容器化技术&#xff0c;可以提供更轻量、更快速、更灵活、更一致的应用部署和管理方式。 Docker的基本概念包括…...

【DL】YOLO11 OBB目标检测 | 模型训练 | 推理

本文进行YOLO11的旋转目标检测任务,旋转目标检测能够更精确地定位和描述那些非水平排列的目标,比如倾斜的飞机、船舶等。在原始的目标检测中,添加一个角度预测,实现定向边界框检测。 话不多说,先来个效果图!!! YOLO11中的旋转目标检测的特点 ▲更精确的定位:通过使用…...

vue读取本地excel文件并渲染到列表页面

1.安装插件(版本0.18.5) npm i xlsx 2.封装插件 <template><div class"container"><slot></slot></div> </template><script> import * as XLSX from xlsx export default {name: ReadExcel,props: {filePath: {type: …...

github 以及 huggingface下载模型和数据

runningcheese/MirrorSite: 镜像网站合集 (github.com) huggingface 下载模型和数据使用snapshot_download的方法 不会修改HuggingFace模型下载默认缓存路径&#xff1f;一篇教会你!_huggingface默认下载路径-CSDN博客 下载模型 使用snapshot_download 使用snapshot_down…...

使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏

作者&#xff1a;BLACK595 “小恐龙酷跑”&#xff0c;它是一款有趣的离线游戏&#xff0c;是Google给Chrome浏览器加的一个有趣的彩蛋。当我们浏览器断网时一只像素小恐龙便会出来提示断网。许多人认为这只是一个可爱的小图标&#xff0c; 但当我们按下空格后&#xff0c;小恐…...

51c视觉~合集6

我自己的原文哦~ https://blog.51cto.com/whaosoft/11603901 #CSWin-UNet 将自注意力机制集成到UNet中&#xff01;CSWin-UNet&#xff1a;U型分割方法&#xff0c;显著提高计算效率和感受野交互&#xff01;本文提出了CSWin-UNet&#xff0c;这是一种新颖的U型分割方法&…...

STM32(hal库)在串口中,USART和uart有什么区别?

在STM32的HAL库中&#xff0c;USART和UART都是用于串口通信的模块&#xff0c;但它们在功能特性和使用场景上存在一些区别。以下是对两者的详细比较&#xff1a; 一、功能特性 UART&#xff08;通用异步收发器&#xff09;&#xff1a; 是一种串行、异步、全双工的通信协议。通…...

机器学习、深度学习面试知识点汇总

下面是本人在面试中整理的资料和文字&#xff0c;主要针对面试八股做浅显的总结&#xff0c;大部分来源于ChatGPT&#xff0c;中间有借鉴一些博主的优质文章&#xff0c;已经在各文中指出原文。有任何问题&#xff0c;欢迎随时不吝指正。 文章系列图像使用动漫 《星游记》插图…...

FPGA高速设计之Aurora64B/66B的应用与不足的修正

FPGA高速设计之Aurora64B/66B的应用与不足的修正 Aurora IP协议的特点 首先基于网上找到的一些资料&#xff0c;来讲述下Aurora高速协议的特点与相关的应用。Aurora 协议在 2002 年由 Xilinx 公司首次提出&#xff0c;是由Xilinx提供的一个开源、免费的链路层串行传输通信协议…...

如何通过PHP脚本自动推送WordPress文章至百度站长平台

想要提高网站在百度搜索中的曝光度?百度站长平台提供了一个非常方便的API接口,允许网站自动将新发布的内容推送至百度以加快收录。本文将带您一步步实现这一功能,帮助您的WordPress站点实现每日自动推送最新文章的URL至百度站长平台。 1. 前提条件 确保您有一个已安装并运行…...

ORA-01092 ORA-14695 ORA-38301

文章目录 前言一、MAX_STRING_SIZE--12C 新特性扩展数据类型 varchar2(32767)二、恢复操作1.尝试恢复MAX_STRING_SIZE参数为默认值2.在upgrade模式下执行utl32k.sql 前言 今天客户发来一个内部测试库数据库启动截图报错&#xff0c;描述是“上午出现服务卡顿&#xff0c;然后重…...

upload-labs通关练习---更新到15关

目录 环境搭建 第一关 方法一 修改文件类型 方法二 前端禁用JS绕过 第二关 方法一 修改Content-Type类型 方法二 修改上传文件类型 第三关 第四关 第五关 方法一 Windows大小写绕过 方法二 利用.user.ini 第六关 第七关 第八关 第九关 第十关 第十一关 第十二…...

WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项

Prism 提供了更多的注册方式&#xff0c;适应不同的需求和场景。下面我会全面列出 IContainerRegistry 提供的所有常见注册方式&#xff0c;并附带相应的示例。1. 注册单例&#xff08;Singleton&#xff09; 注册单例类型服务&#xff0c;整个应用生命周期内只会创建一个实例&…...

【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程

1. 简介 ESP32支持5种低功耗模式&#xff0c;低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。 1.1 RTC单元 RTC单元是ESP32低功耗管理的核心&#xff0c;可用于管理低功耗模式的进入和退出&#xff0c;控制时钟源、PLL、电源开…...

Windows 局域网IP扫描工具:IPScaner 轻量免安装

IPScaner是一款258KB的工具&#xff0c;具备快捷修改IP、批量扫描、地址计算等功能&#xff0c;自动识别本机IP网段&#xff0c;快速查看IP使用情况&#xff0c;适用于监控维护、企业IT运维等场 软件功能介绍&#xff1a; 1&#xff09;快捷修改本地IP、IP批量扫描、IP地址计算…...

HTML的浮动与定位

1. 浮动 浮动可以使一个元素脱离自己原本的位置&#xff0c;并在父元素的内容区中向左或向右移动&#xff0c;直到碰到父元素内容区的边界或者其它浮动元素为止。 值描述left元素向左浮动right元素向右浮动 普通文档流&#xff1a;浏览器在默认情况下规定一个块元素在父元素…...

【网络安全 | 漏洞挖掘】我如何通过路径遍历实现账户接管

未经许可,不得转载。 文章目录 不久前,我发现了一个我在高中时非常常用的知名应用程序,它在Intigriti上是一个私有程序,本文称之为REDACTED。 我开始参与REDACTED的漏洞赏金计划,这个应用程序在我开始进行黑客攻击之前我已经非常熟悉了。最初我并没有抱太高的期望。 我首…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...