Spring Boot(一)

       Spring Boot是一个开源的Java框架,旨在简化基于Java的应用程序的开发和部署过程。它提供了许多开箱即用的功能和工具,使开发者能够快速构建独立、可执行的、生产级别的应用程序。

以下是Spring Boot的一些主要特点和优势:

  • 简化的配置:Spring Boot采用了约定优于配置的原则,通过自动配置和默认值减少了开发者在配置方面的工作量。它提供了内置的默认配置,可以根据需要进行覆盖,同时还支持外部化配置,使得应用程序的配置变得非常灵活。

  • 内嵌式容器:Spring Boot可以将应用程序打包成一个可执行的JAR文件,其中包含了一个内嵌的Servlet容器(如Tomcat、Jetty或Undertow)。这意味着开发者不需要部署WAR文件到独立的Servlet容器中,而可以直接运行JAR文件,使得应用程序的部署变得非常简单。

  • 自动化依赖管理:Spring Boot使用了“起步依赖”(Starter Dependency)的概念,它是一种预定义的依赖关系集合,可快速获取常用的库和框架。通过引入适当的起步依赖,开发者不需要手动管理依赖关系和版本冲突,Spring Boot会自动根据项目的需求解析和配置依赖项。

  • 简化的错误处理:Spring Boot提供了一种简化的方式来处理错误,通过自动配置的全局异常处理器,开发者可以捕获和处理应用程序中的异常。此外,Spring Boot还提供了友好的错误页面和统一的错误消息格式,方便开发者在出现错误时进行调试和排查。

  • 健康检查和指标监控:Spring Boot内置了健康检查和指标监控的功能,通过使用Actuator模块,开发者可以方便地暴露应用程序的健康状态、性能指标和管理端点,实现对应用程序的监控和管理。

        总之,Spring Boot通过简化配置、内嵌式容器、自动化依赖管理、简化的错误处理以及健康检查和指标监控等特性,提供了一种快速、便捷和高效的方式来构建Java应用程序。它成为了Java开发者非常受欢迎的框架之一,被广泛应用于各种类型的项目和企业级应用开发中。

1、自动化依赖管理

1.1、parent:

        在项目开发中,我们很多的时候出现的问题都是jar包版本,依赖之间的版本兼容问题。parent自身具有很多个版本,每个parent版本中包含有几百个其他技术的版本号,不同的parent间使用的各种技术的版本号有可能会发生变化。当开发者使用某些技术时,直接使用SpringBoot提供的parent就行了,由parent帮助开发者统一的进行各种技术的版本管理。

        这里讲一下,在声明的依赖中的版本是固定的,是经过测试后这写版本组合在一起使用是没有问题的,然后spingboot只是声明啦,并不是一股脑的把依赖一股脑的都引入到我们的项目,我们只需要在开发的时候选择我们想要的依赖引入就可以,而且不用指定版本号,因为springboot给我们管理这些依赖。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version>
</parent>

        我们只需要在创建完项目的时候引入就可以啦!然后查看内部的结构其实际上是依赖啦下面的依赖管理。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.4</version>
</parent>

1.2、starter:

        SpringBoot关注到实际开发时,开发者对于依赖坐标的使用往往都有一些固定的组合方式,比如使用spring-webmvc就一定要使用spring-web。每次都要固定搭配着写,非常繁琐,而且格式固定,没有任何技术含量。starter定义了使用某种技术时对于依赖的固定搭配格式,也是一种最佳解决方案,使用starter可以帮助开发者减少依赖配置

        实际上就是如果你使用的某一个技术,然后这个技术使用的所有的依赖进行一个打包,然后我们只需要引入这个打包好的依赖就可以啦。

开发web项目:导入

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

        然后在这个依赖里面有:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.5.4</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-json</artifactId><version>2.5.4</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.5.4</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.3.9</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.9</version><scope>compile</scope></dependency>
</dependencies>

1.3、starter与parent的区别

        starter与parent好像都是帮助我们简化配置的,starter是一个坐标中定了若干个坐标,以前写多个的,现在写一个,是用来减少依赖配置的书写量的parent是定义了几百个依赖版本号,以前写依赖需要自己手工控制版本,现在由SpringBoot统一管理,这样就不存在版本冲突了,是用来减少依赖冲突的

实际开发应用方式

  • 实际开发中如果需要用什么技术,先去找有没有这个技术对应的starter

    • 如果有对应的starter,直接写starter,而且无需指定版本,版本由parent提供

    • 如果没有对应的starter,手写坐标即可

  • 实际开发中如果发现坐标出现了冲突现象,确认你要使用的可行的版本号,使用手工书写的方式添加对应依赖,覆盖SpringBoot提供给我们的配置管理

    • 方式一:直接写坐标

    • 方式二:覆盖<properties>中定义的版本号,就是下面这堆东西了,哪个冲突了覆盖哪个就OK了

2、引导类

        配置说完了,我们发现SpringBoot确实帮助我们减少了很多配置工作,下面说一下程序是如何运行的。目前程序运行的入口就是SpringBoot工程创建时自带的那个类,也就是带有main方法的那个类,运行这个类就可以启动SpringBoot工程的运行。

@SpringBootApplication
public class Springbootdemo1QuickstartApplication {public static void main(String[] args) {SpringApplication.run(Springboot0101QuickstartApplication.class, args);}
}

        SpringBoot本身是为了加速Spring程序的开发的,而Spring程序运行的基础是需要创建Spring容器对象(IoC容器)并将所有的对象放置到Spring容器中管理,也就是一个一个的Bean。现在改用SpringBoot加速开发Spring程序,这个容器还在吗?这个疑问不用说,一定在。其实当前这个类运行后就会产生一个Spring容器对象,并且可以将这个对象保存起来,通过容器对象直接操作Bean。

@SpringBootApplication
public class QuickstartApplication {public static void main(String[] args) {ConfigurableApplicationContext IOC = SpringApplication.run(QuickstartApplication.class, args);BookController bean = IOC.getBean(BookController.class);System.out.println(bean);}
}

        通过上述操作不难看出,其实SpringBoot程序启动还是创建了一个Spring容器对象。当前运行的这个类在SpringBoot程序中是所有功能的入口,称为引导类

        作为一个引导类最典型的特征就是当前类上方声明了一个注解@SpringBootApplication。SpringBoot工程提供引导类用来启动程序,工程启动后创建并初始化Spring容器。

3、内置tomcat

        我们创建一个web项目引入spring-boot-starter-web依赖,然后这个依赖有包含啦spring-boot-starter-tomcat,然后这个依赖中包含啦有关tomcat的依赖。

<dependencies><dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>1.3.5</version><scope>compile</scope></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>9.0.52</version><scope>compile</scope><exclusions><exclusion><artifactId>tomcat-annotations-api</artifactId><groupId>org.apache.tomcat</groupId></exclusion></exclusions></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-el</artifactId><version>9.0.52</version><scope>compile</scope></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-websocket</artifactId><version>9.0.52</version><scope>compile</scope><exclusions><exclusion><artifactId>tomcat-annotations-api</artifactId><groupId>org.apache.tomcat</groupId></exclusion></exclusions></dependency>
</dependencies>

        当然也可以更换内置的服务器,只需要排除依赖,然后引入对用的服务器依赖SpringBoot提供了3款内置的服务器:

  • tomcat(默认):apache出品,粉丝多,应用面广,负载了若干较重的组件

  • jetty:更轻量级,负载性能远不及tomcat

  • undertow:负载性能勉强跑赢tomcat

4、基础配置

        其实在SpringBoot中的配置基本上也不用修改什么,除非你想个人定制一些特别的,然后你才要修改默认配置,按照自己的需求修改就好啦。总之需要什么配什么

  1. SpringBoot程序可以在配置文件中进行属性配置

  2. application.properties文件中只要输入要配置的属性关键字就可以根据提示进行设置

  3. SpringBoot将配置信息集中在一个文件中写,不管你是服务器的配置,还是数据库的配置,总之都写在一起,逃离一个项目十几种配置文件格式的尴尬局面

4.1、配置文件

        现在已经能够进行SpringBoot相关的配置了,但是properties格式的配置写起来总是觉得看着不舒服,所以就期望存在一种书写起来更简便的配置格式提供给开发者使用。有吗?还真有,SpringBoot除了支持properties格式的配置文件,还支持另外两种格式的配置文件。三种配置文件格式分别如下:

  • properties格式

  • yml格式

  • yaml格式

        其中properties的没有层级的格式,然后写配置文件比较多的时候不是很好看,读起来不是很方便,然后yml和yaml的格式是一致的,就一个文件后缀不一样而已。

配置文件优先级

application.properties > application.yml > application.yaml

        虽然是这样的,但是我们其实没有必要去写三个配置文件,这不是没事找事嘛!然后不同配置文件中相同配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留

4.2、yaml语法

        YAML(YAML Ain't Markup Language),一种数据序列化格式。具有容易阅读、容易与脚本语言交互、以数据为核心,重数据轻格式的特点。常见的文件扩展名有两种:

  • .yml格式(主流)

  • .yaml格式

    具体的语法格式要求如下:

  1. 大小写敏感

  2. 属性层级关系使用多行描述,每行结尾使用冒号结束

  3. 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

  4. 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

  5. #号 表示注释

users:							 #对象数组格式一- name: Tomage: 4- name: Jerryage: 5
users:							 #对象数组格式二-  name: Tomage: 4-   name: Jerryage: 5			    
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]	#对象数组缩略格式

4.3、yaml数据读取

yaml文件中对于数字的定义支持进制书写格式,如需使用字符串请使用引号明确标注

4.3.1、读取单一数据

        yaml中保存的单个数据,可以使用Spring中的注解@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}

4.3.2、读取全部数据

        读取单一数据可以解决读取数据的问题,但是如果定义的数据量过大,这么一个一个书写肯定会累死人的,SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中。

        数据封装到了Environment对象中,获取属性时,通过Environment的接口操作进行,具体方法是getProperties(String),参数填写属性名即可

4.3.3、读取对象数据

        单一数据读取书写比较繁琐,全数据读取封装的太厉害了,每次拿数据还要一个一个的getProperties(),总之用起来都不是很舒服。由于Java是一个面向对象的语言,很多情况下,我们会将一组数据封装成一个对象。SpringBoot也提供了可以将一组yaml对象数据封装一个Java对象的操作

        首先定义一个对象,并将该对象纳入Spring管控的范围,也就是定义成一个bean,然后使用注解@ConfigurationProperties指定该对象加载哪一组yaml中配置的信息。

        这个@ConfigurationProperties必须告诉他加载的数据前缀是什么,这样指定前缀下的所有属性就封装到这个对象中。记得数据属性名要与对象的变量名一一对应啊,不然没法封装。其实以后如果你要定义一组数据自己使用,就可以先写一个对象,然后定义好属性,下面到配置中根据这个格式书写即可。

        但是有时候没有提示,没提示就算啦而且还会报错,我刚开始以为是我有两个配置文件,一个是properties一个是yml,两个冲突啦,然后删掉一个也没有用。

4.3.4、yaml文件中的数据引用

        在文件中如果有大量的重复的字段,然后其他的字段又使用啦这个字段,就比如

center:dataDir: D:/usr/local/fire/datatmpDir: D:/usr/local/fire/tmplogDir: D:/usr/local/fire/logmsgDir: D:/usr/local/fire/msgDir

这个时候你可以使用引用格式来定义数据,其实就是搞了个变量名,然后引用变量了,格式如下:

baseDir: D:/usr/local/fire
center:dataDir: ${baseDir}/datatmpDir: ${baseDir}/tmplogDir: ${baseDir}/logmsgDir: ${baseDir}/msgDir

         还有一个注意事项,在书写字符串时,如果需要使用转义字符,需要将数据字符串使用双引号包裹起来。

lesson: "Spring\tboot\nlesson"

5、整合第三方技术:

5.1、整合JUnit:

        在Spring阶段就又关于Spring6整合Junit4、以及整合Junit5的方式,引入不同的jar包,测试类使用不同的注解。

spring整合junit4

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class TestJunit4 {@Autowiredprivate User user;@Testpublic void  test1(){System.out.println(user.getName());}
}

spring整合junit5

/*@ContextConfiguration("classpath:spring.xml")
@ExtendWith(SpringExtension.class)*/
//写法二
@SpringJUnitConfig(locations = "classpath:spring.xml")
public class TestJunit5 {@Autowiredprivate User user;@Testpublic void  test1(){System.out.println(user.getName());}
}

        第一个注解@RunWith是设置Spring专用的测试类运行器,简单说就是Spring程序执行程序有自己的一套独立的运行程序的方式,不能使用JUnit提供的类运行方式了,必须指定一下,但是格式是固定的,琢磨一下,每次都指定一样的东西,这个东西写起来没有技术含量啊,第二个注解@ContextConfiguration是用来设置Spring核心配置文件或配置类的,简单说就是加载Spring的环境你要告诉Spring具体的环境配置是在哪里写的。

        然后经过springboot的简化后,只需要一个注解@springBootTest

@SpringBootTest
class SpringBootDemo1ApplicationTests {@Testvoid contextLoads() {}
}

        如果测试类和引导类在同一个路径下,使用一个注解就可以,但是如果不在同一个路径下,那么就需要指定引导类,可以这样写:

@SpringBootTest(classes = Springboot04JunitApplication.class)

或者使用

@ContextConfiguration(classes = Springboot04JunitApplication.class)
@SpringBootTest

都可以实现整合junit测试。

5.2、整合MyBatis

5.2.1、导入依赖:
<!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.10</version></dependency><!--数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId></dependency></dependencies>
5.2.2、核心配置文件
#配置数据库连接
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatis?&useSSL=false&serverTimezone=UTCusername: rootpassword: 10100109
#mybtis
mybatis:mapper-locations: classpath:/mapper/**.xml

        确实是不用配置什么,但是如果使用的是映射文件的话那么会出现找不到映射文件的请情况,确实很让人不解,mybatis-plus使用的时候还没有这些要指定映射文件。如果不指定的话就会报错!!!!,其他的倒没有什么特别的地方,我们也不需要特别的配置其他的东西。

5.3、整合MyBatis-Plus

5.3.1、导入依赖: 
     <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.4</version></dependency>

MyBatis与MyBatisPlus这两个坐标的名字书写比较特殊,是第三方技术名称在前,boot和starter在后。

starter所属命名规则示例
官方提供spring-boot-starter-技术名称spring-boot-starter-web spring-boot-starter-test
第三方提供第三方技术名称-spring-boot-startermybatis-spring-boot-starter druid-spring-boot-starter
第三方提供第三方技术名称-boot-starter(第三方技术名称过长,简化命名)mybatis-plus-boot-starter
5.3.2、核心配置:

#mybatis_plus 没什么要配置的 预定大于配置

5.4、配置数据源

5.4.1、方式一:
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTCusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSource
5.4.2、方式二:

导入依赖

<dependencies><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.6</version></dependency>
</dependencies>

配置文件: 

spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTCusername: rootpassword: root

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

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

相关文章

【学习笔记】Understanding LSTM Networks

Understanding LSTM Networks 前言Recurrent Neural NetworksThe Problem of Long-Term DependenciesLSTM Networks The Core Idea Behind LSTMsStep-by-Step LSTM Walk ThroughForget Gate LayerInput Gate LayerOutput Gate Layer Variants on Long Short Term MemoryConclus…

pychon/PIL/opencv/json学习过程中遇到的问题

1. 使用PIL.Image读取图片 注意&#xff1a;pytorch中对图像预处理是transforms的输入必须是PIL格式的文件&#xff0c;使用cv2读取的图片就按照第二条的代码处理&#xff08;3通道合并、归一化处理&#xff09; from PIL import Image img Image.open("test1.jpg"…

◢Django 自写分页与使用

目录 1、设置分页样式,并展示到浏览器 2、模拟页码 3、生成分页 4、数据显示 5、上一页下一页 6、数据库的数据分页 7、封装分页 8、使用封装好的分页 建立好app后&#xff0c;设置路径path(in2/,views.in2)&#xff0c;视图def in2(request): &#xff0c;HTML: in2.html…

PCL安装与使用

1 apt安装 ubuntu20.04及以上版本下可以直接通过apt方式安装pcl编译好的二进制文件,二进制安装的版本为1.10。 sudo apt update sudo apt install libpcl-dev 2 源码安装 在pcl的github上下载对应的版本进行安装&#xff1a; https://github.com/PointCloudLibrary/pcl/rel…

win 命令替代鼠标的操作

操作方式都是在 winR 输入框输入或者终端输入 1、快速打开 控制面板 运行control 2、快速打开 电源选项 运行powercfg.cpl 3、快速打开 网络连接 运行ncpa.cpl 4、快速打开 程序和功能 运行appwiz.cpl 5、快速打开 Windows Defender防火墙 运行Firewall.cpl 6、快速打开 鼠标 …

EXCEL——计算数据分散程度的相关函数

一、PERCENTIL函数 1.函数介绍 通常用来返回数据集给定百分点上的值。 2.函数解读 函数公式&#xff1a; PERCENTILE(数据, 百分点) 参数释义&#xff1a; 数据&#xff08;必填&#xff09;&#xff1a;待处理的数组或数据区域。 百分点&#xff08;必填&#xff09;&…

Python 如何实现 Command(命令)模式?什么是 Command(命令)设计模式?

什么是命令设计模式&#xff1f; 命令模式&#xff08;Command Design Pattern&#xff09;是一种行为设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而允许参数化客户端对象&#xff0c;排队请求&#xff0c;或者对请求进行操作。命令模式支持撤销操作&#xff0…

SpringCache(Redis)

一、springcache是什么 springcache是spring的缓存框架&#xff0c;利用了AOP&#xff0c;实现了基于注解的缓存功能&#xff0c;并且进行了合理的抽象&#xff0c;业务代码不用关心底层是使用了什么缓存框架&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能了…

Clickhouse学习笔记(11)—— 数据一致性

使用合并树引擎时&#xff0c;无论是ReplacingMergeTree还是SummingMergeTree&#xff0c;都只能保证数据的最终一致性&#xff0c;因为数据的去重、聚合等操作会在数据合并的期间进行&#xff0c;而合并会在后台以一个不确定的时间进行&#xff0c;因此无法预先计划&#xff1…

Python实现WOA智能鲸鱼优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

永达理简析:利用保险的“财务规划”功能维持退休后生活水平

现代社会环境背景下&#xff0c;“自养自老”已经是一种未来养老趋势&#xff0c;很多人会为自己准备一份长期、比较周全的保障&#xff0c;这样财务规划不仅会分担子女的压力&#xff0c;也让自己有一个长远的保障。在各种财务储蓄工具中&#xff0c;商业保险占据着不可取代的…

基于连续Hopfield神经网络优化——旅行商问题优化计算

大家好&#xff0c;我是带我去滑雪&#xff01; 利用神经网络解决组合优化问题是神经网络应用的一个重要方面。所谓组合优化问题&#xff0c;就是在给定约束条件下&#xff0c;使目标函数极小&#xff08;或极大&#xff09;的变量组合问题。将Hopfield网络应用于求解组合优化问…

基于php js+mysql+laravel技术架构的手术麻醉管理系统源码 手麻系统源码

PHP手术麻醉管理系统源码 手麻系统源码 手术麻醉管理系统定义&#xff1a; 手术麻醉系统主要是由麻醉信息管理和监护设备数据采集系统两个部分组成&#xff0c;主要是将麻醉信息和从监护仪器上采集到的数据以及手术信息进行统计。 手术麻醉系统是指专用于住院患者手术与麻醉…

FRC-EP系列--你的汽车数据一站式管家

FRC-EP系列产品主要面向汽车动力总成测试的客户&#xff0c;主要应用方向为残余总线仿真及网关。本文将详细介绍FRC-EP的产品特性和应用场景。 应用场景&#xff1a; 汽车电子生成研发过程中&#xff0c;需要对汽车各个控制器进行仿真测试&#xff0c;典型的测试对象有&#…

5. HTML常用标签

5.1 标签语义 学习标签是有技巧的&#xff0c;重点是记住每个标签的语义。简单理解就是指标签的含义。即这个标签是用来干嘛的。 根据标签的语义&#xff0c;在合适的地方给一个最为合理的标签。可以让页面结构给清晰。 5.2 标题标签 <h1>-<h6>(重要) HTML提供了…

Opentracing概念介绍——Span

文章首发公众号&#xff1a;海天二路搬砖工 引言 作为分布式跟踪系统的标准化API&#xff0c;OpenTracing提供了一种通用的方式来追踪和分析分布式系统中的请求和操作。 在Opentracing中&#xff0c;Span是基本的跟踪单元&#xff0c;用于描述在分布式系统中的一个操作或事件…

基于K7的PXIPXIe数据处理板(Kintex-7 FMC载板)

基于PXI&PXIe总线架构的高性能数据预处理FMC 载板&#xff0c;板卡具有 1 个 FMC&#xff08;HPC&#xff09;接口&#xff0c;1 个 X8 PCIe 和1个PCI主机接口&#xff1b;板卡采用 Xilinx 的高性能 Kintex-7 系列 FPGA 作为实时处理器&#xff0c;实现 FMC 接口数据的采集…

文本生成高精准3D模型,北京智源AI研究院等出品—3D-GPT

北京智源AI研究院、牛津大学、澳大利亚国立大学联合发布了一项研究—3D-GPT&#xff0c;通过文本问答方式就能创建高精准3D模型。 据悉&#xff0c;3D-GPT使用了大语言模型的多任务推理能力,通过任务调度代理、概念化代理和建模代理三大模块&#xff0c;简化了3D建模的开发流程…

如何用Jmeter对数据库执行压力测试

在我看来压力测试的压测对象可以分为UI&#xff0c;接口及数据库三个部分吧&#xff0c;对界面及接口进行压测还算熟悉&#xff0c; 定位性能瓶颈&#xff0c;对数据库SQL执行压测也是需要做的。工具呢&#xff1f;还是Jmeter 1、将需要用到的链接Oracle的架包放到jmeter中 …

【计算机网络笔记】网络层服务模型——虚电路网络

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…