普联一面4.2面试记录

普联一面4.2面试记录

文章目录

    • 普联一面4.2面试记录
          • 1.jdk和jre的区别
          • 2.java的容器有哪些
          • 3.list set map的区别
          • 4.get和post的区别
          • 5.哪个更安全
          • 6.java哪些集合类是线程安全的
          • 7.创建线程有哪几种方式
          • 8.线程的状态有哪几种
          • 9.线程的run和start的区别
          • 10.什么是java序列化
          • 11.redis的优缺点
          • 12.redis主要数据类型
          • 13.用spring有什么优点 这么多框架为什么要选spring
          • 14.java链接数据库的步骤
          • 15.数据库用过哪些
          • 16.mybatis框架和jdbc相比有什么优势
          • 17.了解过mybatis怎么配置事务吗
          • 18.mybatis怎么实现的懒加载
          • 19.linux部署时进行了哪些操作
          • 20.linux部署过程中用到的常用命令
          • 21.nginx反向代理有什么作用

1.jdk和jre的区别

JDK(Java Development Kit),它是功能齐全的 Java SDK,是提供给开发者使用,能够创建和编译 Java 程序的开发套件。它包含了 JRE,同时还包含了编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc(文档注释工具)、jdb(调试器)、jconsole(基于 JMX 的可视化监控⼯具)、javap(反编译工具)等等。

JRE(Java Runtime Environment) 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,主要包括 Java 虚拟机(JVM)、Java 基础类库(Class Library)。

也就是说,JRE 是 Java 运行时环境,仅包含 Java 应用程序的运行时环境和必要的类库。而 JDK 则包含了 JRE,同时还包括了 javac、javadoc、jdb、jconsole、javap 等工具,可以用于 Java 应用程序的开发和调试。如果需要进行 Java 编程工作,比如编写和编译 Java 程序、使用 Java API 文档等,就需要安装 JDK。而对于某些需要使用 Java 特性的应用程序,如 JSP 转换为 Java Servlet、使用反射等,也需要 JDK 来编译和运行 Java 代码。因此,即使不打算进行 Java 应用程序的开发工作,也有可能需要安装 JDK。

JDK 包含 JRE

不过,从 JDK 9 开始,就不需要区分 JDK 和 JRE 的关系了,取而代之的是模块系统(JDK 被重新组织成 94 个模块)+ jlinkopen in new window 工具 (随 Java 9 一起发布的新命令行工具,用于生成自定义 Java 运行时映像,该映像仅包含给定应用程序所需的模块) 。并且,从 JDK 11 开始,Oracle 不再提供单独的 JRE 下载。

在 Java 9 新特性概览open in new window这篇文章中,我在介绍模块化系统的时候提到:

在引入了模块系统之后,JDK 被重新组织成 94 个模块。Java 应用可以通过新增的 jlink 工具,创建出只包含所依赖的 JDK 模块的自定义运行时镜像。这样可以极大的减少 Java 运行时环境的大小。

也就是说,可以用 jlink 根据自己的需求,创建一个更小的 runtime(运行时),而不是不管什么应用,都是同样的 JRE。

定制的、模块化的 Java 运行时映像有助于简化 Java 应用的部署和节省内存并增强安全性和可维护性。这对于满足现代应用程序架构的需求,如虚拟化、容器化、微服务和云原生开发,是非常重要的。


著作权归JavaGuide(javaguide.cn)所有 基于MIT协议 原文链接:https://javaguide.cn/java/basis/java-basic-questions-01.html

2.java的容器有哪些

List:特定顺序保存一组数据。

Set:集合;不允许有重复的数据。

Queue:队列:在一端插入数据,一端弹出数据。

Map:关联数据,字典。存储一组(Key-Value)值。

3.list set map的区别

List:可以存储重复数组,基于数组或者链表实现。

Set:不可以存储重复元素,基于Map实现。

Map:键值对方式存储,存储的键的不能重复,基于哈希表或者红黑色实现。

4.get和post的区别

(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2)post发送的数据更大(get有url长度限制)

(3)post能发送更多的数据类型(get只能发送ASCII字符)

(4)post比get慢

(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

5.哪个更安全

post

6.java哪些集合类是线程安全的
  1. Vector

    Vector 是 Java 中最早的一个集合类,它使用 synchronized 关键字来实现线程安全。即使是在多线程环境下,多个线程操作同一个 Vector 实例时也可以保证线程安全。虽然 Vector 在多线程环境中有很好的线程安全性,但它的性能比较低,建议在单线程环境中使用。

  2. Hashtable

    Hashtable 是 Java 中最早的一个键值对映射容器,也是使用 synchronized 关键字来实现线程安全的。它的每个 put、remove 和 get 操作都是原子性的,因此它能够保证对于多个线程同时访问 Hashtable 的情况下,没有线程会看到错误的值。

  3. ConcurrentHashMap

    ConcurrentHashMap 是 Java 并发包中提供的一个线程安全的哈希表实现,它会将整个表分为多个段(Segment),每个段都是一个独立的哈希表,每个线程只能访问特定的段,从而实现了并发访问时的线程安全。

  4. CopyOnWriteArrayList

    CopyOnWriteArrayList 是 Java 并发包中提供的一个线程安全的 List 实现,它通过复制原有的 List 来实现并发访问的线程安全。每次对 CopyOnWriteArrayList 进行修改时都会创建一个新的数组,因此它的写操作性能比较低,但它的读操作性能非常高。

  5. ConcurrentLinkedQueue

    ConcurrentLinkedQueue 是 Java 并发包中提供的一个线程安全的队列实现,它使用链表来存储元素,从而实现了高效的并发性能。和 CopyOnWriteArrayList 一样,它的读操作是非常高效的。

7.创建线程有哪几种方式

java创建线程(Thread)的5种方式_java new thread 方法-CSDN博客

8.线程的状态有哪几种

java源码:

/**
 * A thread state.  A thread can be in one of the following states:
 * <ul>
 * <li>{@link #NEW}<br>
 *     A thread that has not yet started is in this state.
 *     </li>
 * <li>{@link #RUNNABLE}<br>
 *     A thread executing in the Java virtual machine is in this state.
 *     </li>
 * <li>{@link #BLOCKED}<br>
 *     A thread that is blocked waiting for a monitor lock
 *     is in this state.
 *     </li>
 * <li>{@link #WAITING}<br>
 *     A thread that is waiting indefinitely for another thread to
 *     perform a particular action is in this state.
 *     </li>
 * <li>{@link #TIMED_WAITING}<br>
 *     A thread that is waiting for another thread to perform an action
 *     for up to a specified waiting time is in this state.
 *     </li>
 * <li>{@link #TERMINATED}<br>
 *     A thread that has exited is in this state.
 *     </li>
 * </ul>
 *
 * <p>
 * A thread can be in only one state at a given point in time.
 * These states are virtual machine states which do not reflect
 * any operating system thread states.
 *
 * @since   1.5
 * @see #getState
 */
public enum State {
    /**
     * Thread state for a thread which has not yet started.
     */
    NEW,

    /**
     * Thread state for a runnable thread.  A thread in the runnable
     * state is executing in the Java virtual machine but it may
     * be waiting for other resources from the operating system
     * such as processor.
     */
    RUNNABLE,

    /**
     * Thread state for a thread blocked waiting for a monitor lock.
     * A thread in the blocked state is waiting for a monitor lock
     * to enter a synchronized block/method or
     * reenter a synchronized block/method after calling
     * {@link Object#wait() Object.wait}.
     */
    BLOCKED,

    /**
     * Thread state for a waiting thread.
     * A thread is in the waiting state due to calling one of the
     * following methods:
     * <ul>
     *   <li>{@link Object#wait() Object.wait} with no timeout</li>
     *   <li>{@link #join() Thread.join} with no timeout</li>
     *   <li>{@link LockSupport#park() LockSupport.park}</li>
     * </ul>
     *
     * <p>A thread in the waiting state is waiting for another thread to
     * perform a particular action.
     *
     * For example, a thread that has called {@code Object.wait()}
     * on an object is waiting for another thread to call
     * {@code Object.notify()} or {@code Object.notifyAll()} on
     * that object. A thread that has called {@code Thread.join()}
     * is waiting for a specified thread to terminate.
     */
    WAITING,

    /**
     * Thread state for a waiting thread with a specified waiting time.
     * A thread is in the timed waiting state due to calling one of
     * the following methods with a specified positive waiting time:
     * <ul>
     *   <li>{@link #sleep Thread.sleep}</li>
     *   <li>{@link Object#wait(long) Object.wait} with timeout</li>
     *   <li>{@link #join(long) Thread.join} with timeout</li>
     *   <li>{@link LockSupport#parkNanos LockSupport.parkNanos}</li>
     *   <li>{@link LockSupport#parkUntil LockSupport.parkUntil}</li>
     * </ul>
     */
    TIMED_WAITING,

    /**
     * Thread state for a terminated thread.
     * The thread has completed execution.
     */
    TERMINATED;
}

在这里插入图片描述

总算把线程六种状态的转换说清楚了! - 掘金 (juejin.cn)

9.线程的run和start的区别

Java中的run()方法和start()的区别_start()方法和 run()的区别-CSDN博客

10.什么是java序列化

如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。

简单来说:

  • 序列化:将数据结构或对象转换成二进制字节流的过程
  • 反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程

对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。

下面是序列化和反序列化常见应用场景:

  • 对象在进行网络传输(比如远程方法调用 RPC 的时候)之前需要先被序列化,接收到序列化的对象之后需要再进行反序列化;
  • 将对象存储到文件之前需要进行序列化,将对象从文件中读取出来需要进行反序列化;
  • 将对象存储到数据库(如 Redis)之前需要用到序列化,将对象从缓存数据库中读取出来需要反序列化;
  • 将对象存储到内存之前需要进行序列化,从内存中读取出来之后需要进行反序列化。

维基百科是如是介绍序列化的:

序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。依照序列化格式重新获取字节的结果时,可以利用它来产生与原始对象相同语义的副本。对于许多对象,像是使用大量引用的复杂对象,这种序列化重建的过程并不容易。面向对象中的对象序列化,并不概括之前原始对象所关系的函数。这种过程也称为对象编组(marshalling)。从一系列字节提取数据结构的反向操作,是反序列化(也称为解编组、deserialization、unmarshalling)。

综上:序列化的主要目的是通过网络传输对象或者说是将对象存储到文件系统、数据库、内存中。

img

https://www.corejavaguru.com/java/serialization/interview-questions-1


著作权归JavaGuide(javaguide.cn)所有 基于MIT协议 原文链接:https://javaguide.cn/java/basis/serialization.html

11.redis的优缺点

优点

  1. 高性能:Redis是一个基于内存的数据库,数据存储在RAM中,因此具有非常快的读写速度。它采用了高效的数据结构和算法,能够在微秒级别完成大量的操作,使其成为处理高并发场景的理想选择。
  2. 简单易用:Redis提供了简洁、直观的命令行接口和易于使用的API,使开发人员可以轻松地进行数据存储和检索。其支持丰富的数据类型,如字符串、哈希表、列表、集合和有序集合,可以满足不同场景下的需求。
  3. 数据持久化:Redis支持数据的持久化存储,可以将内存中的数据保存到磁盘上,以防止数据丢失。它提供了两种持久化方式:快照(snapshotting)和日志追加(append-only file),用户可以根据实际需求选择适合的方式。
  4. 高可用性:Redis支持主从复制和Sentinel机制,可以实现数据的自动备份和故障转移。主从复制可以将数据从主节点复制到多个从节点,提高读取性能和数据冗余;Sentinel机制可以监控主节点的状态,并在主节点故障时自动切换到从节点,确保系统的高可用性。

缺点

  1. 内存限制:由于Redis的数据存储在内存中,因此受到可用内存大小的限制。当数据量超过内存容量时,性能会受到影响,甚至导致系统崩溃。虽然Redis提供了数据淘汰策略和内存优化选项,但仍需要合理规划和管理内存资源。
  2. 单线程模型:Redis采用单线程模型来处理客户端请求,这意味着在高并发场景下,性能可能受到限制。虽然Redis通过异步操作和事件驱动的方式提高了并发处理能力,但在某些特定场景下,单线程模型可能成为瓶颈。
  3. 缺乏复杂查询支持:Redis主要用于键值对存储和简单的数据结构操作,并不支持复杂的查询操作。相比之下,关系型数据库具有更强大的查询语言和查询优化。
12.redis主要数据类型

Redis 提供了丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)

一文读懂Redis五种数据类型及应用场景 - 知乎 (zhihu.com)

**这篇知乎强烈推荐!!!**从底层数据结构到应用场景及解决办法,佬太强了

13.用spring有什么优点 这么多框架为什么要选spring

1)方便解耦,简化开发

Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。

2)方便集成各种优秀框架

Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。

3)降低 Java EE API 的使用难度

Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。

4)方便程序的测试

Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。

5)AOP 编程的支持

Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。

6)声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无须手动编程。

14.java链接数据库的步骤
  • 注册驱动 (告诉Java要连接什么数据库)

  • 获得连接 (表示JVM的进程与数据库之间的通道打开)

  • 获得数据库操作对象 (它专门执行sql语句的对象)

  • 执行sql 语句

  • 处理查询结果集 (只有执行select 语句才有的步骤)

  • 释放资源 (使用完后,一定要关闭)

原文链接:https://blog.csdn.net/qq_52252193/article/details/121348505

15.数据库用过哪些

mysql mongodb

16.mybatis框架和jdbc相比有什么优势

针对JDBC编程的劣势,MyBatis提供了以下解决方案,具体如下。

  • 问题一:数据库链接创建、释放频繁会造成系统资源浪费,从而影响系统性能。

    解决方案:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。

  • 问题二:SQL语句在代码中硬编码,造成代码不易维护。在实际应用的开发中,SQL变化的可能较大。在传统JDBC编程中,SQL变动需要改变Java代码,违反了开闭原则。

    解决方案:MyBatis将SQL语句配置在MyBatis的映射文件中,实现了与Java代码的分离。

  • 问题三:使用preparedStatement向占位符传参数存在硬编码,因为SQL语句的where条件不一定,可能多也可能少,修改SQL需要修改代码,造成系统不易维护。

    解决方案:MyBatis自动将Java对象映射至SQL语句,通过Statement中的parameterType定义输入参数的类型。

  • 问题四:JDBC对结果集解析存在硬编码(查询列名),SQL变化导致解析代码变化,造成系统不易维护。

    解决方案:MyBatis自动将SQL执行结果映射至Java对象,通过Statement中的resultType定义输出结果的类型。

作者:黑马程序员
链接:https://www.zhihu.com/question/21186788/answer/2516715579
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

17.了解过mybatis怎么配置事务吗

MyBatis(六)MyBatis使用事务 - 青杉 - 博客园 (cnblogs.com)

18.mybatis怎么实现的懒加载

MyBatis 延迟加载(懒加载)一篇入门 - 知乎 (zhihu.com)

19.linux部署时进行了哪些操作

宝塔面板 基础环境搭建 开放端口 上传jar包;前端打包成dist同样上传;

20.linux部署过程中用到的常用命令

部署项目时常用的 Linux 命令-CSDN博客

21.nginx反向代理有什么作用

终于有人把正向代理和反向代理解释的明明白白了!-腾讯云开发者社区-腾讯云 (tencent.com)

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

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

相关文章

深度解读DynamIQ架构cache的替换策略

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] &#x1f448;&#x1f448;&#x1f448; 思考: 在经典的 DynamIQ架构 中&#xff0c;数据是什么时候存在L1 cache&#xff0c;什么时候存进L2 cache&#xff0c;什么时候又存进L3 cache&#xff0c;以及他们的替换策略是…

ArcGIS Pro导出布局时去除在线地图水印

目录 一、背景 二、解决方法 一、背景 在ArcGIS Pro中经常会用到软件自带的在线地图&#xff0c;但是在导出布局时&#xff0c;图片右下方会自带地图的水印 二、解决方法 解决方法&#xff1a;添加动态文本--服务图层制作者名单&#xff0c;然后在布局中选定位置添加 在状…

红蓝色WordPress外贸建站模板

红蓝色WordPress外贸建站模板 https://www.mymoban.com/wordpress/5.html

【Java】打包:JAR、EAR、WAR

打包&#xff1a;JAR、EAR、WAR war 是一个 Web 模块&#xff0c;其中需要包括 WEB-INF&#xff0c;是可以直接运行的 WEB 模块。而 jar 一般只是包括一些 class 文件&#xff0c;在声明了 main_class 之后是可以用 java 命令运行的。 它们都是压缩的包&#xff0c;拿 Tomcat …

LeetCode_234(回文链表)

//时间复杂度O(n) 空间复杂度O(1)public boolean isPalindrome(ListNode head) {ListNode fast head,slow head;while (fast !null && fast.next !null){fast fast.next.next;slow slow.next;}//如果链表是奇数个结点&#xff0c;把正中的归到左边if(fast ! null){s…

操作系统的信号量操作以及实战中的踩坑分析

往期地址&#xff1a; 操作系统系列一 —— 操作系统概述操作系统系列二 —— 进程操作系统系列三 —— 编译与链接关系操作系统系列四 —— 栈与函数调用关系操作系统系列五 —— 目标文件详解操作系统系列六 —— 详细解释【静态链接】操作系统系列七 —— 装载操作系统系列…

洛谷B3735题解

题目描述 圣诞树共有 n 层&#xff0c;从上向下数第 1 层有 1 个星星、第 2 层有 2 个星星、以此类推&#xff0c;排列成下图所示的形状。 星星和星星之间用绳子连接。第 1,2,⋯,n−1 层的每个星星都向下一层最近的两个星星连一段绳子&#xff0c;最后一层的相邻星星之间连一段…

【开发、测试】接口规范与测试

接口测试基础 url 是互联网标准资源地址&#xff0c;称为统一资源定位符 组成&#xff1a;协议&#xff0c;服务器地址&#xff0c;端口号 HTTP协议 HTTP&#xff1a;超文本传输协议&#xff0c;基于请求与响应的应用层协议 作用&#xff1a;规定了客户端和服务器之间的信…

Spring声明式事务以及事务传播行为

Spring声明式事务以及事务传播行为 Spring声明式事务1.编程式事务2.使用AOP改造编程式事务3.Spring声明式事务 事务传播行为 如果对数据库事务不太熟悉&#xff0c;可以阅读上一篇博客简单回顾一下&#xff1a;MySQL事务以及并发访问隔离级别 Spring声明式事务 事务一般添加到…

前端工程师————CSS学习

选择器分类 选择器分为基础选择器和复合选择器 基础选择器包括&#xff1a;标签选择器&#xff0c;类选择器&#xff0c;id选择器&#xff0c;通配符选择器标签选择器 类选择器 语法&#xff1a;.类名{属性1&#xff1a; 属性值&#xff1b;} 类名可以随便起 多类名使用方式&am…

LeetCode-98. 验证二叉搜索树【树 深度优先搜索 二叉搜索树 二叉树】

LeetCode-98. 验证二叉搜索树【树 深度优先搜索 二叉搜索树 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;中序遍历解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树…

【蓝桥杯练习】tarjan算法求解LCA

还是一道比较明显的求LCA(最近公共祖先)模型的题目,我们可以使用多种方法来解决该问题&#xff0c;这里我们使用更好写的离线的tarjan算法来解决该问题。 除去tarjan算法必用的基础数组&#xff0c;我们还有一个数组d[],d[i]记录的是每个点的出度&#xff0c;也就是它的延迟时间…

氮气柜常用的制作材质有哪些?

氮气柜主要用于存储对湿度敏感或需要在低氧环境中保存的精密部件、电子元器件、化学品、文物等&#xff0c;需要确保柜体的密闭性和内部环境的稳定&#xff0c;以防止氧化、受潮或变质。 常见的材质有冷轧钢板&#xff0c;冷轧钢板通过冷轧工艺使钢材组织更紧密&#xff0c;从而…

LeetCode-543. 二叉树的直径【树 深度优先搜索 二叉树】

LeetCode-543. 二叉树的直径【树 深度优先搜索 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;DFS解题思路二&#xff1a;另一种写法DFS解题思路三&#xff1a;0 题目描述&#xff1a; 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任…

不能在主机和虚拟机之间拷贝文本(虚拟机ubuntu16.04)

问题 ubuntu16.04不能在主机和虚拟机之间拷贝文本。 原因 vmware tools没安装好。 解决办法 重新安装vmware tools&#xff0c;步骤入下&#xff1a; 让虚拟机加载C:\Program Files (x86)\VMware\VMware Workstation\linux.iso光盘文件&#xff0c;设置如下&#xff1a; …

C++的并发世界(四)——线程传参

1.全局函数作为传参入口 #include <iostream> #include <thread> #include <string>void ThreadMain(int p1,float p2,std::string str) {std::cout << "p1:" << p1 << std::endl;std::cout << "p2:" <<…

Linux安装conda

目录 conda是什么简介conda与miniconda、anaconda的关系 安装下载文件bash安装激活软件检查安装是否成功配置镜像源 创建环境 conda是什么 简介 conda是一个开源的包管理器和环境管理器&#xff0c;用于安装、运行和更新包和它们的依赖项。它可以轻松地在计算机上创建隔离的环…

刷题DAY44 | 完全背包问题 LeetCode 518-零钱兑换 II 377-组合总和 Ⅳ

完全背包问题模版 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题…

《UE5_C++多人TPS完整教程》学习笔记29 ——《P30 Blaster 角色(Blaster Character)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P30 Blaster 角色&#xff08;Blaster Character&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译…

网络原理 - HTTP / HTTPS(3)——http响应

目录 一、认识 “状态码”&#xff08;status code&#xff09; 常见的状态码 &#xff08;1&#xff09;200 OK &#xff08;2&#xff09;404 Not Found &#xff08;3&#xff09;403 ForBidden &#xff08;4&#xff09;405 Method Not Allowed &#xff08;5&…