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

Spring(1)—Spring 框架:Java 开发者的春天

一、关于Spring

1.1 简介

Spring 框架是一个功能强大的开源框架,主要用于简化 Java 企业级应用的开发,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,并由Pivotal团队维护。它提供了全面的基础设施支持,使开发者能够专注于业务逻辑而非底层细节。

46685819-7532-474c-adbd-3cf6fc0e3d99

Spring 自诞生以来备受青睐,一直被广大开发人员作为 Java 企业级应用程序开发的首选。时至今日,Spring 俨然成为了 Java EE 代名词,成为了构建 Java EE 应用的事实标准。

Spring官网: https://spring.io/

image

1.2 诞生与发展

诞生

关于Spring的发展起源要回溯到2002年,当时正是Java EE和EJB大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子认为 EJB 太过臃肿,并不是所有的项目都需要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题。

他为了证明自己的想法是正确的,在2001年10月写了一本书《Expert One-on-One J2EE》,介绍了当时Java企业应用程序开发的情况,并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。在这本书中,他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。在书中,他展示了如何在不使用 EJB 的情况下构建高质量、可扩展的在线座位预留系统。为了构建应用程序,他编写了超过 30,000 行的基础结构代码,项目中的根包命名为 com.interface21​,所以人们最初称这套开源框架为 interface21,这就是 Spring 的前身。

image

这个小伙子是谁呢?他就是大名鼎鼎的 Rod Johnson(下图),Rod Johnson 在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位,更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位,反正就是牛逼哄哄的人物。但是现在 Rod Johnson 已经离开了 Spring(2012 年 Rod Johnson 宣布他将要离开 Spring Source ),成为了一个天使投资人,同时也是多个公司的董事,早已走上人生巅峰。

image

Spring 框架的发展历程可以追溯到2003年,当时由 Rod Johnson 创建并发布了第一个版本。Spring 的初衷是为了简化企业级 Java 应用程序的开发,尤其是解决当时企业级应用开发中普遍存在的复杂性和耦合度高的问题。随着时间的推移,Spring 不断发展壮大,成为了一个完整的生态系统,涵盖了从核心的依赖注入和面向切面编程到 Web 应用开发、数据访问、安全、测试等多个领域。

发展

1. 初始版本(2003年)
  • 发布:Spring 1.0 正式发布。
  • 特点:主要集中于依赖注入(DI)和面向切面编程(AOP),为 Java 开发者提供了一个简洁的替代方案,减少了对 EJB 的依赖。
2. 稳定和成熟(2004-2006年)
  • Spring 2.0(2006年) :引入了对注解的支持,使得配置更加灵活,简化了开发过程。
  • Spring MVC:增强了 Web 应用开发的功能,提供了强大的 Model-View-Controller 支持。
3. 集成与扩展(2007-2010年)
  • Spring 3.0(2009年) :引入了 RESTful Web 服务支持和 Java 5 的注解功能,进一步增强了框架的灵活性和易用性。
  • 与其他技术的集成:Spring 开始与 Hibernate、JPA、Quartz 等流行技术无缝集成,扩展了其生态系统。
4. 云计算和微服务时代(2011年至今)
  • Spring 4.0(2013年) :引入了对 Java 8 的支持,增加了对异步编程和 WebSocket 的支持,适应现代应用需求。
  • Spring Boot(2014年) :发布了 Spring Boot,极大地简化了应用的开发和部署流程,促进了微服务架构的流行。
  • Spring Cloud(2015年) :为构建分布式系统提供了一整套解决方案,帮助开发者更轻松地管理微服务。
5. 持续演进
  • Spring 5.0(2017年) :引入了对反应式编程的支持,适应了现代应用对高并发和异步处理的需求。
  • 生态系统的扩展:随着 Kubernetes 和云原生技术的发展,Spring 继续演进以适应新的开发趋势。

image

1.3 特点

Spring 框架以其灵活性、模块化和扩展性著称,它具有许多显著的特点,这些特点使得 Spring 成为 Java 开发者广泛使用的开发框架之一。以下是 Spring 框架的一些主要特点:

  1. 控制反转(IoC)容器

    • Spring提供了一个强大的IoC容器,用于管理对象的创建、生命周期、配置和其他对象的依赖关系。
  2. 依赖注入(DI)

    • Spring支持通过构造函数、setter方法和注解等方式实现依赖注入,从而降低组件之间的耦合度。
  3. 面向切面编程(AOP)

    • Spring AOP提供了一种声明式的方式来实现横切关注点,如日志记录、事务管理、安全性等。
  4. 事务管理

    • Spring提供了一个全面的事务管理抽象,支持编程式和声明式事务管理,并且可以与不同的事务管理器(如JTA、JPA等)集成。
  5. 模块化和分层架构

    • Spring框架是高度模块化的,由多个模块组成,每个模块解决特定的问题,支持分层架构,如表示层、业务层、持久层等。
  6. 数据访问抽象

    • Spring提供了对各种数据访问技术的集成,包括JDBC、Hibernate、JPA、MyBatis等,并且简化了数据库操作。
  7. Web支持

    • Spring MVC是一个功能丰富的Web框架,用于构建Web应用程序和RESTful Web服务。Spring还支持WebSocket、Servlet、Portlet等Web技术。
  8. 安全性

    • Spring Security提供了一个全面的安全框架,用于保护基于Spring的应用程序。
  9. 测试支持

    • Spring提供了对各种测试框架的集成,如JUnit和TestNG,以及模拟对象的支持,使得单元测试和集成测试更加容易。
  10. 集成

    • Spring提供了对各种中间件、消息传递系统(如JMS、AMQP)和其他企业级技术的集成。
  11. 配置管理

    • Spring支持多种配置方式,包括XML、Java注解和Java配置类,提供了灵活的配置选项。
  12. REST和微服务

    • Spring Boot和Spring Cloud提供了对构建RESTful服务和微服务架构的支持。
  13. 响应式编程

    • Spring 5引入了对响应式编程模型的支持,Spring WebFlux是一个响应式的Web框架,用于构建非阻塞的、事件驱动的服务。
  14. 云原生支持

    • Spring Cloud提供了对云平台的集成,支持服务发现、配置管理、负载均衡、断路器等云原生特性。
  15. 社区和生态系统

    • Spring拥有一个活跃的社区和庞大的生态系统,提供了大量的扩展库和第三方集成。
  16. 持续更新和维护

    • Spring框架定期发布新版本,不断引入新特性和改进,以适应不断变化的技术环境。

‍1.4 应用场景

  1. 企业级应用
  • 传统企业应用:Spring 可用于构建大型企业级应用,支持复杂的业务逻辑和数据处理。
  • Spring MVC:用于开发基于 Web 的企业应用,提供 MVC 架构,便于处理请求和响应。
  1. 微服务架构
  • Spring Boot:通过简化配置,快速构建和部署微服务,适用于需要快速迭代和高可扩展性的项目。
  • Spring Cloud:提供服务发现、负载均衡、配置管理等工具,方便微服务之间的协调和管理。
  1. RESTful API
  • 构建 API 服务:利用 Spring MVC 构建 RESTful API,支持多种数据格式(如 JSON、XML)以供前端或其他服务调用。
  1. 数据访问层
  • 集成 ORM 框架:通过 Spring Data 或与 Hibernate、JPA 等 ORM 框架的集成,简化数据库操作和数据访问层的开发。
  1. 批处理应用
  • Spring Batch:专门用于处理大量数据的批处理应用,支持分片处理、事务管理和作业调度等功能。
  1. Web 应用
  • 企业级 Web 应用:适合开发高性能、可扩展的 Web 应用,支持用户认证、权限管理和事务处理。
  1. 单页应用(SPA)后端
  • 与前端框架结合:作为后端服务支持 React、Angular 或 Vue 等单页应用,提供数据接口和业务逻辑处理。
  1. 云原生应用
  • 云平台部署:支持云服务(如 AWS、Azure)的集成,使得应用能够在云环境中无缝运行。
  1. 安全性要求高的应用
  • Spring Security:用于处理用户认证和权限管理,适合需要高安全性的应用场景。
  1. IoT 应用
  • 物联网系统:可以用于开发物联网应用,处理设备通信和数据采集等需求。

二、Spring体系结构

2.1 概览

Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你挑选和选择适用于你的模块,不必要把剩余部分也引入。下面的部分对在 Spring 框架中所有可用的模块给出了详细的介绍。

Spring 框架提供约 20 个模块,可以根据应用程序的要求来使用。

Spring 体系结构

2.2 核心容器

核心容器由 spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring 表达式语言,Spring Expression Language)等模块组成,它们的细节如下:

  • spring-core 模块提供了框架的基本组成部分,包括 IoC 和依赖注入功能。
  • spring-beans 模块提供 BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦。
  • context 模块建立在由 corebeans 模块的基础上建立起来的,它以一种类似于 JNDI 注册的方式访问对象。Context 模块继承自 Bean 模块,并且添加了国际化(比如,使用资源束)、事件传播、资源加载和透明地创建上下文(比如,通过 Servelet 容器)等功能。Context 模块也支持 Java EE 的功能,比如 EJB、JMX 和远程调用等。ApplicationContext 接口是 Context 模块的焦点。spring-context-support 提供了对第三方集成到 Spring 上下文的支持,比如缓存(EhCache, Guava, JCache)、邮件(JavaMail)、调度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。
  • spring-expression 模块提供了强大的表达式语言,用于在运行时查询和操作对象图。它是 JSP2.1 规范中定义的统一表达式语言的扩展,支持 set 和 get 属性值、属性赋值、方法调用、访问数组集合及索引的内容、逻辑算术运算、命名变量、通过名字从 Spring IoC 容器检索对象,还支持列表的投影、选择以及聚合等。

它们的完整依赖关系如下图所示:

Spring 体系结构

对应的源码模块如下:

image-20241029012020791

2.3 数据访问/集成

数据访问/集成层包括 JDBC,ORM,OXM,JMS 和事务处理模块,它们的细节如下:

(注:JDBC=Java Data Base Connectivity,ORM=Object Relational Mapping,OXM=Object XML Mapping,JMS=Java Message Service)

  • JDBC 模块提供了 JDBC 抽象层,它消除了冗长的 JDBC 编码和对数据库供应商特定错误代码的解析。
  • ORM 模块提供了对流行的对象关系映射 API 的集成,包括 JPA、JDO 和 Hibernate 等。通过此模块可以让这些 ORM 框架和 spring的其它功能整合,比如前面提及的事务管理。
  • OXM 模块提供了对 OXM 实现的支持,比如 JAXB、Castor、XML Beans、JiBX、XStream 等。
  • JMS 模块包含生产(produce)和消费(consume)消息的功能。从 Spring 4.1 开始,集成了 spring-messaging 模块。
  • 事务模块为实现特殊接口类及所有的 POJO 支持编程式和声明式事务管理。(注:编程式事务需要自己写 beginTransaction()、commit()、rollback() 等事务管理方法,声明式事务是通过注解或配置由 spring 自动处理,编程式事务粒度更细)

对应的源码模块如下:

image

2.4 Web模块

Web 层由 Web,Web-MVC,Web-Socket 和 Web-Portlet 组成,它们的细节如下:

  • Web 模块提供面向 web 的基本功能和面向 web 的应用上下文,比如多部分(multipart)文件上传功能、使用 Servlet 监听器初始化 IoC 容器等。它还包括 HTTP 客户端以及 Spring 远程调用中与 web 相关的部分。

  • Web-MVC 模块为 web 应用提供了模型视图控制(MVC)和 REST Web服务的实现。Spring 的 MVC 框架可以使领域模型代码和 web 表单完全地分离,且可以与 Spring 框架的其它所有功能进行集成。

  • Web-Socket 模块为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。

  • Webflux 模块: Spring WebFlux 是 Spring Framework 5.x中引入的新的响应式web框架。与Spring MVC不同,它不需要Servlet API,是完全异步且非阻塞的,并且通过Reactor项目实现了Reactive Streams规范。Spring WebFlux 用于创建基于事件循环执行模型的完全异步且非阻塞的应用程序。

对应的源码模块如下:

image

2.5 Test模块

Test 模块:Spring 支持 Junit 和 TestNG 测试框架,而且还额外提供了一些基于 Spring 的测试功能,比如在测试 Web 框架时,模拟 Http 请求的功能。

包含Mock Objects, TestContext Framework, Spring MVC Test, WebTestClient。

对应的源码模块如下:

2.6 其他

还有其他一些重要的模块,像 AOP,Aspects,Instrumentation,Web 和测试模块,它们的细节如下:

  • AOP 模块提供了面向方面(切面)的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.Net属性的方式合并行为信息到代码中。
  • Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。
  • Instrumentation 模块在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。
  • Messaging 模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息。
  • 测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。

对应的源码模块如下:

image-20241029012125230

三、Spring下载

3.1 官方下载

进入如下链接,依次点开:Artifacts–>snapshot–>org–>springgframework–>spring

https://repo.spring.io/ui/repos/tree/General/snapshot

image

image

选择需要的版本

image

打开后选择后缀为-dist.zip的下载即可

image

image

image

Spring的解压文件中有几个文件夹:docs、libs、schema。

docs :该文件夹下包含Spring的相关文档、开发指南及API参考文档。
libs :所有的 Spring 库都在这里,在里面我们会发现每个jar包都有三个不同后缀的文件。
***.jar :字节码jar包
***-javadoc.jar :文档
***-sources.jar :源码
schema :所有的约束(xsd)文件都在这里。

附上一键点击直达地址:

https://repo.spring.io/ui/native/snapshot/org/springframework/spring/

image

3.2 Maven引入

要使用Spring,现在一般都是使用maven导入spring的jar包去使用。而不用去专门下载jar包再导入。

在Maven项目中添加如下依赖,引入Sping

<dependency><groupId>org.springframework</groupId><artifactId>spring</artifactId><version>5.2.6.RELEASE</version><type>pom</type>
</dependency>

image

相关文章:

Spring(1)—Spring 框架:Java 开发者的春天

一、关于Spring 1.1 简介 Spring 框架是一个功能强大的开源框架&#xff0c;主要用于简化 Java 企业级应用的开发&#xff0c;由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立&#xff0c;并由Pivotal团队维护。它提供了全面的基础设施支持&#xff0c;使开发者…...

MT1401-MT1410 码题集 (c 语言详解)

目录 MT1401归并排序 MT1402堆排序 MT1403后3位排序 MT1404小大大小排序 MT1405小大大小排序II MT1406数字重排 MT1407插入 MT1408插入 MT1409旋转数组 MT1410逆时针旋转数组 MT1401归并排序 c 语言实现代码 #include <stdio.h>// merge two subarrays void merge(int a…...

React基础语法

1.React介绍 React由Meta公司开发&#xff0c;是一个用于构建Web和原生交互界面的库 1.1 React优势 相较于传统基于DOM开发的优势 1.组件化的开发方式 2.不错的性能 相较于其他前端框架的优势 1.丰富的生态 2.跨平台支持 1.2React的时长情况 全球最流行&#xff0c;大厂…...

《Kadane‘s Algorithm专题:最大和连续子数组》

&#x1f680; 博主介绍&#xff1a;大家好&#xff0c;我是无休居士&#xff01;一枚任职于一线Top3互联网大厂的Java开发工程师&#xff01; &#x1f680; &#x1f31f; 在这里&#xff0c;你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人&#xff0c;我不仅热衷…...

Vue基础(5)

ref属性 在 Vue2 中&#xff0c;ref是一个特殊的属性&#xff0c;用于在模板中获取对某个 DOM 元素或子组件的引用。通过 ref&#xff0c;我们可以在 JavaScript 代码中直接访问该 DOM 元素或组件实例。 示例: <template><div><input ref"inputField&quo…...

面对复杂的软件需求:5大关键策略!

面对软件需求来源和场景的复杂性&#xff0c;有效地管理和处理需求资料是确保项目成功的关键&#xff0c;能够提高需求理解的准确性&#xff0c;增强团队协作和沟通&#xff0c;降低项目风险&#xff0c;提高开发效率。反之&#xff0c;项目可能面临需求理解不准确、团队沟通不…...

使用Git进行版本控制的最佳实践

文章目录 Git简介基本概念仓库&#xff08;Repository&#xff09;提交&#xff08;Commit&#xff09;分支&#xff08;Branching&#xff09; 常用命令初始化仓库添加文件提交修改查看状态克隆仓库分支操作合并分支推送更改 最佳实践使用有意义的提交信息定期推送至远程仓库使…...

【入门1】顺序结构 - B2025 输出字符菱形

题目描述 用 * 构造一个对角线长 55 个字符&#xff0c;倾斜放置的菱形。 输入格式 没有输入要求。 输出格式 如样例所示。用 * 构成的菱形。 输入输出样例 输入 #1 输出 #1**** ********* <C> : #include<stdio.h>int main() {printf(" *\n ***\n**…...

C#DLL热加载|动态替换

我有一个项目 开始取数据和结束数据部分是一样的&#xff0c;但中间处理数据是根据客户需求来转换的 又要求增加一个客户数据转换 主程序是不能停下来的 所以这个项目转数据转换部分做成插件式 每个客户的数据转换都是一个项目 都是一个DLL 主程序里面定义好接口类或者抽象…...

数据库三大范式

目录 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) Oracle三大范式是数据库设计中的规范化过程,旨在减少数据冗余、提高数据一致性和数据库性能。这三大范式包括第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 第一范式(1NF) 数据库表的每一列都是不可分割…...

【linux】fdisk磁盘分区管理

介绍 fdisk是一个磁盘分区管理工具&#xff0c;可以用来创建、删除、修改和查看磁盘分区。 fdisk一般都是交互式使用&#xff0c;基础语法: fdisk /dev/sdd。进入交互窗口后&#xff0c;有一些选项&#xff0c;需要了解下&#xff1a; 选项含义n创建新分区p查看磁盘的分区情…...

asp.net core 入口 验证token,但有的接口要跳过验证

asp.net core 入口 验证token,但有的接口要跳过验证 在ASP.NET Core中&#xff0c;你可以使用中间件来验证token&#xff0c;并为特定的接口创建一个属性来标记是否跳过验证。以下是一个简化的例子&#xff1a; 创建一个自定义属性来标记是否跳过验证&#xff1a; public clas…...

[mysql]聚合函数GROUP BY和HAVING的使用和sql查询语句的底层执行逻辑

#GROUP BY的使用 还是先从需求出发,我们现在想求员工表里各个部门的平均工资,最高工资 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id 我们就会知道它会把一样的id分组,没有部门的就会分为一组,我们也可以用其他字段来分组,我们想查询不同jb_id…...

从数据中台到数据飞轮:实现数据驱动的升级之路

从数据中台到数据飞轮&#xff1a;实现数据驱动的升级之路 随着数字化转型的推进&#xff0c;数据已经成为企业最重要的资产之一&#xff0c;企业普遍搭建了数据中台&#xff0c;用于整合、管理和共享数据&#xff1b;然而&#xff0c;近年来&#xff0c;数据中台的风潮逐渐减退…...

小记:SpringBoot中,@Alisa和@ApiModelProperty的区别

在 Spring Boot 中&#xff0c;Alias和ApiModelProperty 这两个注解用于不同的目的。 Alias Alias是一个用于定义别名的注解&#xff0c;通常用于 Bean 属性的别名功能&#xff0c;这样在使用某些框架&#xff08;如 JPA 或 Jackson&#xff09;时&#xff0c;可以将一个属性名…...

信捷 PLC C语言 定时器在FC中的使用

传统梯形图的定时器程序写起来简单&#xff0c;本文用C语言写定时器的使用。 定时器在c语言中使用&#xff0c;和普通梯形图中使用的区别之一是既有外部条件&#xff0c;也有内部条件。 1.建全局变量 2.建立FC POU 这个是功能POU程序。 这里的Enable是内部条件 3.调用包含定…...

k8s常用对象简介

Pod Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod 是一组&#xff08;一个或多个&#xff09; 容器&#xff1b; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置&#xff08;colocated&#xff09;的并且一同调度&…...

【Kaggle | Pandas】练习2:索引,选择和分配

文章目录 数据总表1、读取列2、读取某列的第几行的值3、第一行数据4、读取列中前10个值5、读取索引标签为1 、 2 、 3 、 5和8的记录6、包含索引标签为0 、1 、10和100的记录的country 、province 、 region_1和region_2列7、 前 100 条记录的country和variety列8、包含Italy葡…...

【flask】 flask redis的使用

目的&#xff1a;如何使用在flask web项目中连接redis&#xff0c;并简单的使用 使用的库包&#xff1a;flask-redis pip install falsk-redis下面的写法是对项目代码进行模块化拆分的写法&#xff0c;在app.py中只进行对象的初始化等操作&#xff1b;exts.py中创建对象&…...

【Unity基础】Unity中的特殊文件夹详解

在Unity项目中&#xff0c;通常可以根据需要创建任意名称的文件夹来组织项目内容&#xff0c;但有一些特定的文件夹名称会触发Unity对其中资源和脚本的特殊处理。这篇文章将详细介绍这些特殊文件夹&#xff0c;帮助开发者在项目中合理地使用它们。 1. Assets 文件夹 Assets文…...

矩阵蠕虫,陈欣出品

第一章 陈欣是一名资深的软件工程师&#xff0c;专门从事分布式系统和人工智能的研究。她的最新项目叫做“MatrixWorm”&#xff0c;目标是创建一个简单而强大的远程控制系统。在这个系统中&#xff0c;控制端可以通过文字命令&#xff0c;让被控制端利用大语言模型的能力来理…...

python 爬虫 入门 五、抓取图片、视频

目录 一、图片、音频 二、下载视频&#xff1a; 一、图片、音频 抓取图片的手法在上一篇python 爬虫 入门 四、线程&#xff0c;进程&#xff0c;协程-CSDN博客里面其实有&#xff0c;就是文章中的图片部分&#xff0c;在那一篇文章&#xff0c;初始代码的28&#xff0c;29行…...

ubantu 编译安装ceph 18.2.4

下载ceph代码 git clone https://github.com/ceph/ceph.git #切换tag git checkout v18.2.4 -b v18.2.4 #下载子模块 会有报错重新执行即可 git submodule update --init --recursive安装ceph所需要的依赖 #curl命令安装 sudo apt install curl#安装ceph依赖 ./install-deps.…...

哈希封装“unordered_set·map“

本文与对setmap的封装高度相似&#xff0c;可以参考我之前的对setmap封装的文章&#xff1a; 链接&#xff1a;&#xff08;没看过的话就点点我吧&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&#x1f61a;&am…...

Bi-LSTM-CRF实现中文命名实体识别工具(TensorFlow)

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【MobileNetV2实现实时口罩检测tensorflow】 2.【卫星图像道路检测DeepLabV3P…...

从JDK 17 到 JDK 21:Java 新特性

JDK17 密封类 概念&#xff1a;密封类允许开发者控制哪些类可以继承或实现特定的类或接口。通过这种方式&#xff0c;密封类为类的继承提供了更高的安全性和可维护性。 定义&#xff1a;使用sealed代表该类为密封类&#xff0c;并用permits限制哪些类可以继承。 public sea…...

【计算机网络 - 基础问题】每日 3 题(五十七)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…...

第十二章 章节练习created的应用

目录 一、引言 二、运行效果图 ​三、完整代码 一、引言 构建一个新闻的页面&#xff0c;页面在响应式数据准备好之后&#xff08;即created&#xff09;&#xff0c;就向后台接口请求获取新闻数据列表&#xff0c;然后赋值给Vue实例中的list列表&#xff0c;这个请求逻辑我…...

Unity 游戏性能优化实践:内存管理与帧率提升技巧

1. 引言 随着移动设备性能的逐步提升&#xff0c;游戏玩家对画质和流畅度的要求越来越高。优化 Unity 游戏性能不仅可以提升用户体验&#xff0c;还能降低设备的功耗&#xff0c;延长电池寿命。这篇文章将深入探讨如何在 Unity 中优化游戏的内存管理与帧率&#xff0c;通过多方…...

C++游戏开发详解

C 是一种广泛使用的编程语言&#xff0c;尤其在游戏开发领域有着不可替代的地位。它提供了对底层硬件的直接访问能力&#xff0c;允许开发者优化性能&#xff0c;这对于追求高帧率和低延迟的游戏来说至关重要。本文将详细介绍使用 C 进行游戏开发的基础知识和技术要点&#xff…...

毕设 做网站/上海网站排名seo公司

Gallery组件主要用于横向显示图像列表&#xff0c;不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说&#xff0c;如果为Gallery组件指定了10张图像&#xff0c;那么当Gallery组件显示到第10张时&#xff0c;就不会再继续显示了。这虽然在大多数时候没有什么关系…...

网站建设策划书/电商网站推广方案

1、以excel2010版本为例&#xff0c;如下图所示&#xff0c;要把该图表复制到PPT&#xff1b; 2、点击excel的图表点复制&#xff0c;然后在PPT里面点击鼠标右键&#xff0c;粘贴选项选择保留源格式和嵌入工作簿&#xff1b; 3、点击保留源格式和嵌入工作簿后就会得到如下图所…...

高手优化网站/品牌策略有哪些

今年的两会谈了很多主题&#xff0c;而我最关心的一个主题是我们经常谈到的创新。我们都知道一个企业发展最根本、最核心的动力就是是不断的创新。我们以前都听过三个和尚的故事&#xff0c;它讲的是一个人的时候&#xff0c;自己挑水吃。两个人的时候&#xff0c;协作抬水喝。…...

查询系统网站模板/关键词优化公司前十排名

1.安装xorg sudo pacman -S xorg xorg提供了修改硬件屏幕亮度,键盘键位…的很多文件。 2.查看当前键盘映射的命令 xmodmap 以下是我的输出 xmodmap: up to 4 keys per modifier, (keycodes in parentheses):shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Loc…...

做网站要有什么功能/什么软件能搜索关键词能快速找到

该脚本可以用来导出IIS配置、任务计划、服务列表和APP&#xff0c;同时支持Windows 2003和2008。 #定义备份位置 $iisfolder "d:\Backup_all\IIS" $taskfolder "d:\Backup_all\Task" $servicesfolder "d:\Backup_all\Service" $appfolder &q…...

网站前置审批流程/中国宣布疫情结束日期

对于爬虫来说&#xff0c;当你的访问频率达到了目标网站设置的阈值时&#xff0c;就会触发目标网站的反爬机制。而封禁访问者ip就是很常见的一个反爬机制。当ip被封禁后&#xff0c;从此ip发出的请求将不能得到正确的响应。这种时候&#xff0c;我们就需要一个代理ip池。什么是…...