十四(AJAX)、AJAX、axios、常用请求方法(GET POST...)、HTTP协议、接口文档、form-serialize

news2024/12/27 7:24:18

1. AJAX介绍及axios基本使用

<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>AJAX介绍及axios基本使用</title>
</head>

<!-- 
AJAX
  定义:AJAX 是异步的 JavaScript 和 XML(Asynchronous JavaScript And XML)。简单点说,就是使用
XMLHttpRequest(XHR)对象与服务器通信。它可以使用 JSON,XML,HTML 和 text 文本等格式发送和接收数据。
  概念:AJAX是一种与服务器通信的技术
-->

<body>
  <p class="province">
  <p></p>
  <!-- 数据渲染到这里 -->
  </p>
  <button class="btn">渲染省份数据</button>

  <!-- 请求库axios → 和服务器通信 -->
  <!-- 
      axios库地址: https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js
      省份数据地址: http://hmajax.itheima.net/api/province
      需求: 点击按钮 通过 axios 获取省份数据 并渲染
     -->
  <!-- 使用axios记得先导包 -->
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    const btn = document.querySelector('.btn')
    const province = document.querySelector('.province')

    btn.addEventListener('click', function () {
      axios({
        // 发请求:调用axios函数,传入配置
        url: 'http://hmajax.itheima.net/api/province'
      }).then(res => {
        // 接收并使用数据:通过点语法调用then方法,传入回调函数并定义形参(比如res)
        province.innerHTML = res.data.list.join('-')
      })
    })
  </script>
</body>

</html>

2. 认识URL

<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>认识URL</title>
</head>

<!-- 
  URL定义:
    URL 代表着是统一资源定位符(Uniform Resource Locator)。
    URL 无非就是一个给定的独特资源在 Web 上的地址。
    理论上说,每个有效的 URL 都指向一个唯一的资源。
    这个资源可以是一个 HTML 页面,一个 CSS 文档,一幅图像,等等。
  URL概念:资源在网络上的地址
  URL常见组成部分:举例(http://hmajax.itheima.net/api/news)
    协议(http:)、规定了浏览器发送及服务器返回内容的格式,常见的有 http、https
    域名(hmajax.itheima.net)、域名表示正在请求网络上的哪个服务器
    资源路径(api/news)、资源在服务器的位置,资源和路径的对应关系由服务器决定
-->

<body>
  <button class="btn">获取新闻数据并输出</button>
  <!-- 1. 导包 -->
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <!-- 
    新闻地址:http://hmajax.itheima.net/api/news
    需求: 点击按钮 通过axios 获取新闻数据 并输出
  -->
  <script>
    axios({
      url: 'http://hmajax.itheima.net/api/news'
    }).then(res => {
      console.log(res)
      console.log(res.data)
      console.log(res.data.data)
    })
  </script>
</body>

</html>

3. URL查询参数介绍及使用

<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<!-- 
  URL查询参数是提供给网络服务器的额外参数。
  这些参数是用 & 符号分隔的键/值对列表。

  查询参数的格式:?隔开之后使用&分隔的键值对列表
-->

<body>
  <button class="btn">获取城市数据并渲染</button>
  <ul>
    <!-- <li>郑州市</li> -->
  </ul>
  <!-- 1. 导包 -->
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <!-- 
    城市数据:http://hmajax.itheima.net/api/city
      获取某个省所有的城市
      查询参数名:pname
      说明:传递省份或直辖市名比如 北京、广东省…
      http://hmajax.itheima.net/api/city?pname=北京
    需求: 点击按钮 通过axios 获取某个省的城市 并输出
  -->
  <script>
    const btn = document.querySelector('.btn')
    const ul = document.querySelector('ul')
    btn.addEventListener('click', function () {
      axios({
        // 获取河南省所有的城市
        url: 'http://hmajax.itheima.net/api/city?pname=河南省'
      }).then(res => {
        // console.log(res)
        let str = res.data.list.map(itme => {
          return `<li>${itme}</li>`
        }).join('')
        ul.innerHTML = str
      })
    })
  </script>

</body>

</html>

案例1_报错信息百度跳转查询

  <script>
    // try catch尝试执行代码,如果出错,把报错信息发到百度去搜索
    try {
      const p = document.querySelector('p')
      p.innerHTML = 'hhh'
    } catch (error) {
      location.href = `https://www.baidu.com/s?word=${error}`
    }
  </script>

使用axios传递查询参数 params

4. 案例2_地区查询

html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>案例-区县查询</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="./css/index.css">
</head>

<body>
    <div class="container">
        <form class="row">
            <div class="mb-3 col">
                <label class="form-label">省份/直辖市名字</label>
                <!-- 省份输入框 -->
                <input type="text" value="北京" class="form-control province" placeholder="请输入省份名称" />
            </div>
            <div class="mb-3 col">
                <label class="form-label">城市名字</label>
                <!-- 城市输入框 -->
                <input type="text" value="北京市" class="form-control city" placeholder="请输入城市名称" />
            </div>
        </form>
        <!-- 查询按钮 -->
        <button type="button" class="btn btn-primary my-button">查询</button>
        <br><br>
        <p>地区列表: </p>
        <ul class="list-group">
            <!-- 渲染的列表项 -->
            <!-- <li class="list-group-item">东城区</li> -->
        </ul>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js"></script>
    <!-- 案例核心代码 -->
    <script src="./js/index.js"></script>
</body>

</html>

js

/*
  http://hmajax.itheima.net/api/area
  传递某个省份内某个城市的所有区县
  查询参数名:pname、cname
  pname说明:传递省份或直辖市名,比如 北京、湖北省…
  cname说明:省份内的城市,比如 北京市、武汉市…
  核心功能:查询地区,并渲染列表
*/

const province = document.querySelector(".province");
const city = document.querySelector(".city");
const myBtn = document.querySelector(".my-button");
const listGroup = document.querySelector(".list-group");

myBtn.addEventListener("click", function () {
  const pname = province.value;
  const cname = city.value;
  axios({
    // 1. & 拼接查询参数
    // url: `http://hmajax.itheima.net/api/area?pname=${province.value}&cname=${city.value}`,

    // 2. params
    url: `http://hmajax.itheima.net/api/area`,
    params: {
      /* pname: province.value,
      cname: city.value, */
      // ES6对象属性赋值的简写: 属性名和变量名相同
      pname,
      cname,
    },
  }).then((res) => {
    // console.log(res);
    let str = res.data.list
      .map((item) => {
        return `
        <li class="list-group-item">${item}</li>
      `;
      })
      .join("");
    listGroup.innerHTML = str;
  });
});

5. 常用请求方法和数据提交

params:查询参数。GET 请求; 对应query,

data:提交数据,用于设置请求体的数据。通常用于 POST、PUT 和 PATCH 请求,对应body。

6. axios错误处理

<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<!-- 
  1. 常用请求方法和数据提交
   请求方法表明对服务器资源执行的操作。最为常用的是POST提交数据和GET查询数据
    GET 获取数据(默认方法)
    POST 提交数据
    PUT 修改数据(全部)
    DELETE 删除数据
    PATCH 修改数据(部分)
-->
<!-- 
  2. axios错误处理
-->

<body>
  <button class="btn">注册用户</button>
  <!-- 1. 导包 -->
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <!-- 
    请求地址(url):http://hmajax.itheima.net/api/register
    注册用户
    请求方法:POST
    参数:username,password
    说明:username 用户名(中英文和数字组成, 最少8位),password 密码(最少6位)
    需求:点击按钮 通过axios提交用户数据,完成用户注册
   -->
  <script>

    document.querySelector('.btn').addEventListener('click', function () {
      axios({
        // url:请求的URL地址
        url: 'http://hmajax.itheima.net/api/register',
        // method:请求的方法,GET可以省略(不区分大小写)
        method: 'post',
        // params:用于设置 URL 的查询参数。通常用于 GET 请求,因为 GET 请求通常将数据作为 URL 的一部分发送。
        // data:提交数据,用于设置请求体的数据。通常用于 POST、PUT 和 PATCH 请求,因为这些请求通常将数据作为请求体发送。
        // 注意:在接口文档上params通常对应query,data通常对应body。
        data: {
          username: 'Tom1Jerry',
          password: '123456abc'
        }
      }).then(res => {
        console.log(res.data)
        alert(res.data.message)
      }).catch(error => {
        // 在then方法的后面,通过点语法调用catch方法,传入回调函数并定义形参
        // 失败的结果
        console.log(error)
        alert(error.response.data.message)
      })
    })

    axios({
      // 请求选项
    }).then(res => {
      // 处理数据
    }).catch(err => {
      // 处理错误
    })
    // status:200,statusText:'OK' 发请求成功
    // status:400 服务器报错 404页面没找到 catch抓错
  </script>

</body>

</html>

7. HTTP协议-请求报文

8. HTTP协议-响应报文

<!-- 
  2XX 表示成功
  3XX 表示重定向
  4XX 表示客户端错误
  5XX 表示服务端错
  ​
  常见的状态码:
  200 最喜欢见到的状态码,表示请求成功
  301 永久重定向
  302 临时重定向
  304 自上次请求,未修改的文件
  400 错误的请求
  401 未被授权,需要身份验证,例如token信息等等
  403 请求被拒绝
  404 资源缺失,接口不存在,或请求的文件不存在等等
  500 服务器端的未知错误
  502 网关错误
  503 服务暂时无法使用
-->

9. 接口文档

<body>
  <button class="btn">用户登录</button>
  <!-- 1. 导包 -->
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

  <!-- 
    接口文档:由后端提供的描述接口的文章
    接口:使用AJAX和服务器通讯时,使用的 URL,请求方法,以及参数
  -->
  <script>
    document.querySelector('.btn').addEventListener('click', function () {
      axios({
        url: 'https://hmajax.itheima.net/api/login',
        method: 'post',
        data: {
          username: 'Tom1Jerry',
          // password: '123456abc'
          password: '123456ac'
        }
      }).then(res => {
        console.log(res)
        alert(res.data.message)
      }).catch(error => {
        alert(error.response.data.message)
      })
    })
  </script>

</body>

常见的接口管理平台

企业在进行软件开发时,通常会使用接口管理平台来帮助管理和维护应用程序接口(API)。这些平台可以帮助开发者设计、测试、部署和监控 API,从而提高开发效率和软件质量。以下是一些常用的接口管理平台:

1. Postman:Postman 是一款广泛使用的 API 开发和测试工具,它支持多种 HTTP 方法和自定义请求头,可以方便地发送各种类型的请求。Postman 还提供了丰富的功能,如接口文档生成、接口测试脚本编写、接口监控、Mock 服务器等。

2. Swagger:Swagger 是一款开源的 API 设计工具,它可以帮助开发者设计、构建、记录和使用 RESTful API。Swagger 提供了一种易于理解的 API 设计语言,可以生成可读性强的 API 文档。

3. YApi:YApi 是一款由去哪儿网开源的、面向接口开发的、功能强大的、易于上手的开源接口管理工具。它提供接口的管理、测试、mock、监控等功能,可以大大提高开发效率。

4. Apifox:Apifox 是一款出色的 API 设计和管理工具,主要服务于 API 的开发、测试、模拟、文档生成和团队协作等需求。

5. Eolinker: Eolinker是一个专业的API管理平台,旨在帮助开发团队更好地设计、开发和管理API。它提供了一系列功能和工具,以简化API的创建、文档编写、测试、版本管理和安全控制等任务。

10. 案例3-用户登录

document.querySelector(".btn-login").addEventListener("click", function () {
  const username = document.querySelector(".username").value;
  const password = document.querySelector(".password").value;
  axios({
    url: "https://hmajax.itheima.net/api/login",
    method: "post",
    data: {
      username,
      password,
    },
  })
    .then((res) => {
      if (res.status == 200) {
        myAlert(res.data.message, true);
      }
    })
    .catch((error) => {
      // console.log(error);
      myAlert(error.response.data.message, false);
    });
});

11. form-serialize插件

<body>
  <form action="javascript:;" class="example-form">
    <input type="text" name="uname" />
    <br>
    <input type="text" name="pword" />
    <br>
    <input type="submit" class="submit" value="提交" />
  </form>
  <!-- 1. 导包 -->
  <script src="./lib/form-serialize.js"></script>
  <script>
    /*
      form-serialize 快速收集表单元素的值
      1. 表单元素需要设置name属性,会成为对象的属性名
      2. name属性设置的值和接口文档一致即可
      3. hash 设置生成的数据格式
        - true:js对象(常用)
        - false:查询字符串
      4. empty 是否收集空数据
        - true:收集空数据,保证格式和表单一致(推荐用法)
        - false:不收集空数据,格式和表单不一定一致(不推荐)

      const form = document.querySelector('.example-form')
      const data = serialize(form, { hash: true, empty: true })
    */

    document.querySelector('.submit').addEventListener('click', function () {
      const form = document.querySelector('.example-form')
      const data = serialize(form, { hash: true, empty: true })
      console.log(data)
    })
  </script>
</body>

12. 案例4-用户登录(整合form-serialize)

document.querySelector(".btn-login").addEventListener("click", function () {
  const form = document.querySelector("form");
  const data = serialize(form, { hash: true, empty: true });
  axios({
    url: "https://hmajax.itheima.net/api/login",
    method: "post",
    data,
  })
    .then((res) => {
      if (res.status == 200) {
        // myAlert(res.data.message, true);
        alert(res.data.message);
      }
    })
    .catch((error) => {
      // console.log(error);
      // myAlert(error.response.data.message, false);
      alert(error.response.data.message);
    });
});

13. 作业

13.1 问答机器人

  <script>
    // 获取机器人回答消息 - 接口地址: http://hmajax.itheima.net/api/robot
    // 查询参数名: spoken
    // 查询参数值: 我说的消息

    /*
      在输入框中输入信息,点击发送或者按回车键能够将发送消息展示到页面
      发送消息以后,机器人回复消息并将其展示到页面上
    */
    /* 
      思路分析
      发送消息
      1.1 绑定点击事件
      1.2 绑定keyup事件
      展示发送信息
      2.1 获取输入框内容,并显示到页面上
      2.2 清空输入框内容
      2.3 让滚动条始终在底部
      展示机器人回复信息
      3.1 调用接口, 获取机器人返回消息
      3.2 把机器人消息设置到页面上
      3.3 让滚动条始终在底部
    */
    const chatInput = document.querySelector('.chat_input')
    const chatList = document.querySelector('.chat_list')
    const chatDiv = document.querySelector('.chat')
    const sendImg = document.querySelector('.send_img')

    function chat() {
      // spoken 要发给机器人的聊天消息
      const spoken = chatInput.value

      const newLi1 = document.createElement('li')
      newLi1.classList.add('right')
      newLi1.innerHTML = `
        <span>${spoken}</span>
        <img src="./assets/me.pngalt="">
      `
      chatList.append(newLi1)
      // 让滚动条始终在底部
      chatDiv.scrollTop = chatDiv.scrollHeight
      // 输入框清空
      chatInput.value = ''

      axios({
        url: 'https://hmajax.itheima.net/api/robot',
        // get
        params: {
          spoken,
        }

      }).then(res => {

        // console.log(res)
        // console.log(res.data.data.info)
        // console.log(res.data.data.info.text)

        const newLi2 = document.createElement('li')
        newLi2.classList.add('left')
        newLi2.innerHTML = `
          <img src="./assets/you.png" alt="">
          <span>${res.data.data.info.text}</span>
        `
        chatList.append(newLi2)

        // 让滚动条始终在底部
        chatDiv.scrollTop = chatDiv.scrollHeight

      }).catch(error => {
        console.log(error)

        // console.log(error.response.data.message)
      })
    }

    // 回车键发送信息
    chatInput.addEventListener('keyup', function (e) {
      // console.log(e.key)
      if (e.key === 'Enter') {
        // console.log(11)
        chat()
      }
    })

    // 点击发送按钮发送信息
    sendImg.addEventListener('click', function () {
      chat()
    })
  </script>

13.2 必要商城搜索功能

// 目标: 点击搜索按钮(放大镜), 根据关键词搜索商品并铺设列表
const searchInp = document.querySelector('#searchInp')
const searchButton = document.querySelector('#searchButton')

searchButton.addEventListener('click', function () {
	const searchText = searchInp.value
	const categoryList = document.querySelector('.category-list')
	axios({
		url: `https://hmajax.itheima.net/api-s/searchGoodsList`,
		params: {
			searchText,
		},
	}).then((res) => {
		console.log(res.data.list.data[0])

		let str = res.data.list.data
			.map((item) => {
				const { evalNum, goodsName, goodsPrice, imageUrl, newStatus, sellCount } = item
				return `
					<li>
						<a>
							<i><img src="${imageUrl}"></i>
							<div class="supplier">祖玛珑同原料制造商</div>
							<div class="title">${goodsName}</div>
							<div class="priceBox">
								<div class="price" price="${goodsPrice}"><span style="color: #F7A701; font-size: 12px; padding-left: 2px;">¥<span
											style="font-size:18px;">${goodsPrice}</span></span></div>
								<div class="mack"><span style="color:#FB4C81;background:#FFFFFF; border-color:#FB4C81">一起拼</span><span
										style="color:#FFFFFF;background:#AB7FD1; border-color:#AB7FD1">精选</span></div>
							</div>
							<div class="evaluate">${evalNum}条好评</div>
						</a>
					</li>
				`;
			})
			.join("");
		categoryList.innerHTML = str;
	});
})

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

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

相关文章

Javaweb梳理21——Servlet

Javaweb梳理21——Servlet 21 Servlet21.1 简介21.3 执行流程21.4 生命周期4.5 方法介绍21.6 体系结构21.7 urlPattern配置21.8 XML配置 21 Servlet 21.1 简介 Servlet是JavaWeb最为核心的内容&#xff0c;它是Java提供的一门动态web资源开发技术。使用Servlet就可以实现&…

如何在MySQL中计算两个日期的间隔天数

目录 1. DATEDIFF函数2. TIMESTAMPDIFF函数3. PERIOD_DIFF函数4. 函数对比 在MySQL 5.7中&#xff0c;计算两个日期之间的间隔天数是一项常见的任务。 1. DATEDIFF函数 DATEDIFF函数可以直接计算两个日期之间的天数差异。 -- 计算2024年1月1日和2024年1月10日之间的天数差异 …

React Native学习笔记(一)

一、创建ReactNative项目 1.1、指令创建 React Native 有一个内置的命令行界面&#xff0c;你可以用它来生成一个新项目。您可以使用 Node.js 附带的 访问它&#xff0c;而无需全局安装任何内容。让我们创建一个名为“AwesomeProject”的新 React Native 项目 npx react-nati…

VSCode中“Run Code”运行程序时,终端出现中文乱码解决方法

问题描述 在VSCode中“Run Code”运行程序时&#xff0c;终端输出结果出现中文乱码现象&#xff1a; 解决方法 1. 检查系统cmd的默认编码 查看Windows终端当前编码方式的命令&#xff1a; chcp输出结果是一段数字代码&#xff0c;如936&#xff0c;这说明当前的cmd编码方式…

Hive学习基本概念

基本概念 hive是什么&#xff1f; Facebook 开源&#xff0c;用于解决海量结构化日志的数据统计。 基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供类SQL查询功能 本质是将HQL转化为MapReduce程序。 Hive处理的数据存储在H…

css选择当前元素前面的一个元素

选择text-danger前面的ant-divider: .ant-divider:has( .text-danger) {display: none; }

嵌入式硬件面试题【经验】总结----会不断添加更新

目录 引言 一、电阻 1、电阻选型时一般从那几个方面考虑 2、上拉电阻的作用 3、PTC热敏电阻作为电源电路保险丝的工作原理 4、如果阻抗不匹配&#xff0c;有哪些后果 二、电容 1、电容选型一般从哪些方面进行考虑? 2、1uf的电容通常来滤除什么频率的信号 三、三极管…

阿里云人工智能平台(PAI)免费使用教程

文章目录 注册新建实例交互式建模(DSW)注册 注册阿里云账号进行支付宝验证 新建实例 选择资源信息和环境信息,填写实例名称 资源类型需要选择公共资源,才能使用资源包进行抵扣。目前每月送250计算时。1 * NVIDIA A10 8 vCPU 30 GiB 1 * 24 GiB1 * NVIDIA V100 8 vCPU 32 Gi…

泷羽sec-burp功能介绍(1) 学习笔记

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

不同云计算网络安全等级

导读云计算的本质是服务&#xff0c;如果不能将计算资源规模化/大范围的进行共享&#xff0c;如果不能真正以服务的形式提供&#xff0c;就根本算不上云计算。 等级保护定级流程 定级是开展网络安全等级保护工作的 “基本出发点”&#xff0c;虚拟化技术使得传统的网络边界变…

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录

前言 我这边一直用的electron-vue框架是基于electron 21版本的&#xff0c;electron 29版本追加了很多新功能&#xff0c;但是这些新功能对开发者不友好&#xff0c;对electron构建出来的软件&#xff0c;使用者更安全&#xff0c;所以&#xff0c;我暂时不想研究electron 29版…

【工具变量】上市公司企业金融错配程度数据(1999-2022年)

一、测算方式&#xff1a;参考C刊《科研管理》赵晓鸽&#xff08;2021&#xff09;老师的研究&#xff0c;对于金融错配的测算&#xff0c;采用企业资本成本偏离行业平均资本成本的程度来作为企业金融错配的代理变量。其中使用财务费用中的利息支出与扣除了应付账款后的负债总额…

Qt入门6——Qt窗口

目录 1. QMenuBar 菜单栏 2. QToolBar 工具栏 3. QStatusBar 状态栏 4. QDockWidget 浮动窗口 5. QDialog 对话框 5.1 Qt内置对话框 1. QMessageBox 消息对话框 2. QColorDialog 颜色对话框 3. QFileDialog 文件对话框 4. QFontDialog 字体对话框 5. QInputDialo…

A058-基于Spring Boot的餐饮管理系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

【VUE3】npm : 无法加载文件 D:\Program\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。

npm : 无法加载文件 D:\Program\nodejs\npm.ps1。未对文件 D:\Program\nodejs\npm.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_ Execution_Policies。…

《JavaScript高级程序设计》读书笔记 17

感谢点赞、关注和收藏&#xff01; 这一篇讲内存相关&#xff0c;主要是垃圾回收机制。 垃圾回收 JavaScript 是使用垃圾回收的语言&#xff0c;也就是说执行环境负责在代码执行时管理内存。在 C 和 C等语言中&#xff0c;内存如何管理是开发者来决定的。JavaScript通过自动内…

c语言——数组名该如何理解呢?

一般情况下&#xff0c;数组名表示首元素地址&#xff0c;以下2种除外&#xff1a; ①、sizeof(数组名) 表示整个数组 ※只有数组名的情况 sizeof&#xff08;数组名i&#xff09; 就不能表示整个数组 ②、&数组名 表示整个数组&#xff0c;取的是整个数…

IDL学习笔记(一)数据类型、基础运算、控制语句

近期&#xff0c;需要用到modis数据批量预处理&#xff0c;于是重新学习idl,感谢郭师兄推荐&#xff0c;以及张洋老师的详细教导。特以此为学习笔记&#xff0c;望学有所成。 IDL学习笔记&#xff08;一&#xff09; 数据类型数据类型创建数组类型转换函数代码输出print往文件…

数据结构——排序第三幕(深究快排(非递归实现)、快排的优化、内省排序,排序总结)超详细!!!!

文章目录 前言一、非递归实现快排二、快排的优化版本三、内省排序四、排序算法复杂度以及稳定性的分析总结 前言 继上一篇博客基于递归的方式学习了快速排序和归并排序 今天我们来深究快速排序&#xff0c;使用栈的数据结构非递归实现快排&#xff0c;优化快排&#xff08;三路…

【语音识别】Zipformer

Zipformer 是kaldi 团队于2024研发的序列建模模型。相比较于 Conformer、Squeezeformer、E-Branchformer等主流 ASR 模型&#xff0c;Zipformer 具有效果更好、计算更快、更省内存等优点。并在 LibriSpeech、Aishell-1 和 WenetSpeech 等常用数据集上取得了当时最好的 ASR 结果…