spring框架(SSM)

Spring Framework系统架构

Spring框架是一个开源的企业级Java应用程序框架,它为开发Java应用程序提供了一个全方位的解决方案。Spring的核心优势在于它的分层架构,这使得开发者可以灵活选择使用哪些模块而无需引入不需要的依赖。下面是Spring框架的一些关键知识点总结:

核心容器(Core Container)

  • Spring Core:是Spring框架的基础,提供IoC(Inverse of Control,控制反转)和DI(Dependency Injection,依赖注入)功能,管理Bean的生命周期和配置。
  • BeanFactory:是最基本的IoC容器,负责实例化、配置和管理Bean对象。
  • ApplicationContext:是BeanFactory的扩展,提供了更多高级特性,如事件传递、国际化支持、载入资源文件等。

核心容器(Core Container)是Spring框架的基础部分,它包含了Spring最核心的功能模块,是构建其他功能模块的基础。核心容器主要由以下几个部分组成:

1. Spring Core

  • IoC(Inverse of Control,控制反转):这是Spring框架的核心思想,它倡导将对象的创建和依赖关系的管理交由Spring容器来处理,而不是在代码中手动创建对象和管理依赖。这一机制减轻了组件之间的耦合,提高了系统的灵活性和可维护性。
  • DI(Dependency Injection,依赖注入):是实现IoC的一种具体方式,Spring容器通过读取配置元数据(如XML配置文件或注解),自动将依赖对象注入到需要它们的组件中。支持构造器注入、setter方法注入等多种注入方式。
  • BeanFactory:是Spring中最基础的IoC容器接口,负责实例化、配置和管理Bean。它提供了获取Bean、管理Bean依赖关系的基本功能。
  • ApplicationContext:是BeanFactory的高级版本,除了提供BeanFactory的所有功能外,还添加了对国际化的支持、事件传播、资源加载等企业级功能。ApplicationContext是大多数Spring应用的首选容器。

2. Bean的生命周期管理

  • Spring负责Bean的创建、初始化、装配以及销毁等整个生命周期的管理。开发者可以通过实现特定的接口或者使用注解来定制Bean的初始化和销毁过程,例如@PostConstruct@PreDestroy注解,或是通过实现InitializingBeanDisposableBean接口。

3. 资源管理

  • Spring提供了资源抽象接口,如Resource,用于统一访问不同类型的外部资源,如文件系统资源、类路径资源、URL资源等。

4. 事件监听

  • Spring支持发布/订阅模型的事件机制,允许在 ApplicationContext 中注册监听器来监听特定的事件,增强了应用的松耦合性和灵活性。

5. SpEL(Spring Expression Language)

  • SpEL是Spring框架内置的一个强大的表达式语言,用于在运行时查询和操作对象图。它支持访问和操作Bean的属性、方法调用、算术运算、逻辑运算等多种功能,常用于配置文件中进行复杂的表达式计算。

综上所述,核心容器是Spring框架的基石,通过其提供的IoC和DI能力,开发者可以构建松耦合、易于测试和管理的应用程序。

AOP(Aspect Oriented Programming,面向切面编程)

  • AOP允许将横切关注点(如日志记录、事务管理)从核心业务逻辑中分离出来,通过“切面”来模块化这些关注点。Spring AOP基于代理模式实现,支持JDK动态代理和CGLIB代理。

AOP(Aspect Oriented Programming,面向切面编程)是一种编程范式,它将横切关注点(Cross-Cutting Concerns)从业务逻辑中分离出来,通过一种称为“切面”(Aspects)的机制集中进行处理。横切关注点是指那些遍布于应用各处的功能,比如日志记录、安全检查、事务管理等,这些功能通常会分散在多个模块中重复出现。

关键概念

  1. 切面(Aspect):封装了横切关注点的模块,包含了执行这些关注点的代码。例如,一个日志记录的切面会包含所有与日志记录相关的逻辑。

  2. 连接点(Joinpoint):在程序执行过程中某个特定的点,比如方法的调用或者异常的抛出,可以被切面所拦截。

  3. 切入点(Pointcut):定义了切面应该在哪些连接点上执行的规则。通过表达式来匹配感兴趣的连接点,例如,匹配所有以getset开头的方法。

  4. 通知(Advice):切面中的实际操作,即在特定的连接点上执行的代码。有多种类型的通知,如:

    • 前置通知(Before):在目标方法调用之前执行。
    • 后置通知(After):在目标方法调用之后执行,无论方法是否成功完成。
    • 返回通知(AfterReturning):仅在目标方法成功完成后执行。
    • 异常通知(AfterThrowing):在目标方法抛出异常后执行。
    • 环绕通知(Around):包裹着目标方法调用,在方法调用前后都可以执行自定义的行为。
  5. 织入(Weaving):将切面应用到目标对象上的过程,可以在编译期、类加载期或运行期进行。

Spring AOP 实现

Spring框架通过代理模式(JDK动态代理或CGLIB代理)实现AOP。开发者可以通过XML配置或注解(如@Aspect@Before@After@AfterReturning@AfterThrowing@Around等)来定义切面和通知。

优势

  • 模块化:通过将横切关注点分离,使得业务逻辑更加清晰,便于维护。
  • 复用性:切面可以跨多个对象应用,减少代码重复。
  • 灵活性:修改切面逻辑不影响业务代码,易于调整和优化横切关注点的实现。

总之,AOP为解决企业级应用中的横切关注点提供了一种高效、灵活的手段,是Spring框架中不可或缺的一部分。

数据访问/集成(Data Access/Integration)

  • JDBC抽象:提供了一个JDBC的抽象层,简化了数据库访问,并能有效管理数据库资源。
  • ORM(Object-Relational Mapping)集成:包括对Hibernate、JPA(Java Persistence API)等ORM工具的支持。
  • 事务管理:支持编程式和声明式事务管理,能够与JDBC、JTA及各种ORM框架无缝集成。

数据访问/集成(Data Access/Integration)是Spring框架的重要组成部分,它为Java应用提供了与数据源交互的能力,包括传统的关系型数据库和现代的NoSQL数据库等。这一层主要包括以下几个关键模块:

1. JDBC抽象和DAO支持

  • JdbcTemplate:Spring提供了一个JDBC模板类,简化了使用JDBC的操作,如查询、更新、批处理等,同时自动管理资源,如连接和语句的关闭,减少了样板代码。
  • NamedParameterJdbcTemplate:在JdbcTemplate的基础上增加了命名参数支持,使SQL语句更易读且减少SQL注入风险。
  • DAO支持:Spring提供了一系列的DAO(Data Access Object)支持类和模板,帮助开发者更容易地编写数据访问层代码,同时支持事务管理。

2. ORM集成

  • JPA(Java Persistence API):Spring通过Spring Data JPA项目提供对JPA规范的完整支持,简化了数据访问层的开发,支持实体映射、Repository模式等。
  • Hibernate:Spring对Hibernate提供了良好的集成,包括事务管理、Session管理等,使得在Spring应用中使用Hibernate变得更加简单。
  • MyBatis:虽然不是直接由Spring提供,但Spring框架通过MyBatis-Spring项目实现了与MyBatis的紧密集成,支持事务管理和依赖注入。

3. 对象-关系映射(ORM)工具模型

  • 这些工具(如Hibernate、JPA实现、MyBatis)提供了将对象模型映射到关系型数据库表的能力,以及从数据库查询结果重建对象模型的功能,大大简化了数据库操作的复杂度。

4. 事务管理

  • PlatformTransactionManager:Spring定义了一个平台无关的事务管理接口,针对不同的持久化技术提供了具体的实现,如JDBC的DataSourceTransactionManager、JPA的JpaTransactionManager、Hibernate的HibernateTransactionManager等。
  • 支持编程式和声明式事务管理。编程式事务管理需要在代码中显式调用开始、提交或回滚事务;而声明式事务管理则通过@Transactional注解或在配置文件中定义事务规则,让Spring自动管理事务边界。

5. 数据源和连接池

  • Spring提供了对多种数据源的支持,包括但不限于Apache Commons DBCP、C3P0、HikariCP等,并且能够方便地与这些连接池集成,以提高数据库访问性能。

通过这些组件,Spring的数据访问/集成层极大地简化了数据访问层的开发工作,提高了应用的可维护性和扩展性,同时也保证了应用在处理数据时的一致性和可靠性。

Web

  • Spring MVC:是一个基于Servlet的Web框架,用于构建Web应用。它提供了一个清晰的角色分离模型,包括DispatcherServlet(前端控制器)、Model、View和Controller,支持RESTful风格的请求处理。
  • Spring WebFlux:是Spring 5引入的一个非阻塞的、响应式的Web框架,适用于异步和事件驱动的服务端编程模型。

在Spring框架中,Web层是专门设计来支持Web应用程序开发的部分,它为创建动态网页和Web服务提供了丰富的功能。Spring Web层主要包括两个主要的MVC框架:Spring MVC和Spring WebFlux。

1. Spring MVC(Model-View-Controller)

  • DispatcherServlet:作为前端控制器,接收HTTP请求,并根据请求分发给合适的处理器(Controller)。
  • Controller:处理HTTP请求,执行业务逻辑,并返回逻辑视图名或直接返回响应体(如JSON)。
  • HandlerMapping:负责将请求映射到具体的Controller和处理器方法上。
  • ViewResolver:根据逻辑视图名解析出实际的视图技术(如JSP、Thymeleaf等),渲染视图并返回给客户端。
  • 模型数据(Model):在Controller中准备的数据,用于填充视图。
  • 支持RESTful风格:通过注解(如@RestController@PathVariable@RequestBody等)轻松构建RESTful Web服务。

2. Spring WebFlux

  • 专为响应式编程设计的非阻塞Web框架,适用于异步和事件驱动的服务端应用。
  • 基于Reactor库,利用背压(Backpressure)机制处理高并发场景。
  • 支持两种编程模型:基于注解的控制器(类似Spring MVC)和功能性端点(通过函数式编程定义路由)。
  • 服务器兼容性广,不仅限于传统的Servlet容器,还支持Netty、Undertow等高性能服务器。

共享特性

无论是Spring MVC还是Spring WebFlux,都共享以下一些重要特性:

  • 统一异常处理:通过@ExceptionHandler注解或实现HandlerExceptionResolver接口,集中处理全局或特定控制器的异常。
  • 数据绑定与验证:Spring提供了强大的数据绑定机制,能够自动将请求参数绑定到方法参数上,并支持JSR 303/JSR 349进行数据验证。
  • 拦截器(Interceptor)与过滤器(Filter):提供了在请求处理前后执行自定义逻辑的能力,拦截器更贴近Spring MVC流程,过滤器则位于Servlet容器级别。
  • 模板引擎支持:Spring无缝集成多种视图模板引擎,如Thymeleaf、FreeMarker、Velocity等,便于视图层的开发。

Spring的Web层设计充分考虑了现代Web应用的需求,无论是传统的同步请求处理,还是新兴的响应式编程模型,都能提供高效、灵活的解决方案。

Spring Boot

一些常见面试题:

  • Spring Boot旨在简化Spring应用的初始搭建以及开发过程,通过提供默认配置来快速创建独立运行的、生产级别的基于Spring的应用程序。它集成了自动配置、起步依赖、Actuator监控等特性,极大地提高了开发效率。

Spring Boot是Spring家族中的一个重量级成员,它旨在简化Spring应用程序的初始搭建和开发过程,使得开发者能够快速创建独立运行、生产就绪的Spring应用程序。Spring Boot的关键特点和优势包括:

1. 自动配置(Auto-Configuration)

  • Spring Boot通过自动配置机制,根据项目依赖的jar包自动设置Spring框架的相关配置,从而大大减少了XML配置文件的需要,甚至可以做到“零配置”。

2. 起步依赖(Starter Dependencies)

  • 提供一系列预定义的“起步依赖”,这些依赖本质上是一组Maven或Gradle坐标,包含了启动和运行特定功能所需的所有依赖项。例如,添加spring-boot-starter-web依赖即可开始构建Web应用,无需手动添加每个相关库。

3. 内嵌式容器

  • Spring Boot应用默认包含了Tomcat、Jetty或Undertow等内嵌式Web服务器,这意味着应用可以被打包成独立的jar文件,直接通过java -jar命令运行,无需部署到外部应用服务器。

4. Actuator

  • 提供了一组端点(Endpoints),用于暴露应用运行时信息,如健康检查、metrics监控、环境配置信息等,便于运维和监控。

5. 外部化配置

  • 支持从多种来源(如application.properties/yaml文件、环境变量、命令行参数等)读取配置,便于在不同环境间切换配置。

6. Spring Initializr

  • Spring Boot项目提供了一个在线的项目生成器(Spring Initializr),开发者只需选择所需的依赖,即可快速生成项目骨架代码,进一步加速开发流程。

7. DevTools

  • Spring Boot DevTools提供了额外的开发时特性,如自动重启应用、热部署、LiveReload等,提高了开发效率。

8. 异步编程支持

  • Spring Boot原生支持异步处理,包括对CompletableFuture的支持,以及与Spring WebFlux的集成,便于构建高性能、响应式的Web服务。

9. 安全性

  • Spring Boot提供了开箱即用的安全配置,通过简单的配置即可启用基本的安全特性,如基本认证、OAuth2等。

Spring Boot凭借其简化配置、快速启动、生产就绪等特点,已经成为现代Java微服务和云原生应用开发的首选框架。它降低了Spring应用的入门门槛,让开发者能够更加专注于业务逻辑的实现。

Spring Security

  • 提供了一套全面的安全解决方案,支持认证(Authentication)和授权(Authorization),保护Web应用程序不受攻击。

Spring Security是一个强大的、高度可定制的身份验证和访问控制框架,它是Spring家族的一部分,专门设计用于为基于Spring的应用程序提供安全服务。Spring Security的核心功能和特点包括:

1. 认证(Authentication)

  • Spring Security支持多种认证方式,包括基本的用户名/密码认证、LDAP、JWT(JSON Web Tokens)、OAuth2、OpenID Connect等。它提供了一个灵活的认证架构,允许开发者轻松地集成自定义认证机制。

2. 授权(Authorization)

  • 支持多种授权策略,如基于角色的访问控制(Role-Based Access Control, RBAC)、访问决策管理器等,可以细粒度地控制用户对资源的访问权限。

3. CSRF防护(Cross-Site Request Forgery Protection)

  • 自动集成CSRF防护机制,保护应用免受跨站请求伪造攻击。

4. 安全上下文(Security Context)

  • 维护用户的登录状态和安全信息,使得安全相关的决策可以在应用的任何地方一致且方便地执行。

5. 会话管理(Session Management)

  • 提供了会话固定攻击防护、会话过期、并发会话控制等高级会话管理功能。

6. Spring MVC集成

  • 无缝集成Spring MVC,可以很容易地为RESTful API和传统的Web应用添加安全控制。

7. 安全HTTP头(Secure HTTP Headers)

  • 自动配置以确保使用安全的HTTP头部,如X-Content-Type-Options、X-XSS-Protection、Content-Security-Policy等,增强应用安全性。

8. 过滤器链(Filter Chain)

  • 基于Servlet过滤器的设计模式,提供高度灵活的请求处理流程,允许开发者自定义安全处理逻辑。

9. 密码编码(Password Encoding)

  • 支持多种密码编码策略,并鼓励使用强密码存储策略,如BCrypt和PBKDF2。

10. 测试支持

  • 提供了测试支持,使得在开发阶段就能方便地对安全功能进行测试,确保应用的安全性。

Spring Security的灵活性和强大功能使其成为构建安全Web应用的首选框架,无论是简单的认证需求还是复杂的企业级安全解决方案,都能找到合适的配置和扩展方式。

Spring Cloud

  • 为开发云原生应用提供了一系列框架和服务。它基于Spring Boot,实现了微服务架构中的配置管理、服务发现、断路器、智能路由、微代理、控制总线等一系列分布式系统模式。

Spring Cloud是一系列框架的集合,用于帮助开发者在分布式系统(特别是微服务架构)中快速构建云应用。它基于Spring Boot,提供了众多开箱即用的解决方案,简化了服务发现、配置管理、智能路由、断路器、微代理、控制总线等微服务架构中的常见问题。以下是Spring Cloud的关键组件和功能:

1. 服务发现(Service Discovery) - Eureka / Consul / ZooKeeper

  • Eureka:Netflix开发的服务发现组件,支持服务注册与发现。
  • Consul 和 ZooKeeper:除了服务发现,还提供了键值存储、多数据中心支持等功能。

2. 配置中心(Config Server & Config Client)

  • Spring Cloud Config:支持分布式配置管理,允许从Git、SVN等存储库中读取配置,并动态刷新应用配置。

3. 路由与负载均衡 - Spring Cloud Gateway / Zuul

  • Spring Cloud Gateway:第二代API网关,基于Spring 5和Project Reactor,提供更强大的路由与过滤功能。
  • Zuul:第一代API网关,由Netflix开发,主要用于路由和过滤请求。

4. 断路器 - Hystrix / Resilience4j

  • Hystrix:Netflix的库,通过断路器模式防止服务雪崩效应,现已进入维护模式。
  • Resilience4j:轻量级容错库,提供了与Hystrix类似的断路器、重试、限流等功能,更适合Java 8及更高版本。

5. 消息总线 - Spring Cloud Bus

  • 用于在分布式系统中传播状态变化,如配置更新事件,支持RabbitMQ、Kafka等消息中间件。

6. 分布式事务 - Spring Cloud Sleuth / Zipkin

  • Spring Cloud Sleuth:用于收集服务间的跟踪信息,为分布式系统提供追踪解决方案。
  • Zipkin:一个分布式跟踪系统,用于收集和分析Sleuth产生的跟踪数据,帮助诊断服务间的调用问题。

7. 客户端负载均衡 - Ribbon / LoadBalancer

  • Ribbon:Netflix的客户端侧负载均衡器,尽管已不再积极开发,但仍被广泛使用。
  • Spring Cloud LoadBalancer:是Spring Cloud对客户端负载均衡的新推荐,更轻量,与Ribbon相比,它直接依赖于Load Balancer SPI,简化了配置。

8. API聚合 - Spring Cloud OpenFeign / Feign

  • OpenFeign:基于Feign的声明式HTTP客户端,简化了服务间调用的接口定义与实现。

9. 安全 - Spring Cloud Security / OAuth2

  • 集成了OAuth2协议,支持安全的微服务间通信和对外提供安全的API访问。

10. 事件驱动 - Spring Cloud Stream / Spring Cloud Function

  • Spring Cloud Stream:为消息驱动的微服务提供抽象,简化消息中间件的集成。
  • Spring Cloud Function:支持无服务器功能,便于在云平台上运行函数式微服务。

Spring Cloud通过上述组件和功能,提供了一套全面的解决方案,帮助开发者快速构建云原生应用,实现了微服务架构下的服务治理和自动化配置,大大降低了微服务应用的开发和运维复杂度。

Test

  • Spring框架还包含了一个测试模块,支持JUnit和TestNG进行单元测试和集成测试,提供了模拟对象(Mock Objects)等功能,简化了在Spring环境下进行测试的过程。

Spring框架为Java应用程序的测试提供了丰富的支持,旨在简化和加速单元测试及集成测试的编写和执行过程。Spring Test模块主要关注以下方面:

1. Spring TestContext Framework

  • 核心概念:这是一个通用的测试上下文框架,用于为集成测试和单元测试提供一致的配置和管理测试环境。它支持注解驱动的测试配置,如@ContextConfiguration@RunWith(SpringRunner.class)(或JUnit 5中的@ExtendWith(SpringExtension.class))等。

2. Spring MVC测试

  • 提供了模拟HTTP请求和响应的能力,可以直接测试Spring MVC控制器(Controllers),无需启动完整的Web服务器。这包括MockMvc类,它允许你发起GET、POST等HTTP请求并验证响应。

3. Spring WebFlux测试

  • 对于反应式应用程序,提供了WebTestClient,这是一个非阻塞的、功能丰富的客户端,用于测试WebFlux应用,支持验证响应状态、内容、标题等。

4. 数据库测试支持

  • 嵌入式数据库:Spring Test支持使用嵌入式数据库(如H2、HSQLDB、Derby)进行集成测试,可以在每次测试前自动创建和销毁数据库,确保测试的隔离性。
  • 事务管理:提供@Transactional注解支持,自动在测试方法前后回滚事务,保持测试数据的清洁。

5. 依赖注入

  • 在测试类中支持Spring的依赖注入,使得测试代码可以方便地使用到应用中的Bean和服务,提高了测试的准确性和便利性。

6. Spring Boot测试

  • Spring Boot进一步简化了测试配置,提供了@SpringBootTest注解,它可以自动配置并启动一个应用上下文用于集成测试,同时支持自动配置的特性,如自动配置的数据库连接、缓存等。

7. Spring Cloud Contract

  • 虽然不直接属于Spring Test模块,但Spring Cloud Contract为微服务架构提供了消费者驱动契约测试(Consumer-Driven Contracts,CDC)的支持,确保服务间的交互按照预期进行,特别适合微服务间的集成测试。

8. Spock和Groovy测试

  • Spring Test也支持使用Spock框架(基于Groovy语言)编写测试,提供更加简洁和表现力强的语法。

通过这些工具和特性,Spring测试框架极大地提升了测试的效率和质量,确保应用在不断迭代的过程中保持稳定可靠。

Spring框架因其高度的模块化、灵活性和强大的社区支持,成为了Java企业应用开发的首选框架之一。掌握上述知识点有助于深入理解并高效利用Spring进行现代应用的开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每天学会一个渗透测试工具】AWVS安装及使用指南

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 ✨AWVS介绍 是应用漏洞扫描工具 💦使用docker安装 docker pull dockermi3aka/awvs启动镜像 docker run -dit …

数据采集项目1-用户行为数据同步

环境准备 linux配置、克隆103和104、编写集群分发脚本、ssh无密码登录配置、jdk安装、数据模拟集群日志数据输出脚本、xcall脚本、安装hadoop、zk安装、kafka安装、flume安装、mysql安装、maxwell安装、datax安装、hive安装 用户行为数据同步-总的数据流程图 第一层flume 数据…

JavaScript算法实现dfs查找省市区路径

需求 存在如下数组,实现一个算法通过输入区名,返回省->市->区格式的路径,例如输入西湖区,返回浙江省->杭州市->西湖区。 // 定义省市区的嵌套数组 const data [{name: "浙江省",children: [{name: "…

【百度智能体】零代码创建职场高情商话术助手智能体

一、前言 作为一个程序猿,工科男思维,走上职场后,总会觉得自己不会处理人际关系,容易背锅说错话,这时候如果有个助手能够时时刻刻提醒自己该如何说话如何做事情就好了。 而我们现在可以通过百度文心智能体平台构建各…

Java基础——网络编程(一)

初识网络编程 网络编程:在网络通信协议下,不同计算机上运行的程序,进行的数据传输 应用场景:即时通信、网游对战、金融证券、国际贸易、邮件…… BS架构的优缺点: 1、不需要开发客户端,只需要页面服务端 2、…

计算机网络知识点全面总结回顾

物理层 OSI模型:数据链路层(流量控制),从传输层开始端到端;每一层的元素都称为实体,同一层的是对等实体;三个重要概念:服务(下层为上层提供调用)&#xff0c…

Python程序设计 2021秋计算和人工智能期中商科2

2021秋计算和人工智能期中商科2 第1关:矩形面积的计算 编写一个程序根据对角线长度和夹角度数计算矩形面积。 矩形面积如下所示 输入对角线长度和夹角度数,计算并显示矩形面积 要求结果显示两位小数 deval(input("对角线长度")) aeval(input(…

1.Element的table表高度自适应vue3+js写法

解决方法 在页面table上添加id,动态计算每页table的最大高度 ,将高度保存在store中,每次切换路由时进行计算。 文章目录 解决方法前言一、页面table使用二、store状态库1.引入库 效果 前言 提示:状态管理使用的是pinia,用法参考…

腾讯云EdgeOne对比普通CDN的分别

EdgeOne架构图 普通CDN架构图 ​​​​​​​ 腾讯云EdgeOne对比普通CDN的不同点 服务范围和集成度 腾讯云EdgeOne是一体化的综合平台,不仅提供内容分发功能,还包括安全防护、性能优化和边缘计算等服务。EdgeOne提供了DDoS防护、WAF(Web应…

流媒体传输协议HTTP-FLV、WebSocket-FLV、HTTP-TS 和 WebSocket-TS的详细介绍、应用场景及对比

一、前言 HTTP-FLV、WS-FLV、HTTP-TS 和 WS-TS 是针对 FLV 和 TS 格式视频流的不同传输方式。它们通过不同的协议实现视频流的传输,以满足不同的应用场景和需求。接下来我们对这些流媒体传输协议进行剖析。 二、传输协议 1、HTTP-FLV 介绍:基于 HTTP…

基于springboot的大学计算机基础网络教学系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的大学计算机基础网络教学…

sqlite3模块的使用

1. SQLite数据库 SQLite是一个轻量级的, 基于磁盘的, 关系型的数据库管理系统(RDBMS). 它不需要一个独立的服务器进程或操作系统级别的配置. SQLite是D.Richard Hipp在2000年创建的, 并且由于其小巧, 快速, 可靠和易于使用的特性, 它在全球范围内得到了广泛的应用.以下是 SQLi…

60.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(8)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:59.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(7) 御剑是用…

人工智能模型组合学习的理论和实验实践

组合学习,即掌握将基本概念结合起来构建更复杂概念的能力,对人类认知至关重要,特别是在人类语言理解和视觉感知方面。这一概念与在未观察到的情况下推广的能力紧密相关。尽管它在智能中扮演着核心角色,但缺乏系统化的理论及实验研…

DDPAI盯盯拍记录仪删除后的恢复方法(前后双路)

DDPAI盯盯拍行车记录仪的口碑相当不错,其产品一直以行车记录仪为主,曾经使用过比较早的产品,体验还不错。下面来看下这个DDPAI的视频恢复方法。 故障存储: 64G存储卡 /文件系统:FAT32 故障现象: 在发生事故后在记录仪上看到了…

工程设计问题---工业制冷系统的优化设计问题

参考文献: [1]李煜,梁晓,刘景森,等.基于改进平衡优化器算法求解工程优化问题[J/OL].计算机集成制造系统,1-34[2024-06-16].

水滴式粉碎机:玉米饲料加工的新篇章

在饲料加工业中,玉米作为一种重要的原料,其加工方式直接影响到饲料的品质以及动物对饲料的消化吸收率。近年来,随着科技的进步,越多的环保的饲料加工设备被引入到饲料生产中,其中,水滴式粉碎机以其独特的优…

Ubuntu Linux 24.04 C语言TCP/IP socket编程基础知识

socket起源于Unix,Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行读/写…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 部门项目任务分配(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 部门项目任务分配(100分) 🌍 评测功能需要订阅专栏后私信联…

举例说明 如何通过SparkUI和日志定位任务莫名失败?

有一个Task OOM: 通过概览信息,发现Stage 10的Task 36失败了4次导致Job失败。概览信息中显示最后一次失败的退出代码(exit code)是143,意味着发生了内存溢出(OOM,即Out of Memory)。…