Swagger入门教程(六)

因为本套课程使用Maven包管理工具构建,所以在集成SwaggerCodegen时我们需要如下两个步骤:

这里我将依赖放到了下方,同学们可以直接拷贝:

io.swaggerswagger-codegen-maven-plugin2.4.14等待编辑器下载完成后,没有任何依赖报错,就说明我们已经将SwaggerCodegen的依赖引入到了SpringBoot中去。

我们知道,SwaggerCodegen主要的作用,就是生成服务端和客户端的完整代码文件,所以,在将SwaggerCodegen集成到SpringBoot中后,我们首先需要做的就是,对生成服务端和客户端的代码进行规则配置,即我们都需要生成什么样的服务端和客户端代码。

配置服务端和客户端的代码生成规则叫繁琐,所以我们选择常用的几个属性来进行演示。

swagger:'2.0'info:title:IMoocSwagger-WikiAPIdescription:Swagger-WikiAPIversion:1.0.0paths:/imooct/wiki/swagger:get:tags:-wikioperationId:getImoocLessonparameters:-name:rangein:querytype:stringrequired:true-name:lessonNamein:querytype:stringrequired:true-name:lessonTypein:querytype:stringresponses:'200':description:OKschema:$ref:'#/definitions/GetImoocLessonResponse'default:description:defaultschema:$ref:'#/definitions/ErrorResponse'对于以上所使用的属性我们会在本节的后半部分进行详细介绍,这里大家可以先做简单的了解即可。

{"apiPackage":"com.imooc.wiki.swagger.api","artifactId":"cmp-imooc-steafan-service","basePackage":"com.steafan.imooc.server","configPackage":"com.steafan.imooc.server.config","dateLibrary":"java8","delegatePattern":true,"groupId":"com.steafan.imooc","hideGenerationTimestamp":true,"java8":true,"language":"spring-boot","modelPackage":"com.imooc.wiki.swagger.api"}代码解释:

完成上述配置之后,我们就可以使用SwaggerCodegen来生成服务端和客户端代码。

在将SwaggerCodegen的依赖引入到SpringBoot中去后,我们就可以使用Maven自带的命令来将上述配置信息分别生成服务端和客户端代码,命令如下:

首先,将上述配置好的文件利用SwaggerCodegen来生成服务端和客户端代码

java-jarswagger-codegen-cli.jargenerate-iswagger.yaml-cswaggerConfig.json-lspring-oserver代码解释:

第一行,使用generate命令来将配置在swagger.yaml文件中的服务端代码进行生成。

第一行,使用-c参数,表明使用json配置文件,并且该配置文件的名称为swaggerConfig.json。

第二行,使用-l参数,表明客户端所使用的语言为spring。

第二行,使用-o参数来指定代码最终的存放位置,server表示将生成的代码存放到名为server的文件夹下。

然后我们使用cd命令来进到我们生成代码后所存放的目录:

cdserver最后我们将生成的代码打成Jar包:

mvnpackage这是Maven自带的打包命令,执行该命令之后,Maven会默认读取项目中的pom文件中配置的打包规则,即packaging节点,如果该节点没有配置任何规则,则Maven会默认打成Jar包(这里我们配置了Jar)。

这样我们就可以在项目的target目录下,找到我们利用SwaggerCodegen所生成的服务端和客户端代码的Jar包了,我们可以把该Jar包放到其他环境中使用,也可以供其他项目使用,这就是我们利用SwaggerCodegen所生成的服务端和客户端代码的最终使用目的。

我们针对以上服务端配置的规则来介绍一下在SwaggerCodegen服务端中经常使用的一些属性,同学在了解了这些属性之后就可以使用SwaggerCodegen进行一些服务端代码的生成工作了。

swagger:'2.0'info:title:IMoocSwagger-WikiAPIdescription:Swagger-WikiAPIversion:1.0.0paths:/imooct/wiki/swagger:get:tags:-wikioperationId:getImoocLessonparameters:-name:rangein:querytype:stringrequired:trueresponses:'200':description:OKschema:$ref:'#/definitions/GetImoocLessonResponse'代码解释:

swagger:指名生成的服务端代码所使用的Swagger管理版本,这里只能写2.0。

info:表示SwaggerCodegen所生成的服务端代码的一些基本描述信息,上述包括title(头信息)、description(文档描述)、version(文档版本)。

paths:表示具体一个接口的路径信息。

tags:表示该接口所属的分组。

operationId:表示该接口的名称。

parameters:表示该接口中的参数信息,上述包括name(参数名称)、in(参数用途)、type(参数类型)、required(参数是否必传,true表示参数必传,默认为false)。

responses:表示该接口的返回信息,这里的200表示接口返回状态码,description代表当接口返回状态码为200时的状态码描述信息,schema中的ref属性统一表示当该接口返回200时重定向的地址或接下来要发生的动作。

针对SwaggerCodegen中客户端代码的配置,在前面已经做了一些较为详细的介绍了,这里我就常用的客户端配置代码给上述内容做一个补充,同学们需要结合着来了解。

{"apiPackage":"com.imooc.wiki.swagger.api","artifactId":"cmp-imooc-steafan-service","groupId":"com.steafan.imooc","hideGenerationTimestamp":true,}代码解释:

apiPackage:表示需要生成的客户端代码的包位置。

artifactId、groupId:类似于Maven中的依赖坐标,这里表示所生成的客户端代码的坐标信息。

我们在生成服务端代码时,不能盲目生成,如果已经有写好的接口文档,那么我们需要按照这个接口文档进行编写和配置,如果没有写好的接口文档,那么我们需要和产品经理进行都次反复的沟通之后才能开始编写和配置服务端信息,这样可以在很大程度上减少服务端配置文件修改的次数,同时也可以提高服务端生成代码的准确性,这点同学们需要注意。

本小节从在SpringBoot中如何集成SwaggerCodegen出发,详细介绍了如何在SpringBoot中将SwaggerCodegen进行集成,以及在集成中容易出现的问题。在介绍完SwaggerCodegen集成SpringBoot之后,针对零基础的同学,老师将在SwaggerCodegen中使用的最多的属性单独拿出来做了介绍,旨在帮助同学们能够快速入门SwaggerCodegen。

各位同学在学习本小节内容时,希望各位可以跟着老师的节奏一行一行地把本小节中所将的代码都动手敲一下,这样可以加深自己对代码的理解程度,在实操时我们不能眼高手低,自己的实践结果才是最重要的。

大家好,今天为大家介绍SwaggerEditor。SwaggerEditor和SwaggerCodegen不同,SwaggerEditor适用于一切规模的项目,话不多说,咱们直入正题。

什么是SwaggerEditor呢?在Swagger官网中是这么介绍的:

SwaggerEditor是一个开源编辑器,我们可以在这个开源编辑器上设计、描述和记录我们的API信息,通过SwaggerEditor这个开源编辑器进行配置而生成的API是符合RESTFULAPI规范的,并且SwaggerEditor这款开源编辑器支持Swagger2.0版本和RESTFULAPI3.0版本。—官网

注意:这里提到的OpenAPI其实就是我们所谓的RESTFULAPI规范,关于RESTFULAPI规范我们已经在Swagger简介这一小节中做了详细的介绍,有不清楚的同学可以到该小节了解,这里不再赘述。

通过上面的介绍,说白了,SwaggerEditor就是一款提供了可以直接设计、描述和记录项目中所有的接口为RESTFULAPI文档的开源编辑器,可以帮助我们提升项目开发效率。

那么我们为什么要使用SwaggerEditor呢?

对于任何规模大小的项目而言,无论是小项目还是大项目,都会涉及到项目接口的开发,而对于项目接口的管理,最常见的就是根据项目接口内容撰写项目接口文档,但是这种方式有一种显而易见的弊端。

当项目中接口开发的需求发生变化时,根据项目管理规范,我们需要首先修改之前撰写好的相应的接口文档,由于种种原因,导致我们的修改时机很慢而不能及时支撑该接口的修改交付工作,这就会产生冲突,就会不得已先进行接口的修改,后续再来修改接口文档了。

针对上述类似问题,如果我们使用SwaggerEditor来对接口进行维护,就会大大降低这种问题出现的概率。

SwaggerEditor提供了强大的配置文件类型,例如我们熟知的yml配置源文件和少数的json配置源文件,针对这两种配置文件,SwaggerEditor内置了丰富的RESTFULAPI属性,开发人员可以直接使用这些属性来描述项目中的接口信息,不需要专门再将接口修改为符合RESTFULAPI规范而发愁了。

在第一章中,当我们在项目中集成了Swagger框架之后,运行项目之后会为我们生成Swagger-ui界面,我们都知道这个界面还是相对美观一些的,我们也可以直接在这个界面上浏览接口和其他信息。

SwaggerEditor在配置好之后的生成界面几乎是和Swagger-ui界面是一模一样的,而且SwaggerEditor的生成界面允许我们边修改配置信息边查看修改结果,可以实时看到我们的修改结果。

这就表明,如果我们项目中的接口需求发生了变动,我们可以直接在SwaggerEditor中修改相应的配置信息,并且可以实时看到修改结果,这对开发人员来说是一个’福音’。

学习SwaggerEditor这个工具和SwaggerCodegen一样,需要大家真实开发过项目并且对项目进行过简单的配置,并且使用的是Java7或以上的JDK版本。

如果你是一名后端开发人员,那么相信你在学习SwaggerEditor时会信手拈来。

SwaggerEditor其实就是一款可以为项目中的接口生成RESTFULAPI规范界面的开源工具,其完善的RESTFULAPI生成机制和美观的界面显示效果可以在提升项目接口的维护效率的同时增强接口文档的交互性,这也是SwaggerEditor的核心魅力。

本节会为大家介绍如何在当下主流操作系统中安装SwaggerEditor开源API配置工具。

基于Node环境来安装SwaggerEditor,是SwaggerEditor官方推荐使用的第一种方式,通过Node来安装SwaggerEditor,无论是Windows系统还是OSX系统,都要求电脑中首先要有Node,如果你的电脑中还没有Node环境,那么请先安装Node。

我们使用一下命令来在Node环境中安装HttpServer服务器:

基于Docker环境来安装SwaggerEditor是SwaggerEditor官方提供的第二种方式,同样地,想在Docker中安装SwaggerEditor,需要电脑中首先要有Docker环境。

众所周知,Docker是一个容器服务,其是通过提供众多工具的镜像文件来将对应的服务集成到容器中,而且Docker官方整理了全球主流工具的镜像文件,并且将其放到了DockerHub上面。

所以,要想在Docker中安装SwaggerEditor,我们首先需要从Docker官方的DockerHub上面将SwaggerEditor的镜像文件拉取(下载)下来,在Docker容器中命令如下:

dockerpullswaggerapi/swagger-editor运行以上指令,等待SwaggerEditor的镜像文件拉取完毕。

在SwaggerEditor镜像拉取完毕之后,我们可以直接运行该镜像文件,如果运行成功,则表明SwaggerEditor在Docker环境中已经安装成功,运行SwaggerEditor镜像文件的命令如下:

dockerrun-d-p80:8080swaggerapi/swagger-editor代码解释:

dockerrun-d-p为固定写法,同学们目前不用知道表示什么意思,只需要知道这是运行镜像文件的固定命令即可。

80:8080表示将Docker容器中的SwaggerEditor服务映射到我们本机的80端口上,

swaggerapi/swagger-editor表明我们所运行的镜像文件的名称。

在运行SwaggerEditor服务时,如果已经提供了json文件,那么我们可以使用以下命令进行启动,从而修改该json文件:

dockerrun-d-p80:8080-v$(pwd):/tmp-eSWAGGER_FILE=/tmp/swagger.jsonswaggerapi/swagger-editor在运行上述指令后,我们等待SwaggerEditor镜像文件在Docker容器中运行完毕即可。

无论使用哪种环境安装的SwaggerEditor,检测安装是否成功的标志已经在上述内容中提及,接下来我们需要做的是访问我们已经安装并运行的SwaggerEditor服务。

一般而言,当我们的SwaggerEditor服务启动之后,可以通过以下方式来访问:

Tips:

5.小结

在安装SwaggerEditor时,由于用到了Node环境和Docker环境,所以需要同学们先了解一下上述环境的基本使用方法,这样才可以随心应手的使用SwaggerEditor。

因为本套课程使用Maven包管理工具构建,所以在集成之前需要我们先将SwaggerEditor的依赖引入到项目中去,但是很不幸,SwaggerEditor官方并没有提供对Maven的支持,所以我们就不能通过Maven的方式将SwaggerEditor集成进来。

难道就没有办法将SwaggerEditor与SpringBoot结合使用了吗?

俗话说,方法总比困难多,所以这里我们另辟蹊径,通过使用配置yml文件的方式将SwaggerEditor集成进来,话不多说,我们直入正题。

我们都知道,在SpringBoot项目中,一般的项目配置文件是如下图所示的applicaiton.properties文件:

applicaiton.properties文件是传统的项目配置文件,无论使用Spring的哪种框架,我们都可以在项目中使用applicaiton.properties文件,但是这种文件有一种弊端,就是我们项目的配置信息在该文件中显示的有点乱,不利于开发人员维护,通常一行配置语句会显得很长,降低了项目配置文件的可阅读性。

正如此,在经过时代变迁之后,终于迎来了YAML配置源文件的到来,YAML文件不单单只是一种平台上的配置源文件,他可以支持Java、Python、PHP等主流语言使用,并且各种语言平台都有对应的转换配置语法对应关系表,编写起来简单方便,且利于阅读。

将applicaiton.properties文件修改为YMAL配置源文件的方式非常简单,我们只需要将applicaiton.properties文件的后缀.properties修改为.yml就可以了。

在修改完之后,我们就不能使用applicaiton.properties文件的语法了,我们需要使用YMAL配置源文件的语法才行。

在集成SwaggerEditor到SpringBoot中时,为什么我们需要将SpringBoot项目的配置文件applicaiton.properties来修改成YAML配置源文件呢?这是因为我们的SwaggerEditor只支持以.yml文件格式结尾的配置文件来编写SwaggerEditor,这也是我一再强调YAML配置源文件的原因。

在修改好配置源文件之后,接下来我们需要编写配置源文件,并且在编写完配置源文件之后,我们需要将该配置源文件进行重命名,重命名的规则一般都是项目名称+SwaggerEditor+配置源文件版本号。

SwaggerEditor的配置源文件我们在SpringBoot集成SwaggerCodegen小节中做了简短的介绍:就是我们在配置SwaggerCodegen服务端代码生成规则那里的服务端代码其实就是SwaggerEditor配置源文件的一部分,也就是说SwaggerCodegen服务端的代码生成规则是通过SwaggerEditor配置源文件来实现的。

所以,在掌握了SwaggerEditor的基本语法和使用技巧之后,我们就可以在编写好SwaggerEditor配置源文件之后来生成我们项目的服务端代码,可谓是一举两得,这也是Swagger官方为我们所考虑的一方面。

接下来我们通过SwaggerEditor官方的Demo来为大家配置SwaggerEditor。

SwaggerEditor基本配置信息

paths:/pet:post:tags:-"pet"summary:"Addanewpettothestore"description:""operationId:"addPet"consumes:"application/json""application/xml"produces:"application/xml""application/json"parameters:in:"body"name:"body"description:"Petobjectthatneedstobeaddedtothestore"required:trueschema:$ref:"#/definitions/Pet"responses:"405":description:"Invalidinput"对于以上所使用的属性我们会在本节的后半部分进行详细介绍,这里大家可以先做简单的了解即可。

在配置好SwaggerEditor基本配置信息和SwaggerEditor接口配置信息之后,我们就可以在项目中生成Swagger-UI界面了。

接下来,我们针对上述SwaggerEditor配置源文件中的属性来为大家介绍每个属性都代表什么意思,都用来做什么,以及在使用SwaggerEditor时的一些使用技巧和注意事项。

swagger:指名所使用的Swagger管理版本,这里只能写2.0。

info:表示SwaggerCodegen所生成的Swagger-UI界面的一些基本描述信息,上述包括title(头信息)、description(文档描述)、version(文档版本)、termsOfService(服务团队)、contact(联系人)、license(协议或条款)。

host:表示生成的Swagger-UI所在的主机,即Swagger-UI界面生成之后是放在什么位置的。

basePath:表示访问Swagger-UI生成界面的具体路径。

tags:表示对Swagger-UI文档中的接口进行分组。

tags-description:对接口分组添加描述信息。

tags-externalDocs:指定接口分组额外的说明文档,这里没有指定。

tags-url:表示对该接口分组添加额外的描述信息地址。

由于篇幅有限,SwaggerEditor接口配置信息部分的属性介绍在SpringBoot集成SwaggerCodegen这一小节中有详细的说明,同学们可以去该小节了解。

我们在使用SwaggerEditor时,一般都是在没有借口文档的情况下进行,所以这就要求我们对接口所开展的业务有很清晰的了解才行。

在SwaggerEditor中,我们会对不同属性编写不同的描述信息,而涉及到名字的属性一定要注意,例如:title属性,在对这一类型属性进行描述时,我们应该根据项目需求文档来进行描述,不能自己随意起名字,只有按照项目需求文档来描述的SwaggerEditor属性才能说是准确的,是服务于当前项目的。

在集成SwaggerEditor时,还需要注意SwaggerEditor与SwaggerCodegen之间的共同点与不同点,注意区分和体会他们的应用场景和使用目的,这样在实际开发中才能根据不同场景来选择合适的工具来完成工作。

大家好,今天为大家介绍Swagger生态体系中的最后一部分内容-Swagger辅助工具。该部分内容主要介绍Swagger官方提供的辅助工具,他们分别是:Validator、Parser、Inflector。

本节主要内容如下:

什么是SwaggerValidator呢?在Swagger官网中是这么介绍的:

SwaggerValidator是一个Swagger验证器,用于验证你的Swagger文档。—官网

从图中我们可以看到,SwaggerValidator的显示界面非常类似于Swagger-UI的显示界面,风格和排版都很相似,那么我们应该怎么来用呢?

根据官方文档我们不难看出,SwaggerValidator就是一个校验Swagger文档的工具,那么我们应该怎么来用呢?

我们可以在上述截图中看到一个Validator字样的单词,在这个单词下放,是Swagger官方为我们提供的Swagger文档中接口请求规范,以及接口定义要求。

就是说,我们可以把我们编写的Swagger文档和SwaggerValidator官方校验界面做一个比较,看一下是否符合SwaggerValidator官方的要求,校验的范围就包括:接口请求定义是否符合规范、接口返回值是否符合规范等,而进行校验的方式就是通过对比Validator下的内容。

如果在校验后发现,我们的Swagger文档有部分内容不符合SwaggerValidator官方所展示的,那么我们就需要对这一部分进行修改,直至符合SwaggerValidator官方的要求才行。

什么是SwaggerParser呢?在Swagger官网中是这么介绍的:

SwaggerParser是可以将Java项目中的POJO文件都解析成符合OpenAPI规范的类,同时它也提供了一个简单的框架来将不同平台的POJO文件都转换为统一的Swagger对象,来使整个Swagger工具链变得可用。—官网

我们可以这样简单的理解:SwaggerParser是专门服务于POJO文件的一个工具包,他可以将来自不同平台中的不符合OpenAPI规范的POJO文件都解析成符合统一规范的格式,使得我们在任何平台上都可以正常的使用Swagger。

由于Maven官方提供了对SwaggerParser的支持,所以我们只要将SwaggerParser的Maven依赖引入到我们项目中去就可以使用了:

io.swagger.parser.v3swagger-parser2.0.20通过配置以下代码我们就可以来读取符合OpenAPI规范的文件了:

SwaggerInflector是可以使用Swagger规范去驱动一种API的实现,并且你拥有全部的权限在实现过程中进行修改。—官网

也就是说,SwaggerInflector是一款可以使用Swagger规范去生成符合Swagger规范的API工具,并且可以在实现过程中针对不符合规范的地方进行完全的修改,最后使之符合Swagger的规范。

由于SwaggerInflector的使用相对非常少,并且如果想使用SwaggerInflector,那么你的项目就必须使用一种框架才能将SwaggerInflector集成进去,这个框架就是Jersey。

关于Jersey,这里就不多说了,大家只需要这是一款小众框架就行了,现在没有完全被淘汰,还有很多小公司仍在使用。

那么,在将Jersey集成好之后,我们就可以在Jersey生成的web.xml文件中添加如下配置来使用SwaggerInflector了:

swagger-inflectororg.glassfish.jersey.servlet.ServletContainerjavax.ws.rs.Applicationio.swagger.oas.inflector.OpenAPIInflector1swagger-inflector/*Tips:

我们在学习SwaggerValidator、Parser、Inflector时一定要注意他们的适用场景,区分他们之间的共同点和不同点,在学习本节内容时自己可以动手实践一下,这样才能更好地掌握。

SwaggerValidator、Parser、Inflector这三款辅助工具的介绍作为Swagger整套课程体系的最后一节内容,老师从他们的不同使用业务场景出发,介绍了他们最简单的使用方法,希望通过本节内容的介绍,同学们可以对这三款辅助工具有一个新的认识。

同学们,写到这里,Swagger系统知识点就给各位介绍完毕了,在这中间感谢各位的支持,江湖路远,我们有缘再见!

THE END
1.什么是集成测试?所有的软件项目都不能摆脱系统集成这个阶段。不管采用什么开发模式,具体的开发工作总得从一个一个的软件单元做起,软件单元只有经过集成才能形成一个有机的整体。具体的集成过程可能是显性的也可能是隐性的。只要有集成,总是会出现一些常见问题,工程实践中,几乎不存在软件单元组装过程中不出任何问题的情况。从集成测试需https://blog.csdn.net/weixin_71807218/article/details/144274266
2.EPC是什么?EPC,其全称为Engineering, Procurement, and Construction,代表了一种高集成度的工程服务方式。它类似于一个强大的推动力,为项目落地提供了全面的助力。在EPC的框架下,单一公司作为主承包商,会将设计、采购及施工等流程融合在一起,并以合同为基石,对项目工程的全过程或部分阶段展开专业管控。此模式的目的是精简https://baijiahao.baidu.com/s?id=1808749536027818162&wfr=spider&for=pc
3.集成项目管理里cmo是什么意思?Worktile社区在集成项目管理中,CMO代表着“项目整体管理办公室”(Chief Managing Office),也可以理解为“项目集中管理办公室”。CMO是一种项目管理结构,它由一组专业人员和资源组成,负责项目的整体管理和协调。以下是CMO的主要功能和意义: 1. 项目整体管理:CMO负责对项目的整体管理和协调,确保项目目标和里程碑得以实现。它提供项https://worktile.com/kb/ask/644559.html
4.什么叫集成项目什么叫集成项目时间不会说谎 精选回答 集成项目是系统集成项目的管理,属于项目管理中的一类项目管理内容。 项目管理,简称PM,即项目的管理者,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。即从项目的投资决策开始到项目结束的全过程进行计划、组织、指挥、协调、控制和评价,https://edu.iask.sina.com.cn/jy/hp7BUcLKzZ.html
5.项目集成管理是什么意思呀开心的活着就好的技术博客项目集成管理是什么意思呀 项目集成管理作为项目管理领域中的核心环节,对于确保项目的顺利推进和成功完成具有至关重要的作用。在软考(软件水平考试)中,项目集成管理更是一个不可或缺的知识点和技能要求,它涉及对项目的各个方面进行综合、协调和管理,以确保项目能够按照既定的目标、时间、成本和质量要求得以实现。https://blog.51cto.com/u_15064073/10983909
6.工程项目集成化是什么意思?一文讲清工程项目集成化是什么意思?一文讲清 工程项目集成化,是一种整体化的管理理念,指通过对不同项目的整合,实现管理的目标和成果。也就是把工程项目用合理的系统方式整体化地进行管理,从而达到有效利用资源、实现良好目标和绐果的效果。 一、工程项目集成化的定义https://www.sgpjbg.com/info/d3db56d1b78db81bf0b9cfe37033a198.html
7.IPSE是什么意思IntegratedIPSE 英文全称Integrated Project Support Environment 中文解释集成化项目支持环境 缩写分类电子电工, PhC药剂师 RD注册营养师 RGN注册普通护士 RM注册助产士 RMN注册精神科护士 RNMN注册智障康复科护士 RNPsy注册精神科护士 RSCN注册儿科护士 SCM州证书助产士https://suoxie.bmcx.com/ipseqbamc__suoxieshow/
8.数据中台是什么意思及其应用数据中台是什么意思及其应用 一、数据中台的定义与背景 1.1 数据中台的概念 数据中台是一个集成和管理企业内外部数据资源的技术平台,旨在提供统一的数据服务和数据分析能力。其核心目标是打破数据孤岛,实现数据的高效利用。数据中台不仅仅是一个流行词,而是企业数字化转型的重要基础设施。通过数据中台,企业能够实现数据的https://www.feishu.cn/content/what-is-data-middle-platform
9.备战金九银十,腾讯T4梳理2020年最全999道Java岗必备面试题答案17、Synchr oni zedMap和C oncurrentHashMap有什么区别? 18、什么是线程安全 19、Thread类中的yi el d方法有什么作用? 20、Java线程池中submitO和execute 0方法有什么区别? 21、说一说自己对于synchronized关键字的了解 22、说说自己是怎么使用synchronized关键字,在项目中用到了吗symchr oni zed关键字最主要的三https://maimai.cn/article/detail?fid=1676715301&efid=le0vn010vvt6jXpw7rrt0A
10.今日和寡妇睡了是不是和农村寡妇睡觉2、寡妇不是女人,唯一不同的是她丈夫死了。 3、后来很多寡妇结婚了,也没人被杀。 4、因为古代科学不发达,女性地位低下,丈夫病死或猝死。 5、如果找不到原因,那就看寡妇的了。 6、说她是个灾难。 7、啊,真倒霉!。 本文到此结束,希望对大家有所帮助。http://wap.022net.com/news/news/2023/0522/102543.html
11.Vercel的AI工具V0.dev是什么?如何使用它?实现这一目标的简单方法之一是为 v0 提供一个客户端,Vercel 将与代码编辑器集成,GitHub copilot 正在遵循这种方法。例如,通过这种方法,v0 可以在 VS Code 中创建扩展。通过这个扩展,V0将从项目中获取文件名和信息来了解设计系统,然后将其定向到相关的设计系统并提供基于此的代码和组件。这种方法类似于 Gemini 和https://developer.aliyun.com/article/1420573
12.阿木实验室让机器人研发更高效标注工具集成: SpireView 自动化标注工具可以减少人工标注的成本和时间,从而降低整个深度学习项目的成本。这可以让更多的企业和组织参与深度学习项目,促进深度学习技术的发展和应用。 SpireView工具地址:https://gitee.com/amovlab1/spireview.git 视频算法模块: 二维码检测起降标志检测目标框选追踪通用目标检测椭圆检测目https://www.amovlab.com/news/detail?id=247
13.Vue3学习笔记(八)——ViteESLint腾讯云开发者社区Vue 脚手架工具 vue-cli 使用 webpack 进行打包,开发时可以启动本地开发服务器,实时预览。因为需要对整个项目文件进行打包,开发服务器启动缓慢 而对于开发时文件修改后的热更新 HMR 也存在同样的问题 Webpack 的热更新会以当前修改的文件为入口重新 build 打包,所有涉及到的依赖也都会被重新加载一次 https://cloud.tencent.com/developer/article/2213249
14.华为是可以学习的—先对标华为的业务管理体系男哥说管理华为具备深远改革的三项变革分别是IPD(集成产品设计)、IFS(集成财经变革)、LTC(从线索到回款),现在所有的企业文化、人力资源、内部控制也好其实都是在这三项大的变革基础上衍生出来的配套机制。 2007年初,集成财经服务(IFS)项目第一阶段启动,包括机会点到回款、采购到付款、项目预核算、总账、共享服务、政策和流程、业https://www.shangyexinzhi.com/article/8452774.html
15.合肥下重注的晶合集成IPO会顺利吗?亏40亿公司大半专利来自力晶04晶合集成,谁说了算? 整个问询文件里,最有意思的就是,晶合集成,说控股,谁说了算? 从材料看,虽说公司控股股东、实际控制人是合肥市国资委。 但,人家国资委的人哪里懂什么12寸晶圆厂,当年与第二大股东力晶科技签了《委托经营管理合约》,约定公司委托力晶科技进行经营管理。 https://mp.ofweek.com/ic/a556714017257
16.中国建设科技有限公司人才培训中心业内新闻2.伴随着CAD、CAM、CAPP等新研发工具的大规模使用,通过建立高度集成的数字化模型及研发工艺仿真体系,将传统串行的、碎片化的项目建设过程在时间和空间上交叉、重组和优化,将原本在产品生命周期下游的制造、安装和运维的技术工作提前到上游进行,有效整合跨区域、跨行业、跨企业的技术资源,数字化重构推动了项目建设过程从http://www.zjypxzx.com/c/2022-03-28/499451.shtml