【Java从入门到大牛】特殊文本文件和日志技术

🔥 本文由 程序喵正在路上 原创,CSDN首发!
💖 系列专栏:Java从入门到大牛
🌠 首发时间:2023年10月27日
🦋 欢迎关注🖱点赞👍收藏🌟留言🐾
🌟 不努力,你来这个世界当间谍的吗

目录

  • 文件的种类
  • 特殊文件:Properties属性文件
  • 特殊文件:XML文件
    • 概述
    • 读取XML文件中的数据
    • 补充知识:约束XML文件的编写 [了解即可]
  • 日志技术
    • 概述
    • 日志技术体系、Logback日志框架的概述
    • Logback快速入门
    • Logback设置日志级别

文件的种类

  • 普通文件

    在这里插入图片描述

  • 属性文件

    在这里插入图片描述

  • XML文件

    在这里插入图片描述

特殊文件:Properties属性文件

Properties属性文件的特点

  1. 存储的每一行内容都只能是键值对
  2. 键不能重复
  3. 文件后缀一般是 .properties 结尾

在这里插入图片描述

  • Properties 是一个 Map 集合(键值对集合),但是我们一般不会当集合使用
  • 核心作用:Properties 是用来代表属性文件的,通过 Properties 可以读写属性文件里的内容

使用Properties读取属性文件里的键值对数据
在这里插入图片描述

具体应用

首先,我们需要准备一个文件来读取,在项目的 src 目录下新建一个 File,命名为 users.properties

在这里插入图片描述

然后,我们就可以写代码来读取它了

import java.io.FileReader;
import java.util.Properties;
import java.util.Set;

/**
 * 目标:掌握使用Properties类读取属性文件中的键值对信息
 */
public class PropertiesTest1 {
    public static void main(String[] args) throws Exception {
        // 1、创建一个Properties的对象出来(键值对集合,空容器)
        Properties properties = new Properties();
        System.out.println(properties);

        // 2、开始加载属性文件中的键值对数据到properties对象中去
        properties.load(new FileReader("properties-xml-log-app\\src\\users.properties"));
        System.out.println(properties);

        // 3、根据键取值
        System.out.println(properties.getProperty("赵敏"));
        System.out.println(properties.getProperty("张无忌"));

        // 4、遍历全部的键和值
        Set<String> keys = properties.stringPropertyNames();
        for (String key : keys) {
            String value = properties.getProperty(key);
            System.out.println(key + "---->" + value);
        }

        properties.forEach((k, v) -> {
            System.out.println(k + "---->" + v);
        });
    }
}

在这里插入图片描述

使用Properties把键值对数据写出到属性文件里去

在这里插入图片描述
具体应用

import java.io.FileWriter;
import java.util.Properties;

/**
 * 目标:掌握把键值对数据存入到属性文件中去
 */
public class PropertiesTest2 {
    public static void main(String[] args) throws Exception {
        // 1、创建Properties对象出来,先用它存储一些键值对数据
        Properties properties = new Properties();
        properties.setProperty("张无忌", "minmin");
        properties.setProperty("殷素素", "cuishan");
        properties.setProperty("张翠山", "susu");

        // 2、把properties对象中的键值对数据存入到属性文件中去
        properties.store(new FileWriter("properties-xml-log-app/src/users2.properties")
                , "i saved many users!");

    }
}

在这里插入图片描述

特殊文件:XML文件

概述

XML(全称EXtensible Markup Language,可拓展标记语言)

  • 本质是一种数据的格式,可以用来存储复杂的数据结构和数据关系

    在这里插入图片描述

XML的特点

  • XML 中的 “<标签名>” 称为一个标签或一个元素,一般是成对出现的
  • XML 中的标签名可以自己定义(可扩展),但必须要正确的嵌套
  • XML 中只能有一个根标签
  • XML 中的标签可以有属性
  • 如果一个文件中放置的是 XML 格式的数据,这个文件就是 XML 文件,后缀一般要写成 .xml

XML的创建

  • 就是创建一个 XML 类型的文件,要求文件的后缀必须使用 xml,如 hello_world.xml

IDEA创建XML文件
在这里插入图片描述

XML的语法规则

  • XML文件的后缀名为 xml,文档声明必须是第一行

    <?xml version="1.0" encoding="UTF-8" ?>
    version: XML默认的版本号码、该属性是必须存在的
    encoding: 本XML文件的编码
    
  • XML中可以定义注释信息:<!-- 注释内容 -->

  • XML中书写 “<”、“&” 等符号可能会出现冲突,导致报错,此时可以用如下特殊字符替代

    &lt;	< 小于
    &gt;	> 大于
    &amp;	& 和号
    &apos;	' 单引号
    &quot;	" 引号
    
  • XML 中可以写一个叫 CDATA 的数据区:<![CDATA[ ...内容... ]]>,里面的内容可以随便写

例如,我们随便写一个 xml 文件,命名为 helloworld.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释:以上抬头声明必须放在第一行,必须有 -->
<!--  根标签只能有一个 -->
<users>
    <user id="1" desc="第一个用户">
        <name>张无忌</name>
        <sex></sex>
        <地址>光明顶</地址>
        <password>minmin</password>
        <data> 3 &lt; 2 &amp;&amp; 5 > 4 </data>
        <data1>
            <![CDATA[
                3 < 2 && 5 > 4
            ]]>
        </data1>
    </user>
    <people>很多人</people>
    <user id="2">
        <name>敏敏</name>
        <sex></sex>
        <地址>光明顶</地址>
        <password>wuji</password>
        <data> 3 &lt; 2 &amp;&amp; 5 > 4 </data>
        <data1>
            <![CDATA[
                3 < 2 && 5 > 4
            ]]>
        </data1>
    </user>
</users>

我们可以通过浏览器来查看这个文件展示的内容,步骤:在 IDEA 的 xml 文件界面右键鼠标,选择 Open In → \rightarrow Browser,接着选择一个浏览器打开即可,结果大致如下

在这里插入图片描述

XML的作用和应用场景

  • 本质是一种数据格式,可以存储复杂的数据结构和数据关系
  • 应用场景:经常用来作为系统的配置文件;或者作为一种特殊的数据结构,在网络中进行传输

读取XML文件中的数据

读取 XML 文件中的数据,业界内通常将其叫做解析 XML 文件

解析XML文件

  • 使用程序读取 XML 文件中的数据

注意:程序员并不需要自己写原始的 IO 流代码来解析 XML,难度较大,且相当繁琐

其实,现在有很多开源的、好用的解析 XML 的框架,最知名的是 Dom4j(第三方研发的)

使用 Dom4j 解析出 XML 文件的具体步骤

需求:使用 Dom4j 把一个 XML 文件的数据进行解析

分析:

  1. 下载 Dom4j 框架,官网下载可能比较慢,建议直接在 CSDN 搜索 “dom4j下载”,有众多教程任君选择
  2. 在项目中创建一个文件夹 Directory,建议命名为 lib
  3. 将 dom4j-2.1.3.jar 文件复制到 lib 文件夹
  4. 在 jar 文件上点击右键,选择 Add as Library,然后再点击 OK
  5. 在类中导包使用

DOM4J解析XML文件的思想:文档对象模型

在这里插入图片描述

Dom4j 解析 XML 得到 Document 对象

  • SAXReader:Dom4j 提供的一个解析器,可以认为是代表整个 Dom4j 框架
    在这里插入图片描述

  • Document
    在这里插入图片描述

Element 提供的方法

在这里插入图片描述

具体应用

对前面写的 helloworld.xml 进行解析

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

/**
 * 目标:掌握使用Dom4j框架解析XML文件
 */
public class Dom4JTest1 {
    public static void main(String[] args) throws Exception {
        // 1、创建一个Dom4J框架提供的解析器对象
        SAXReader saxReader = new SAXReader();

        // 2、使用saxReader对象把需要解析的XML文件读成一个Document对象
        Document document =
                saxReader.read("properties-xml-log-app\\src\\helloworld.xml");  // 相对路径

        // 3、从文档对象中解析XML文件的全部数据
        Element root = document.getRootElement();
        System.out.println(root.getName());

        // 4、获取根元素下的全部一级子元素。
        // List<Element> elements = root.elements();
        List<Element> elements = root.elements("user");
        for (Element element : elements) {
            System.out.println(element.getName());
        }

        // 5、获取当前元素下的某个子元素。
        Element people = root.element("people");
        System.out.println(people.getText());

        // 如果下面有很多子元素user,默认获取第一个。
        Element user = root.element("user");
        System.out.println(user.elementText("name"));

        // 6、获取元素的属性信息呢?
        System.out.println(user.attributeValue("id"));
        Attribute id = user.attribute("id");
        System.out.println(id.getName());
        System.out.println(id.getValue());

        List<Attribute> attributes = user.attributes();
        for (Attribute attribute : attributes) {
            System.out.println(attribute.getName() + "=" + attribute.getValue());
        }

        // 7、如何获取全部的文本内容:获取当前元素下的子元素文本值
        System.out.println(user.elementText("name"));
        System.out.println(user.elementText("地址"));
        System.out.println(user.elementTextTrim("地址")); // 取出文本去除前后空格
        System.out.println(user.elementText("password"));

        Element data = user.element("data");
        System.out.println(data.getText());
        System.out.println(data.getTextTrim()); // 取出文本去除前后空格
    }
}

执行结果如下

在这里插入图片描述

如何使用程序把数据写出到XML文件中去呢

不建议使用 dom4j 来做,推荐直接把程序里的数据拼接成 XML 格式,然后用 IO 流写出去

例如

import java.io.BufferedWriter;
import java.io.FileWriter;

/**
 * 目标:如何使用程序把数据写出到 XML文件中去
 * <?xml version="1.0" encoding="UTF-8" ?>
 * <book>
 *     <name>从入门到跑路</name>
 *     <author>dlei</author>
 *     <price>999.9</price>
 * </book>
 */
public class Dom4JTest2 {
    public static void main(String[] args) {
        // 1、使用一个StringBuilder对象来拼接XML格式的数据
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");   // \r\n为换行
        sb.append("<book>\r\n");
        sb.append("\t<name>").append("从入门到跑路").append("</name>\r\n");
        sb.append("\t<author>").append("dlei").append("</author>\r\n");
        sb.append("\t<price>").append(999.99).append("</price>\r\n");
        sb.append("</book>");

        try (
                // 用完需要释放
                BufferedWriter bw = new BufferedWriter(new FileWriter("properties-xml-log-app/src/book.xml"));
                ){
            bw.write(sb.toString());    // 写出去
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

补充知识:约束XML文件的编写 [了解即可]

什么是约束XML文件的书写?

就是限制XML文件只能按照某种格式进行书写

什么是约束文档

专门用来限制 XML 书写格式的文档,比如:限制标签、属性应该怎么写

约束文档的分类

  • DTD文档
  • Schema文档

XML文档约束-DTD的使用(了解)

需求:利用 DTD 约束文档,约束一个 XML 文件的编写

  1. 编写 DTD 约束文档,后缀必须是 .dtd(了解即可,不用学会写)
  2. 在需要编写的 XML 文件中导入该 DTD 约束文档
  3. 然后 XML 文件就必须按照 DTD 约束文档指定的格式进行编写,否则会报错

注意:DTD 文档只能约束 XML 文件的标签,不能约束标签里面内容的数据类型

应用(了解即可)

在这里插入图片描述

XML文档约束-Schema的使用(了解)

需求:利用 Schema 文档约束一个 XML 文件的编写

  1. 编写 Schema 约束文档,后缀必须是 .xsd
  2. 在需要编写的 XML 文件中导入该 Schema 约束文档
  3. 按照约束内容编写 XML 文件的内容

注意:可以约束 XML 文件的编写和数据类型

在这里插入图片描述

日志技术

概述

什么是日志?

在开发时,我们可能会遇到以下问题:

  1. 希望系统能记住某些数据是被谁操作的,比如被谁删除了?
  2. 想分析用户浏览系统的具体情况,以便挖掘用户的具体喜好?
  3. 当系统在开发中或上线后出现了 bug,崩溃了,该通过什么去分析和定位 bug 呢?

想解决上述问题,我们需要用到日志技术

日志就好比生活中的日记,可以记录你生活中的点点滴滴;而程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息

以前记录日志的方案

public static void test(String number) {
	try {
		int result = Integer.parseInt(number);
		System.out.println("输入的数字为" + result);
	} catch(NumberFormatException e) {
		System.out.printlnl("输入的数字有误,请输入一个整数");
	}
}

之前,我们都是通过诸如捕获异常的方式,将日志信息展示在控制台上

这样做有以下弊端:

  • 日志会展示在控制台,控制台关闭日志信息就丢失了
  • 不能更方便地将日志记录到其他位置,比如文件中或数据库中
  • 如果想取消日志,还需要修改源代码才可以完成

日志技术的特点

  • 可以将系统执行的信息,方便地记录到指定的位置(控制台、文件中、数据库中)
  • 可以随时以开关的形式控制日志的启停,无需侵入到源代码中去进行修改

日志技术体系、Logback日志框架的概述

在这里插入图片描述

  • 日志框架:牛人或者第三方公司已经做好的实现代码,后来者直接可以拿去使用
  • 日志接口:设计日志框架的一套标准,日志框架需要实现这些接口
  • 注意1:因为对 Commons Logging 接口不满意,有人就搞了 SLF4J;因为对 Log4j 的性能不满意,有人就搞了 Logback
  • 注意2Logback 是基于 slf4j 的日志规范实现的框架

Logback 日志框架官网:http://logback.qos.ch/index.html

Logback 日志框架有以下几个模块:

在这里插入图片描述

如果想要使用 Logback 日志框架,至少需要在项目中整合如下三个模块:

  • slf4j-api:日志接口
  • logback-core
  • logback-classic

对于目前的我们,是需要一个一个去下载的,过程也是比较麻烦,后面学了 maven 这个工具就不用我们自己下载了

需要的资源博主已经上传到 CDSN,点击此处免费下载

Logback快速入门

需求:使用 Logback 日志框架,记录系统的运行信息

实现步骤:

  1. 导入 Logback 框架到项目中去,也就是前面提到的那三个模块

  2. 将 Logback 框架的核心配置文件 logback.xml 直接拷贝到 src 目录下(必须是 src 下),记住,logback.xml 不需要我们自己写,以后工作的时候公司会给

  3. 创建 Logback 框架提供的 Logger 对象,然后用 Logger 对象调用其提供的方法就可以记录系统的日志信息

    public static final Logger LOGGER = LoggerFactory.getLogger("类名");
    

应用演示

import org.slf4j.Logger;	// 注意必须是 slf4j 包下的 Logger
import org.slf4j.LoggerFactory;

/**
 * 目标:掌握LogBack日志框架的使用
 */
public class LogBackTest {
    // 创建一个Logger日志对象
    public static final Logger LOGGER = LoggerFactory.getLogger("LogBackTest");

    public static void main(String[] args) {
            try {
                LOGGER.info("chu法方法开始执行~~~");
                chu(10, 0);
                LOGGER.info("chu法方法执行成功~~~");
            } catch (Exception e) {
                LOGGER.error("chu法方法执行失败了,出现了bug~~~");
            }
    }

    public static void chu(int a, int b){
        LOGGER.debug("参数a:" + a);
        LOGGER.debug("参数b:" + b);
        int c = a / b;
        LOGGER.info("结果是:" + c);
    }
}

在这里插入图片描述

核心配置文件logback.xml

作用:对 logback 日志框架进行控制

日志的输出位置、输出格式的控制

通常我们可以设置 2 个输出日志的位置:一个是控制台,一个是系统文件中

// 输出到控制台
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
// 输出到文件中
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

开启日志(ALL),关闭日志(OFF)

// 开启日志
<root level="ALL">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE" />
</root>

Logback设置日志级别

什么是日志级别?

日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下,优先级从上到下依次升高
在这里插入图片描述

为什么要学习日志级别?

如果我们想让程序只记录 info 及以上级别的日志,那我们就需要用到日志级别了

比如,我们将 level 改为 info

// 只记录 info warn error 日志
<root level="info">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE" />
</root>

只有日志的级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录

如果不想让日志输出到控制台或者文件中,我们可以删除下面任一语句

// 只输出到控制台中
<root level="info">
    <appender-ref ref="CONSOLE"/>
</root>

// 只输出到文件中
<root level="info">
    <appender-ref ref="FILE" />
</root>

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

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

相关文章

【黑马程序员】mysql进阶篇笔记

2023年10月27日17:50:07 58.01. 进阶-课程介绍(Av765670802,P58) 59.02. 进阶-存储引擎-MySQL体系结构(Av765670802,P59) 60.03. 进阶-存储引擎-简介(Av765670802,P60) 61.04. 进阶-存储引擎-InnoDB介绍(Av765670802,P61) 62.05. 进阶-存储引擎-MyISAM和Memory(Av765670802…

【计算机毕设小程序案例】基于微信小程序的图书馆座位预定系统

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 &#x1f449;IT源码社-SpringBoot优质案例推荐&#x1f448; &#x1f449;IT源码社-小程序优质案例…

Visual Studio Professional 2019 软件安装教程(附安装包下载)

Microsoft Visual Studio 是一个非常强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;适用于 Windows 上的 .NET 和 C 开发人员。它提供了一系列丰富的工具和功能&#xff0c;可以提升和增强软件开发的每个阶段。 Visual Studio IDE 是一个创意启动板&#xff0c;可…

百度文心一言4.0抢先体验教程!

&#x1f341; 展望&#xff1a;关注我, AI学习之旅上&#xff0c;我与您一同成长&#xff01; 一、 引言 想快速体验文心一言4.0&#xff0c;但又觉得技术难度太高&#xff1f;别担心&#xff0c;我来手把手教你&#xff01; &#x1f680; 10月17日&#xff0c;文心一言4.0…

蓝桥杯 Java 括号序列

本算法需要把问题分解成三步&#xff1a; 第一步&#xff1a;算出 ((() 填充 ( 的方案 第二步&#xff1a;算出 ((() 填充 ) 的方案 第三步&#xff1a;把两个方案相乘 第二步可以把原方案当成将 ((() 逆转成 ())) 再填充 ( &#xff0c;这样就可以重复第一步用的算法 第一步…

设计模式(15)组合模式

一、介绍&#xff1a; 1、定义&#xff1a;组合多个对象形成树形结构以表示“整体-部分”的关系的层次结构。组合模式对叶子节点和容器节点的处理具有一致性&#xff0c;又称为整体-部分模式。 2、优缺点&#xff1a; 优点&#xff1a; &#xff08;1&#xff09;高层模块调…

stable diffusion简介和原理

Stable Diffusion中文的意思是稳定扩散&#xff0c;本质上是基于AI的图像扩散生成模型。 Stable Diffusion是一个引人注目的深度学习模型&#xff0c;它使用潜在扩散过程来生成图像&#xff0c;允许模型在生成图像时考虑到文本的描述。这个模型的出现引起了广泛的关注和讨论&am…

JAVA实现智能停车场管理系统 开源

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

香港服务器如何做负载均衡?

​  在现代互联网时代&#xff0c;随着网站访问量的不断增加&#xff0c;服务器的负载也越来越重。为了提高网站的性能和可用性&#xff0c;负载均衡成为了一种常见的解决方案。 什么是负载均衡? 负载均衡是一种技术解决方案&#xff0c;用于在多个服务器之间分配负载&#…

数据结构绪论,基本概念

目录 1.什么是数据结构&#xff1f; 2.三种数据结构&#xff1a; 3.第一章绪论 了解概念 1.几个概念 2.数据存储方式&#xff1a; 3.算法的五个重要特性: 4.算法设计的要求: 1.什么是数据结构&#xff1f; 数据 数据&#xff0c;是对客观事物的符号表示&#xff0c;在计…

Go 开发IDE全览:GoLand VS VSCode全面解析

一、引言 在软件开发的世界里&#xff0c;开发环境的选择与配置是成功项目的基础之一。特别是在Go&#xff08;又名Golang&#xff09;这样一个逐渐获得主流认同、在微服务和云计算领域有着广泛应用的编程语言中&#xff0c;选择合适的开发工具就显得尤为重要。虽然Go语言自身…

Hbase基本使用,读写原理,性能优化学习

文章目录 HBase简介HBase定义HBase数据模型**HBase** **逻辑结构****HBase** **物理存储结构****HBase** **基本架构** HBase 入门**HBase** **安装部署****HBase** 配置文件**HBase** 启动停止**HBase** **访问页面****HBase** **高可用****HBase Shell****HBase API**HBaseCo…

面向对象(类/继承/封装/多态)详解

简介: 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种广泛应用于软件开发的编程范式。它基于一系列核心概念&#xff0c;包括类、继承、封装和多态。在这篇详细的解释中&#xff0c;我们将探讨这些概念&#xff0c;并说明它们如何在P…

JavaScript基础知识18——逻辑运算符之短路运算

哈喽&#xff0c;大家好&#xff0c;我是雷工。 本节学习JavaScript基础知识——逻辑运算符中的短路运算&#xff0c;以下为学习笔记。 规则&#xff1a; 1、如果是&&运算&#xff0c;只要遇到false&#xff0c;就立即短路&#xff0c;不会再执行了&#xff0c;直接返回…

应用案例|基于高精度三维机器视觉引导机器人自动分拣包裹的应用

Part.1 行业背景 近年来&#xff0c;电商高速发展&#xff0c;百万件日订单处理的超大型分拣中心模式日益普及&#xff0c;传统的人工供包模式效率低&#xff0c;难以满足高超大分拣中心对分拣包裹的需求。随着科技的进步&#xff0c;自动供包系统进入大众视野&#xff0c;成为…

基于机器视觉的火车票识别系统 计算机竞赛

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的火车票识别系统 该项目较为新颖&#xff0c;适合作为竞赛…

反恐精英CS1.6forMac/win中文版:动作射击游戏的巅峰之作

的游戏爱好者们&#xff0c;今天我们要向大家推荐一款让人热血沸腾的第一人称动作射击游戏——反恐精英CS1.6&#xff01;这款游戏承载了无数玩家的童年记忆&#xff0c;更是射击游戏领域中的佼佼者。 一、还原度极高的场景与道具 反恐精英CS1.6在场景和道具的还原度上做到了极…

在Mac上安装MongoDB 5.0

MongoDB 5.0安装 1、环境描述 操作系统&#xff1a;macOS 14.0 (23A344) 2、安装MongoDB 2.1、tar解压包安装 下载地址&#xff1a;Download MongoDB Community Server | MongoDB 创建一个目录&#xff0c;以便数据库将文件放入其中。&#xff08;默认情况下&#xff0c;数据…

【axios】axios的基本使用

一、 Axios简介 1、 Axios是什么&#xff1f; Axios是一个基于promise的HTTP库&#xff0c;类似于jQuery的ajax&#xff0c;用于http请求。可以应用于浏览器端和node.js&#xff0c;既可以用于客户端&#xff0c;也可以用于node.js编写的服务端。 2.、Axios特性 支持Promis…

王道p149 7.二叉树按二叉链表形式存储,写一个判别给定二叉树是否是完全二叉树的算法(c语言代码实现)

采用层次遍历算法&#xff0c;将所有结点加入队列(包括空结点)。 如果没有左孩子&#xff0c;就看有没有右孩子&#xff0c;如果有右孩子&#xff0c;那么不为完全二叉树。 如果有左孩子&#xff0c;且之前不存在缺孩子的结点&#xff0c;左孩子进队&#xff0c;如果有右孩子…