ECMAScript 7~10 新特性
ECMAScript 7 新特性
ECMAScript 6 新特性(一)
ECMAScript 6 新特性(二)
ECMAScript 7~10 新特性(本文)
1. 数组方法
Array.prototype.includes()
用来检测数组中是否包含指定元素,返回布尔值(存在返回 true,不存在返回 false)
const mingzhu = ["西游记", "水浒传", "三国演义", "红楼梦"];console.log(mingzhu.includes("西游记")); // true
console.log(mingzhu.indexOf("西游记"));
console.log(mingzhu.includes("斗破苍穹")); // false
与
indexOf()
方法类似,但是indexOf()
方法返回的是第一个匹配项的索引,没有则返回 -1。
2. 指数操作符
在 ES7 中引入指数运算符 **
,用来实现幂运算,功能与 Math.pow()
结果相同
console.log(2 ** 3);
console.log(Math.pow(2, 3)); // 与上面等价
ECMAScript 8 新特性
1. async 和 await
async 和 await 两种语法结合可以让异步代码像同步代码一样,解决异步编程的方案。
1.1 async 函数
async 函数的返回值为 promise 对象
-
返回的结果不是 Promise 对象,则函数的返回结果就是成功的 Promise 对象
async function fn() {return 1; // 返回值不为 Promise 对象 } console.log(fn()); // Promise {<resolved>: 1}
-
抛出错误,返回结果是一个失败的 Promise 对象。
async function fn() {throw new Error('出错了'); } console.log(fn());
-
返回结果是 Promise 对象,则函数的返回结果就是这个 Promise 对象。
async function fn() {return new Promise((resolve, reject) => {// resolve('成功');reject("失败");}); } console.log(fn());
1.2 await 表达式
- await 必须写在 async 函数中
- await 右侧的表达式一般为 promise 对象
- await 返回的是 promise 成功的值
- await 的 promise 失败了,就会抛出异常,需要通过
try...catch
捕获处理
const p = new Promise((resolve, reject) => {// resolve('成功');reject("失败");
});
async function main() {try {let result = await p;console.log(result);} catch (err) {console.log(err);}
}
1.3 结合使用
async 和 await 结合使用发送 AJAX 请求
function sendAJAX(url) {return new Promise((resolve, reject) => {// 1. 创建对象const xhr = new XMLHttpRequest();// 2. 初始化xhr.open("GET", url);// 3. 发送xhr.send();// 4. 事件绑定xhr.onreadystatechange = function () {if (xhr.readyState === 4) {if (xhr.status >= 200 && xhr.status < 300) {resolve(xhr.responseText);} else {reject(new Error(xhr.statusText));}}};});
}// then 方法测试
// sendAJAX("https://api.oick.cn/dutang/api.php").then(
// (value) => { console.log(value); },
// (reason) => { console.error(reason); }
// );// async 和 await 方法测试
async function main() {let result = await sendAJAX("https://api.oick.cn/dutang/api.php");console.log(result);
}
main();
2. 对象方法扩展
2.1 Object.values 和 Object.entries
-
Object.values()
方法返回一个给定对象的所有可枚举属性值的数组 -
Object.entries()
方法返回一个给定对象自身可遍历属性[key, value]
的数组将对象转换为数组
const school = {name: "学院",address: "河南省郑州市",
};// 获取对象所有的键
console.log(Object.keys(school)); // ["name", "address"]// 获取对象所有的值
console.log(Object.values(school)); // ["学院", "河南省郑州市"]// entries 方法返回一个数组,数组的每一项是一个键值对数组
console.log(Object.entries(school)); // [["name", "学院"], ["address", "河南省郑州市"]]
2.2 Object.getOwnPropertyDescriptors
描述对象所有属性的详细信息
对象中属性值的基本配置信息有
配置 值 说明 value 属性的值 writable true/false 是否可写 enumerable true/false 是否可枚举 configurable true/false 是否可配置 const obj = Object.create(null, {name: {value: "张三",writable: true,enumerable: true,configurable: true,}, });
ECMAScript 9 新特性
1. Rest/spread 参数
Rest 参数与 spread 扩展运算符在 ES6 中已经引入,不过 ES6 中只针对于数组,在 ES9 中为对象提供了像数组一样的 rest 参数和扩展运算符。
-
Rest 参数
function connect({ host, port, ...user }) {console.log(host);console.log(port);console.log(user);// { username: 'admin', password: '123456', type: 'admin' } }connect({host: "localhost",port: 8080,username: "admin",password: "123456",type: "admin", });
-
扩展运算符
const obj1 = { a: 1, b: 2, c: 3 }; const obj2 = { d: 4, e: 5 };const newObj = { ...obj1, ...obj2 };console.log(newObj); // { a: 1, b: 2, c: 3, d: 4, e: 5 }
2. 正则表达式
2.1 命名捕获分组
ES9 允许命名捕获组使用符号 ?
,这样获取捕获结果可读性更强
let str = "<a href='http://www.baidu.com'>百度</a>";// 需求:提取 url 与 文本内容// 1. 使用正则匹配
// let reg = /<a href='(.*)'>(.*)<\/a>/;
// const result = reg.exec(str);
// console.log(result);// 2. 使用命名捕获分组
let reg = /<a href='(?<url>.*)'>(?<text>.*)<\/a>/;
const result = reg.exec(str);
console.log(result.groups.url);
console.log(result.groups.text);
exec
方法是 JavaScript 中正则表达式对象的一个方法,用于在字符串中执行搜索匹配操作。它的作用是根据正则表达式查找字符串中的匹配项,并返回一个结果数组或null
。
在使用正则表达式进行匹配时,括号
()
在正则表达式中被称为捕获组(capturing group)。捕获组的作用是将其括号内的内容作为一个整体进行匹配,并且在匹配成功后,可以将这部分内容单独提取出来。
2.2 反向断言
ES9 支持反向断言,通过对匹配结果前面的内容进行判断,对匹配进行筛选。
let str = "helloworld啊吧啊吧4545啦啦啦";// 正向断言
// const reg = /\d+(?=啦)/;
// const result = reg.exec(str);// 反向断言
const reg = /(?<=吧)\d+/;
const result = reg.exec(str);console.log(result);
2.3 dotAll 模式
正则表达式中点 .
匹配除回车外的任何单字符,标记 s 改变这种行为,允许行终止符出现
let str = `<ul><li><a>肖申克的救赎</a><p>上映时间:1994-09-10</p></li><li><a>阿甘正传</a><p>上映时间:1994-06-05</p></li></ul>`;const reg = /<li>.*?<a>(.*?)<\/a>.*?<p>(.*?)<\/p>/gs;let result;
let data = [];
while ((result = reg.exec(str))) {// console.log(result);data.push({ title: result[1], time: result[2] });
}
console.log(data);
ECMAScript 10 新特性
1. 对象扩展方法
Object.fromEntries()
方法,将键值对数组转换为对象,与 ES8 中 [Object.entries](#2.1 Object.values 和 Object.entries) 方法相互为逆运算
const result = Object.fromEntries([ ["name", "Tom"], ["age", 25] ]);console.log(result); // { name: 'Tom', age: 25 }
// Map 对象
const m = new Map();
m.set("name", "Tom");
m.set("age", 18);const result = Object.fromEntries(m);
console.log(result); // { name: 'Tom', age: 18 }
2. 字符串方法扩展
trimStart()
方法用于去除字符串开头的空白字符
trimEnd()
方法用于去除字符串结尾的空白字符
let str = " hello world ";
console.log(str);
console.log(str.trimStart());
console.log(str.trimEnd());
3. 数组方法扩展
3.1 flat
Array.prototype.flat(depth)
方法将多维数组转换为低维数组
- depth 参数:指定要提取嵌套数组的结构深度,默认值为 1,若将值设为
Infinity
则提取到最大深度。
// 示例1:默认深度为1
const arr1 = [1, 2, [3, 4]];
console.log(arr1.flat()); // [1, 2, 3, 4]// 示例2:深度为2
const arr2 = [1, 2, [3, 4, [5, 6]]];
console.log(arr2.flat(2)); // [1, 2, 3, 4, 5, 6]// 示例3:使用 Infinity 展平所有嵌套数组
const arr3 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
console.log(arr3.flat(Infinity)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]// 示例4:处理空项
const arr4 = [1, 2, , 4, 5];
console.log(arr4.flat()); // [1, 2, 4, 5]
3.2 flatMap
Array.flatMap(callback(currentValue[, index[, array]])[, thisArg])
类似于 map 和 flat 方法的结合体,如果 map 方法的回调函数返回的是数组,则会展开返回的数组(降低维度)
callback
:生成新数组元素的函数,使用三个参数:currentValue
:当前正在数组中处理的元素。index
(可选):数组中正在处理的当前元素的索引。array
(可选):被调用的map
数组。
thisArg
(可选):执行callback
函数时,用于this
的值。
const arr = [1, 2, 3, 4, 5];
const result = arr.flatMap((item) => [item * 10]);
console.log(result); // [10, 20, 30, 40, 50]
4. Symbol 扩展
Symbol.prototype.description
用来描述 Symbol 的用途,可以用来在控制台中显示 Symbol 的信息。
let s = Symbol("学院");
console.log(s.description); // 学院
相关文章:
ECMAScript 7~10 新特性
ECMAScript 7 新特性 ECMAScript 6 新特性(一) ECMAScript 6 新特性(二) ECMAScript 7~10 新特性(本文) 1. 数组方法 Array.prototype.includes() 用来检测数组中是否包含指定元素,返回布尔值&…...
leetcode_1. 两数之和_java
1. 两数之和https://leetcode.cn/problems/two-sum/ 1、题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你…...
Mysql索引(四)
1、B树:B树即平衡查找树,一般理解为平衡多路查找树,也称为B-树、B_树。是一种自平衡树状数据结构,能对存储的数据进行O(log n)的时间复杂度进行查找、插入和删除; 1)每个节点占用一个盘块的磁盘空间&#x…...
力扣——【1991. 找到数组的中间位置】
#前缀和思想 主要利用递推的思想,将数列的前n!项和存到一个新数列中,递推公式可能需要自己推导 一个数列的值等于另一个数列的第i个元素加上这一个数列的第i-1个元素 同时需要初始化这个数列的第一个元素另一个数列的第一个元素 #思路 本…...
在 Linux 系统(ubuntu/kylin)上安装 Docker
在 Linux 系统上安装 Docker 的步骤如下(以 Ubuntu/Debian 和 CentOS/RHEL 为例): 请用./check-config config检查内核是否支持,necessarily 必须全部enable。 以下是脚本自行复制运行: #!/usr/bin/env sh set -eEXITCODE=0# bits of this were adapted from lxc-checkco…...
【实证分析】数智化转型对制造企业全要素生产率的影响及机制探究(1999-2023年)
数智化转型是实现数字经济与实体经济深度融合,推动制造企业高质量可持续发展的必然选择,也是加快新质生产力发展的重要抓手。参照宋冬林(2025)的做法,对来自科技进步与对策《数智化转型对制造企业全要素生产率的影响及机制探究——基于中国制…...
lower_bound
在C中,lower_bound 返回的是一个迭代器(iterator),而不是直接的下标位置。因此,为了得到数组中的索引(即 pos1),你需要用返回的迭代器减去数组的起始地址(num)…...
biblatex 的 Biber 警告:tex文件运行无法生成参考文献和目录
原因:使用了 biblatex 管理参考文献,但未运行 biber 生成参考文献数据。 解决:更新 LaTeX Workshop 配置 修改你的 settings.json,添加 biber 工具并更新编译流程: {"latex-workshop.latex.tools&…...
解锁 MCP:模型上下文协议的介绍与应用,技术解析与应用场景
欢迎来到涛涛聊AI,这几天MCP很火,咱们一起学习下吧。 一、什么是 MCP MCP,即 Model Context Protocol(模型上下文协议),是由 Anthropic 推出的一个具有创新性的开放协议 。它的核心目标是统一 LLM 应用与外部数据源和工具之间的通信方式,为 AI 开发打造标准化的上下文…...
十二种存储器综合对比——《器件手册--存储器》
存储器 名称 特点 用途 EEPROM 可电擦除可编程只读存储器,支持按字节擦除和写入操作,具有非易失性,断电后数据不丢失。 常用于存储少量需要频繁更新的数据,如设备配置参数、用户设置等。 NOR FLASH 支持按字节随机访问&…...
对重大保险风险测试的算法理解
今天与同事聊到重大保险风险测试,借助下面链接的文章, 谈IFRS 17下的重大保险风险测试 - 知乎 谈一下对下图这个公式的理解。 尤其是当看到下面这段文字的解释时,感觉有些算法上的东西,需要再澄清一些。 首先,上面文…...
App Cleaner Pro for Mac 中 Mac软件卸载工具
App Cleaner Pro for Mac 中 Mac软件卸载工具 一、介绍 App Cleaner & Uninstaller Pro Mac破解,是一款Mac软件卸载工具,残余垃圾清除工具!可以卸载应用程序或只删除不需要的服务文件,甚至可以删除以前删除的应用程序中的文…...
【操作系统】线程同步:原理、方法与实践
一、线程同步的核心概念 1.1 为什么需要线程同步? 在多线程环境中,当多个线程并发访问共享资源(如内存、文件、数据库等)时,可能会引发数据竞争(Race Condition),导致数据不一致或…...
vue实现二维码生成器和解码器
vue实现二维码生成器和解码器 1.生成基本二维码:根据输入的value生成二维码。 2.可定制尺寸:通过size调整大小。 3.颜色和背景色:设置二维码颜色和背景。 4.静区(quiet zone)支持:通过quietZone调整周围的…...
p2p的发展
PCDN(P2P内容分发网络)行业目前处于快速发展阶段,面临机遇与挑战并存的局面。 一、发展机遇 技术融合推动 边缘计算与5G普及:5G的高带宽、低延迟特性与边缘计算技术结合,显著提升PCDN性能,降低延迟&#x…...
DeepSeek提示词实战大全:提示词合集和使用技巧
大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。 知行合一,不写水文,喜欢可关注,分享AI算法干货、技术心得。 更多文章可关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! 【数据集篇】更多阅读: 大语言模型常见任务及评测数据集…...
23种设计模式生活化场景,帮助理解
以下是 23种设计模式的生活化场景 及其核心对比,通过日常例子和比喻帮助理解它们的本质区别和应用场景: 创建型模式(5种) 1. 工厂方法(Factory Method) • 场景:快餐店的点餐系统。 • 问题&a…...
Kotlin 学习-方法和参数类型
/*** kotlin 的方法有三种* */fun main() {/*** 方法一* 1.普通类的成员方法申明与调用* (1)需要先构建出实例对象,才能访问成员方法* (2)实例对象的构建只需要在类名后面加上()* */Person().test()/*** 方法二&#x…...
Java 解析日期格式各个字段含义温习
背景 今天解析了一个不常见的日期格式 「10-Mar-2025 16:30:47.869」,对应的 Java 日期格式是 dd-MMM-yyyy HH:mm:ss.SSS ,而且跟 Local 语言环境有关。 本文记录这个简单的解析过程,顺便回忆一下日期格式各个字段。毕竟平时只用了常见的 y…...
OpenBayes 一周速览|1分钟生成完整音乐,DiffRhythm人声伴奏一键搞定; Stable Virtual Camera重塑3D视频创作
公共资源速递 5 个数据集: * 302 例罕见病病例数据集 * DRfold2 RNA 结构测试数据集 * NaturalReasoning 自然推理数据集 * VenusMutHub 蛋白质突变小样本数据集 * Bird Vs Drone 鸟类与无人机图像分类数据集 2 个模型: * Qwen2.5-0mni * Llama…...
SpringBoot 数据库MySql的读写分离 多数据源 Shardingsphere高并发优化
介绍 传统的 MySQL 架构中,所有的数据库操作(包括读操作和写操作)都在同一个数据库实例上进行。随着应用程序的规模增长,单一数据库实例可能会成为瓶颈,无法满足高并发的需求。为了优化性能,可以将数据库的…...
SQLI漏洞公开报告分析
文章目录 1. 闭合 )2. 邀请码|POST参数|时间盲注 | **PostgreSQL**3. POST|order by参数|布尔盲注|Oracle4. SOAP请求|MSSQL|布尔盲注5. MySQL 时间盲注漏洞6. GET|普通回显注入7. ImpressCMS 1.4.2 | CVE | POST | 布尔盲注8. Mysql | post | 布尔/时间盲注9. 登录口 | post |…...
并行和并发有什么区别?
1. 定义 并行是在同一时刻执行多个任务。并发是在相同的时间段内执行多个任务,任务可能交替执行,通过调度实现。 2. 区别 执行方式: 并发:多个任务交替进行,任务并不一定同时执行,只是在同一时间段内处理…...
Elasticsearch 全面解析
Elasticsearch 全面解析 前言一、简介核心特性应用场景 二、核心原理与架构设计1. 倒排索引(Inverted Index)2. 分片与副本机制(Sharding & Replication)3. 节点角色与集群管理 三、核心特点1. 灵活的查询语言(Que…...
SQL 中的 NULL 处理
NULL 在 SQL 中表示缺失、未知或不适用的数据值,它与空字符串或零值不同。SQL 对 NULL 有特殊的处理规则: NULL 的基本特性 比较运算:任何与 NULL 的比较都返回 UNKNOWN(既不是 TRUE 也不是 FALSE) SELECT * FROM tab…...
2025常用的ETL 产品推荐:助力企业激活数据价值
在当今数字化时代,企业面临着海量数据的挑战与机遇,ETL(Extract, Transform, Load)工具作为数据整合与分析的关键环节,其重要性日益凸显。ETL 厂商众多,各有优势,本文将从多个维度进行分析&…...
深入解析:Python 爬取淘宝商品券后价
在电商领域,淘宝作为国内领先的电商平台,拥有海量的商品和丰富的优惠活动。对于技术开发者来说,获取淘宝商品的券后价是实现电商应用功能的重要环节。本文将详细介绍如何通过淘宝开放平台的 API 接口获取商品的券后价,并提供实际的…...
25.4.10学习总结
关于消除警告 警告: Loading FXML document with JavaFX API of version 23.0.1 by JavaFX runtime of version 17.0.6 对应这条警告,我的处理方式是,将IDEA的默认javaFX的库换成自己下载的javaFX的库。 我用的javaFX的库如下: javaFX-24…...
【XML基础-2】深入理解XML中的语义约束:DTD详解
XML(可扩展标记语言)作为数据交换的标准格式,在Web服务和应用程序间数据传递中扮演着重要角色。而确保XML文档结构正确性和语义一致性的关键,就在于文档类型定义(DTD)。本文将全面解析DTD的概念、语法结构、…...
SkyWalking + ELK 全链路监控系统整合指南
一、架构设计图 二、核心组件部署 1. SkyWalking 集群部署 yaml: # docker-compose-skywalking.yml version: 3.8services:oap:image: apache/skywalking-oap-server:9.7.0ports:- "11800:11800" # gRPC- "12800:12800" # HTTPenvironment:SW_STORAGE: …...
LeetCode hot 100—编辑距离
题目 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例 示例 1: 输入:word1 "horse", word2 &q…...
SAP系统年终结算出错
问题描述:2024年采购订单发票校验过账到2024年时提示错误如下: 问题原因:2024年全部未结束的采购申请和订单被结转到2025年。 解决方法:用事务代码FMJ3冲销此采购订单结转。...
在 Dev-C++中编译运行GUI 程序介绍(二)示例:祝福程序
在 Dev-C中编译运行GUI 程序介绍(二)示例:祝福程序 前期见: 在 Dev-C中编译运行GUI 程序介绍(一)基础 https://blog.csdn.net/cnds123/article/details/147019078 示例1、祝福程序 本文中的这个祝福程序是…...
Uniapp使用onShow语法报before initialization
一、错误原因分析 函数未完成初始化时被调用 • 当你在 onShow 生命周期中调用 getUserMessagePlan() 时,如果该函数的定义位于调用代码的下方(如示例中的顺序),JavaScript 引擎会因 变量提升规则 抛出此错误。 • 示例代码结构&a…...
大模型在儿童急性淋巴细胞白血病(ALL)-初治患者诊疗中应用的研究报告
目录 一、绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与儿童 ALL 相关知识 2.1 大模型技术原理与特点 2.2 儿童 ALL 的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模型预测术前风险 3.…...
如何选择适合机床的丝杆支撑座型号?
在机床中选择丝杆支撑座型号时,需综合考虑机械性能、安装条件及应用需求,接下来我们一起来看看详细的选型指南! 1、适配性:丝杆支撑座应与所使用的滚珠丝杆完全适配,确保两者在尺寸、规格、性能等方面相互匹配。 2…...
「The Road to Web3 Cloud」香港活动回顾|波卡的 Web3 Cloud 愿景
在区块链基础设施的发展浪潮中,Polkadot 正在迈出决定性的一步:打造一个属于 Web3 的 “云服务平台”。如果说 Bitcoin 创造了一个计算器,以太坊创造了一个计算机,那么 Polkadot 正在做的则是构建链上的 “云服务器”。它的目标是…...
PostgreSQL-容器运行时索引修复
在 Docker 中运行的 PostgreSQL 数据库如果索引损坏,可以通过以下步骤进行修复。索引损坏可能会导致查询性能下降或数据不一致,因此需要及时处理。 1. 进入 PostgreSQL 容器 首先,进入运行 PostgreSQL 的 Docker 容器: <BASH&…...
Vanna + qwq32b 实现 text2SQL
Vanna 是一个开源的 Text-2-SQL 框架,主要用于通过自然语言生成 SQL 查询,它基于 RAG(Retrieval-Augmented Generation,检索增强生成)技术。Vanna 的核心功能是通过训练一个模型(基于数据库的元数据和用户提…...
100V5A同步降压大功率芯片WD5105:高效电源管理的卓越之选
100V5A同步降压大功率芯片WD5105:高效电源管理的卓越之选 在现代电子设备的复杂电源架构中,对高效、稳定且可靠的电源管理芯片需求日益增长。WD5105作为一款100V5A同步降压大功率芯片,凭借其出色的性能、全面的保护机制以及广泛的应用适应性…...
springboot中测试python脚本:ProcessBuilder
目录 一.添加Jython依赖 二.使用步骤 1. 创建 ProcessBuilder 实例 2. 设置工作目录(可选) 3. 合并错误流(可选) 4. 启动进程 5. 处理输入输出流 6. 等待进程完成 7.完整案例 三.注意事项 ProcessBuilder是jdk提供的脚本…...
Google Chrome下载受限制的解决方案【方法指南】
在国内使用网络时,部分用户在尝试访问Google Chrome官网下载谷歌浏览器时,常常遇到网页无法打开或文件下载失败的情况。这种下载受限制的问题多由网络访问政策或DNS解析异常导致。为了正常获取Google Chrome的最新版安装程序,用户需要通过一些…...
mysql-锁的算法(记录锁、间隙锁、临键锁)
1.行锁的三种算法 有3种行锁算法,分别是: Record Lock:单个行记录上的锁,没有主键,会使用隐式的主键进行锁定Gap Lock:间隙锁,锁定一个范围,但不包含记录本身Next-Key Lock&#x…...
SAP Business One系统标准功能之外的不允许负库存控制
SqlServer版本写法: --在存储过程SBO_SP_TransactionNotification里加上这段代码,记得定义一个全局变量用于接收提醒具体是哪个物料 IF transaction_type IN (A) BEGINIF EXISTS (SELECT 1 FROM OIVL T0INNER JOIN OITW T1 ON T0.ItemCode T1.ItemCode…...
AI与5G的融合:如何实现更快速、更智能的物联网应用?
引言 AI和5G的结合,正在加速物联网(IoT)应用的发展,让万物互联变得更加智能、高效。5G提供超高速率、低时延和海量连接的网络能力,而AI则赋予物联网设备更强的数据分析、预测和自动决策能力。当AI与5G融合,…...
Redis的哨兵
Redis的哨兵 Sentinel 一.哨兵概念1.相关名词解释图 二.主节点恢复方式1.人工恢复主节点故障流程图2.哨兵自动恢复主节点流程 三.使用docker搭建环境1.安装docker-compose2.安装docker3.停止之前的redis服务器4.使用docker获取到redis的镜像5.使用docker-compose进行容器编排创…...
初识Redis · 简单理解Redis
目录 前言: 分布式系统 开源节流 认识Redis 负载均衡 缓存 微服务 前言: 本文只是作为Redis的一篇杂谈,简单理解一下Redis为什么要存在,以及它能做到和它不能做到的事儿,简单提及一下它对应的优势有什么&#…...
Python设计模式-抽象工厂模式
1. 什么是抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定它们具体的类。这种模式是所有形式的工厂模式中最为抽象和最具一般性的一种。…...
【中检在线-注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...
第16届蓝桥杯单片机模拟试题Ⅲ
试题 代码 sys.h #ifndef __SYS_H__ #define __SYS_H__#include <STC15F2K60S2.H> //sys.c extern unsigned char UI; //界面标志(0湿度界面、1参数界面、2时间界面) extern unsigned char time; //时间间隔(1s~10S) extern bit ssflag; //启动/停止标志…...