当前位置: 首页 > news >正文

SpringSpringBoot常用注解总结

Spring&SpringBoot常用注解总结

1.@SpringBootApplication

这个注解是 Spring Boot 项目的基石,创建 SpringBoot 项目之后会默认在主类加上。

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

我们可以把 @SpringBootApplication看作是 @Configuration@EnableAutoConfiguration@ComponentScan 注解的集合。

package org.springframework.boot.autoconfigure;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {......
}package org.springframework.boot;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {}

根据 SpringBoot 官网,这三个注解的作用分别是:

  • @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制
  • @ComponentScan:扫描被@Component (@Repository,@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。
  • @Configuration:允许在 Spring 上下文中注册额外的 bean 或导入其他配置类

2.Spring Bean 相关

2.1@Autowired

自动导入对象到类中,被注入进的类同样要被 Spring 容器管理比如:Service 类注入到 Controller 类中。

@Service
public class UserService {......
}@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;......
}

2.2@Component,@Repository,@Service, @Controller

我们一般使用 @Autowired 注解让 Spring 容器帮我们自动装配 bean。要想把类标识成可用于 @Autowired 注解自动装配的 bean 的类,可以采用以下注解实现:

  • @Component:通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
  • @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
  • @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
  • @Controller : 对应 Spring MVC 控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。

2.3RestController

@RestController注解是@Controller@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直接填入 HTTP 响应体中,是 REST 风格的控制器。

单独使用 @Controller 不加 @ResponseBody的话一般是用在要返回一个视图的情况,这种情况属于比较传统的 Spring MVC 的应用,对应于前后端不分离的情况。@Controller +@ResponseBody 返回 JSON 或 XML 形式数据

2.4@Scope

声明 Spring Bean 的作用域,使用方法:

@Bean
@Scope("singleton")
public Person personSingleton() {return new Person();
}

四种常见的 Spring Bean 的作用域:

  • singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
  • prototype : 每次请求都会创建一个新的 bean 实例。
  • request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
  • session : 每一个 HTTP Session 会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效

2.5. @Configuration

一般用来声明配置类,可以使用 @Component注解替代,不过使用@Configuration注解声明配置类更加语义化。

@Configuration
public class AppConfig {@Beanpublic TransferService transferService() {return new TransferServiceImpl();}}

3. 处理常见的 HTTP 请求类型

5 种常见的请求类型:

  • GET:请求从服务器获取特定资源。举个例子:GET /users(获取所有学生)
  • POST:在服务器上创建一个新的资源。举个例子:POST /users(创建学生)
  • PUT:更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12(更新编号为 12 的学生)
  • DELETE:从服务器删除特定的资源。举个例子:DELETE /users/12(删除编号为 12 的学生)
  • PATCH:更新服务器上的资源(客户端提供更改的属性,可以看做作是部分更新),使用的比较少,这里就不举例子了

3.1. GET 请求

@GetMapping(“users”) 等价于@RequestMapping(value=“/users”,method=RequestMethod.GET)

@GetMapping("/users")
public ResponseEntity<List<User>> getAllUsers() {return userRepository.findAll();
}

3.2. POST 请求

@PostMapping("users")` 等价于`@RequestMapping(value="/users",method=RequestMethod.POST)

关于@RequestBody注解的使用,在下面的“前后端传值”这块会讲到。

@PostMapping("/users")
public ResponseEntity<User> createUser(@Valid @RequestBody UserCreateRequest userCreateRequest) {return userRepository.save(userCreateRequest);
}

3.3. PUT 请求

@PutMapping("/users/{userId}")` 等价于`@RequestMapping(value="/users/{userId}",method=RequestMethod.PUT)
@PutMapping("/users/{userId}")
public ResponseEntity<User> updateUser(@PathVariable(value = "userId") Long userId,@Valid @RequestBody UserUpdateRequest userUpdateRequest) {......
}

3.4. DELETE 请求

@DeleteMapping("/users/{userId}")`等价于`@RequestMapping(value="/users/{userId}",method=RequestMethod.DELETE)
@DeleteMapping("/users/{userId}")
public ResponseEntity deleteUser(@PathVariable(value = "userId") Long userId){......
}

3.5. PATCH 请求

一般实际项目中,我们都是 PUT 不够用了之后才用 PATCH 请求去更新数据。

  @PatchMapping("/profile")public ResponseEntity updateStudent(@RequestBody StudentUpdateRequest studentUpdateRequest) {studentRepository.updateDetail(studentUpdateRequest);return ResponseEntity.ok().build();}

4. 前后端传值

4.1. @PathVariable 和 @RequestParam

@PathVariable用于获取路径参数,@RequestParam用于获取查询参数。

举个简单的例子:

@GetMapping("/klasses/{klassId}/teachers")
public List<Teacher> getKlassRelatedTeachers(@PathVariable("klassId") Long klassId,@RequestParam(value = "type", required = false) String type ) {
...
}

如果我们请求的 url 是:/klasses/123456/teachers?type=web

那么我们服务获取到的数据就是:klassId=123456,type=web

4.2. @RequestBody

用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。

我用一个简单的例子来给演示一下基本使用!

我们有一个注册的接口:

@PostMapping("/sign-up")
public ResponseEntity signUp(@RequestBody @Valid UserRegisterRequest userRegisterRequest) {userService.save(userRegisterRequest);return ResponseEntity.ok().build();
}

UserRegisterRequest对象:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserRegisterRequest {@NotBlankprivate String userName;@NotBlankprivate String password;@NotBlankprivate String fullName;
}

我们发送 post 请求到这个接口,并且 body 携带 JSON 数据:

{ "userName": "coder", "fullName": "shuangkou", "password": "123456" }

这样我们的后端就可以直接把 json 格式的数据映射到我们的 UserRegisterRequest 类上。

需要注意的是:一个请求方法只可以有一个@RequestBody,但是可以有多个@RequestParam@PathVariable。 如果你的方法必须要用两个 @RequestBody来接受数据的话,大概率是你的数据库设计或者系统设计出问题了!

5. 读取配置信息

很多时候我们需要将一些常用的配置信息比如阿里云 oss、发送短信、微信认证的相关配置信息等等放到配置文件中。

5.1. @Value(常用)

5.2. @ConfigurationProperties(常用)

通过@ConfigurationProperties读取配置信息并与 bean 绑定。你可以像使用普通的 Spring bean 一样,将其注入到类中使用

5.3. @PropertySource(不常用)

@PropertySource读取指定 properties 文件

6.参数校验

校验的时候我们实际用的是 Hibernate Validator 框架。Hibernate Validator 是 Hibernate 团队最初的数据校验框架,Hibernate Validator 4.x 是 Bean Validation 1.0(JSR 303)的参考实现,Hibernate Validator 5.x 是 Bean Validation 1.1(JSR 349)的参考实现,目前最新版的 Hibernate Validator 6.x 是 Bean Validation 2.0(JSR 380)的参考实现。

SpringBoot 项目的 spring-boot-starter-web 依赖中已经有 hibernate-validator 包,不需要引用相关依赖。如下图所示(通过 idea 插件—Maven Helper 生成):

:更新版本的 spring-boot-starter-web 依赖中不再有 hibernate-validator 包(如 2.3.11.RELEASE),需要自己引入 spring-boot-starter-validation 依赖。

6.1. 一些常用的字段验证的注解

  • @NotEmpty 被注释的字符串的不能为 null 也不能为空
  • @NotBlank 被注释的字符串非 null,并且必须包含一个非空白字符
  • @Null 被注释的元素必须为 null
  • @NotNull 被注释的元素必须不为 null
  • @AssertTrue 被注释的元素必须为 true
  • @AssertFalse 被注释的元素必须为 false
  • @Pattern(regex=,flag=)被注释的元素必须符合指定的正则表达式
  • @Email 被注释的元素必须是 Email 格式。
  • @Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Size(max=, min=)被注释的元素的大小必须在指定的范围内
  • @Digits(integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Past被注释的元素必须是一个过去的日期
  • @Future 被注释的元素必须是一个将来的日期

6.2. 验证请求体(RequestBody)

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {@NotNull(message = "classId 不能为空")private String classId;@Size(max = 33)@NotNull(message = "name 不能为空")private String name;@Pattern(regexp = "((^Man$|^Woman$|^UGM$))", message = "sex 值不在可选范围")@NotNull(message = "sex 不能为空")private String sex;@Email(message = "email 格式不正确")@NotNull(message = "email 不能为空")private String email;}

我们在需要验证的参数上加上了@Valid注解,如果验证失败,它将抛出MethodArgumentNotValidException

6.3. 验证请求参数(Path Variables 和 Request Parameters)

一定一定不要忘记在类上加上 @Validated 注解了,这个参数可以告诉 Spring 去校验方法参数。

7. 全局处理 Controller 层异常

相关注解:

  1. @ControllerAdvice :注解定义全局异常处理类
  2. @ExceptionHandler :注解声明异常处理方法

8.事务 @Transactional

在要开启事务的方法上使用@Transactional注解即可!

@Transactional(rollbackFor = Exception.class)
public void save() {......
}

我们知道 Exception 分为运行时异常 RuntimeException 和非运行时异常。在@Transactional注解中如果不配置rollbackFor属性,那么事务只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事务在遇到非运行时异常时也回滚。

@Transactional 注解一般可以作用在或者方法上。

  • 作用于类:当把@Transactional 注解放在类上时,表示所有该类的 public 方法都配置相同的事务属性信息。
  • 作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。

9. json 数据处理

过滤 json 数据

@JsonIgnoreProperties 作用在类上用于过滤掉特定字段不返回或者不解析。

//生成json时将userRoles属性过滤
@JsonIgnoreProperties({"userRoles"})
public class User {private String userName;private String fullName;private String password;private List<UserRole> userRoles = new ArrayList<>();
}

@JsonIgnore一般用于类的属性上,作用和上面的@JsonIgnoreProperties 一样。

public class User {private String userName;private String fullName;private String password;//生成json时将userRoles属性过滤@JsonIgnoreprivate List<UserRole> userRoles = new ArrayList<>();
}

格式化 json 数据

@JsonFormat一般用来格式化 json 数据。

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone="GMT")
private Date date;

扁平化对象

@Getter
@Setter
@ToString
public class Account {private Location location;private PersonInfo personInfo;@Getter@Setter@ToStringpublic static class Location {private String provinceName;private String countyName;}@Getter@Setter@ToStringpublic static class PersonInfo {private String userName;private String fullName;}
}

未扁平化之前:

{"location": {"provinceName": "湖北","countyName": "武汉"},"personInfo": {"userName": "coder1234","fullName": "shaungkou"}
}

使用@JsonUnwrapped 扁平对象之后:

@Getter
@Setter
@ToString
public class Account {@JsonUnwrappedprivate Location location;@JsonUnwrappedprivate PersonInfo personInfo;......
}{"provinceName": "湖北","countyName": "武汉","userName": "coder1234","fullName": "shaungkou"
}

10.测试相关

@ActiveProfiles一般作用于测试类上, 用于声明生效的 Spring 配置文件。

@SpringBootTest(webEnvironment = RANDOM_PORT)
@ActiveProfiles("test")
@Slf4j
public abstract class TestBase {......
}

@Test声明一个方法为测试方法

@Transactional被声明的测试方法的数据会回滚,避免污染测试数据。

@WithMockUser Spring Security 提供的,用来模拟一个真实用户,并且可以赋予权限。

    @Test@Transactional@WithMockUser(username = "user-id-18163138155", authorities = "ROLE_TEACHER")void should_import_student_success() throws Exception {......}

相关文章:

SpringSpringBoot常用注解总结

Spring&SpringBoot常用注解总结 1.SpringBootApplication 这个注解是 Spring Boot 项目的基石&#xff0c;创建 SpringBoot 项目之后会默认在主类加上。 SpringBootApplication public class SpringSecurityJwtGuideApplication {public static void main(java.lang.Str…...

设计模式 创建型 原型模式(Prototype Pattern)与 常见技术框架应用 解析

原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;其核心思想在于通过复制现有的对象&#xff08;原型&#xff09;来创建新的对象&#xff0c;而非通过传统的构造函数或类实例化方式。这种方式在需要快速创建大量相似对象时尤为高效&#x…...

cnPuTTY 0.82.0.1—PuTTY Release 0.82中文版本简单说明~~

2024-11-27 官方发布PuTTY 0.82主要包含如下变化&#xff1a; 1.Unicode处理进行了重大重构&#xff0c;以允许使用系统默认配置的字符集/代码页之外的Unicode字符。仅部分实现&#xff0c;其他尚未完成。 2.Unicode版本进行更新&#xff1a;所有字符分析均已更…...

TypeScript 常用类型

文章目录 1. 类型注解2. 原始类型3. 数组类型4. 联合类型5. 类型别名6. 函数类型7. 对象类型8. 接口类型8.1 接口声明8.2 接口继承 9. 元组类型10. 类型断言11. 字面量类型12. 枚举类型12.1 数字枚举12.2 字符串枚举 13. any 类型14. typeof 运算符 1. 类型注解 前言&#xff1…...

综合能源建模:理论、方法与实践

一、引言 随着全球能源需求的持续增长以及对能源安全、环境保护和可持续性发展的日益关注&#xff0c;综合能源系统&#xff08;Integrated Energy System&#xff0c;IES&#xff09;作为一种能够整合多种能源资源、实现能源高效利用和协同优化的解决方案&#xff0c;正逐渐成…...

《摄影艺术创作》慕课期末答案

《摄影艺术创作》慕课期末考试答案 题数 100 人们常说&#xff0c;“百闻不如一见”、“一图胜千言”&#xff0c;这强调的是 的表现力。 A视觉形象 B文字语言 C音响元素 D有声语言 “绘画是加法&#xff0c;摄影是减法”&#xff0c;主要是指无论摄影和绘画&#xff0c;都要…...

MySQL实用SQL示例

创建数据库 CREATE DATABASE zq-cloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;创建表 CREATE TABLE regulatory_firm_category (category_id int NOT NULL AUTO_INCREMENT COMMENT 分类id&#xff0c;自增主键,parent_id int NOT NULL COMMENT 父级id,category_…...

MySQL日志

MySQL日志 文章目录 MySQL日志binlogredoundoredo vs undo binlog binlog日志也就是二进制日志&#xff0c;把对于数据库的写入操作以二进制的形式保存到磁盘中。binlog日志是mysql的逻辑日志&#xff0c;可以理解为记录的是sql日志&#xff0c;由mysql的服务层进行记录&#…...

双目的一些文章学习

文章1 PSMNet https://arxiv.org/pdf/1803.08669PSMNet文章博客PSMNet文章中牵涉到的一些知识&#xff0c;空洞卷积&#xff0c;SPPNet网络&#xff0c;计算视差时用soft argmin代替argmin文章中引入了空洞卷积和SPPNet网络来融合多尺度的信息&#xff0c;又引入3D卷积来增加模…...

国产文本编辑器EverEdit - 批量转码转换行符

1 批量转码&转换行符 1.1 应用场景 如果用户批量在Windows编辑文件&#xff0c;要上传到异构系统&#xff0c;如&#xff1a;Linux&#xff0c;则需要批量转换编码和换行符&#xff0c;此时可以使用EverEdit的批量转码功能。 1.2 使用方法 选择主菜单文档 -> 批量转码…...

NextCloud服务安装与配置教程

NextCloud服务安装与配置教程 什么是 NextCloud: Nextcloud 是一款开源的私有云存储和协作平台,允许用户在自己的服务器上托管数据并管理团队协作。它可以作为一个功能丰富、安全可靠的替代方案,与商业云服务(如 Google Drive、Dropbox)相比提供更多控制和隐私保护。简单来…...

查看 SSD能承载的每秒随机IO次数

查看 SSD能承载的每秒随机IO次数 通常给大家的一个建议就是对于数据库部署的机器&#xff0c;一定要采用SSD固态硬盘&#xff0c;而不要使用机械 硬盘&#xff0c;因为SSD固态硬盘最强大的地方&#xff0c;就是他的随机IO性能非常高。 其次&#xff0c;光是用SSD还不够&#x…...

C# 设计模式(结构型模式):享元模式

C# 设计模式&#xff08;结构型模式&#xff09;&#xff1a;享元模式 (Flyweight Pattern) 在软件开发中&#xff0c;尤其是在处理大量对象时&#xff0c;我们常常会面临内存和性能上的挑战。当多个对象具有相似的状态时&#xff0c;通常会占用大量的内存资源&#xff0c;从而…...

使用Python,networkx构造有向图及无向图以及图合并等api

使用Python&#xff0c;networkx构造有向图及无向图以及图合并等api 源码图的构造、节点及边的添加等有向图及无向图及多重图 参考 方法名方法作用subgraph(G, nbunch)返回包含nbunch节点的子图union(G, H[, rename])合并G和H图disjoint_union(G, H)合并G和H图cartesian_produc…...

【SOC 芯片设计 DFT 学习专栏 -- 测试向量生成 ATPG (Automatic Test Pattern Generation) 】

文章目录 OverviewATPG 的基本功能ATPG 的工作流程ATPG 应用场景示例示例 1&#xff1a;检测单个信号的 Stuck-at Fault示例 2&#xff1a;针对 Transition Fault 的 ATPG ATPG 工具与常用工具链ATPG 优化与挑战 Overview 本文主要介绍 DFT scan 中的 ATPG 功能。在 DFT (Desi…...

uniapp本地加载腾讯X5浏览器内核插件

概述 TbsX5webviewUTS插件封装腾讯x5webview离线内核加载模块&#xff0c;可以把uniapp的浏览器内核直接替换成Android X5 Webview(腾讯TBS)最新内核&#xff0c;提高交互体验和流畅度。 功能说明 下载SDK插件 1.集成x5内核后哪些页面会由x5内核渲染&#xff1f; 所有plus…...

树莓派之旅-在wsl-x86-64 上进行树莓派的交叉编译

前情提要&#xff1a; 想把自己花里胡哨的终端丢到树莓派上去&#xff0c;可是树莓派算力不够&#xff0c;编译时间过于漫长 交叉编译 定义网上有&#xff0c;懒得复制了&#xff0c;大概就是在本机电脑上编译目标平台的可执行文件 这里的目标平台是树莓派 使用 uname -m …...

JavaScript中Map与Object的区别

在JavaScript中&#xff0c;Map和Object是用于存储键值对数据的两种不同的数据结构&#xff08;Map是ES6新增的数据结构&#xff09;&#xff0c;它们在构造方式、键的类型以及原型继承等方面存在区别。 一、主要区别 1.构造方式 Map&#xff1a;Map只能通过构造函数new Map…...

基于嵌入式无人机UAV通信系统的实时最优资源分配算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于嵌入式无人机UAV通信系统的实时最优资源分配算法matlab仿真。具体参考文献&#xff1a; 考虑使用UAV作为中继辅助节点的设备到设备&#xff08;D2D&#xff09;无线信息和…...

计算机网络 (20)高速以太网

一、发展背景 随着计算机技术和网络应用的不断发展&#xff0c;传统的以太网速率已逐渐无法满足日益增长的带宽需求。因此&#xff0c;高速以太网应运而生&#xff0c;它以提高数据传输速率为主要目标&#xff0c;不断推动着以太网技术的发展。 二、技术特点 高速传输&#xff…...

element ui 组件 时间选择器出现转换问题的解决办法

在使用时间选择器添加数据是会出现转换失败问题 vue中代码为&#xff1a; 解决办法&#xff1a; 在el-date-picker中添加 format 和 value-format...

当知识图谱遇上文本智能处理,会擦出怎样的火花?

目前以理解人类语言为入口的认知智能成为了人工智能发展的突破点&#xff0c;而知识图谱则是迈向认知智能的关键要素。达观数据在2018AIIA人工智能开发者大会承办的语言认知智能与知识图谱公开课上&#xff0c;三位来自企业和学术领域的专家分别从不同角度讲述的知识图谱的应用…...

SpringBootWeb案例-1

文章目录 SpringBootWeb案例1. 准备工作1.1 需求&环境搭建1.1.1 需求说明1.1.2 环境搭建 1.2 开发规范 2. 部门管理2.1 查询部门2.1.1 原型和需求2.1.2 接口文档2.1.3 思路分析2.1.4 功能开发2.1.5 功能测试 2.2 前后端联调2.3 删除部门2.3.1 需求2.3.2 接口文档2.3.3 思路…...

在正则表达式中,\1 是用来引用第一个捕获组的内容的。捕获组是用括号 () 包裹的部分

在正则表达式中&#xff0c;\1 是用来引用第一个捕获组的内容的。捕获组是用括号 () 包裹的部分&#xff0c;它们会保存正则表达式匹配到的内容。在替换操作中&#xff0c;\1 就是对第一个捕获组内容的引用&#xff0c;表示你希望将捕获组中的内容放到替换文本中的某个位置。 …...

免费下载 | 2024年具身大模型关键技术与应用报告

这份报告的核心内容涉及具身智能的关键技术与应用&#xff0c;主要包括以下几个方面&#xff1a; 具身智能的定义与重要性&#xff1a; 具身智能是基于物理身体进行感知和行动的智能系统&#xff0c;通过与环境的交互获取信息、理解问题、做出决策并实现行动&#xff0c;产生智…...

[API测试] Karate 之独立运行方式

在 Karate 介绍与快速示例(API测试自动化、模拟、性能测试与UI自动化工具) 这一篇中介绍了如何在Maven项目中,如何结合JUnit 运行 Karate的API测试, 如果是专职的QA人员来测试, 对Java语言或者Maven完全不熟悉的话要怎么来运行 Karate的测试呢? 答案就是使用Karate的独立运…...

WeNet:面向生产的流式和非流式端到端语音识别工具包

这篇文章介绍了WeNet&#xff0c;一个面向生产的开源端到端&#xff08;E2E&#xff09;语音识别工具包。WeNet的主要特点和贡献如下&#xff1a; 统一流式和非流式识别&#xff1a;提出了一种名为U2的两阶段框架&#xff0c;能够在单一模型中同时支持流式和非流式语音识别&…...

《我在技术交流群算命》(二):QGraphicsItem怎么写自定义信号啊(QObject多继承顺序问题)

某位群友突然无征兆的抛出以下问题&#xff1a; QGraphicsItem怎么写自定义信号啊 看到这个问题的时候我是比较疑惑的&#xff0c;按鄙人对 Qt 的了解&#xff0c;自定义信号只需: 继承QObject类中加入Q_OBJECT宏声明一个信号并使用 但该群友毕竟也不是一个Qt新手&#xff0…...

实践深度学习:构建一个简单的图像分类器

引言 深度学习在图像识别领域取得了巨大的成功。本文将指导你如何使用深度学习框架来构建一个简单的图像分类器&#xff0c;我们将以Python和TensorFlow为例&#xff0c;展示从数据准备到模型训练的完整流程。 环境准备 在开始之前&#xff0c;请确保你的环境中安装了以下工…...

实践:事件循环

实践&#xff1a;事件循环 代码示例 console.log(1); setTimeout(() > console.log(2), 0); Promise.resolve(3).then(res > console.log(res)); console.log(4);上述的代码的输出结果是什么 1和4肯定优先输出&#xff0c;因为他们会立即方式堆栈的执行上下文中执行&am…...

基于Python的医院预约挂号与诊断系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

计算机网络基础

文章目录 名词含义1.应用层1.1网络应用原理1.1.1网络应用体系1.1.2进程通信1.1.3可供程序使用的运输服务1.1.4因特网的运输服务1.1.5应用层协议 1.2WEB和HTTP1.2.1HTTP概述1.2.2持续与非持续连接1.2.3报文格式 名词含义 ISP(Internet Service Provider&#xff0c;因特网服务提…...

Rabbitmq追问1

如果消费端代码异常&#xff0c;未手动确认&#xff0c;那么这个消息去哪里 2024-12-31 21:19:12 如果消费端代码发生异常&#xff0c;未手动确认&#xff08;ACK&#xff09;的情况下&#xff0c;消息的处理行为取决于消息队列的实现和配置&#xff0c;以下是基于 RabbitMQ …...

基于SpringBoot和OAuth2,实现通过Github授权登录应用

基于SpringBoot和OAuth2&#xff0c;实现通过Github授权登录应用 文章目录 基于SpringBoot和OAuth2&#xff0c;实现通过Github授权登录应用0. 引言1. 创建Github应用2. 创建SpringBoot测试项目2.1 初始化项目2.2 设置配置文件信息2.3 创建Controller层2.4 创建Html页面 3. 启动…...

python数据分析:使用pandas库读取和编辑Excel表

使用 Pandas&#xff0c;我们可以轻松地读取和写入Excel 文件&#xff0c;之前文章我们介绍了其他多种方法。 使用前确保已经安装pandas和 openpyxl库&#xff08;默认使用该库处理Excel文件&#xff09;。没有安装的可以使用pip命令安装&#xff1a; pip install pandas ope…...

SpringCloud源码分析-Lettue Redis

redis connection异步发送 底层是nio channel...

Linux(13)——网络概述

目录 一、TCP/IP 网络模型&#xff1a; 1、应用层&#xff08;Application&#xff09;&#xff1a; 2、传输层&#xff08;Transport&#xff09;&#xff1a; 3、互联网层&#xff08;Internet or network&#xff09;&#xff1a; 4、链路层&#xff08;Link&#xff0…...

PHP框架+gatewayworker实现在线1对1聊天--聊天界面布局+创建websocket连接(5)

文章目录 聊天界面布局html代码 创建websocket连接为什么要绑定&#xff1f; 聊天界面布局 在View/Index目录下创建index.html html代码 <div id"chat"><div id"nbar"><div class"pull-left">与牛德胜正在聊天...</div…...

Qos的详细解释

QoS&#xff08;Quality of Service&#xff09;&#xff0c;即服务质量&#xff0c;是一种用于网络管理的技术&#xff0c;旨在确保不同类型的数据流&#xff08;如语音、视频、文件传输等&#xff09;在网络中按优先级和要求得到适当的带宽、延迟、抖动和丢包率等服务&#x…...

未来20年在大语言模型相关研究方向--大语言模型的优化与改进

未来20年在大语言模型相关研究方向 模型性能优化 模型架构创新:研究新型的模型架构,如探索更高效的Transformer变体、融合递归神经网络(RNN)和卷积神经网络(CNN)的优点,以提高模型的性能、可扩展性和适应性,满足不同应用场景对模型效率和效果的要求。高效训练算法:开…...

【Vue】vue-router使用addRoute动态加载路由后刷新页面404

场景&#xff1a;动态加载路由&#xff0c;点击菜单路由跳转正常&#xff0c;但刷新页面报404 原因&#xff1a;使用404做异常路由捕获 刷新页面会导致路由丢失&#xff0c;重建路由时先加载了静态路由&#xff08;包含异常路由捕获404&#xff09;&#xff0c;此时动态路由还未…...

《计算机组成及汇编语言原理》阅读笔记:p177-p177

《计算机组成及汇编语言原理》学习第 13 天&#xff0c;p177-p177 总结&#xff0c;总计 1 页。 一、技术总结 1.real mode A programming model where the program has access to the entire capability of the machine, bypassing security and memory management. Useful…...

《从入门到精通:蓝桥杯编程大赛知识点全攻略》(一)-递归实现指数型枚举、递归实现排列型枚举

本篇博客将聚焦于通过递归来实现两种经典的枚举方法&#xff1a;指数型枚举和排列型枚举。这两种枚举方式在计算机科学和算法竞赛中都有广泛应用&#xff0c;无论是在解题中&#xff0c;还是在实际工作中都极具价值。 目录 前言 斐波那契数列递归 递归实现指数型枚举 算法思…...

游泳溺水识别数据集,对25729张图片进行YOLO,COCO JSON, VOC XML 格式的标注,溺水平均识别率在89.9%

游泳溺水识别数据集&#xff0c;对25729张图片进行YOLO&#xff0c;COCO JSON, VOC XML 格式的标注&#xff0c;溺水识别率在92&#xff05; 训练结果 数据集和标签 验证 游泳测试视频 根据测试的视频来获取检测结果&#xff1a; 游泳测试视频的置信度设置60% 检测结果如下&…...

coredns报错plugin/forward: no nameservers found

coredns报错plugin/forward: no nameservers found并且pod无法启动 出现该报错原因 是coredns获取不到宿主机配置的dns地址 查看宿主机是否有dns地址 resolvectl status 我这里是配置正确后&#xff0c;如果没配置过以下是不会显示出dns地址的 给宿主机增加静态dns地址之后将…...

【欢迎讨论方案一的可行性】SpringBoot集成netty,在handler中调用@Component注解的类

在Netty中处理请求时&#xff0c;调用一个由Spring Boot管理的Component注解的类 在Netty中处理请求时&#xff0c;调用一个由Spring Boot管理的Component注解的类&#xff0c;需要确保Spring上下文能够正确地注入这些组件。 方法一&#xff1a;使用Autowired注入Spring组件 …...

如何在LaTeX文档中为脚注添加横线,并调整横线的长度和厚度。

当然&#xff0c;以下是一个简单的例子&#xff0c;展示了如何在LaTeX文档中使用scrextend宏包来为脚注添加横线&#xff0c;并调整横线的长度和厚度。 ### 步骤1&#xff1a;导入scrextend宏包 在你的LaTeX文档的导言区&#xff08;\begin{document}之前的部分&#xff09;&…...

【C语言】可移植性陷阱与缺陷(三):整数的大小

目录 一、概述 二、整数类型的大小差异 三、 跨平台代码中的整数大小问题 3.1. 内存使用 3.2. 性能问题 3.3. 数据截断 3.4. 序列化/反序列化 四、解决整数大小问题的策略 4.1. 使用固定大小的整数类型 4.2. 条件编译 4.3. 避免假设 4.4. 文档化 五、总结 在C语言编…...

nginx基础篇 - 控制命令详解:启动/停止、配置文件检查/重新加载、nginx平滑升级

文章目录 1. nginx命令2 使用Unix工具发送信号3 常用操作3.1 检查配置文件3.2 启动nginx3.3 停止nginx3.4 重启nginx 4 平滑升级nginx 1. nginx命令 执行nginx -h命令可以看到所有的nginx命令及其解释&#xff1a; nginx命令使用方法: nginx [-?hvVtTq] [-s signal] [-p p…...

汽车驾校转型做无人机执照培训详解, “驾” 起无人机培训新未来?

汽车驾校转型做无人机执照培训&#xff0c;这一趋势确实在一定程度上预示着无人机培训领域的新未来。以下是对这一转型的详细分析&#xff1a; 一、转型背景 1. 无人机行业快速发展&#xff1a; 无人机技术在农业、影视、安防、物流等多个领域的应用不断拓展&#xff0c;市场…...