从零开始搭建一个SpringBoot项目

目录

  • Spring Boot
    • Spring Boot 项目开发环境
      • 1、快速创建SpringBoot项目
      • 2、pom.xml 添加 Meavn 依赖
      • 3、配置application.yml
      • 4、验证数据库是否连接成功
      • 5、配置 Druid 数据源
    • Spring Boot 整合 MyBatis
      • 1、准备依赖
      • 2、application-dev.yml 配置
      • 3、启动类添加Mapper接口扫描器
      • 4、设置日志log
      • 5、实现 MyBatis 进行增删改查操作
        • 1、数据库创建表格
        • 2、新建实体类和 Mapper 接口
        • 3、创建 Mapper 接口的映射文件
        • 4、新建 UserController
        • 5、功能测试
    • Spring Boot 整合 Lombok
    • Spring Boot 整合 Swagger
      • 1、添加依赖文件
      • 2、创建 Swagger 配置类
      • 3、Swagger 接口测试
    • 接口参数处理和统一响应结果
    • 接口参数处理和统一响应结果

Spring Boot

Spring Boot 项目开发环境

1、快速创建SpringBoot项目

1、打开idea 选择 File => New => Project 选中 Spring Boot 快速创建。

如果是创建JAVA8 需要把 Server URL 地址修改为 阿里云地址 https://start.aliyun.com

在这里插入图片描述
2、Dependencies 依赖 可以直接在这里先勾选,但我们先不选后面通过pom.xml Maven加载
在这里插入图片描述
3、创建后的项目结构如下
在这里插入图片描述

2、pom.xml 添加 Meavn 依赖

1、添加 spring-boot-start-web
使用SpringMVC构建web(包括RESTful)应用程序。使用Apache Tomcat作为默认的嵌入式容器。

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

运行项目后,浏览器输入localhost:8080 Web服务正常
在这里插入图片描述
2、添加 Lambok 依赖
Lombok依赖可在编译时,自动添加JavaBean结构。例如常用的getter、setter、toString、构造器和equals等方法。

<!-- lombok 依赖 -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

3、单元测试
对单元测试的支持在于提供了一系列注解和工具的集成

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

4、数据库连接依赖

 <!-- mysql驱动包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!-- druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.14</version></dependency><!-- JDBC数据库连接 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>

3、配置application.yml

将默认 application.properties 修改为 application.yml 添加配置更加直观
在这里插入图片描述
在这里插入图片描述

# application.yml
spring:application:name: SpringBootDemoprofiles:# 使用 application-dev.yml 配置文件启动项目active: dev
# application-dev.yml
spring:datasource:url: jdbc:mysql://localhost:3306/springboot_db?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=falsedriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: Hu903157935
server:# 修改启动端口号port: 8080

4、验证数据库是否连接成功

在这里插入图片描述

// ApplicationTests.java 
package com.learning.springbootdemo;import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;@SpringBootTest
public class ApplicationTests {// 注入数据源对象@Resourceprivate DataSource dataSource;@Testpublic void dataSourceTest() throws SQLException {System.out.println("==============================================================");// 获取数据源类型System.out.println("默认数据源为:" + dataSource.getClass());// 获取数据库连接对象Connection connection = dataSource.getConnection();// 判断连接对象是否为空System.out.println(connection != null);assert connection != null;connection.close();}
}

5、配置 Druid 数据源

默认数据源-Hikari
在springboot2.0之后 , 采用的默认连接池就是Hikari, 号称"史上最快的连接池", 所以我们没有添加依赖也能直接用, springboot的自动配置中含有DataSourceAutoConfiguration配置类, 会先检查容器中是否已经有连接池对象, 没有则会使用默认的连接池, 并根据特定的属性来自动配置连接池对象, 用到的属性值来源于DataSourceProperties对象。

需要添加依赖和配置yml 此时加的是Druid的springboot自动配置包, 里面包含了DruidDataSourceAutoConfigure自动配置类,会自动创建druid的连接池对象, 所以springboot发现已经有连接池对象了,则不会再使用Hikari。(前面配置了,没有自行添加)

<!-- pom.xml -->
<!-- druid -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.14</version>
</dependency>
# application-dev.yml
spring:datasource:type: com.alibaba.druid.pool.DruidDataSource

Spring Boot 整合 MyBatis

1、准备依赖

<!--mybatis集成到SpringBoot中的依赖-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency>

2、application-dev.yml 配置

Spring Boot 整合 MyBatis 时几个比较需要注意的配置参数:

mybatis.config-location配置 mybatis-config.xml 路径,mybatis-config.xml 中配置 MyBatis 基础属性,如果项目中配置了 mybatis-config.xml文件需要设置该参数。mybatis.mapper-locations配置 Mapper 文件对应的 XML 文件路径。mybatis.type-aliases-package配置项目中实体类包路径

我们只配置 mapper-locations 即可,最终的 application-dev.yml文件如下:

mybatis:
#  config-location: classpath:mybatis-config.xml
mapper-locations: classpath:mapper/*Dao.xml
#  type-aliases-package: com.learning.springboot.springbootdemo

3、启动类添加Mapper接口扫描器

在启动类中添加对 Mapper 包扫描 @MapperScan,Spring Boot 启动的时候会自动加载包路径下的 Mapper 接口:

@SpringBootApplication
@MapperScan("com.learning.springbootdemo.dao") // 添加 @Mapper 注解
public class SpringBootDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringBootDemoApplication.class, args);}
}

当然也可以直接在每个 Mapper 接口上面添加 @Mapper 注解,但是如果 Mapper 接口数量较多,在每个 Mapper 加注解是挺繁琐的,建议使用扫描注解。

4、设置日志log

logging:level: root: infofile:name:springboot-site.log

5、实现 MyBatis 进行增删改查操作

1、数据库创建表格

首先创建了springboot_db 的数据库,之后在数据库中新建了一个名称为 tb_user 的数据表,表中有 id , name , password 三个字段,在测试时可以直接将以上 SQL 拷贝到 MySQL 中执行即可。

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `springboot_db` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `springboot_db`;
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '登录名',`password` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '密码',PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2、新建实体类和 Mapper 接口

1、在 entity 包下新建 User 类,将 tb_user 中的字段映射到该实体类中:

package com.learning.springbootdemo.entity;public class User {private Integer id;private String name;private String password;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

2、在 dao 包中新建 UserDao 接口,并定义增删改查四个接口:

package com.learning.springbootdemo.dao;import com.learning.springbootdemo.entity.User;import java.util.List;public interface UserDao {/*** 返回数据列表*/List<User> findAllUsers();/*** 添加*/int insertUser(User User);/*** 修改*/int updUser(User User);/*** 删除*/int delUser(Integer id);
}
3、创建 Mapper 接口的映射文件

在 resources/mapper 目录下新建 Mapper 接口的映射文件 UserDao.xml,之后进行映射文件的编写。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 配置文件头 不加会报错 文档根元素 "mapper" 必须匹配 DOCTYPE"null"-->
<!-- 1、首先,定义映射文件与 Mapper 接口的对应关系,比如该示例中,需要将 UserDao.xml 的与对应的 UserDao 接口类之间的关系定义出来: -->
<mapper namespace="com.learning.springbootdemo.dao.UserDao"><!-- 2、配置表结构和实体类的对应关系:--><resultMap type="com.learning.springbootdemo.entity.User" id="UserResult"><result property="id" column="id"/><result property="name" column="name"/><result property="password" column="password"/></resultMap><!-- 3、针对对应的接口方法,编写具体的 SQL 语句,最终的 UserDao.xml 文件如下: --><select id="findAllUsers" resultMap="UserResult">select id,name,password from tb_userorder by id desc</select><insert id="insertUser" parameterType="com.learning.springbootdemo.entity.User">insert into tb_user(name,password)values(#{name},#{password})</insert><update id="updUser" parameterType="com.learning.springbootdemo.entity.User">update tb_usersetname=#{name},password=#{password}where id=#{id}</update><delete id="delUser" parameterType="int">delete from tb_user where id=#{id}</delete>
</mapper>
4、新建 UserController

为了对 MyBatis 进行功能测试,在 controller 包下新建 UserController 类,并新增 4 个方法分别接收对于 tb_user 表的增删改查请求,代码如下:

package com.learning.springbootdemo.controller;import com.alibaba.druid.util.StringUtils;
import com.learning.springbootdemo.dao.UserDao;
import com.learning.springbootdemo.entity.User;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UserController {@ResourceUserDao userDao;// 查询所有记录@GetMapping("/users/mybatis/queryAll")public List<User> queryAll() {return userDao.findAllUsers();}// 新增一条记录@GetMapping("/users/mybatis/insert")public Boolean insert(String name, String password) {if (StringUtils.isEmpty(name) || StringUtils.isEmpty(password)) {return false;}User user = new User();user.setName(name);user.setPassword(password);return userDao.insertUser(user) > 0;}// 修改一条记录@GetMapping("/users/mybatis/update")public Boolean insert(Integer id, String name, String password) {if (id == null || id < 1 || StringUtils.isEmpty(name) || StringUtils.isEmpty(password)) {return false;}User user = new User();user.setId(id);user.setName(name);user.setPassword(password);return userDao.updUser(user) > 0;}// 删除一条记录@GetMapping("/users/mybatis/delete")public Boolean insert(Integer id) {if (id == null || id < 1) {return false;}return userDao.delUser(id) > 0;}
}
5、功能测试

1、启动 Spring Boot 项目
2、浏览器输入测试地址

查询:http://localhost:8080/users/mybatis/queryAll
新增:http://localhost:8080/users/mybatis/insert?name=mybatis1&password=1233333
修改:http://localhost:8080/users/mybatis/update?id=3&name=mybatis2&password=1233222
删除:http://localhost:8080/users/mybatis/delete?id=3

Spring Boot 整合 Lombok

Lombok 项目是一个第三方的 Java 工具库,它会自动插入编辑器和构建工具中,Lombok 提供了一组非常有用的注释,用来消除 Java 类中的大量样板代码,比如 setter getter 方法、构造方法等等, 仅仅在原来的 JavaBean 类上使用 @Data 注解就可以替换数百行代码从而使代码变得更加清爽、简洁且易于维护。

注意:Lombok 它并不是一个必要的插件。暂时先跳过。

Spring Boot 整合 Swagger

Swagger 是一款 RESTful 接口的文档在线自动生成+功能测试功能软件

它可以轻松的整合到 Spring Boot 中并生成 RESTful API 文档,既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明,另外 Swagger 也提供了强大的页面测试功能来调试每个 API 接口。

1、添加依赖文件

首先,在 pom.xml 中加入 Swagger 的依赖信息,如下:

<!-- swagger --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.0.2</version></dependency>

2、创建 Swagger 配置类

新建 config 包,在 config 包中新增 Swagger2Config.java,代码如下:

package com.learning.springbootdemo.config;import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SpringDocConfig {// 扫描路径private static final String basePackage = "com.learning.springbootdemo.controller";// 请求头名称private static final String headerName = "token";@Beanpublic GroupedOpenApi group01() {return GroupedOpenApi.builder().group("group01").addOperationCustomizer((operation, handlerMethod) -> {operation.addSecurityItem(new SecurityRequirement().addList(headerName));return operation;}).packagesToScan(basePackage).build();}@Beanpublic OpenAPI customOpenAPI() {Components components = new Components();//添加右上角的统一安全认证components.addSecuritySchemes(headerName,new SecurityScheme().type(SecurityScheme.Type.APIKEY).scheme("basic").name(headerName).in(SecurityScheme.In.HEADER).description("请求头"));return new OpenAPI().components(components).info(apiInfo());}private Info apiInfo() {Contact contact = new Contact();contact.setName("Wannaer");return new Info().title("Swagger文档").version("1.0").contact(contact).license(new License().name("Apache 2.0").url("http://springdoc.org"));}
}

group01() 方法用于返回生成 Swagger API 时的接口摘要信息,也是在该方法中指定需要扫描的控制器包路径,只有此路径下的 Controller 类才会自动生成 Swagger API 文档。如果想要根据不同的包对 API 文档进行分组,可以配置多个 GroupedOpenApi 实例,比如再写一个方法 group02,扫描的包是 cn.lanqiao.springboot3.controller2。

apiInfo() 方法中主要是配置一些基础信息,包括配置页面展示的基本信息包括,标题、描述、版本、服务条款、联系方式等。

配置完成之后启动项目,在浏览器中输入网址 /swagger-ui/index.html,即可看到 Swagger 页面,效果如下:
在这里插入图片描述
此时只有基础的配置信息,并没有文档信息,接下来我们需要在我们的 Controller 类。

@Tag(name = "用户模块接口")
@RestController
public class UserController {// 查询所有记录@Operation(summary = "查询所有记录")@GetMapping("/users/mybatis/queryAll")public List<User> queryAll() {return userDao.findAllUsers();}
}

在项目启动成功后,查看swagger接口文档页面 包括参数信息、请求方法、注意事项等等我们已经在代码中定义的信息都会在接口文档中显示。
在这里插入图片描述

// 完整 UserController 代码
package com.learning.springbootdemo.controller;import com.alibaba.druid.util.StringUtils;
import com.learning.springbootdemo.dao.UserDao;
import com.learning.springbootdemo.entity.User;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@Tag(name = "用户模块接口")
@RestController
public class UserController {@ResourceUserDao userDao;// 查询所有记录@Operation(summary = "查询所有记录")@GetMapping("/users/mybatis/queryAll")public List<User> queryAll() {return userDao.findAllUsers();}// 新增一条记录@Operation(summary = "新增用户", description = "根据User对象新增用户")@GetMapping("/users/mybatis/insert")public Boolean insert(String name, String password) {if (StringUtils.isEmpty(name) || StringUtils.isEmpty(password)) {return false;}User user = new User();user.setName(name);user.setPassword(password);return userDao.insertUser(user) > 0;}// 修改一条记录@GetMapping("/users/mybatis/update")public Boolean insert(Integer id, String name, String password) {if (id == null || id < 1 || StringUtils.isEmpty(name) || StringUtils.isEmpty(password)) {return false;}User user = new User();user.setId(id);user.setName(name);user.setPassword(password);return userDao.updUser(user) > 0;}// 删除一条记录@GetMapping("/users/mybatis/delete")public Boolean insert(Integer id) {if (id == null || id < 1) {return false;}return userDao.delUser(id) > 0;}
}

3、Swagger 接口测试

首先我们点进列表接口,接口的右上方有 Try it out 按钮,点击它来尝试发送请求。
在这里插入图片描述
之后页面上会出现 Execute 按钮,点击它之后会实际的向后端发送用户列表请求,请求成功后可以在页面中看到请求信息,以及返回数据,在 Response body 信息框中我们可以看到两条用户数据,接口请求成功且数据如预期中的数据一致,证明这个接口是没有问题的,结果如下图所示。
在这里插入图片描述

接口参数处理和统一响应结果

关于传参的规范和返回结果的统一,尽可能的使得控制层业务层处理的数据格式统一化,保证了接口和编码规范的统一性。
规范的参数定义和结果响应极大程度的降低了开发成本及沟通成本。

接口参数处理和统一响应结果

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

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

相关文章

BWVS 靶场测试

一、PHP弱类型 is_numeric() 输入&#xff1a;127.0.0.1/BWVS/bug/php/code.php # 1、源代码分析 如果num不是数字&#xff0c;那么就输出num&#xff0c;同时如果num1&#xff0c;就输出flag。即num要是字符串又要是数字 # 2、函数分析&#xff1a; is_numeric()函数&…

使用Nginx的Mirror模块的指南

Nginx 是一个广泛使用的 web 服务器和反向代理服务器&#xff0c;性能出色且易于配置。Nginx 提供了各种模块来扩展其功能&#xff0c;其中一个有用的模块是 mirror 模块。本文将详细介绍 Nginx 的 mirror 模块&#xff0c;包括其用途、使用场景、注意事项以及示例代码。 1. m…

《最新出炉》系列入门篇-Python+Playwright自动化测试-40-录制生成脚本

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 各种自动化框架都会有脚本录制功能&#xff0c; playwright这么牛叉当然也不例外。很早之前的selenium、Jmeter工具&#xff0c;发展到每种浏览器都有对应的录制插件。今天我们…

牛客NC392 参加会议的最大数目【中等 贪心+小顶堆 Java/Go/PHP 力扣1353】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/4d3151698e33454f98bce1284e553651 https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended/description/ 思路 贪心优先级队列Java代码 import java.util.*;public class Solution {/**…

java面试高级篇(JVM、Mysql、Redis、Kafka)

文章目录 面试专题-java高级篇1. JVM有做过jvm的调优吗?常用的jvm参数调优有哪些?如果jvm持续一段时间频繁的发生Young GC (轻GC) 可能原因有哪些? 2. Mysql2.1. 基本功(见为知笔记)2.2. 什么是索引2.3. 索引的优劣势2.4. MySQL的索引结构2.4.1. B-Tree索引2.4.2. BTree索引…

外卖系统源码开发全攻略:外卖小程序与后台管理系统的设计与实现

今天&#xff0c;小编将详细介绍外卖系统源码的开发全攻略&#xff0c;从需求分析到设计与实现&#xff0c;为开发者提供全面指导。 一、需求分析 1.用户需求 用户是外卖系统的核心&#xff0c;需满足以下基本需求&#xff1a; -浏览菜单并下单 -实时追踪订单 -多种支付方…

每日一题——博弈论(枚举与暴力)

博弈论 题目描述 运行代码 #include<iostream> #include<vector> using namespace std; int main(){int n;cin >> n;vector<int> d(n,0);for(int i 0;i < n;i){cin >> d[i];}vector<int> in(1000,0);for(int k 1;k<3;k){for(int…

ESP32烧录AT固件并进行MQTT通讯

首先下载AT固件 发布的固件 - ESP32 - — ESP-AT 用户指南 latest 文档 下载烧录工具 下载指导 - ESP32 - — ESP-AT 用户指南 latest 文档 烧录后注意usb的串口是不能发AT指令的 需要用16和17脚 用AT指令确认OK后连WIFI ATCWMODE1 //设置客户端模式 ATCWLAP …

mysql误删后使用binlog恢复数据

1 预期效果 使用 binlog 恢复数据的预期效果是将误删的数据还原到误删之前的状态&#xff0c;以减少或消除数据丢失的影响。通过正确解析和执行 binlog 中的操作记录&#xff0c;可以重新执行误删操作之后的插入、更新或删除操作&#xff0c;从而恢复被误删的数据。 数据恢复&…

Cocos Creator 编辑器的数据绑定详解

Cocos Creator 是一款由 Cocos 平台推出的游戏开发工具&#xff0c;它集成了图形化编辑器、脚本引擎和资源管理器等功能&#xff0c;方便开发者快速地创建游戏。其中&#xff0c;数据绑定是 Cocos Creator 编辑器中非常重要的一个功能&#xff0c;它可以帮助开发者实现页面元素…

三生随记——山洞之谜

第一章&#xff1a;初识山洞 在远离人烟的深山之中&#xff0c;隐藏着一个鲜为人知的山洞。这个山洞名叫幽洞&#xff0c;它的名字在当地人的口中带着一股说不出的诡异和神秘。据说&#xff0c;幽洞深不见底&#xff0c;里面充满了未知的恐惧和危险。然而&#xff0c;对于好奇心…

Go微服务: Grpc服务注册在Consul的示例(非Go-Micro)

概述 现在&#xff0c;我们使用consul客户端的api来把GRPC服务实现注册到consul上&#xff0c;非Go-Micro的形式其实&#xff0c;consul官方提供了对应的接口调用来实现&#xff0c;golang中的consul/api包对其进行了封装我们使用consul/api来进行展示 目录结构 gitee.com/g…

springboot+mysql在线考试系统-计算机毕业设计源码82584

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对在线考试等问题&#xff0c;对如何通过计算…

Websocket助手

功能介绍 WS助手是WebSocket调试的开发工具&#xff0c;该客户端工具可以帮助开发人员快速连接到测试/生产环境&#xff0c;它可以帮助您监视和分析 Websocket 消息&#xff0c;并在开发过程中解决问题&#xff1b;可以模拟客户端实现与服务器的数据交互&#xff0c;并完成批量…

论文精读:HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face Status: Reading Author: Dongsheng Li, Kaitao Song, Weiming Lu, Xu Tan, Yongliang Shen, Yueting Zhuang Institution: 微软亚洲研究院&#xff08;Microsoft Research Asia&#xff09;, 浙江…

uniapp 对接 微信App/支付宝App 支付

相关文档&#xff1a;uni.requestPayment(OBJECT) | uni-app官网 示例代码&#xff1a; import qs from qsasync aliPay(){const { provider } await uni.getProvider({ service:payment })if(provider.includes(alipay)){uni.request({url:后端接口地址,data:{ //传参 },suc…

⌈ 传知代码 ⌋ 基于扩散模型的无载体图像隐写术

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

前端---闭包【防抖以及节流】----面试高频!

1.什么闭包 释放闭包 从以上看出&#xff1a;一般函数调用一次会把内部的数据进行清除--但是这种操作却可以一起保留局部作用域的数据 // 优点:1、可以读取函数内部的变量 2、让这些变量始中存在局部作用域当中 2.闭包产生的两种业务场景&#xff1a;防抖、节流 2.1防抖 举…

QGraphicsView实现简易地图16『爆炸效果』

前文链接&#xff1a;QGraphicsView实现简易地图15『测量面积』 一种简单的爆炸波扩散效果 动态演示效果&#xff1a; 静态展示图片&#xff1a; 核心代码&#xff1a; #pragma once #include "../AbstractGeoItem.h" #include "DataStruct/GeoData.h"…

sysbench压测mysql性能测试命令和报告

sysbench压测mysql性能测试命令和报告 一、安装sysbench工具二、创建测试数据库三、基于sysbench构造测试表和测试数据四、数据库性能测试1、数据库读写性能测试2、数据库读性能测试3、数据库删除性能测试4、数据库更新索引字段性能测5、数据库更新非索引字段性能测试6、数据库…