SpringBoot碎片化知识

news2024/11/24 17:43:09

参考资料:

  • 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层,对外提供成一个服务。

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

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

相关文章

用Python生成纯色图片的方法

第一步 导入PIL库(事先安装好) 这一步如果PIL搜索不到,可以搜索【pillow】 第二步 设置图片的尺寸(宽度,高度)和颜色 第三步 保存图片为xx格式(png或者jpg) 比如生成一张红色&am…

【数据库】GROUP BY 详解、示例、注意事项

一、基本介绍 GROUP BY 语句在 SQL 中用于将来自数据库表的记录分组,以便可以对每个组执行聚合函数(如 COUNT(), MAX(), MIN(), SUM(), AVG() 等)。使用 GROUP BY 时,数据库会根据一个或多个列的值将结果集分为多个分组&#xff…

在windows中anaconda中安装fasttext (whl 文件安装)

Anaconda安装第三方包(whl文件) windows 安装fasttext 一直不成功,python 版本3.8 网上教程都是 https://www.lfd.uci.edu/~gohlke/pythonlibs/#fasttext 下载然后安装,但是这个网站里我没找到哈哈哈。。。 然后就是成功方案&am…

mapbox解决v-show引起的地图初始化宽高错误的bug

贴个群号 WebGIS学习交流群461555818&#xff0c;欢迎大家 问题 可以看到地图并没有填充完地图 <!DOCTYPE html> <html> <head><meta charsetutf-8 /><title></title><!-- <meta name"referrer" content"strict…

有效确认手机号机主姓名,避免信息错误

在如今信息爆炸的时代&#xff0c;手机已经成为我们生活中必不可少的一部分。手机号码的重要性已经不仅仅是联系工具&#xff0c;更是诸多场景下的实名认证必备条件&#xff0c;如电商、游戏、直播、金融等。为了保证用户信息的准确性和安全性&#xff0c;挖数据平台上的手机号…

2024 年 3 月 Web3 游戏报告:市场趋势与投资动态

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;Footprint Analytics GameFi Research 2024 年 3 月&#xff0c;比特币不断刷新纪录&#xff0c;成功跨越了月中的低谷。受益于宏观经济的积极态势&#xff0c;整个加密货币市场表现突出。与此同时&#xff0c…

PAN1026蓝牙收发芯片

1 概述 PAN1026 系列产品是一款低成本、高集成度的无线 BLE 数据收发芯片&#xff0c;工作在射频 2400MHz ~2483MHz 的通用 ISM 频段。具有较低的系统应用成本&#xff0c;只需要一个 MCU 和少量外部无 源组件即可构建满足无线应用的系统。同时&#xff0c;操作方式非…

制作一个OpenHarmony视频播放器

简介 媒体子系统是 OpenHarmony 中重要的子系统&#xff0c;可以提供音视频播放能力。媒体子系统为开发者提供一套简单且易于理解的接口&#xff0c;使得开发者能够方便接入系统并使用系统的媒体资源。媒体子系统提供以下常用功能&#xff1a; 音视频播放&#xff08;AVPlaye…

AI驱动的云API和微服务架构设计

将人工智能融入到云的API 和微服务架构设计中可以带来诸多好处。以下是人工智能可以推动架构设计改进的一些关键方面&#xff1a; 智能规划&#xff1a;人工智能可以通过分析需求、性能指标和最佳实践来协助设计架构&#xff0c;为 API 和微服务推荐最佳结构。自动扩展&#x…

设计模式之解释器模式(上)

解释器模式 1&#xff09;概述 1.定义 定义一个语言的文法&#xff0c;并且建立一个解释器来解释该语言中的句子&#xff0c;这里的“语言”是指使用规定格式和语法的代码。 2.结构图 3.角色 AbstractExpression&#xff08;抽象表达式&#xff09;&#xff1a;在抽象表达…

聚观早报 | 高德地图Vision Pro版上线;谷歌照片升级编辑功能

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 4月12日消息 高德地图Vision Pro版上线 谷歌照片升级编辑功能 首款苹果DockKit配件推出 华为推出新品FreeLace P…

第6章 6.3.1 正则表达式的语法(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 正则表达式可以由一般的字符、转义字符、元字符、限定符等元素组…

git push报错remote: Please remove the file from history and try again

原因&#xff1a;上传文件超过100M&#xff0c;找到此文件删除即可。 1、查看是哪个文件过大&#xff0c;此处对用红框里面的 a6de1336c67c3bac77757c5eff8c8001823f7c92&#xff0c;得到具体的文件名称 git rev-list --objects --all | grep a6de1336c67c3bac77757c5eff8c80…

亿发:互联网时代,生产企业信息化管理平台的建设应用指南

越来越多的企业家和高管朋友开始意识到&#xff0c;在互联网时代&#xff0c;生产企业信息化建设的重要性&#xff0c;但在实际推动过程中常常缺乏方向&#xff0c;不知从何处入手。 根据当前的调查数据显示&#xff0c;尽管信息化建设已经基本成型&#xff0c;各种信息化系统…

AI升降梯人数监测识别摄像机

AI升降梯人数监测识别摄像机是一种基于人工智能技术的智能监控设备&#xff0c;被广泛应用于楼宇、商场、办公楼等场所的升降梯监测和管理。这种摄像机能够通过摄像头捕捉乘客进出升降梯的信息&#xff0c;利用AI算法对人数进行实时监测和识别&#xff0c;从而提供智能管理和安…

IP地址的主要功能及其在网络中的重要性

在当今数字化时代&#xff0c;互联网已经成为人们生活和工作中不可或缺的一部分。而IP地址&#xff08;Internet Protocol Address&#xff09;作为互联网中的关键组成部分&#xff0c;发挥着至关重要的作用。本文将探讨IP地址的主要功能以及其在网络中的重要性。 IP地址查询&…

力扣题目 19:删除链表的倒数第N个节点 【python】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a; 码上找工作http://t.csdnimg.cn/Q59WX 作者专栏每日更新&#xff1a; LeetCod…

适配器模式类图与代码

某软件系统中&#xff0c;已设计并实现了用于显示地址信息的类Address,现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口&#xff0c;决定采用适配器(Adapter)模式实现该要求&#xff0c;得到如图7.9所示的类图。 【Java代码…

软件测试学习之MySQL学习笔记(完结)

目录 1. 数据库**** 1.1. 概念**** 1.2. 分类**** 1.2.1. 关系型数据库**** 1.2.1.1. SQL**** 1.2.2. 安装**** 1.2.2.1. Navicat**** 2. SQL语句**** 2.1. 常用数据类型**** 2.2. 数据库**** 2.3. 表**** 2.3.1. 字段约束**** 2.4. 数据**** 2.4.1. 增 insert**…

Java 中文官方教程 2022 版(三)

原文&#xff1a;docs.oracle.com/javase/tutorial/reallybigindex.html 对象 原文&#xff1a;docs.oracle.com/javase/tutorial/java/javaOO/objects.html 一个典型的 Java 程序会创建许多对象&#xff0c;正如您所知&#xff0c;这些对象通过调用方法进行交互。通过这些对象…