C++ deque容器
C++ deque容器
文章目录
- C++ deque容器
- 前言
- 1. deque容器基本概念
- 2. deque构造函数
- 3. deque赋值操作
- 4. deque大小操作
- 5. deque 插入和删除
- 6. deque 数据存取
- 7. deque 排序
- 总结
前言
本文包含deque容器基本概念、deque构造函数、deque赋值操作、deque大小操作、deque插入和删除、deque数据存取、deque排序。
1. deque容器基本概念
功能:
双端数组,可以对头端进行插入删除操作
deque与vector区别:
(1)、vector对于头部的插入删除效率低,数据量越大,效率越低
(2)、deque相对而言,对头部的插入删除速度回比vector快
(3)、vector访问元素时的速度会比deque快,这和两者内部实现有关

deque内部工作原理:
(1)、deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据
(2)、中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
(3)、deque容器的迭代器也是支持随机访问的

2. deque构造函数
功能描述:
deque容器构造
函数原型:
(1)、deque<T> deqT; 默认构造形式
(2)、deque(beg, end); 构造函数将[beg, end)区间中的元素拷贝给本身
(3)、deque(n, elem); 构造函数将n个elem拷贝给本身
(4)、deque(const deque &deq); 拷贝构造函数
// deque双端数组容器构造函数#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <deque> // 使用deque双端数组容器,需包含头文件deque// const对此容器只是只读,不可以修改
void Fun_Print(const deque<int>& d) { // 使用引用方式&,传入deque<int>类型的形参d// deque<int>::iterator 拿到deque<int>这种容器的迭代器类型;每个容器都有一个专属的迭代器类型// const_iterator只读迭代器;iterator普通迭代器for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {//*it= 100; // 报错,容器中数据不可修改:表达式必须是可修改的左值cout << *it << " "; // it是个迭代器类型,本是是个指针,需使用*解引用}cout << endl;
}void test() {// 1、默认构造方式,无参构造deque<int> d;for (int i = 0; i < 10; i++){// push_back()向容器尾部插入数据id.push_back(i);}Fun_Print(d); // 0 1 2 3 4 5 6 7 8 9// 2、将d容器开始迭代器到结束迭代器之间的数据元素,拷贝给d1容器deque<int> d1(d.begin(), d.end());Fun_Print(d1); // 0 1 2 3 4 5 6 7 8 9// 3、将10个100拷贝给d2容器deque<int> d2(10, 100);Fun_Print(d2); // 100 100 100 100 100 100 100 100 100 100// 4、拷贝构造deque<int> d3(d2);Fun_Print(d3); // 100 100 100 100 100 100 100 100 100 100
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}

3. deque赋值操作
功能描述:
给deque容器进行赋值
函数原型:
(1)、deque& operator=(const deque &deq); 重载等号操作符
(2)、assign(beg, end); 将[beg, end)区间中的数据拷贝赋值给本身
(3)、assign(n, elem); 将n个elem拷贝赋值给本身
// deque双端数组容器赋值#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <deque> // 使用deque双端数组容器,需包含头文件deque// const对此容器只是只读,不可以修改
void Fun_Print(const deque<int>& d) { // 使用引用方式&,传入deque<int>类型的形参d// deque<int>::iterator 拿到deque<int>这种容器的迭代器类型;每个容器都有一个专属的迭代器类型// const_iterator只读迭代器;iterator普通迭代器for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {//*it= 100; // 报错,容器中数据不可修改:表达式必须是可修改的左值cout << *it << " "; // it是个迭代器类型,本是是个指针,需使用*解引用}cout << endl;
}void test() {// 创建deque容器对象,并且通过模板参数指定容器中存放的数据的类型deque<int> d;for (int i = 0; i < 10; i++){// push_back()向容器尾部插入数据id.push_back(i);}Fun_Print(d); // 0 1 2 3 4 5 6 7 8 9// 1、重载operator=deque<int> d1;d1 = d;Fun_Print(d1); // 0 1 2 3 4 5 6 7 8 9// 2、将d容器开始迭代器到结束迭代器之间的数据元素,赋值给d2容器deque<int> d2;d2.assign(d.begin(), d.end());Fun_Print(d2); // 0 1 2 3 4 5 6 7 8 9// 3、将10个100赋值给d3deque<int> d3;d3.assign(10, 100);Fun_Print(d3); // 100 100 100 100 100 100 100 100 100 100
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}

4. deque大小操作
功能描述:
对deque容器的大小进行操作 (没有容量,可以无限扩展)
函数原型:
(1)、deque.empty(); 判断容器是否为空
(2)、deque.size(); 返回容器中元素的个数
(3)、deque.resize(num);
3.1)、重新指定容器的长度为num,若容器变长,则以默认值填充新位置 (默认填充0)
3.2)、如果容器变短,则末尾超出容器长度的元素被删除
(4)、deque.resize(num, elem);
4.1)、重新指定容器的长度为num,若容器变长,则以elem值填充新位置 (填充elem)
4.2)、如果容器变短,则末尾超出容器长度的元素被删除
// deque双端数组容器大小操作#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <deque> // 使用deque双端数组容器,需包含头文件deque// const对此容器只是只读,不可以修改
void Fun_Print(const deque<int>& d) { // 使用引用方式&,传入deque<int>类型的形参d// deque<int>::iterator 拿到deque<int>这种容器的迭代器类型;每个容器都有一个专属的迭代器类型// const_iterator只读迭代器;iterator普通迭代器for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {//*it= 100; // 报错,容器中数据不可修改:表达式必须是可修改的左值cout << *it << " "; // it是个迭代器类型,本是是个指针,需使用*解引用}cout << endl;
}void test() {// 创建deque容器对象,并且通过模板参数指定容器中存放的数据的类型deque<int> d;for (int i = 0; i < 10; i++){// push_back()向容器尾部插入数据id.push_back(i);}Fun_Print(d); // 0 1 2 3 4 5 6 7 8 9// 1、empty()判断容器是否为空,返回真,则为空if (d.empty()) {cout << "d容器为空!" << endl;}else {cout << "d容器不为空!" << endl;// 2、size()返回容器数据元素个数cout << "d容器个数为:" << d.size() << endl; // 10}// 3.1、resize()指定容器长度为15,默认填充0d.resize(15);Fun_Print(d); // 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0// 3.2、resize()指定容器长度为5,删除超出容器长度的数据元素d.resize(5);Fun_Print(d); // 0 1 2 3 4// 4.1、resize()指定容器长度为10,默认填充10d.resize(10, 10);Fun_Print(d); // 0 1 2 3 4 10 10 10 10 10// 4.2、resize()指定容器长度为5,删除超出容器长度的数据元素d.resize(5, 5);Fun_Print(d); // 0 1 2 3 4
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}

5. deque 插入和删除
功能描述:
向deque容器中插入和删除数据
函数原型:
(1)、两端插入操作:
push_back(elem); 在容器尾部添加一个数据
push_front(elem); 在容器头部插入一个数据
pop_back(); 删除容器最后一个数据
pop_front(); 删除容器第一个数据
// deque双端数组容器插入#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <deque> // 使用deque双端数组容器,需包含头文件deque// const对此容器只是只读,不可以修改
void Fun_Print(const deque<int>& d) { // 使用引用方式&,传入deque<int>类型的形参d// deque<int>::iterator 拿到deque<int>这种容器的迭代器类型;每个容器都有一个专属的迭代器类型// const_iterator只读迭代器;iterator普通迭代器for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {//*it= 100; // 报错,容器中数据不可修改:表达式必须是可修改的左值cout << *it << " "; // it是个迭代器类型,本是是个指针,需使用*解引用}cout << endl;
}void test() {// 创建deque容器对象,并且通过模板参数指定容器中存放的数据的类型deque<int> d;// 1、push_back()向容器尾部插入数据1、2d.push_back(1);d.push_back(2);Fun_Print(d); // 1 2// 2、push_front()向容器头部插入数据3、4d.push_front(3);d.push_front(4);Fun_Print(d); // 4 3 1 2// 3、pop_back()删除容器最后一个数据d.pop_back();Fun_Print(d); // 4 3 1 // 4、pop_front()删除容器第一个数据d.pop_front();Fun_Print(d); // 3 1
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}

(2)、指定位置操作:
insert(pos,elem); 在pos位置插入一个elem元素的拷贝,返回新数据的位置
insert(pos,n,elem); 在pos位置插入n个elem数据,无返回值
insert(pos,beg,end); 在pos位置插入[beg,end)区间的数据,无返回值
erase(beg,end); 删除[beg,end)区间的数据,返回下一个数据的位置
erase(pos); 删除pos位置的数据,返回下一个数据的位置
clear(); 清空容器的所有数据
// deque双端数组容器插入和删除#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <deque> // 使用deque双端数组容器,需包含头文件deque// const对此容器只是只读,不可以修改
void Fun_Print(const deque<int>& d) { // 使用引用方式&,传入deque<int>类型的形参d// deque<int>::iterator 拿到deque<int>这种容器的迭代器类型;每个容器都有一个专属的迭代器类型// const_iterator只读迭代器;iterator普通迭代器for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {//*it= 100; // 报错,容器中数据不可修改:表达式必须是可修改的左值cout << *it << " "; // it是个迭代器类型,本是是个指针,需使用*解引用}cout << endl;
}void test() {// 创建deque容器对象,并且通过模板参数指定容器中存放的数据的类型deque<int> d;// 1、insert()在容器开始迭代器处插入数据10d.insert(d.begin(), 10);Fun_Print(d); // 10// 2、insert()在容器结束迭代器处插入5个10d.insert(d.end(), 5, 100);Fun_Print(d); // 10 100 100 100 100 100// 3、insert()在容器结束迭代器处,插入d容器开始迭代器到结束迭代器中的数据元素d.insert(d.end(), d.begin(), d.end());Fun_Print(d); // 10 100 100 100 100 100 10 100 100 100 100 100deque<int>::iterator it = d.begin(); // 创建一个迭代器itit += 6; // 使it位置为6// 4、erase()按区间删除数据元素,从第6个迭代器位置开始,删除d容器之后所有数据元素d.erase(it, d.end());Fun_Print(d); // 10 100 100 100 100 100// 5、erase()删除d容器开始迭代器的数据元素d.erase(d.begin());Fun_Print(d); // 100 100 100 100 100// 6、clear()清空容器所有数据元素d.clear();Fun_Print(d); //
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}

6. deque 数据存取
功能描述:
对deque 中的数据的存取操作
函数原型:
(1)、at(int idx); 返回索引idx所指的数据
(2)、operator[]; 返回下标idx所指的数据
(3)、front(); 返回容器中第一个数据元素
(4)、back(); 返回容器中最后一个数据元素
// deque双端数组容器数据存取#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <deque> // 使用deque双端数组容器,需包含头文件dequevoid test() {// 创建deque容器对象,并且通过模板参数指定容器中存放的数据的类型deque<int> d;for (int i = 0; i < 10; i++){// push_back()向容器尾部插入数据id.push_back(i);}// 1、at()返回容器索引i所指的数据元素for (int i = 0; i < d.size(); i++) { // size()返回容器数据元素个数cout << d.at(i) << " "; // 0 1 2 3 4 5 6 7 8 9}cout << endl;// 2、[]返回容器下标i所指的数据元素for (int i = 0; i < d.size(); i++) {cout << d[i] << " "; // 0 1 2 3 4 5 6 7 8 9}cout << endl;// 3、front()返回容器的第一个数据元素cout << "d容器的第一个数据元素为:" << d.front() << endl; // 0// 4、front()返回容器的最后一个数据元素cout << "d容器的最后一个数据元素为:" << d.back() << endl; // 9
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}

7. deque 排序
功能描述:
利用算法实现对deque容器进行排序
算法:
sort(iterator beg, iterator end) 对beg和end区间内元素进行排序
// deque双端数组容器排序#include <iostream> // 包含标准输入输出流头文件
using namespace std; // 使用标准命名空间#include <deque> // 使用deque双端数组容器,需包含头文件deque
#include <algorithm> // 标准算法头文件;使用sort,需包含头文件algorithm// const对此容器只是只读,不可以修改
void Fun_Print(const deque<int>& d) { // 使用引用方式&,传入deque<int>类型的形参d// deque<int>::iterator 拿到deque<int>这种容器的迭代器类型;每个容器都有一个专属的迭代器类型// const_iterator只读迭代器;iterator普通迭代器for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {//*it= 100; // 报错,容器中数据不可修改:表达式必须是可修改的左值cout << *it << " "; // it是个迭代器类型,本是是个指针,需使用*解引用}cout << endl;
}void test() {// 创建deque容器对象,并且通过模板参数指定容器中存放的数据的类型deque<int> d;// push_back()向容器尾部插入数据d.push_back(80);d.push_back(20);d.push_back(40);d.push_front(10);d.push_front(90);d.push_front(50);Fun_Print(d); // 50 90 10 80 20 40// sort()排序;默认排序规则,从小到大,升序// 对于支持随机访问的迭代器的容器,都可以利用sort算法直接对其进行排序;vector容器也可以利用sort进行排序sort(d.begin(), d.end());Fun_Print(d); // 10 20 40 50 80 90
}int main() {test();system("pause"); // 相当于在本地 Windows 调试器中的:请按任意键继续...;暂停,方便看清楚输出结果return 0; // 程序正常退出
}

总结
(1)、deque 容器和 vector 容器的构造方式几乎一致,灵活使用即可;
(2)、deque 赋值操作也与 vector 相同;
(3)、deque 没有容量的概念;
(4)、deque 判断是否为空 — empty;
(5)、deque 返回元素个数 — size;
(6)、deque 重新指定个数 — resize;
(7)、deque 插入和删除提供的位置是迭代器!
(8)、deque尾插 — push_back;
(9)、deque 尾删 — pop_back;
(10)、deque 头插 — push_front;
(11)、deque 头删 — pop_front;
(12)、除了用迭代器获取deque容器中元素,[ ]和at也可以;
(13)、front() 返回容器第一个元素;
(14)、back() 返回容器最后一个元素;
(15)、sort() 算法非常实用,使用时包含头文件 algorithm即可。
相关文章:
C++ deque容器
C deque容器 文章目录C deque容器前言1. deque容器基本概念2. deque构造函数3. deque赋值操作4. deque大小操作5. deque 插入和删除6. deque 数据存取7. deque 排序总结前言 本文包含deque容器基本概念、deque构造函数、deque赋值操作、deque大小操作、deque插入和删除、deque…...
HashMap的底层原理
hashmap是一个以key,value形式存储的集合,在JDK1.7中是以数组链表的数据结构,在JDK1.8中是数组链表红黑树的数据结构,他在对数据操作时继承了数组的线性查找和链表的寻址修改 hashmap是线程不安全的 : 在JDK1.7中会造成环形链和数据丢失的情况 在JDK1.8中hashmap的put过程会造…...
Django 4.0文档学习(四)
上篇文章 Django 4.0文档学习(四) 文章目录编写你的第一个 Django 应用,第 6 部分自定义应用的界面和风格编写你的第一个 Django 应用,第 7 部分自定义后台表单自定义后台更改列表自定义后台界面和风格自定义后台主页编写你的第一…...
2023年全国最新高校辅导员精选真题及答案38
百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 112.为改变重知识传授轻能力培养的大学课堂,教学方法可以采用(&am…...
和ChatGPT-4聊完后,我觉得一切可能已经来不及了
了然无味,晴空万里!和ChatGPT-4开始了一场坦诚的沟通,它全程都表现出高情商,以及不断尽量安抚我的情绪,而这,恰恰令我脊背发凉。 部分文字截取 ZM:我能不能理解每次对话就是一次你的“生命” G&…...
RocketMQ 5.1 NameServer 启动流程
文章目录1 解析命令行参数和配置文件2 创建并启动 NamesrvController2.1 创建 NamesrvController 对象2.2 启动 NamesrvController 对象第一步:初始化 controller第二步:注册 JVM 钩子第二步:启动 controllerRocketMQ是一个分布式消息中间件&…...
马云回国,首谈ChatGPT
马云今天回国了,这是一个备受关注的消息。 作为中国最具代表性的企业家之一,马云在过去的二十多年里,带领阿里巴巴从一个小小的创业公司,发展成为全球最大的电商平台之一,同时也推动了中国互联网行业的发展。 他的回…...
深入理解C++迭代器:让你的C++代码更加灵活
C迭代器:更加优雅的容器操作方式引言C迭代器简介a. 迭代器的定义b. 迭代器的作用c. 迭代器与指针的区别迭代器分类a. 输入迭代器(Input Iterator)b. 输出迭代器(Output Iterator)c. 前向迭代器(Forward Ite…...
Java 读取Excel模板中的数据到实体类
目录一. 前提条件1.1 需求1.2 分析二. 准备2.1 自定义注解2.2 封装Excel的实体类三. 前台四. Controller层五. Service层💪💪💪六. 效果一. 前提条件 1.1 需求 从指定的Excel模板中读取数据,将读取到的数据存储到数据库中。 1.2…...
【java基础】Socket网络编程
文章目录说明InetAddress介绍Socket介绍ServerSocket介绍实现简单的Socket通信总结说明 这里介绍下如何在java里面进行socket编程 InetAddress介绍 这个类表示一个Internet协议(IP)地址,我们可以通过ip或者主机名来构建这个类 Testpublic void t1() throws Except…...
转发和重定向区别
转发和重定向 1.0 面试提问 定义不同跳转的方式不同数据共享不同最终的URL地址不同代码实现不同 1. 转发 1.1 概念 转发实际上在服务器端进行页面的跳转操作,请求转发:一种在服务器内部的资源的跳转的方式。 访问A,A请求转发了B,…...
java面试题(持续更新)
java面试题(持续更新) java 基础 java面向对象有哪些特征 面向对象的三大特征:封装、继承、多态 封装:隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据,…...
【花雕学AI】09:发挥ChatGPT最大潜力——产生高质量内容的九种方法和建议
人工智能(AI)是当今科技领域最热门和最有前景的话题之一,它已经渗透到了我们生活和工作的方方面面,给我们带来了许多便利和惊喜。而在AI的众多分支中,自然语言处理(NLP)是最贴近人类的一个领域&…...
实战打靶集锦-013-Loly
**写在前面:**记录博主的一次打靶经历 目录1. 主机发现2. 端口扫描3. 服务枚举4. web服务探查4.1 WordPress探测4.2 使用metasploit4.3 使用wpscan4.4 阶段性回顾5. 提权5.1 弱密码提权5.2 操作系统信息枚举5.3 定时任务枚举5.4 passwd信息枚举5.5 可执行文件枚举5.…...
程序员OKR学习法
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl OKR管理法 OKR(Objectives and Key Results)管理法是一种目标管理方法,旨在通过制定明确的目标和可量化的关键结果来帮助组织、团队和个人…...
【从零开始学习 UVM】6.6、UVM 激励产生 —— UVM Virtual Sequence【重要】
文章目录 使用virtual sequencer不使用virtual sequencervirtual sequence是一个容器,用于在环境中的virtual sequencer上启动多个sequence。 这个virtual sequence通常由一个具有对真实sequencers句柄的virtual sequencers执行。 需要virtual sequence的原因是当您需要在不…...
蓝桥杯:阶乘约数
蓝桥杯:阶乘约数https://www.lanqiao.cn/problems/1020/learning/ 目录 题目描述 填空题:答案是 39001250856960000 题目分析 AC代码(Java) 暴力 线性筛 题目描述 填空题 定义阶乘 n!123⋅⋅⋅n。 请问 100! (100 的阶乘)有…...
最大数字
[蓝桥杯 2022 国 B] 最大数字 题目描述 给定一个正整数 NNN。你可以对 NNN 的任意一位数字执行任意次以下 2 种操作: 将该位数字加 111。如果该位数字已经是 999,加 111 之后变成 000。 将该位数字减 111。如果该位数字已经是 000,减 111 之后变成 99…...
【java进阶08:异常】finally关键字、自定义异常类、用户业务作业、军队武器作业
java中的异常处理机制 异常在java中以类和对象的形式存在,那么异常的继承结构是怎样的?我们可以使用UML图来描述以下继承结构 画UML图的工具:Rational Rose、starUML等 Object下有Throwable(可抛出的) Throwable下有两…...
#课程笔记# 电路与电子技术基础 课堂笔记 第6章 半导体器件的基本特性
6.1 半导体基础知识 6.1.1 本征半导体 完全纯净的、结构完整的半导体称为本征半导体。 常用的半导体材料有硅和锗,它们都是四价元素,原子最外层轨道有四个价电子。 若将纯净的半导体制成晶体,则原子形成排列整齐的点阵。 点阵是由共价键提供…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
