Spring框架概述

目录

1. Spring框架的起源

2. Spring框架的构成

3. Spring的发展历程

4. Spring的开发环境

4.1. Maven安装与配置

(1)Maven的下载与安装

(2)配置Maven的环境变量

(3)本地仓库的配置

(4)镜像仓库的配置

(5)创建Maven项目

(6)Maven项目的结构

(7)Maven项目的配置文件

4.2. Tomca的安装与配置

(1)Tomcat下载与安装

(2)Tomcat的启动

(3)解决中文乱码问题

(4)Tomcat端口的配置

(5)Web应用的配置

4.3.  集成开发环境

(1) IntelliJ IDEA下载和安装

(2)创建Maven Web项目

(3)配置Tomcat服务器

5. 初识Spring框架


      Spring框架是一个开源的Java平台,它通过提供一致的编程和配置模型,解决了企业应用开发中常见的复杂性问题。Spring的核心特性包括依赖注入(Dependency Injection, DI)和面向方面的编程(Aspect-oriented programming, AOP),它们共同提供了一种强大且灵活的方式来管理对象的依赖关系和增强对象的行为。

1. Spring框架的起源

        Spring框架起源于2002年,那时Java EE和EJB正风靡一时,许多大公司都采用这些技术进行项目开发。在当时背景下,Rod Johnson认为EJB过于庞大,不是所有项目都需要这样的重型框架,应有更优的解决方案。为了证明自己的观点,Rod Johnson写了《Expert One-on-One J2EE Development without EJB》一书,书的封面如图2所示。在书中,Rod Johnson介绍了Java企业应用程序开发情况,并指出Java EE和EJB组件框架中的一些主要缺陷,Rod Johnson还提出了一个基于普通的Java类和依赖注入的更简单的解决方案,另外,他还展示了如何在不使用EJB的情况下构建高质量、可扩展性的在线预留座位系统。

图1. Expert One-on-One J2EE Development without EJB

       为构建应用程序,Rod Johnson编写了超过30000行的基础结构代码,项目中的根包命名为com.interface21,这是Spring框架的前身,所以框架最初的名字叫interface21。2003 年 Rod Johnson 和同伴在此框架的基础上开发了一个全新的框架命名为Spring,Rod Johnson认为Spring 是传统J2EE新的开始,随后Spring框架的发展进入快车道。

       Rod Johnson 是一位杰出的软件工程师,他以创立Spring框架而闻名。Rod Johnson 在悉尼大学获得了计算机学和音乐学的双学位,后来还获得了音乐学博士学位。Rod Johnson在软件开发领域有着深远的影响,特别是在Java社区中。2009年,VMware以4.2亿美元收购了Spring Source,2012年,Rod Johnson宣布离开Spring Source,转而成为天使投资人和多家公司的董事,继续在技术和商业领域发挥影响力。

      Spring框架是由目前Pivotal团队维护的,Pivotal是一个提供云和大数据解决方案的公司,其前身是由Rob Mee于1989年创立的咨询公司Pivotal Labs。Pivotal Labs注于快速的互联网式软件开发,即敏捷编程。2012年,EMC公司收购了Pivotal Labs,并将其作为EMC的一个新部门,继续与以前的客户合作。2013年,EMC将Pivotal Labs 的核心业务分拆出去,成立了新的 Pivotal 公司,该公司的股东是 EMC 、 VMware 和通用电气。 Pivotal 公司负责维护的开源产品除了Spring及其衍生产品外,还有我们耳熟能详的Tomcat、Redis、RabbitMQ、Cloud Foundry、Greenplus和GemFire。Pivotal 公司成立之后,于 2014 年发布了 Spring Boot,2015 年发布了 Spring Cloud,2018 年 Pivotal 公司在纽约上市。

2. Spring框架的构成

       Spring框架由大约20个模块组成,这些模块按照功能可分为: 核心容器(Core Container)、面向方面编程(AOP和Aspects)、设备支持(Instrumentation)、数据访问及集成(Data Access/Integration)、报文发送(Message)Web和测试(Test),如图2所示。Spring框架中的各个模块可以独立使用,也可以几个模块进行组合。

图2. Spring框架的构成

(1)核心容器(Core Container)

     核心容器是由spring-beans、spring-core、spring-contextspring-expression(Spring Expression Language, SpEL)四个模块构成,提供Spring框架的基本功能。

      spring-beans和spring-core是Spring框架的核心模块,它提供了控制反转(Inversion of Control, IoC)和依赖注入(Dependency Injection, DI)。BeanFactory接口是Spring框架中的核心接口,是工厂模式的实现。 BeanFactory使用IoC模式将应用程序的配置和依赖性规范与实际的应用程序代码进行了分离。

       spring-context位于核心模块之上,它扩展了BeanFactory,为其添加了Bean生命周期控制、框架事件体系以及资源加载透明化等功能。此外,它还提供了许多企业级的支持,例如,邮件访问、远程访问、任务调度等。

       spring-expression是统一表达式语言(EL)的扩展模块,它可以查询和管理运行中的对象,同时也可以方便地调用对象的方法,操作数组和集合等。

(2)面向方面编程(AOP、Aspects)

       Spring框架提供了面向方面的编程(AOP)能力,可以实现一些面向对象编程无法很好实现的功能,例如,将日志、事务与具体的业务逻辑解耦。AOP模块包含spring-aop、spring-aspects模块。 spring-aop是实现面向方面编程的核心模块。 spring-aspects模块集成自Aspect框架,主要为面向方面编程提供多种实现方法。

(3)仪器化支持(Instrumentation

       spring-instrument模块主要用于提供类的仪器化和类加载器的实现。类的仪器化允许Spring或其他框架在运行时修改类的字节码。spring-instrument模块提供了一个 Java 代理的实现,可以用来在加载时动态地仪器化类。这对于实现面向切面编程(AOP)等功能非常有用,可以动态地添加或改变应用程序的行为,而无需修改源代码。

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

      Spring自带了一组数据访问框架,集成了多种数据访问技术。例如,JDBC、MyBatis、Hibernate、Java Persistence API(JPA)等。

      数据访问及集成模块包括:spring-jdbc、spring-tx、spring-orm、spring-jmsspring-oxm。spring-jdbc提供了JDBC访问支持,spring-tx实现事务控制, spring-orm提供了对象-关系映射的支持, spring-jms提供了消息的发送和接收功能, spring-oxm提供了从对象到XML映射的支持。

(5)Web

       spring-web模块由spring-web、spring-webmvc、spring-websocketspring-webflux构成,它为Web应用程序的开发提供支撑。

      spring-web模块为spring提供了最基础的Web支持,其通过Servlet或者Listeners来初始化IoC容器。spring-web模块实现了Spring MVCspring-websocket实现与Web前端的全双工通信协议。spring-webflux是一个新的非阻塞函数式Reactive Web框架,可以用来建立异步、非阻塞、事件驱动的服务。

(6)报文发送(Message)

       spring-message模块是从Spring 4开始加入的一个模块,专门用于处理国际化和本地化的消息和文本。这个模块提供了一种灵活的方式来定义和管理应用中的消息,使得支持多语言环境变得更加简单。

(7)测试(Test)

      spring-test模块主要用于提供支持和增强在 Spring 应用程序上进行单元测试和集成测试的功能。这个模块通过提供一系列的实用工具和注解来简化测试过程,使得开发者能够更加高效地编写和执行测试用例。

3. Spring的发展历程

      Spring自2002年由Rod Johnson提出概念以来,经历了多个重要的发展阶段,逐渐成为Java开发中最受欢迎的框架之一。Spring框架的主要发展历程如下:

  • 2003年Spring框架首次公开发布,版本为0.9。这个版本包括了核心容器、依赖注入、面向切面编程等基础功能。
  • 2004年发布Spring 1.0正式版,随后不久推出1.2版本,增加了对MVC框架的支持。
  • 2006年Spring 2.0发布,引入了基于XML的配置元数据支持和简化的XML命名空间。
  • 2007年:Spring 2.5发布,改进了对注解驱动开发的支持,引入了Spring Web Flow。
  • 2009年Spring 3.0发布,增加了对Java 5以上版本的支持,引入了注解驱动的开发和Java EE 6的支持。
  • 2013年Spring 4.0发布,全面支持Java 8,增强了对WebSocket和REST APIs的支持。
  • 2014年Spring Boot 1.0发布,目的是简化新Spring应用的引导和开发过程。Spring Boot提供了大量自动配置的功能,极大地简化了项目配置和依赖管理。
  • 2015年Spring Cloud项目启动,旨在提供在云平台上构建和部署微服务的工具和支持
  • 2017年Spring 5.0发布,引入了反应式编程模型,支持响应式APIs,增强了在异步和事件驱动环境下的性能。
  • 2019年Spring Boot 2.2发布,进一步增强了对微服务架构和云原生应用的支持
  • 2021年Spring Boot 2.5发布,持续优化和扩展功能,提升开发体验和性能。
  • 2022年:Spring 6.0发布,该版本基于 Java 17+,与最新的 Java EE 标准保持一致,提供了更好的兼容性和扩展性。

      Spring框架的发展不仅跟随了技术潮流,如从单体应用到微服务架构的转变,还积极引入新技术,如响应式编程和云原生支持,保持了其在Java开发社区中的领导地位。通过不断的迭代和改进,Spring使得Java开发更加高效、简洁和强大。在这个过程中,Spring生态系统也不断壮大。许多基于Spring的项目如Spring Security、Spring Data、Spring Cloud等都成为了Java开发中不可或缺的一部分。Spring框架的不断发展和完善,使其能够持续满足企业级Java应用开发的需求,并保持在技术创新的前沿。

4. Spring的开发环境

      Spring框架是采用Java语言开发,spring 5.0对Java要求的最低版本是Java 8。关于Java运行环境的安装与配置请阅读文章:开发Java应用程序,在此不做赘述。下面介绍项目管理工具Maven、Web服务器Tomcat以及Java集成开发环境(IDE)的安装与配置。

4.1. Maven安装与配置

       Maven是跨平台的项目管理工具,主要服务于Java平台的项目构建、依赖管理、项目信息管理。MavenApache下的一个开源项目,它包含了对象模型、标准集合、项目生命周期、依赖管理系统和用来运行定义在生命周期阶段的插件目标的逻辑。

(1)Maven的下载与安装

       打开Maven官方下载网址(https://maven.apache.org/download.cgi), 选择下载二进制归档zip文件(Binary zip archive):apache-maven-3.9.6-bin.zip,如图3所示。

图3. Maven的下载页面

       将下载的apache-maven-3.9.6-bin.zip文件解压缩到无中文和空格的路径下,这里选择D:\apache-maven-3.9.6,解压缩后的目录结构如图4所示。

图4. Maven的目录结构

(2)配置Maven的环境变量

       首先新建环境变量MAVEN_HOME,将其值设置为: D:\apache-maven-3.9.6,然后,编辑环境变量Path,将%MAVEN_HOME%\bin加入到Path中。

图5. MAVEN环境变量的定义

       在命令行方式下输入mvn-version命令,检测maven是否安装成功,如果输出下图的内容,则说明Maven安装成功。

(3)本地仓库的配置

       配置完Maven的环境变量之后,还需要修改本地Maven仓库的地址。Maven从远程仓库下载依赖包会存储在本地仓库中。需要手动修改配置文件setting.xml来配置本地仓库的地址,setting.xml文件位于Maven安装目录的conf文件夹下,例如,在面向的实例中,该文件位于D:\apache-maven-3.9.6\conf目录中。

打开settings.xml文件,看到文件的第53行内容,将53行复制并粘贴到55行,如下图所示。

       将localRepository标签内容换成自己的本地仓库地址。Maven推荐本地仓库地址设置为 :${user.home}/.m2/repository(见52行),其中,user.home为用户的主目录。例如,在Windows系统下,user.home的目录为C:\Users\fcmeng,则Maven的本地仓库地址为:C:\Users\fcmeng\.m2\repository,如下图所示。

      如果用户机器的C盘的空间有限,也可以将Maven的本地仓库地址改为其它地址。

(4)镜像仓库的配置

       Maven默认的官方镜像仓库是海外的,在国内下载速度非常慢,推荐使用阿里云提供的Maven镜像仓库,这样可以加快依赖包的下载速度和稳定性。

       可以添加阿里云的镜像到setting.xml文件中。首先,在setting.xml文件中找到mirrors节点,在其下添加mirror子节点,节点信息如下:

<mirror>

       <id>alimaven</id>

       <mirrorOf>center</mirrorOf>

       <name>aliyun maven</name>

       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

    </mirror>

添加上述子节点后的setting.xml文件内容如下:

(5)创建Maven项目

       利用maven内置插件Archetype的generate任务可以创建一个Java项目骨架。命令如下:

          mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}  -         

                                  DarchetypeArtifactId={ArchetypeId} -DinteractiveMode=false

      其中,

  • archetype是插件名称, generate是插件的一个任务,一个插件可以有很多任务,这里仅是产生骨架任务;
  • -DgrounpId:组织标识(包名);
  • -DartifactId:项目名称;
  • -DarchetypeArtifactId:指定ArchetypeId,即骨架类型;
  • -DinteractiveMode:是否使用交互模式。

     常用的项目骨架:

  • maven-archetype-quickstart创建Java一般项目
  • maven-archetype-webapp:创建Java Web项目

     集成开发环境中创建Maven项目也是调用maven内置插件Archetype来完成的。

(6)Maven项目的结构

       Maven项目有约定的目录结构,每个目录都有自己的含义,如图6所示。

图6. Maven项目的结构

(7)Maven项目的配置文件

       pom.xml是Maven项目的核心配置文件。项目本身的描述、项目依赖库、项目构建配置等与构建过程相关的一些设置都在这个文件中进行配置。

       pom的含义是项目对象模型(Project object model),其内容及其含义如图7所示。

图7. pom.xml文件

    可以在maven网站上查找并添加项目依赖的JAR包,Maven网站地址:https://mvnrepository.com/,其首页如下图所示。

图8. Maven网站

4.2. Tomca的安装与配置

       Tomcat是Apache组织的Jakarta项目中的一个重要子项目,它是Sun公司(已被Oracle收购)推荐运行ServletJSP的容器(引擎),其源代码是完全公开的。Tomcat不仅具有Web服务器的基本功能,还提供了数据库连接池等许多通用组件功能。

(1)Tomcat下载与安装

       Tomcat的版本不断更新,我们选择Windows 64位系统下10.1.23版的二进制归档文件:apache-tomcat-10.1.23-windows-x64.zip,

下载地址为:https://tomcat.apache.org/download-10.cgi,如图9所示。

图9. Tomcat的下载页面

       将下载的zip文件戒烟所的安装目录,这里为D:\tomcat\apache-tomcat-10.1.23,解压缩后的目录结构如下图所示。

图10. Tomcat的目录结构

各个目录的含义如下:

  • bin用于存放Tomcat的可执行文件和脚本文件。
  • conf:用于存放Tomcat的各种配置文件,如web.xmlserver.xml
  • lib:用于存放Tomcat服务器和所有Web应用程序需要访问的JAR文件。
  • logs:用于存放Tomcat的日志文件。
  • temp:用于存放Tomcat运行时产生的临时文件。
  • webapps:Web应用程序的主要发布目录,通常要将发布的应用程序放到这个目录下。
  • work:Tomcat的工作目录,JSP编译生成的Servlet源文件和字节码文件放到这个目录下。

(2)Tomcat的启动

        进图Tomcat安装目录的bin文件夹下,用鼠标双击startup.bat文件,便会启动Tomcat服务器,此时可以在命令行看到一些启动信息,如图11所示。

图11. Tomcat启动界面

       在启动Tomcat的过程,可能会遇到一种情况,即双击bin目录中的startup.bat脚本文件时,命令行窗口一闪而过。这时可以进入命令窗口,在该窗口执行startup.bat命令,就会看到错误信息显示在该窗口中。出现上述情况的主要问题可能是JAVA_HOME环境变量配置不正确。这是因为Tomcat服务器是由Java语言开发的,它在运行时需要根据JAVA_HOME环境变量来获取JRE的安装位置,从而利用Java虚拟机来运行Tomcat。要解决这个问题只需将JAVA_HOME环境变量配置成JDK的安装目录。

      Tomcat启动后,在浏览器的地址栏中输入http://localhost:8080或者http://127.0.0.1:8080,访问Tomcat服务器,如果浏览器中出现如图12显示的界面,则说明Tomcat服务器安装成功。

图12. Tomcat启动首页

(3)解决中文乱码问题

      Tomcat产生中文乱码的主要原因是编码与解码的方式不一致,可以通过如下方式解决。

  •  打开tomcat的/conf/server.xml,在Connerctor标签下给它增加UTF-8编码方式(第74行):

  • 打开tomcat的\conf\logging.properties,将日志的编码格式由UTF-8改为GBK(第51行):

(4)Tomcat端口的配置

       8080Tomcat服务器默认占用的端口,可以通过修改Tomcat服务器安装目录中conf文件夹下的主配置文件server.xml来更改端口号。打开server.xml文件,找到如下内容:

       将其中的port=“8080”更改为新的端口号,并重新启动Tomcat服务器即可,例如,将8080更改为9090等。

       如果Tomcat服务器所在的计算机没有启动占用80端口的其他网络程序,也可以将Tomcat服务器的端口设置为80,这样用户在访问Tomcat服务器时可以省略端口号,例如,http://localhost/

(5)Web应用的配置

       在Web服务器上运行的Web资源都是以Web应用形式呈现的,所谓Web应用就是多个Web资源的集合,Web应用通常也称为Web应用程序或Web工程。一个Web应用由多个Web资源或其他文件组成,其中包括HTML文件、CSS文件、JS文件、动态Web页面、Java程序、支持JAR包、配置文件等。开发人员在开发Web应用时,应按照一定的目录结构来存放这些文件,否则,在把Web应用交给Web服务器管理时,不仅可能会使Web应用无法访问,还会导致Web服务器启动报错。

       Tomcat服务器安装目录的webapps目录下的任何一个子目录都可以作为一个Web应用目录。例如,在webapps下新建myweb子目录,那么myweb就成为一个Web应用目录,如果将web1.html保存到myweb中,那么在浏览器中输入:http://localhost:8080/myweb/web1.html,就可以访问web1.html页面。

     在Tomcat中部署Web应用主要有四种方式:

  • 方式一:将web项目打包为WAR文件后拷贝到webapps目录中;
  • 方式二:将Web应用文件夹复制到Tomcat安装目录下的webapps文件夹中;
  • 方式三:打开Tomcat安装路径下的conf文件夹下的server.xml文件,在<Host></Host>元素中添加<Context>元素,例如,要配置D:\myWeb文件夹下的Web应用myweb1可以使用以下代码:<Context path=“/” docBase=“D:/myWeb/myweb1” reloadable=“true” >。
  • 方式四:在conf\Catalina\localhost目录下添加xml配置文件,任意命名只要和当前文件夹中的文件名不重复即可。

4.3.  集成开发环境

      目前,业界最常用的Java IDE工具是Eclipse和IntelliJ IDEA。Eclipse是开源免费的,IntelliJ IDEA提供了两个版本:旗舰版(Ultimate)和社区版(Community),其中,Ultimate是商业收费的,Community是免费的。对于在校的教师和学生,可以申请免费的IntelliJ IDEA Ultimate版本作为教学和学习使用。在这里,我们介绍如何利用IntelliJ IDEA Community创建和管理Maven项目。

(1) IntelliJ IDEA下载和安装

      IntelliJ IDEA的下载网址是:https://www.jetbrains.com/idea/download,我们选择IntelliJ IDEA Community Edition进行安装文件的下载,如图13所示。

图13. IntelliJ IDEA 下载页面

      下载完成后单击安装文件进行安装,安装结束后需要重启计算机。IntelliJ IDEA的启动界面如图14所示,默认的是黑色主题“Darclus”,在“Customize”选项中可以修改颜色主题。

 图14. IntelliJ IDEA的启动界面

(2)创建Maven Web项目

      点击启动界面中“New Project”按钮,进入创建项目界面,如图15所示,我们选择“Maven Archetypr”选项创建Maven项目。项目的名称为“mywebapp”,项目的位置是“E:\idea-workspace”目录,IDEA能够检测到机器安装的JDK,本机安装的JDK版本是20.0.2,在Archetype下拉列表中选择Maven项目的类型,在这里,我们选择“maven-archetype-webapp”,版本为1.0,点击“create”按钮开始创建Maven Web项目。由于需要从远程Maven仓库下载文件,所以创建过程会花费一段时间,请耐心等待!

图15. 创建项目界面

自动生成的项目结构如图16所示。

图16. Maven Web项目结构

     选择“File | Settings”菜单,进入Setting是界面,如图17所示,点击左侧树结构中的“Build, Excution, Deployent | Build Tools | Maven”节点,右侧显示Maven的配置信息。在Maven home path的下拉列表中,除了IDEA内置的Maven外,还检测到了用户安装的Maven。在这里,我们选择IDEA内置的Maven。

图17. Maven设置界面

(3)配置Tomcat服务器

     IDEA Community版本没有内置的Tomcat服务器插件,需要安装相应的插件。在Setting界面中点击左侧“Plugins”节点,进入插件安装界面,如图18所示,在查询栏中输入“tomcat”,选择Smart Tomcat进行安装。

      选择“Run | Edit Configurations”菜单,进入Run/Debug Configurations界面,点击“+”按钮,选择Smart Tomcat选项配置Tomcat,如图18所示,在Tomcat server的下拉列表中选择已安装的Tomcat的目录,在Catalina base中配置在Maven Web项目所使用的Tomcat的存放地址,在Deployment directory中配置Maven Web项目的Web应用目录,点击“OK”按钮保存Tomcat配置。

图18. 配置Tomcat

       启动Tomcat服务器,在浏览器中输入:http://localhost:8080/mywebapp,显示如下图所示界面,这说明Tomcat服务器配置成功。

图19. Maven Web项目默认首页

5. 初识Spring框架

      在pom.xml文件中增加如下依赖,然后,在项目上右击,在弹出的快捷菜单中选择Maven |Reload project命令更新项目

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-beans</artifactId>

    <version>5.2.25.RELEASE</version>

</dependency>

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-context</artifactId>

    <version>5.2.25.RELEASE</version>

</dependency>

       项目更新后,增加了如下了一些Spring依赖包。

在项目中创建包com.my,在包com.my下创建类Hello和Main,定义如下:

package com.my;
import org.springframework.stereotype.Component;@Component
public class Hello {public void print(){System.out.println("Hello World!");}
}
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration
@ComponentScan("com.my")
public class Main {public static void main(String[] args){AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(Main.class);Hello hello=context.getBean(Hello.class);hello.print();}
}

运行类Main,在控制台中输出如下信息:

Hello World!

代码说明:

  • 使用注解@Component声明的类是由Spring Ioc容器管理的一个Bean。
  • 使用注解@Configuration声明的类是Spring框架中的一个配置类。
  • 注解@ComponentScan("com.my")表示Spring框架自动扫描com.my包及其子包下所有使用注解@Service@Component@Repository@Controller的声明的类,并将其注册为Bean
  • AnnotationConigApplicationContext是Spring 框架中的一个类,用于基于 Java 注解的配置来启动 Spring 容器。该类是接口ApplicationContext的一个实现类,它允许从一个或多个基于 Java 的配置类中加载Spring应用上下文。

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

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

相关文章

景联文科技:用高质量数据采集标注赋能无人机技术,引领无人机迈入新纪元!

随着无人机技术的不断发展与革新&#xff0c;它已成为现代社会中一个前景无限的科技领域。 无人机应用领域 边境巡逻与安防&#xff1a;边境管理部门利用无人机监控边境线&#xff0c;防止非法越境和其他安全威胁&#xff0c;同时也能监控地面安保人员的工作状态和行动路线。 …

JVM的垃圾回收算法有哪些?从可达性分析算法开始,深入解读三大核心垃圾回收算法

导航&#xff1a; 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/黑马旅游/谷粒商城/学成在线设计模式面试题汇总性能调优/架构设计源码-CSDN博客 目录 一、概念准备 1.1 GC Roots 1.2 可达性分析算法 1.3 非可达对象被回收过程中的两次标记 1.4…

vue从入门到精通(一):初始Vue

一&#xff0c;Vue是什么 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代…

质量保障之精准测试!

一、背景与概念 随着软件测试行业的长足发展&#xff0c;测试理念、技术都在发生着日新月异的变化。因此一套完整的自动化测试用例对于每个软件公司都是不可或缺的&#xff0c;然而虽然有如此规模宏大的自动化案例集资源投入&#xff0c;同时也有大量人力的投入&#xff0c;但…

虚拟仿真云平台在教育应用中的优势和意义

虚拟仿真云实验教学平台作为一种新型的教学方法&#xff0c;近年来在高校教育中得到了十分广泛的应用。它通过模拟真实的实验场景和实验操作&#xff0c;让学生在计算机上进行实验操作和数据处理&#xff0c;为学生提供了更加便捷、可靠、有效的实验学习环境。本文&#xff0c;…

Python如何绘制直流电机开闭环特性曲线?matplotlib

import matplotlib.pyplot as plt from pylab import mplmpl.rcParams[font.sans-serif] [FangSong] # 指定默认字体 mpl.rcParams[axes.unicode_minus] False # 解决保存图像是负号-显示为方块的问题# 数据集1 n1 [1206, 1174, 1141, 1116, 1037, 986] Id1 [0.505, 0.55…

【多模态】30、GPT4V_OCR | GPT4V 在 OCR 数据集上效果测评

文章目录 一、背景二、测评2.1 场景文本识别2.2 手写文本识别2.3 手写数学公式识别2.4 图表结构识别&#xff08;不考虑单元格中的文本内容&#xff09;2.5 从内容丰富的文档中抽取信息 三、讨论 论文&#xff1a;EXPLORING OCR CAPABILITIES OF GPT-4V(ISION) : A QUANTITATIV…

centos7.6安装mysql

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 1.在网页中寻找mysql…

【QT】QT环境搭建

本专栏内容为&#xff1a;QT学习专栏 通过本专栏的深入学习&#xff0c;你可以了解并掌握QT。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;QT &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f…

WordPress 管理员密码重置方法汇总

最近明月碰到一个 WordPress 站长求助咨询&#xff0c;说是自己 WordPress 站点的管理员密码被恶意篡改了&#xff0c;对 WordPress 了解的都知道这一般都是恶意代码造成的&#xff0c;问题大多出在使用了所谓的破解版、去授权版的插件或者主题被植入了恶意代码、后门木马。明月…

洗地机哪个牌子好性价比高又实惠?高性价比洗地机推荐【避坑指南】

洗地机是一种智能清洁家具&#xff0c;具有强大的清洁能力&#xff0c;可快速有效地清洁各种地面污渍&#xff0c;操作简便&#xff0c;省时省力。其一键操作功能使其易于上手&#xff0c;无需频繁清洗拖布和更换水&#xff0c;大大提高了清洁效率。部分高端洗地机还具备智能感…

全国防灾减灾日主题活动投稿我可算找对了投稿方法

作为一名社区公众人员,我深知对外信息宣传的重要性。特别是在全国防灾减灾日这样的特殊时刻,我们不仅要向居民普及防灾减灾知识,还要通过媒体将社区的活动和成果展示给更多人。然而,在投稿的过程中,我最初却遭遇了诸多挑战。 起初,我采用传统的邮箱投稿方式,将精心撰写的稿件发…

小程序常用组件

小程序常用组件 1.组件的定义2.常用组件3.引入外部字体图标库4.组件样式5.示例代码 1.组件的定义 组件就是指微信定义的具有特殊功能的标签&#xff0c;在wxml中只能使用微信定义的标签。 2.常用组件 <view>&#xff1a;用于页面布局的块级组件&#xff0c;类似于html中的…

jmeter分布式集群压测

目的&#xff1a;通过多台机器同时运行 性能压测 脚本&#xff0c;模拟更好的并发压力 简单点&#xff1a;就是一个人&#xff08;控制机controler/调度机 master&#xff09;做一个项目的时候&#xff0c;压力有点大&#xff0c;会导致结果不理想&#xff0c;这时候找几个人&a…

OS复习笔记ch5-4-2

引言 承接上文我们介绍了信号量机制和应用信号量机制实现的进程同步和互斥&#xff0c;这一节我们将围绕一些经典问题对信号量机制展开更深入地探讨。 读者/写者问题 读者/写者问题与我们之前遇到的问题类型不同&#xff0c;它描述的是&#xff1a; 有读者和写者两组进程&am…

ohmyzsh的安装过程中失败拒绝连接问题的解决

1.打开官网Oh My Zsh - a delightful & open source framework for Zsh 在官网能看到下面的界面 有这两种自动安装的方式 个人本次选择的是: wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O - 1.打开终端输入安装的指令 sh -c "$(wget…

软件需求工程习题

1.&#xff08;面谈&#xff09;是需求获取活动中发生的需求工程师和用户间面对面的会见。 2.使用原型法进行需求获取&#xff0c;&#xff08;演化式&#xff09;原型必须具有健壮性&#xff0c;代码质量要从一开始就能达到最终系统的要求 3.利用面谈进行需求获取时&#xf…

K邻近算法

简介 介绍了非常简单的算法&#xff1a;K邻近算法&#xff0c;即KNN。 基本介绍 K-近邻算法&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种基本且广泛应用的监督学习算法&#xff0c;主要用于分类和回归任务。 工作原理非常简答直观&#xff1a;所谓…

爆款小红书免费流量体系课程(两周变现),小红书电商教程

课程下载&#xff1a;小红书电商教程-课程网盘链接提取码下载.txt资源-CSDN文库 更多资源下载&#xff1a;关注我。 课程内容&#xff1a; 10-爆款标题(三段式取标题).mp3 11-爆款封面怎么作图.mp3 12-爆款内容的模板(三段式模板).mp3 13-小红书流量推荐背后的秘密(四大流…

数据结构与算法-排序算法1-冒泡排序

本文先介绍排序算法&#xff0c;然后具体写冒泡排序。 目录 1.排序算法简介 2.常见的排序算法分类如下图&#xff1a; 3.冒泡排序&#xff1a; 1.介绍&#xff1a; 2.动态图解 3.举例 4.小结冒泡排序规则 5.冒泡排序代码 6.优化 7.优化后时间 代码&#xff1a; 运…