SpringBoot+Vue全栈开发-刘老师教编程(b站)(二)

创建SpringBoot项目

1.配置maven
请添加图片描述
出现bug

java: 无法访问org.springframework.boot.SpringApplication   错误的类文件: /D:/maven/repository/org/springframework/boot/spring-boot/3.0.0/spring-boot-3.0.0.jar!/org/springframework/boot/SpringApplication.class     类文件具有错误的版本 61.0, 应为 52.0     请删除该文件或确保该文件位于正确的类

2.修改pom.xml,bug消除(2.7.2 、<java.version>1.8</java.version>)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>demo</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

Web入门

  • Spring Boot将传统Web开发的mvc、json、tomcat等框架整合,提供了spring-boot-starter-web组件,简化了Web应用配置。
  • 创建SpringBoot项目勾选Spring Web选项后,会自动将spring-boot-starter-web组件加入到项目中。
  • spring-boot-starter-web启动器主要包括web、webmvc、ison、tomcat等基础依赖组件,作用是提供Web开发场景所需的所有底层依赖。
  • webmvc为Web开发的基础框架,ison为JSON数据解析组件,tomcat为自带的容器依赖。

控制器

  • Spring Boot提供了@Controller和@RestController两种注解来标识此类负责接收和处理HTTP请求。
  • 如果请求的是页面和数据,使用@Controller注解即可;如果只是请求数据则可以使用@RestControler注解。
    请添加图片描述

路由映射

  • @RequestMapping注解主要负责URL的路由映射。它可以添加在Controller类或者具体的方法上
  • 如果添加在Controller类上,则这个Controller中的所有路由映射都将会加上此映射规则,如果添加在方法上,则只对当前方法生效。
  • @RequestMapping注解包含很多属性参数来定义HTTP的请求映射规则。常用的属性参数如下
  • value:请求URL的路径,支持URL模板、正则表达式
  • method: HTTP请求方法
  • consumes: 请求的媒体类型!(Content-Type),如application/json
  • produces: 响应的媒体类型
  • params,headers:请求的参数及请求头的值

Method匹配

  • HTTP请求Method有GET、POST、PUT、DELETE等方式。HTTP支持的全部Method
  • @RequestMapping注解提供了method参数指定请求的Method类型,包括RequestMethodGET、RequestMethod.POST、RequestMethod.DELETERequestMethod.PUT等值,分别对应HTTP请求的Method
@RequestMapping(valve = "/getData",method = RequestMethod.GET)
public string getData(){return "hello";
}
  • Method匹配也可以使用@GetMapping、@PostMapping等注解代替。

参数传递

  • @RequestParam将请求参数绑定到控制器的方法参数上,接收的参数来自HTTP请求体或请求url的QueryString,当请求的参数名称与Controller的业务方法参数名称一致时,@RequestParam可以省略
  • @PathVaraible:用来处理动态的URL,URL的值可以作为控制器中处理方法的参数
  • @RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type:application/x-www-form-urlencoded编码格式的数据比如:application/jsonapplication/xml等类型的数据

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
idea快捷键get和set、toString()为Alt+Insert

文件上传

文件上传原理

  • 表单的enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。当表单的enctype=“application/x-www-form-urlencoded”(默认)时form表单中的数据格式为:key=value&key=value
  • 当表单的enctype="multipart/form-data"时,其传输数据形式如下
    请添加图片描述

SpirngBoot实现文件上传功能

  • Spring Boot工程嵌入的tomcat限制了请求的文件大小,每个文件的配置最大为1Mb,单次请求的文件的总数不能大于10Mb。
  • 要更改这个默认值需要在配置文件(如application.properties)中加入两个配置
   spring.servlet.multipart.max-file-size=10MBspring.servlet.multipart.max-request-size=10MB

请添加图片描述

@RestController
public class FileUploadController {@PostMapping("/upload")public String up(String nickname, MultipartFile photo, HttpServletRequest request) throws IOException {System.out.println(nickname);System.out.println(photo.getOriginalFilename());System.out.println(photo.getContentType());String path= request.getServletContext().getRealPath("/upload/");System.out.println(path);saveFile(photo,path);return "上传成功!";}public void saveFile(MultipartFile photo, String path) throws IOException {File dir= new File(path);if(!dir.exists()){dir.mkdir();}File file = new File(path+photo.getOriginalFilename());photo.transferTo(file);}
}

运行结果如下
请添加图片描述

拦截器

  • 拦截器在Web系统中非常常见,对于某些全局统一的操作,我们可以把它提取到拦截器中实现。总结起来,拦截器大致有以下几种使用场景:
  • 权限检查:如登录检测,进入处理程序检测是否登录,如果没有,则直接返回登录页面。
  • 性能监控:有时系统在某段时间莫名其妙很慢,可以通过拦截器在进入处理程序之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间
  • 通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有提取Locale、Theme信息等,只要是多个处理程序都需要的,即可使用拦截器实现。

  • Spring Boot定义了Handlerlnterceptor接口来实现自定义拦截器的功能
  • HandlerInterceptor接定义了preHandle、postHandle、afterCompletion三种方法,通过重写这三种方法实现请求前、请求后等操作请添加图片描述

1.拦截器定义:一般只设置preHandle,作为执行controller之间的拦截器,先撰写拦截器类

public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("LoginInterceptor");return true;}
}

2.拦截器注册:(必须写,否则拦截器不可执行)绑定拦截器和拦截的资源访问路径,切记要加@Controller,才能被整个程序配置到

  • addPathPatterns方法定义拦截的地址
  • excludePathPatterns定义排除某些地址不被拦截添加的一个拦截器没有addPathPattern任何一个url则默认拦截所有请求如果没有excludePathPatterns任何一个请求,则默认不放过任何一个请求。
@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");}
}

RESTfuI的特点

  • 每一个URI代表一种资源
  • 客户端使用GET、POST、PUT、DELETE四种表示操作方式的动词对服务端资源进行操作:GET用于获取资源,POST用于新建资源(也可以用于更新资源)PUT用于更新资源,DELETE用于删除资源。
  • 通过操作资源的表现形式来实现服务端请求操作。
  • 资源的表现形式是JSON或者HTML。
  • 客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都包含必需的信息。
    请添加图片描述

HTTP状态码

  • HTTP状态码就是服务向用户返回的状态码和提示信息,客户端的每一次请求服务都必须给出回应,回应包括HTTP状态码和数据两部分。
  • HTTP定义了40个标准状态码,可用于传达客户端请求的结果。状态码分为以下5个类别:
    1xx:信息,通信传输协议级信息
    2xx:成功,表示客户端的请求已成功接受
    3xx:重定向,表示客户端必须执行一些其他操作才能完成其请求
    4xx:客户端错误,此类错误状态码指向客户端
    5xx:服务器错误,服务器负责这写错误状态码

Spring Boot实现RESTfuI API(xxMapping)

  • Spring Boot提供的spring-boot-starter-web组件完全支持开发RESTfuI API提供了与REST操作方式(GET、POST、PUT、DELETE)对应的注解。
    @GetMapping:处理GET请求,获取资源。
    @PostMapping:处理POST请求,新增资源。
    @PutMapping:处理PUT请求,更新资源。
    @DeleteMapping:处理DELETE请求,删除资源:
    @PatchMapping:处理PATCH请求,用于部分更新资源。
  • 在RESTfu架构中,每个网址代表一种资源,所以URI中建议不要包含动词,只包含名词即可,而且所用的名词往往与数据库的表格名对应。
  • 用户管理模块API示例:请添加图片描述

Swagger

  • Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTfuI风I格的Web服务,是非常流行的API表达工具。
  • Swagger能够自动生成完善的RESTfuIAPI文档同时并根据后台代码的修改同步更新,同时提供完整的测试页面来调试API

使用Swagger生成Web API文档

1.导入依赖

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version></dependency>

2.Swagger配置类


@Configuration  //告诉Spring容器这是一个配置类
@EnableSwagger2 //开启Swagger的功能
public class Swagger2Config {@Beanpublic Docket createRestApi(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com")).paths(PathSelectors.any()).build();}/*** 这里为API文档显示的信息*/private ApiInfo apiInfo(){return new ApiInfoBuilder().title("演示项目API").description("学习Swagger2的演示项目").version("1.0").build();}
}

3.在application.properties中添加
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
4.运行http://localhost:8080/swagger-ui.html
5.可以通过@ApiOperation(“xxxx”)进行备注
6.运行结果如下请添加图片描述


MybatisPlus

ORM介绍

  • ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术
  • ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中。
  • ORM框架的本质是简化编程中操作数据库的编码
    请添加图片描述

MyBatis-Plus介绍

  • MyBatis是一款优秀的数据持久层ORM框架,被广泛地应用于应用系统
  • MvBatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的POJO(Plain Ordinary Java Object,普通的Java对象)与数据库中的表和字段进行映射关联
  • MyBatis-Plus是一个 MyBatis 的增强工具,在 MyBatis 的基础上做了增强简化了开发

如何使用Mybatis

  • Mybatis的CRUD操作
    @Insert("insert into user values(#{id},#{username},#{password},#{birthday})")int add(User user);@Update("update user set username=#{username},password=#{password},birthday=#{birthday} where id=#{id}")int update(user user);@Delete("delete from user where id=#{id}")int delete(int id);@Select("select * from user where id=#{id}")User findById(int id);@Select("select * from user")List<user> getAll();

请添加图片描述

1.添加依赖

      <!--MyBatisPlus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><!--mysql驱动依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--数据连接池druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.20</version></dependency>

2.全局配置
(1)在application.properties中添加

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false
spring.datasource.username=root
spring.datasource.password=hsp
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

(2)在DemoApplication中添加@MapperScan注解

@SpringBootApplication
@MapperScan("com.example.mpdemo.mapper")
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

4.创建UserController,添加下面代码

@GetMapping("/user")public String query(){return "查询用户";}

5.创建entity的User类,添加get和set、toString()


public class User {private int id;private  String username;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}private String birthday;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", birthday='" + birthday + '\'' +'}';}
}

6.创建Mapper的UserMapper接口,记得写@Mapper

@Mapper
public interface UserMapper {//查询所有用户@Select("select * from user")public List<User> find();
}

7.在UserController中添加声明,注入userMapper

    @Autowiredprivate UserMapper userMapper;@GetMapping("/user")public String query(){List<User> list = userMapper.find();System.out.println(list);return "查询用户";}

8.运行结果
请添加图片描述

  • 如果是前后端分离项目需要将返回值String改为List,系统会自动将数据转为json请添加图片描述
    运行结果如下请添加图片描述

  • 插入
    (1)在UserMapping添加下面代码
    请添加图片描述
    (2)在UserController中添加

    @PostMapping("/user")public String save(User user){int i = userMapper.insert(user);if(i > 0){return "插入成功";}else{return "插入失败";}}

如何使用MybatisPlus

1.mapper类继承BaseMapper(注意:类的名字必须和表的名字一致)

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

2.controller修改query方法,insert方法不用变

    @GetMapping("/user")public List query(){List<User> list = userMapper.selectList(null);System.out.println(list);return list;}
  • 如果表名和实体类不一致,类上方可以加“@TableName(“表名”)”映射到实体类,变量名不一致用“@TableField”。
  • @TableId可以将变量设置为主键,IdType.AUTO意思是自增,再次测试,插入数据时,user传入数据时会带上id,尽管请求时并没有设置id。

MybatisPlus多表查询及分页查询

  • 实现复杂关系映射,可以使用@Results注解,@Result注解,@One注解,@Many注解组合完成复杂关系的配置。(MybatisPlus仅对单表查询进行了增强,没有修改多表查询)
    请添加图片描述

  • 目标:实现查询用户时,查到该用户名下所有订单
    (1)新建订单表u_order(id设置为主键、自增),注意表名不能设为order,不然访问时,sql语法会出错(“select *from order where uid = #{uid}”),无法执行sql语句。
    因为sql语句中不能出现sql关键词,否则会报错,sql关键词有order、form、dec等等。
    请添加图片描述

(2)新建Order类,以及get、set、constructor、toString方法

@TableName("u_order")
public class Order {private int id;private String ordertime;private double total;private User user;
}

(3)User类中加入private List<Order> order;
(4)新建OrderMapper、OrderController

@Mapper
public interface OrderMapper extends BaseMapper<Order> {@Select("select * from u_order where uid = #{uid}")List<Order> selectByUid(int uid);//  查询所有的订单,同时查询订单的用户@Select("select * from u_order")@Results({@Result(column = "id",property = "id"),@Result(column = "order_time",property = "ordertime"),@Result(column = "total",property = "total"),@Result(column = "uid",property = "user",javaType = User.class,one=@One(select = "com.example.demo.mapper.UserMapper.selectById"))})List<Order> selectAllOrderAndUser();
}
@RestController
public class OrderController {@Autowiredprivate OrderMapper orderMapper;@GetMapping("/order/findAll")public List findAll(){List orders = orderMapper.selectAllOrdersAndUser();return orders;}}

(5)UserMapper添加查询用户、查询所有订单的方法selectAllUserAndOrder()

@Mapper
public interface UserMapper extends BaseMapper<User> {//   查询用户,根据用户id查询信息   select * from user where id =@Select("select * from user where id = #{id}")User selectById(int id);//   查询用户及其所有的订单@Select("select * from user")@Results({@Result(column = "id",property = "id"),@Result(column = "username",property = "username"),@Result(column = "password",property = "password"),@Result(column = "birthday",property = "birthday"),@Result(column = "id",property = "order",javaType = List.class,many=@Many(select = "com.example.demo.mapper.OrderMapper.selectByUid"))})List<User> selectAllUserAndOrder();

(6)UserController中添加对应方法

    @GetMapping("/user/findAll")public List<User> find(){return userMapper.selectAllUserAndOrder();}

@Results是结果集,@Result作用是每一个字段赋值
运行结果
请添加图片描述

条件查询

(1)在User类中的order前加上@TableField(exist = false),不然·就会报错

   @TableField(exist = false)private List<Order> order;

(2)在UserController中添加条件查询findByCond()

  //  条件查询@GetMapping("/user/find")public List<User> findByCond(){QueryWrapper<User> queryWrapper = new QueryWrapper();queryWrapper.eq("username","zhangsan");return userMapper.selectList(queryWrapper);}

运行结果
请添加图片描述

分页查询

(1)创建MyBatis Plus拦截器,新建配置类MyBatisPlusConfig

@Configuration
public class MyBatisPlusConfig {@Beanpublic MybatisPlusInterceptor paginationInterceptor(){MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);interceptor.addInnerInterceptor(paginationInterceptor);return interceptor;}
}

(2)Controller方法添加分页查询findByPage()

    //分页查询@GetMapping("/user/findByPage")public IPage findByPage(){//设置起始值及每页条数Page<User> page = new Page<>(0,2);![请添加图片描述](https://img-blog.csdnimg.cn/direct/3e1c84ff10964acd9041b491936916fa.png)IPage iPage = userMapper.selectPage(page,null);return iPage;}

Page对象是用来描述从哪查,查几条数据;iPage是描述结果集的对象。
运行结果:
请添加图片描述

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

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

相关文章

FPGA高端项目:FPGA基于GS2971的SDI视频接收转HDMI输出,提供3套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI图像缩放应用本方案的SDI纯verilog图像缩放视频拼接应用本方案的SDI HLS图像缩放视频拼接应用本方案的SDI视频编码动态字符叠加输出应用本方案的SDI视频编码多路视频融合视频叠加应用本方案的SDI视频…

云计算与边缘计算:有何不同?

公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置&#xff0c;并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序提供了强大的灵活性、价值和安全性。 然而&#xff0c;随着分布在全球各地的实时人工智能应…

mac命令行下计算文件SHA-256散列值

源起 从国内的第三方网站下载了Android sutiod的zip包下载地址&#xff0c;为了安全起见还是得跟Android官网上的对应的zip包的SHA值做下对比。以前是经常使用md5命令的&#xff0c;所以理论在命令行下应该是有对应的命令行工具可以计算SHA值的。后来搜索到可以用 shasum命令来…

目标检测——车辆数据集

一、背景介绍 VOC2005车辆数据集是PASCAL VOC挑战赛中的一个重要组成部分&#xff0c;该挑战赛始于2005年&#xff0c;旨在为计算机视觉领域的研究者和开发者提供一个统一的、标准化的评估平台。PASCAL VOC挑战赛不仅推动了图像识别、目标检测、图像分割等技术的发展&#xff…

类和对象(1)——开启C++学习之旅

目录 一、过程性编程和面向对象编程 二、类的定义 2.1类的定义语法 2.2类的定义方式 三、类的访问限定符 四、封装 五、类对象模型 5.1类的实例化 5.2类对象的存储方式 六、this指针 6.1什么是this指针 6.2 this指针的特性 一、过程性编程和面向对象编程 C语言是面…

通过elementUI学习vue

<template><el-radio v-model"radio" label"1">备选项</el-radio><el-radio v-model"radio" label"2">备选项</el-radio> </template><script>export default {data () {return {radio: 1}…

南京观海微电子----Verilog基础(一)——数据类型、运算符

1. 数据类型 1.1 常量 整数&#xff1a;整数可以用二进制b或B&#xff0c;八进制o或O&#xff0c;十进制d或D&#xff0c;十六进制h或H表示&#xff0c;例如&#xff0c;8’b00001111表示8位位宽的二进制整数&#xff0c;4’ha表示4位位宽的十六进制整数。 X和Z&#xff1a;X…

算法沉淀——动态规划之子序列问题(下)(leetcode真题剖析)

算法沉淀——动态规划之子序列问题 01.最长定差子序列02.最长的斐波那契子序列的长度03.最长等差数列04.等差数列划分 II - 子序列 01.最长定差子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/ 给你一个整数数…

编码技巧——Springboot工程加密yml配置/Maven引入本地二方包

1. 背景 基于Springboot的工程项目&#xff0c;通常很多信息都是在application.yml中直接明文配置的&#xff0c;比如数据库链接信息&#xff0c;redis链接信息等&#xff1b; 为了安全考虑&#xff0c;公司打算将yml配置文件中的数据库连接信息的账号&#xff0c;密码进行加…

mini-spring|关于Bean对象作用域以及FactoryBean的实现和使用

需求 FactoryBean 直接配置FactoryBean 获取FactoryBean中的Bean对象 FactoryBean的getObject方法通过反射获取Bean对象 由此省去对实体Dao类的定义 解决方法 对外提供一个可以二次从 FactoryBean 的 getObject 方法中获取对象的功能即可 整体架构 整个的实现过程包括了两部…

Redis持久化的两种方式RDB和AOF详解

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 以下内容为学习 Redis 过程中的笔记 文章目录 Redis持久化RDB&#xff08; Redis DataBase &#xff09;触发机制&#xff1a;如何恢复rbd文件&#xff1a;优点&#xff1a;缺点&#xff1a; AOF &…

【文献管理】zotero插件4——获取知网pdf、中文文献识别与目录生成

文章目录 zotero获取知网PDFzotero——中文文献识别&#xff08;茉莉花插件&#xff09;学位论文目录生成 zotero获取知网PDF zotero——中文文献识别&#xff08;茉莉花插件&#xff09; 为下载的学位论文添加目录中文文献识别&#xff1a;jasminum 下载pdflabs下载茉莉花插…

C++——类的6个默认成员函数

目录 类中的6个默认成员函数 构造函数 构造函数的特点 初始化列表 隐式类型转换 析构函数 拷贝构造函数 赋值重载 运算符重载 赋值重载 取地址重载 类中的6个默认成员函数 类中的6个默认成员函数根据不同的作用可以分为&#xff1a; 初始化和使用后清理&#xff1a;…

YOLOv8改进,添加GSConv+Slim Neck,有效提升目标检测效果,代码改进(超详细)

目录 摘要 主要想法 GSConv GSConv代码实现 slim-neck slim-neck代码实现 yaml文件 完整代码分享 总结 摘要 目标检测是计算机视觉中重要的下游任务。对于车载边缘计算平台来说&#xff0c;巨大的模型很难达到实时检测的要求。而且&#xff0c;由大量深度可分离卷积层构…

Java Web(十一)--JSON Ajax

JSON JSon在线文档&#xff1a; JSON 简介 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。轻量级指的是跟xml做比较。数据交换指的是客户端和服务器之间业务数据的传递格式。 它基于 ECMAScript (W3C制定的JS规范)的一个子集&#xff0c;采…

Stable Cascade发布:比SDXL更快、更强的图像生成模型

前言 StabilityAI在春节期间发布了新的一代文生图模型Stable Cascade&#xff0c;Stable Cascade是基于Wuerstchen架构包含三阶段的文生图扩散模型&#xff0c;为质量、灵活性、微调和效率设定了新的标准&#xff0c;着重于进一步消除硬件障碍。相比Stable Diffusion XL&#…

《Decoupling Representation and Classifier for Long-Tailed Recognition》阅读笔记

论文标题 《Decoupling Representation and Classifier for Long-Tailed Recognition》 用于长尾识别的解耦表示和分类器 作者 Bingyi Kang、Saining Xie、Marcus Rohrbach、Zhicheng Yan、 Albert Gordo、Jiashi Feng 和 Yannis Kalantidis 来自 Facebook AI 和 新加坡国…

Linux笔记--文件权限

一、相关概念 Linux最优秀的地方之一就在于多人多任务环境。为了让各个使用者有较为保密的文件数据&#xff0c;文件的权限管理尤为重要。 ●文件的可存取身份: owner:文件拥有者 group:文件所属用户组 others:其他人 ●文件权限: r: read&#xff0c;读 文件:是否能查看文件内…

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录 前言一、通过Spectator获取坐标二、通过道路ID获取坐标总结 前言 CARLA没有直接的方法给使用者查找地图坐标点来生成车辆&#xff0c;这里推荐两种实用的方法在特定的地方生成车辆。 一、通过Spectator获取坐标 1、Spectator&#xff08;观察者&#xff09;&#xf…

2W字-35页PDF谈谈自己对QT某些知识点的理解

2W字-35页PDF谈谈自己对QT某些知识点的理解 前言与总结总体知识点的概况一些笔记的概况笔记阅读清单 前言与总结 最近&#xff0c;也在对自己以前做的项目做一个知识点的梳理&#xff0c;发现可能自己以前更多的是用某个控件&#xff0c;以及看官方手册&#xff0c;但是没有更…