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.mfbz.cn/a/718326.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 下VS Code 弹出 快速修复,导致 BackSpace 无法删除

最近在Linux下使用VSCode,发现有错误的代码选中了无法删除 这个时候,你按BackSpace 是无法删除的,很恼火! 把这些禁用了之后,就不会弹出这个框,这样可以顺利选中删除! 感觉这个是不是vs code 插…

刷题笔记2:用位运算找“只出现一次的一个数”

1. & 和 | 的基本操作 137. 只出现一次的数字 II - 力扣(LeetCode) 先对位运算的操作进行复习: 1、>> 右移操作符 移位规则:⾸先右移运算分两种: 1. 逻辑右移:左边⽤0填充,右边丢…

高考没考好焦虑怎么选计算机专业!一篇告诉你,推荐三个风口专业!想学计算机怎么选大学专业

高考成绩揭晓,几家欢喜几家愁。对于那些未能如愿考取理想分数的同学来说,未来似乎蒙上了一层阴影。尤其是在计算机专业如此热门的今天,低分考生是否还有机会在这个领域找到一席之地?本文将为你揭秘,即使高考成绩不理想…

sheng的学习笔记-AI-集成学习(adaboost,bagging,随机森林)

ai目录:sheng的学习笔记-AI目录-CSDN博客 目录​​​​​​​ 集成学习 什么是集成学习 集成学习一般结构: 示意图 弱学习器 经典算法 Boosting 什么是boosting 方法图 AdaBoost 算法 AdaBoost示意图 流程解析: 错误分类率error…

【5.x】ELK日志分析、集群部署

ELK日志分析 一、ELK概述 1、ELK简介 ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。 一个完整的集中式日志系统,需要包含以下几个主…

白酒:茅台镇白酒的消费者教育计划与推广活动

云仓酒庄豪迈白酒,作为茅台镇的品牌,一直以来都非常重视消费者教育和推广活动。这些计划和活动的目的在于提高消费者对豪迈白酒的认知度和接受度,同时培养消费者的品鉴能力和酒文化素养。 首先,云仓酒庄豪迈白酒通过开展品鉴活动来…

机器学习二分类数据集预处理全流程实战讲解

本文概述 本文对weatherAUS数据集进行缺失值分析并剔除高缺失特征,合理填补剩余缺失值,利用相关性筛选关键特征,采用多种机器学习模型(如逻辑回归、随机森林等)在80%训练集上训练,并在20%测试集上预测明日降…

如何安全进行亚马逊、沃尔玛测评?

在亚马逊、沃尔玛、速卖通、阿里国际站等电商平台上,测评已成为一种高效的推广手段,但伴随的风险也不容忽视。这些风险主要源于平台严格的大数据风控机制,它涵盖了多个方面,以确保评价的真实性和合规性。 首先,硬件参数…

Nuxt快速学习开发---Nuxt3视图Views

Views Nuxt提供了几个组件层来实现应用程序的用户界面 默认情况下&#xff0c;Nuxt 会将app.vue文件视为入口点并为应用程序的每个路由呈现其内容 应用程序.vue <template> <div> <h1>Welcome to the homepage</h1> </div> </template> …

openh264 帧间预测编码过程源码分析

openh264 OpenH264 是一个开源的 H.264 编码和解码器&#xff0c;由思科系统开发并维护。它专为实时应用程序如 WebRTC 设计&#xff0c;提供了从基础到高级特性的广泛支持。OpenH264 的编码器支持从 Constrained Baseline Profile 到 5.2 级别&#xff0c;允许任意分辨率的编…

基于51单片机的音乐彩灯设计

基于51单片机的音乐彩灯设计 &#xff08;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 由STC单片机ADC0809模块LM386功放模块喇叭音频接口发光二极管电源构成 1.通过音频线输入可以播放电脑、手机、MP3里面的音乐。 2.AD对音频…

Java 桥接模式(Bridge Pattern)是设计模式中的一种结构型设计模式,桥接模式的核心思想是将抽象与实现解耦

桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。桥接模式的核心思想是将抽象与实现解耦&#xff0c;使得它们可以独立扩展。 在桥接模式中&#xff0c;通常包含以下四个…

揭秘:边缘智能网关P1600在智慧灯杆上的应用

智慧灯杆作为智慧城市建设的重要组成部分&#xff0c;集成了照明、通信、安防、环境监测等多重功能&#xff0c;是实现城市智能化的关键载体。边缘智能网关P1600在这一系统中扮演着至关重要的角色&#xff0c;它不仅连接和管理各种传感器和设备&#xff0c;还负责数据的采集、处…

保护密码安全,探讨密码加盐及其在Go语言中的实现

介绍 在当今数字化时代&#xff0c;个人隐私和数据安全成为了人们关注的焦点之一。随着网络犯罪的不断增加&#xff0c;用户的密码安全性变得尤为重要。密码加盐作为一种常见的安全措施&#xff0c;被广泛应用于密码存储和认证系统中。本文将深入探讨密码加盐的概念、重要性以…

Ubuntu网络管理命令:ifconfig

安装Ubuntu桌面系统&#xff08;虚拟机&#xff09;_虚拟机安装ubuntu桌面版-CSDN博客 关于ifconfig命令&#xff0c;在11.1节已经介绍过了。通过该命令可以查看和配置网络接口。ifconfig是一个比较古老的命令&#xff0c;在Ubuntu 22以及其他的许多发行版中&#xff0c;已经不…

多种传感器在钢铁工业安全风险监测预警中的应用

中国作为钢铁行业的生产与消费大国&#xff0c;其钢铁冶炼流程的复杂性和长周期性使得各环节中频繁出现的有毒有害、易燃易爆气体以及粉尘等危险物质成为行业安全管理的重大挑战。为了保障工作人员的安全&#xff0c;多种传感器在安全风险监测预警中的应用显得尤为重要。 钢铁产…

地表位移监测系统:原理、组成与功能

地表位移监测系统是一项用于实时监测地表下沉、沉降、地面位移和地下水位变化的关键工具。本文将介绍该系统的工作原理、系统组成、工作模式以及功能特点&#xff0c;以便更深入地了解如何有效利用该系统进行沉降监测。 一、工作原理 地表位移监测系统主要由位移监测站、数据采…

华宽通成功中标岳麓山大学科技城管理委员会投资环境推介可视化平台

湖南华宽通科技股份有限公司成功中标岳麓山大学科技城管理委员会投资环境推介可视化平台项目。该平台将整合区域经济数据、产业布局、创新能力等关键信息&#xff0c;通过智能分析工具&#xff0c;为投资者提供定制化的投资建议和实时更新的动态信息。通过该平台&#xff0c;岳…

C语言王国——数组的旋转(轮转数组)三种解法

目录 一、题目 二、分析 2.1 暴力求解法 2.2 找规律 2.3 追求时间效率&#xff0c;以空间换时间 三、结论 一、题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出…

Flink系列之:Generating Watermarks生成水印

Flink系列之&#xff1a;Generating Watermarks生成水印 一、水印策略简介二、使用水印策略三、处理闲置资源四、水印对齐五、编写水印生成器六、编写周期性水印生成器七、编写标点水印生成器八、水印策略和 Kafka 连接器九、Operators如何处理水印十、已弃用的AssignerWithPer…