SpringBoot碎片化知识

参考资料:

  • java官方词典:https://docs.oracle.com/javase/tutorial/information/glossary.html#F
  • 苍穹外卖:https://www.bilibili.com/video/BV1TP411v7v6

JavaBean规范

JavaBean规范是一种类的规范,其要求符合下列条件:

  • 若干private实例域
  • 通过public方法来读写实例域,其中的读写方法符合以下命名规范
//读方法;
public T getXyz(){}
//写方法;
public T setXyz(){}
  • boolean类型是一个例外,其读方法一般命名为public boolean isXyz(){}

**属性:**一组对应的读方法(getter)和写方法(writter)称为属性(property)。因此,只有getter的属性被称为只读属性read-only;只有setter的属性被称为只写属性write-only

Java中的域(field),是类的一个数据成员,主要用来存储对象的状态。通常叫做“类成员”“类成员变量”“数据成员”。

静态域

声明为static的域。静态字段不属于任何对象,只属于类,必须使用类名.静态字段名进行访问,而对象名.静态字段名是无法访问到静态字段的。静态字段存储的数据在内存中只有一份。

注解

Java注解

参考:https://blog.csdn.net/weixin_44299027/article/details/105918873
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。
定义注解时,会需要一些元注解(meta annotation,可以用来修饰注解),如@Target@Retention,其中Target注解目标,Retention注解生命周期

  • @Target用来定义注解修饰的对象范围(例如是一个方法或者一个域)。
  • @Retention用来定义该注解在哪一个级别可用,在源代码中(SOURCE)类文件中(CLASS)或者运行时(RUNTIME)

在注解中,一般都会包含一些元素以表示某些值。当分析处理注解时,程序或工具可以利用这些值。注解的元素看起来就像接口的方法,唯一的区别是你可以为其指定默认值。
没有元素的注解称为标记注解(marker annotation),例如我在文章尾部自定义的注解。
Java目前只内置了三种标准注解(下一篇文章介绍),以及四种元注解。元注解专职负责注解其他的注解。
**@Retention**注解中,有且仅有一个属性,也就是类型为RetentionPolicyvalue,而RetentionPolicy类型又是一个枚举类型,有三种取值:

  1. RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成 .class 文件的时候,被其标注的注解被遗弃;
  2. RetentionPolicy.CLASS:注解被保留到class文件中,但jvm加载 .class 文件时候,被其标注的注解会被遗弃,这是默认的生命周期;
  3. RetentionPolicy.RUNTIME:注解不仅被保留到 .class 文件中,jvm 加载 .class 文件之后,被其标注的注解仍然存在,所以这个时候才可能通过反射机制读取注解的信息,而前两个生命周期中,通过反射机制读取不到注解信息的

上述3个生命周期分别对应于:Java源文件(.java文件) —> .class文件 —> 内存中的字节码。
生命周期长度RUNTIME>CLASS>SOURCE。后者能作用到的地方前者一定能作用到,反之不一定。
使用场景:

  1. 一般如果需要在运行时去动态获取注解信息,那只能用生命周期最长的 RUNTIME 标注了,比如 @Deprecated 就是使用 RetentionPolicy.RUNTIME 来标注的;比如以下源码中我们常用到的注解:@Transient、@Deprecated、@Documented、@Inherited、@Retention、@Target … 等等很多。
  2. 如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;这个在源码中没有找到,但是参考其他博客写的 ButterKnife 就是被 RetentionPolicy.CLASS 标注的。
  3. 如果只是做一些检查性的操作,比如源码中的 @Override@SuppressWarnings@Native@Generated 等就是被 RetentionPolicy.SOURCE 标注的。

@Mapper注解

@Mapper注解通常用于标识一个 Java 接口或类是 MyBatis 的映射器(Mapper)。MyBatis 是一个持久层框架,用于将数据库操作与 Java 代码进行映射,简化了数据库访问的过程。
在Mybatis中,可以自动扫描并创建实现映射器接口的代理对象,相当于可以自动把从数据库读出的数据装入Java对象之中,即实现数据库操作与Java代码的映射。通常与@Select注解搭配使用。
例如:

@Mapper
public interface EmployeeMapper {
    /**
     * 根据用户名查询员工
     * @param username
     * @return
     */
    @Select("select * from employee where username = #{username}")
    Employee getByUsername(String username);
}

在上面的代码中,Emploee类之中有多个属性,每个属性都对应着数据库表中的一个键。在通过Select命令读取之后,Mybatis会自动将读出的数据映射到一个Emploee对象并将其返回。
通常,MyBatis 在处理数据库列名与 Java 对象属性之间的映射时,遵循一种命名规则,即数据库列名使用下划线分隔单词,而对应的** Java 对象属性使用驼峰命名法**。例如,数据库列名 first_name 在 Java 对象中对应的属性可能是 firstName

@ConfigurationProperties注解

@ConfigurationProperties配置属性类,是Spring Framework中的一个注解,能够读取配置文件中的配置项,并将其封装到Java Bean上。以下是例子

@Component
@ConfigurationProperties(prefix = "sky.jwt")
@Data
public class JwtProperties {
    /**
     * 管理端员工生成jwt令牌相关配置
     */
    private String adminSecretKey;
    private long adminTtl;
    private String adminTokenName;
}
sky:
  jwt:
    # 设置jwt签名加密时使用的秘钥
    admin-secret-key: itcast
    # 设置jwt过期时间
    admin-ttl: 7200000
    # 设置前端传递过来的令牌名称
    admin-token-name: token

上述的(prefix="sky.jwt")指的是在application.yml文件中找到sky.jwt项目,而后该类会自动将sky.jwt下的配置文件根据命名规则(上面写了)绑定到类的属性之中。
类中的属性往往使用的是驼峰命名法,而配置文件中则使用"-"号分隔,springboot能够自动识别。

@Component注解

@Component注解标识的类在应用程序启动时会被实例化,并由Spring容器进行管理。它是一种通用的注解,可以用于标识任何类,使其成为Spring容器中可被自动扫描和实例化的Bean。可以通过Spring的依赖注入(DI)机制来使用和管理这些组件。常与**@AutoWired**注解一起使用,使用@Component将类注册为Spring容器中的Bean,然后,在其他需要使用这个Bean的地方,使用@Autowired来自动注入这个Bean。
其有三个衍生注解:
@Controller标记控制器
@Service标记业务层
@Reposity标记数据访问层组件

Lombok库 注解

@Data注解

@Data注解是Lombok库提供的一个注解,其可以自动为类生成常用方法,包括getter、setter、equals、hashCode和toString等

@Getter@Setter注解

这两个注解分别用于自动生成getter和setter方法。如果只需要自动生成getter或setter方法,而不是全部,可以使用这两个注解。

@ToString注解

自动生成toString方法,用于返回对象的字符串表示形式。

@EqualsAndHashCode注解

自动生成equals和hashCode方法,用于比较两个对象是否相等以及生成对象的哈希码。

@NoArgsConstructor@AllArgsConstructor注解

这两个注解分别用于自动生成无参构造函数和全参构造函数。

@Slf4j@Log4j@Log4j2 注解

这些注解用于自动生成日志对象,如SLF4J或Log4j的日志实例,方便在类中使用日志功能。

@Builder注解

@Builder也是Lombok库提供的一个功能,允许使用链式调用的方式构建对象。例如

@Builder  
@Getter  
public class Person {  
    private String name;  
    private int age;  
    private String gender;  
}
Person person = Person.builder()  
                .name("Alice")  
                .age(30)  
                .gender("Female")  
                .build();

@Bean注解

@Bean注解主要用于将一个方法标记为Spring容器中的一个Bean,常与@Configuration注解搭配使用。

@Configuration注解

@Configuration注解是一个类注解,用于定义配置类,可用于替换xml配置文件。当一个类被@Configuration注解标注时,它就被视为Spring的一个配置类。被@Configuration注解标注的类能够自动注册到IOC容器,并进行实例化。
@Configuration标注的类内部,通常包含一个或多个被@Bean注解的方法。这些被@Bean注解的方法会被Spring框架进行扫描,并用于构建bean定义。这样,我们就能够利用这些方法来定义和注册bean到Spring容器中,使得这些bean可以被其他程序组件所引用和使用。

@Api相关注解

注解说明
@Api用在类上,例如Controller,表示对类的说明
@ApiModel用在类上,例如entity、DTO、VO
@ApiModelProperty用在属性上,描述属性信息
@ApiOperation用在方法上,例如Controller的方法,说明方法的用途、作用

@ExceptionHandler注解

@ExceptionHandler注解是SpringFramework中的一个注解,用于处理控制器中抛出的异常。当有方法使用@ExceptionHandler租界,且该方法匹配到了某个类型的异常时,Spring将会自动调用这个方法来处理控制器中抛出的相应异常。其提供了一种集中的处理异常的方式,使得代码更易维护。
@ExceptionHandler注解可以应用于类级别或方法级别。当应用于类级别时,该类中的所有方法都可以处理该控制器中抛出的异常。当应用于方法级别时,只有该方法可以处理特定的异常。

@JsonFormat注解

@JsonFormat注解主要用于指定Java对象序列化成JSON字符串时的格式。一般用于时间日期上,帮助开发者进行格式化输出。
使用@JsonFormat注解时,需要指定一些属性,例如:

  • pattern:日期、时间格式的模式,比如"yyyy-MM-dd HH:mm:ss"。
  • shape:日期、时间格式的类型,可以是STRING、NUMBER、NUMBER_INT、NUMBER_FLOAT、OBJECT等。
  • locale:使用的Locale。
  • timezone:时区。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;

结果的区别显而易见
image.png

前后端交互注解

@RequestParam注解

@PathVariable是 Spring Framework 中的一个注解,主要用于从 URI 模板变量中获取值,并将其绑定到控制器方法的参数上。其方法是Query方法。只要前台form表单中name属性和controller中参数写得一样就可以省略@requestParam。自动注入

@PathVariable注解

@PathVariable注解主要用于从URL中直接获取值,并将其绑定到控制器方法的参数上。例子如下:

@RestController  
public class UserController {  
    @GetMapping("/users/{id}")  
    public String getUserById(@PathVariable("id") Long id) {  
        // 假设这里有一些逻辑来根据ID获取用户信息  
        return "User with ID: " + id;  
    }  
}

当请求/user/123时,@PathVariable会捕获123,然后将其绑定到参数id上。其参数("id")是可选的,如果不写则会默认绑定到使用方法的参数

@RequestBody注解

@RequestBody是Spring框架中的一个注解,主要用于将http请求的body映射到一个java对象上。当你发送一个 POST 或 PUT 请求,并且请求体包含 JSON、XML 或其他格式的数据时,@RequestBody可以帮助你自动解析这些数据到一个 Java 对象中。

@PostMapping("/user")  
public User createUser(@RequestBody User user) {  
    // 在这里,user 对象已经被自动填充了请求体中的数据  
    // 你可以进行其他操作,比如保存到数据库等  
}  
public class User {
    private String name;
    private int age;
}
{  
  "name": "John Doe",  
  "age": 30  
}

@Mapper注解

@Mapper注解是Mybatis框架中定义的一个描述数据层(DAO层)接口的注解。当在接口类上添加@Mapper注解后,程序运行时会自动创建接口的实现类对象,并交给Spring IOC进行管理。

Mapper

mapper通常用来指代数据映射器或对象映射器。对象映射器是一种用于在不同数据表示之间进行映射的工具。在数据库开发中,这通常用于将数据库表中的数据映射到应用程序中的对象,或者将应用程序中的对象映射到数据库表中的数据。

不同的POJO

名称说明
Entity实体,通常和数据库中的表对应
DTO数据传输对象,通常用于程序中各层之间传递数据
VO视图对象,为前端展示数据提供的对象
POJO普通Java对象,只有属性和对应的getter和setter

JWT登录

登录流程如下:
image.png

HandlerInterceptor接口

HandlerInterceptor接口是Spring MVC框架中的一个接口,主要用于在处理器处理请求前进行一些预处理和后处理操作。其提供了三个方法:

  1. preHandle:这是请求预处理的方法。当请求到达控制器之前,这个方法会被调用。它返回一个布尔值,如果返回true,则请求会继续流转,传递给下一个拦截器或目标方法;如果返回false,则请求处理流程会终止,不再调用后续的拦截器或处理器,而是直接进行response响应。
  2. postHandle:这个方法会在控制器方法调用之后,且解析视图之前执行。此时,模型数据已经填充完毕,但视图还没有渲染。如果有需要对请求域中的模型和视图进行进一步修改的操作,可以在这个方法中进行。
  3. afterCompletion:这是整个请求处理完毕后的回调方法,即在视图渲染结束之后执行。无论之前是否有异常抛出,这个方法都会被调用。因此,这个方法非常适合用于资源清理、记录日志信息等工作。

前后端数据交互格式

Query格式

Query格式通常使用URL的参数进行传递,其是一种键值对的格式,其使用**?开头,多个键值对之间使用&进行分割,键和值之间使用=**进行连接。例如http://example.com/search?name=John&age=30。在这个例子中,name=Johnage=30就是使用Query格式传递的参数。使用Query格式传入Controller层不需要进行@RequestBody进行映射,JSON是需要的。Query格式只需要前后端参数名一样就可以。

JSON格式

JSON格式则是一种轻量级的通用数据交换格式,其也是一种键值对形式表示数据,但是键和值都必须使用双引号括起来,且整个JSON对象必须使用大括号括起来,例如

{  
  "name": "John",  
  "age": 30  
}

MyBatis

PageHelper插件

GET方法和POST方法和PUT方法

参考:https://cloud.tencent.com/developer/news/39873
GET方法和POST方法都是HTTP协议中用于发送请求到服务器的方法。其用途不同
GET方法主要用于请求数据。当使用GET方法时,请求的数据会跟在URL后以字符串形式发出,这意味着GET请求的数据是可见的,且URL有长度限制。
使用PUT时,必须明确知道要操作的对象,如果对象不存在,创建对象;如果对象存在,则全部替换目标对象。同样POST既可以创建对象,也可以修改对象。
但用POST创建对象时,之前并不知道要操作的对象,由HTTP服务器为新创建的对象生成一个唯一的URI;使用POST修改已存在的对象时,一般只是修改目标对象的部分内容。

数据库

主键:一张表中,可以用于唯一标识一条记录的字段组。给一个主键的值,就能找到一条确定的记录
外键:外键是另一组表的主键。外键可以对两个表进行链接,可以用于建立表和表的关系
主键有且只有一个,而外键可以有多个

配置文件

application.yml文件是整个springboot项目的主配置文件,

控制器类

控制器(Controller)类是Spring MVC框架的重要参与者。
主要工作:处理HTTP请求。
控制器类使用@Controler注解进行修饰
当一个类被注解为@Controller时,Spring会将其视为一个处理HTTP请求的组件,并且会扫描其中的方法,将他们与特定的URL路径进行关联。在@Controller注解下,其@Target的参数是TYPE,也就是说其只能作用在类、接口之上。

@RestController注释

RestController注释实际上就是@Resposebody+@Controller
其主要作用是将控制器中方法的返回值直接序列化为JSON或其他格式的数据,作为HTTP响应体返回到客户端,而不是渲染为视图页面。

@RequestMapping注解 及其简化注解

@RequestMapping是 Spring MVC 的注解,它用于映射 web 请求(如 HTTP GET、POST、PUT、DELETE 请求)到特定的处理器函数或方法上

基本用法

你可以将@RequestMapping注解添加到类或者方法上。当添加到上时,它表示该类中的所有方法都会有一个共同的路径前缀。当添加到方法上时,它表示该方法会处理具有特定路径的请求

添加到类上

@Controller  
@RequestMapping("/users")  
public class UserController {  
  
    @GetMapping("/{id}")  
    public String getUser(@PathVariable Long id, Model model) {  
        // 获取用户信息,并添加到模型中  
        User user = userService.getUserById(id);  
        model.addAttribute("user", user);  
        return "userDetails";  
    }  
  
    @PostMapping("/create")  
    public String createUser(@ModelAttribute User user) {  
        // 创建新用户  
        userService.createUser(user);  
        return "redirect:/users"; // 重定向到用户列表页面  
    }  
}

在这个例子中,@RequestMapping("/users")添加到 UserController 类上,意味着该控制器中的所有方法都会有一个 /users 的路径前缀。因此,getUser 方法会处理/users/{id} 的 GET 请求,而 createUser 方法会处理 /users/create 的 POST 请求。

添加到方法上

@Controller  
public class HomeController {  
  
    @RequestMapping(value = "/", method = RequestMethod.GET)  
    public String home() {  
        return "home";  
    }  
  
    @RequestMapping(value = "/about", method = RequestMethod.GET)  
    public String about() {  
        return "about";  
    }  
}

home方法处理根目录/的GET请求,而about方法处理目录/about的GET请求

属性

@RequestMapping 注解有几个属性可以配置:

  • value:指定请求映射的路径。
  • method:指定请求映射的 HTTP 方法(如 RequestMethod.GET、RequestMethod.POST 等)。
  • consumes:指定处理请求的媒体类型(如 application/json)。
  • produces:指定响应的媒体类型。
  • params:指定请求中必须包含的参数。
  • headers:指定请求中必须包含的头部信息。

简化形式注解

  • @GetMapping:等价于 @RequestMapping(method = RequestMethod.GET)。
  • @PostMapping:等价于 @RequestMapping(method = RequestMethod.POST)。
  • @PutMapping:等价于 @RequestMapping(method = RequestMethod.PUT)。
  • @DeleteMapping:等价于 @RequestMapping(method = RequestMethod.DELETE)。
  • @PatchMapping:等价于 @RequestMapping(method = RequestMethod.PATCH)。

Spring分层

DAO层

DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。

Service层:

Service层叫服务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。

Controler层:

Controler负责请求转发,接受页面过来的参数传给Service处理,接到返回值,再传给页面。

总结:

DAO面向表,Service面向业务。后端开发时先数据库设计出所有表,然后对每一张表设计出DAO层,然后根据具体的业务逻辑进一步封装DAO层成一个Service层,对外提供成一个服务。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跟着教程使用腾讯云服务器一步步搭建网站教程,收藏级

使用腾讯云服务器搭建网站全流程,包括轻量应用服务器和云服务器CVM建站教程,轻量可以使用应用镜像一键建站,云服务器CVM可以通过安装宝塔面板的方式来搭建网站,腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程,…

【vue】v-model.lazy等(非实时渲染)

v-model&#xff1a;实时渲染v-model.lazy&#xff1a;失去焦点/按回车后&#xff0c;才渲染v-model.number&#xff1a;值转换为数字v-model.trim&#xff1a;去除首尾空格 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

「JavaEE」初识进程

初识进程 &#x1f349;进程&#x1f34c;操作系统的进程管理 &#x1f349;PCB 重要属性&#x1f34c;进程的身份标识&#x1f34c;内存指针&#x1f34c;文件描述符表&#x1f34c;进程的状态&#x1f34c;优先级&#x1f34c;记账信息&#x1f34c;上下文 &#x1f349;内存…

LongAdder和AtomicLong的对比实验

LongAdder 的核心思想是热点分离&#xff0c;与 ConcurrentHashMap 的设计思想类似&#xff1a;将value值分离成一个数组&#xff0c;当多线程访问时&#xff0c;通过Hash算法将线程映射到数组的一个元素进行操作&#xff1b;而获取最终的value结果时&#xff0c;则将数组的元素…

C++ 之 【类与对象】 从入门到精通一条龙服务 进阶篇(类的6个默认成员函数,构造,析构。。。)

以后把闹钟换成唢呐&#xff0c;醒了就起床&#xff0c;不醒就上天堂 一、类的6个默认成员函数 二、构造函数 1.概念 2.特性 三、析构函数 1.概念 2.特性 四、拷贝构造函数 1.概念 2.特征 五、赋值运算符重载 1.运算符重载 2.赋值运算符重载 3.前置和后置重载 六…

[大模型]Qwen1.5-7B-Chat FastApi 部署调用

Qwen1.5-7B-Chat FastApi 部署调用 环境准备 在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8&#xff08;11.3 版本以上的都可以&#xff09;。 接下来打开刚刚租用服务器的 Jupyt…

pom.xml显示灰色并被划线

在使用 IDEA 进行开发的过程中&#xff0c;有时候会遇到 pom.xml 显示灰色并被划线的情况&#xff0c;如下图&#xff1a; 这一般是因为该文件被 Maven 忽略导致的&#xff0c;可以进行如下操作恢复&#xff1a; 设置保存后&#xff0c;可以看到 pom.xml 恢复了正常&#xff1a…

使用 Java 原生或 Hutool 工具包编写非对称加解密的工具类

1、什么是非对称加密 使用一对&#xff08;2个&#xff09;密钥&#xff1a;一个用于加密信息&#xff0c;另一个则用于解密信息。有“公钥&#xff08;Public Key&#xff09;”和“私钥&#xff08;Private Key&#xff09;”之分。 非对称加密的“公钥”和“私钥”是成对出现…

Java 中文官方教程 2022 版(四十九)

原文&#xff1a;docs.oracle.com/javase/tutorial/reallybigindex.html JAXB 示例 原文&#xff1a;docs.oracle.com/javase/tutorial/jaxb/intro/examples.html 以下部分描述如何使用包含在 JAXB RI 捆绑包中的示例应用程序。JAXB RI 捆绑包可从jaxb.java.net获取。下载并安装…

基于OptiTrack跟踪系统和Turtlebot机器人的视觉SLAM定位评估

本文旨在介绍使用OptiTrack光学跟踪系统和Turtlebot机器人进行视觉SLAM定位实验的详细流程&#xff0c;包括实验平台搭建过程、数据处理过程以及SLAM估计评估方法。由于涉及知识较多&#xff0c;部分内容只给出了相关参考博文链接。 1 实验平台搭建 实验平台包括OptiTrack光学…

使用 Meltano 将数据从 Snowflake 导入到 Elasticsearch:开发者之旅

作者&#xff1a;来自 Elastic Dmitrii Burlutskii 在 Elastic 的搜索团队中&#xff0c;我们一直在探索不同的 ETL 工具以及如何利用它们将数据传输到 Elasticsearch&#xff0c;并在传输的数据上实现 AI 助力搜索。今天&#xff0c;我想与大家分享我们与 Meltano 生态系统以及…

Python项目1 外星人入侵_记分

在本章中&#xff0c;我们将结束游戏《外星人入侵》的开发。我们将添加一个Play按钮&#xff0c;用于根据需要启动游戏以及在游戏结束后重启游戏。我们还将修改这个游戏&#xff0c;使其在玩 家的等级提高时加快节奏&#xff0c;并实现一个记分系统。阅读本章后&#xff0c;你将…

2024年【山东省安全员C证】考试资料及山东省安全员C证考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 山东省安全员C证考试资料考前必练&#xff01;安全生产模拟考试一点通每个月更新山东省安全员C证考试试题题目及答案&#xff01;多做几遍&#xff0c;其实通过山东省安全员C证作业模拟考试很简单。 1、【多选题】.设…

【计算机毕业设计】人事管理系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

二叉搜索树--搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m * n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,…

Python之旅(一)——常量、变量、动态类型

文章目录 Python背景知识Python用途Python的优缺点Python前景&#xff08;钱景&#xff09; 常量和表达式变量与类型变量的定义变量命名的规则变量的使用变量的类型整数 int浮点数 float字符串布尔其他(暂不介绍&#xff09; 动态类型 标黄部分是和C语言不同的部分Python背景知…

在mysql中如何更新数据呢?

如何更新一条数据&#xff1f; 在 MySQL 中&#xff0c;更新一条数据可以使用 UPDATE 语句。以下是更新一条数据的基本语法&#xff1a; UPDATE table_name SET column1 value1, column2 value2,... WHERE condition;其中&#xff1a; table_name&#xff1a;要更新的表的…

Git以及Gitlab的快速使用文档

优质博文&#xff1a;IT-BLOG-CN 安装git 【1】Windows为例&#xff0c;去百度下载安装包。或者去官网下载。安装过秳返里略过&#xff0c;一直下一步即可。丌要忉记设置环境发量。 【2】打开cmd&#xff0c;输入git –version正确输出版本后则git安装成功。 配置ssh Git和s…

测试接口时出现HttpMessageNotReadableException: Required request body is missing

问题 测试接口时出现org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing异常 原因 发送请求时没有传参数 解决办法 第一种方式: 传个参数 第二种方式&#xff1a;给个空的JSON

常见的垃圾回收器(下)

文章目录 G1ShenandoahZGC 常见垃圾回收期&#xff08;上&#xff09; G1 参数1&#xff1a; -XX:UseG1GC 打开G1的开关&#xff0c;JDK9之后默认不需要打开 参数2&#xff1a;-XX:MaxGCPauseMillis毫秒值 最大暂停的时间 回收年代和算法 ● 年轻代老年代 ● 复制算法 优点…