当前位置: 首页 > news >正文

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

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、cnamepname说明:传递省份或直辖市名,比如 北京、湖北省…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. paramsurl: `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.valueconst 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',// getparams: {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.valueconst 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 } = itemreturn `<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;">¥<spanstyle="font-size:18px;">${goodsPrice}</span></span></div><div class="mack"><span style="color:#FB4C81;background:#FFFFFF; border-color:#FB4C81">一起拼</span><spanstyle="color:#FFFFFF;background:#AB7FD1; border-color:#AB7FD1">精选</span></div></div><div class="evaluate">${evalNum}条好评</div></a></li>`;}).join("");categoryList.innerHTML = str;});
})

相关文章:

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

1. AJAX介绍及axios基本使用 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content&q…...

vue2怎么写computed属性

在Vue 2中&#xff0c;computed属性是基于它们的响应式依赖进行缓存的计算属性。只有当计算属性依赖的响应式数据发生变化时&#xff0c;计算属性才会重新计算。以下是如何在Vue 2中定义computed属性的步骤&#xff1a; 定义响应式数据&#xff1a;首先&#xff0c;你需要在组件…...

【从零开始的LeetCode-算法】35. 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入: …...

vscode + conda + qt联合开发

安装vscode 安装conda 清华大学开源软件镜像(Anaconda下载)_清华大学镜像-CSDN博客 conda create新建一个环境&#xff0c;激活这个环境&#xff0c;然后安装pyside6 pip install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple 安装成功后输入 pip list查看是否安装…...

技术总结(四十三)

1 索引介绍 1.1 什么时MySQL的索引 MySQL官方对于索引的定义:索引是帮助MySQL高效获取数据的数据结构。 ​MySQL在存储数据之外&#xff0c;数据库系统中还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种引用(指向)表中的数据&#xff0c;这样我们就可以通…...

mac终端自定义命令打开vscode

1.打开终端配置文件 open -e ~/.bash_profile终端安装了zsh&#xff0c;那么配置文件是.zshrc&#xff08;打开zsh配置&#xff0c;这里举&#x1f330;使用zsh&#xff09; sudo open -e ~/.zshrc 2.在zshrc配置文件中添加新的脚本&#xff08;这里的code就是快捷命令可以进…...

代码设计:设计模式:应对变化

文章目录 概述1.拆分代码2.解耦3.扩展总结概述 代码的设计模式主要为了应对变化 三种代码设计中应对变化的方式 1.拆分代码 2.解耦 3.扩展 1.拆分代码 减小变化对代码的影响 需要拆分代码的几种情况 1.类或方法的代码量巨大,导致代码可读性降低 2.存在复杂的代码,如…...

Proteus中添加新元件库

手上村&#xff1a;本来打算在Proteus中设计充电电路&#xff0c;发现软件自带的元器件库中没有我想要充电芯片。因此&#xff0c;看了其他大神的导入新的元器件步骤&#xff0c;建立自己的元器件库&#xff01;自己也来记录一波&#xff01;话不多说&#xff0c;赶紧上菜&…...

Hive学习基本概念

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

运维工程师.云计算工程师面试题.考试题

《(全国)运维自动化阶段第1套卷》 卷面总分 题号 单选题 90 题分 得分 一、单选题(每题2分,共计70分;得分____) 1. 下面哪个选项可以做变量名称?( ) A、if B、123abc C、for D、User_Name 2. 哪种数据类型可以做增,删,改相关操作?( ) A、字符串 B、列表 C、元…...

四、初识C语言(4)

一、作业&#xff1a;static修饰局部变量 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> //作业&#xff1a;static修饰局部变量 int sum (int a) {int c 0;static int b 3;c 1;b 2;return (abc); } int main() {int i 0;int a …...

解决爬虫ConnectionResetError出现的问题

提问 使用python进行网络爬虫出现ConnectionResetError如何解决&#xff1f; 解答 遇到ConnectionResetError错误时&#xff0c;通常是因为远程服务器端主动重置了连接。常见原因包括请求频率过高、网络问题或触发了防爬虫机制。为解决该问题&#xff0c;可以采取以下方法&a…...

Qt桌面应用开发 第十天(综合项目二 翻金币)

目录 1.主场景搭建 1.1重载绘制事件&#xff0c;绘制背景图和标题图片 1.2设置窗口标题&#xff0c;大小&#xff0c;图片 1.3退出按钮对应关闭窗口&#xff0c;连接信号 2.开始按钮创建 2.1封装MyPushButton类 2.2加载按钮上的图片 3.开始按钮跳跃效果 3.1按钮向上跳…...

vue跳转以及传参

1.跳转页面的三种方法 <template><button click"twopage">跳转</button> </template><script setup> import { useRouter } from "vue-router"; const router useRouter(); // 获取 router 实例const twopage () > {r…...

Meta Reality Labs的VR/AR投资战略转向:内部视角与市场影响

最近,关于Meta(原Facebook)计划减少其在消费者虚拟现实(VR)领域的投资而增加对增强现实(AR)眼镜的投资的消息引起了广泛讨论。这一战略调整不仅反映了Meta对未来技术趋势的看法,也揭示了公司在面对激烈的市场竞争时所采取的新方向。本文将从不同角度探讨此次战略转向的…...

animate.css和wow.js结合使用实现动画效果

前景 手机站网页实现动画效果&#xff0c;animate.css是一个轻量级的css动画库&#xff0c;提供预定义的动画效果&#xff0c;使用方法参考 Animate.css | A cross-browser library of CSS animations. 问题&#xff1a; 添加好动画后&#xff0c;发现动画会在页面加载后一…...

【大模型】ChatGPT 提示词优化进阶操作实战详解

目录 一、前言 二、ChatGPT 提示词几个基本的优化原则 2.1 明确的提示词 2.1.1 提示词具体而清晰 2.1.1.1操作案例演示 2.2 确定焦点 2.2.1 操作案例演示 2.3 保持提示词的相关性 2.3.1 什么是相关性 2.3.2 提示词相关性操作案例一 2.3.2 提示词相关性操作案例二 三…...

网络安全:攻击和防御练习(全战课), DDos压力测试

XSS 跨站脚本攻击&#xff1a; Cross-site scripting&#xff08;简称xss&#xff09;跨站脚本。 一种网站的安全漏洞的攻击&#xff0c;代码注入攻击的一种。XSS攻击通常指的是通过利用网页开发时留下的漏洞&#xff0c;通过巧妙的方法注入恶意指令代码到网页&#xff0c;使…...

【落羽的落羽 C语言篇】指针·之其五

文章目录 一、冒泡排序二、qsort排序1. qsort使用指南2.回调函数3. qsort函数的模拟实现 一、冒泡排序 冒泡排序的核心思想就是&#xff1a;两两相邻的元素进行比较和交换。 现在&#xff0c;我们想编写一个函数&#xff0c;使它能够运用冒泡排序的原理&#xff0c;由小到大排…...

go的web框架介绍

Go 语言有许多优秀的 Web 框架&#xff0c;适用于不同类型的 Web 应用开发&#xff0c;涵盖从简单的 API 开发到复杂的微服务架构。以下是一些常见的 Go Web 框架&#xff1a; 1. Gin 简介&#xff1a;Gin 是一个高性能的 Go Web 框架&#xff0c;设计目标是让开发者能够以极…...

基于群晖搭建个人图书架-TaleBook based on Docker

前言 在群晖Container Manager中部署失败&#xff0c;转通过ssh部署。 一、准备工作 名称备注群晖SSH“终端机和SNMP”中启用SSH软件secureCRT等docker-compose.ymlGithub下载并修改 二、过程 2.1 创建本地文件夹 本地路径为&#xff1a; /docker/Calibre/data 2.2 下载d…...

redis哨兵安装部署

1、下载redis安装包&#xff0c;上传到3台服务器上 redis.tar.gz 解压处理 2、分别编译安装 cd redis/src make make install 3、配置哨兵模式 修改redis.conf文件内容 主节点 和 从节点都需要修改 bind 0.0.0.0 -::1 或者真实的ip地址 protected-mode no port 637…...

JVS低代码里表单与表格不同数据关联场景的实现方法

在业务处理与数据管理中&#xff0c;表单与表格模型的数据关联及同步保存是一个常见的需求。特别是在涉及多个数据模型且字段存在关联或差异时&#xff0c;合理设计表单与表格之间的数据交互逻辑特别重要。接下来小编以JVS低代码系统为例&#xff0c;详细介绍两种不同场景下&am…...

NaviveUI框架的使用 ——安装与引入(图标安装与引入)

文章目录 概述安装直接引入引入图标样式库 概述 &#x1f349;Naive UI 是一个轻量、现代化且易于使用的 Vue 3 UI 组件库&#xff0c;它提供了一组简洁、易用且功能强大的组件&#xff0c;旨在为开发者提供更高效的开发体验&#xff0c;特别是对于构建现代化的 web 应用程序。…...

Cannot resolve symbol ‘ActivityThread‘ | Android 语法

背景 ActivityThread 是 Android 系统内部使用的一个类,它位于 android.app 包中,但在 Android SDK 的公共 API 中并没有公开。 由于 ActivityThread 是隐藏的内部类,因此在编写单元测试或功能开发时,无法直接引用它。可以使用反射来访问内部 API,或者使用依赖注入的方式…...

OpenSSH-9.9p1 OpenSSL-3.4.0 升级步骤详细

前言 收到漏洞扫描通知 OpenSSH 安全漏洞(CVE-2023-38408) OpenSSH 安全漏洞(CVE-2023-51385) OpenSSH 安全漏洞(CVE-2023-51384) OpenSSH 安全漏洞(CVE-2023-51767) OpenSSH 安全漏洞(CVE-2023-48795) OpenSSH&#xff08;OpenBSD SecureShell&#xff09;是加拿大OpenBSD计划…...

python 练习题

目录 1&#xff0c;输入三个整数&#xff0c;按升序输出 2&#xff0c;输入年份及1-12月份&#xff0c;判断月份属于大月&#xff0c;小月&#xff0c;闰月&#xff0c;平月&#xff0c;并输出本月天数 3&#xff0c;输入一个整数&#xff0c;显示其所有是素数因子 4&#…...

数学建模——Topsis法

数模评价类&#xff08;2&#xff09;——Topsis法 概述 Topsis:Technique for Order Preference by Similarity to Ideal Solution 也称优劣解距离法&#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版…...

github仓库自动同步到gitee

Github Actions是Github推出的自动化CI/CD的功能&#xff0c;我们将使用Github Actions让Github仓库同步到Gitee 同步的原理是利用 SSH 公私钥配对的方式拉取 Github 仓库的代码并推送到 Gitee 仓库中&#xff0c;所以我们需要以下几个步骤 生成 SSH 公私钥添加公钥添加私钥配…...