一、== 和 equals() 的区别
1. == 运算符
== 运算符用于比较:
- 基本数据类型 (Primitive Types):比较的是值。
- 引用类型 (Reference Types):比较的是内存地址,即是否指向同一个对象。
2025/12/2大约 3 分钟
== 和 equals() 的区别== 运算符== 运算符用于比较:
配置类就是用来创建和管理 Bean 的类。,提前配置好一些 Bean,方便在应用中使用。直接@Autowired 注入即可。
在 Spring Boot 中,相当于以前的 XML 配置文件。
@Bean 注册 Bean。序列化(Serialization):将Java对象转换为字节序列的过程,以便可以将对象保存到文件、数据库或通过网络传输。
简单理解:把内存中的对象变成可以存储或传输的数据格式。
Java对象 → 字节流 (序列化)
Map 是 键值对 key–value 的映射结构。
特点:
简单例子:
Map<String, Integer> map = new HashMap<>();
map.put(key, value) // 添加或覆盖
map.get(key) // 获取 value
map.containsKey(key) // 是否存在 key
map.remove(key) // 删除
map.size() // 大小
map.isEmpty() // 是否为空
本笔记将从 可变性、线程安全 和 性能 三个方面来阐述这三者之间的主要区别。
| 特性 | String | StringBuilder | StringBuffer |
|---|---|---|---|
| 可变性 | 不可变 | 可变 | 可变 |
| 线程安全 | 是 (因为不可变) | 否 (非线程安全) | 是 |
| 性能 | 较低 | 最高 | 中等 |
| 适用场景 | 少量字符串操作 | 单线程大量操作 | 多线程大量操作 |
传递的是X的副本。将X的副本值传给函数。
public static void change(int x) {
x = 100; // 修改的是 x 的副本
}
public static void main(String[] args) {
int a = 10;
change(a);
System.out.println(a); // 仍然是 10
}
数组是 固定长度、连续内存存储、相同数据类型 的数据结构。
特点:
随机访问 O(1)(可以通过 index 直接访问)
插入/删除代价高 O(n)(因为要移动元素)
适合读多写少的场景
//初始化
int[] arr;
int[] arr = {1,2,3};
int[] arr = new int[3];
//遍历
for(int i = 0;i<arr.length;i++){};
for(int a: arr){};
| 注解 | 作用位置 | 主要用途 | 数据来源 |
|---|---|---|---|
@PathVariable |
方法参数 | 获取 URL 路径中的参数 | URL 路径 |
@RequestParam |
方法参数 | 获取 URL 查询参数 | URL ? 后面 |
@RequestBody |
方法参数 | 获取请求体(如 JSON) | 请求体 |
@RequestHeader |
方法参数 | 获取请求头信息 | HTTP Header |
@CookieValue |
方法参数 | 获取 Cookie 值 | Cookie |
@ModelAttribute |
方法参数 | 绑定表单数据 | 请求参数/体 |
Knife4j是一款集Swagger 2及OpenAPI 3为一体的API文档增强工具,在Spring Boot 3中,由于Spring Boot 3仅支持OpenAPI 3规范,并且要求JDK版本至少为17,因此配置方式与旧版本有所不同。
| 注解用途 | Spring Boot 2.x (Swagger 2 注解) | Spring Boot 3.x (OpenAPI 3 注解) | 说明 |
|---|---|---|---|
| 描述Controller类 | @Api(tags = "用户接口") |
@Tag(name = "用户接口") |
用于对接口进行分组。注意:OpenAPI 3 的 @Tag 不能替换 Swagger 2 的 @Api,因为它们作用不同。 |
| 描述接口方法 | @ApiOperation("获取用户") |
@Operation(summary = "获取用户", description = "...") |
描述接口的具体信息。 |
| 描述响应 | @ApiResponse(code = 200, message = "成功") |
@ApiResponse(responseCode = "200", description = "成功") |
注意属性名从 code 变为了 responseCode。 |
| 描述请求参数 | @ApiParam("用户ID") |
@Parameter(description = "用户ID") |
用于描述 @RequestParam, @PathVariable 等参数。 |
| 描述模型(实体类) | @ApiModel("用户实体") |
@Schema(description = "用户实体") |
在类上使用。 |
| 描述模型属性 | @ApiModelProperty("用户名") |
@Schema(description = "用户名") |
<!-- 数据库相关-->
<!-- mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus}</version>
</dependency>
<!-- Druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid}</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>${mysql-connector-j}</version>
</dependency>
<!-- Lombok (可选,简化代码) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombook}</version>
</dependency>
<!-- properties属性加入版本信息-->
<properties>
<lombook>1.18.36</lombook>
<mybatis-plus>3.5.5</mybatis-plus>
<druid>1.2.19</druid>
<mysql-connector-j>8.0.33</mysql-connector-j>
</properties>