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

STL——list的介绍和使用

前言

本篇博客我们继续来介绍STL的内容,这次我们要介绍的是list这个容器,可以简单地理解为顺序表,当然和我们之前学过顺序表还是有区别的,具体内容大家可以继续往下阅读,下面进入正文。

1. list简介

1.list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。
2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立结点当中,在结点中通过指针指向其前一个元素和后一个元素。
3,list与forward_list非常相似,最主要的不同在于forward_list是单链表,只能进行单方向迭代。
与其他容器相比,list通常在任意位置进行插入、删除元素的执行效率更高。
4.list和forward_list最大的缺陷是不支持在任意位置的随机访问,其次,list还需要一些额外的空间,以保存每个结点之间的关联信息(对于存储的类型较小元素来说这可能是一个重要的因素)。

2. list的使用

2.1 list的定义方式

2.1.1 构造一个某类型的空容器

list<int> lt1; //构造int类型的空容器

2.1.2  构造一个含有n个val的某类型容器

list<int> lt2(10, 2); //构造含有10个2的int类型容器

2.1.3 拷贝构造某类型容器的复制品

list<int> lt3(lt2); //拷贝构造int类型的lt2容器的复制品

2.1.4 使用迭代器拷贝构造某一段内容

string s("hello world");
list<char> lt4(s.begin(),s.end()); //构造string对象某段区间的复制品

2.1.5 构造数组某段区间的复制品

int arr[] = { 1, 2, 3, 4, 5 };
int sz = sizeof(arr) / sizeof(int);
list<int> lt5(arr, arr + sz); //构造数组某段区间的复制品

2.2 list的插入和删除

2.2.1 push_front和pop_front

push_front函数用于头插一个数据,pop_front函数用于头删一个数据。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_front(0);lt.push_front(1);lt.push_front(2);for (auto e : lt){cout << e << " ";}cout << endl; //2 1 0lt.pop_front();for (auto e : lt){cout << e << " ";}cout << endl; //1 0return 0;
}

2 1 0
1 0

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 21668)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.2.2 push_back和pop_back

push_back函数用于尾插一个数据,pop_back函数用于尾删一个数据。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(0);lt.push_back(1);lt.push_back(2);lt.push_back(3);for (auto e : lt){cout << e << " ";}cout << endl; //0 1 2 3lt.pop_back();lt.pop_back();for (auto e : lt){cout << e << " ";}cout << endl;//0 1return 0;
}

0 1 2 3
0 1

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 15064)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.2.3 insert

list当中的insert函数支持三种插入方式:

  1. 在指定迭代器位置插入一个数。
  2. 在指定迭代器位置插入n个值为val的数。
  3. 在指定迭代器位置插入一段迭代器区间(左闭右开)。
#include <iostream>
#include <algorithm>
#include <vector>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);list<int>::iterator pos = find(lt.begin(), lt.end(), 2);lt.insert(pos, 9); //在2的位置插入9for (auto e : lt){cout << e << " ";}cout << endl; //1 9 2 3pos = find(lt.begin(), lt.end(), 3);lt.insert(pos, 2, 8); //在3的位置插入2个8for (auto e : lt){cout << e << " ";}cout << endl; //1 9 2 8 8 3vector<int> v(2, 7);pos = find(lt.begin(), lt.end(), 1);lt.insert(pos, v.begin(), v.end()); //在1的位置插入2个7for (auto e : lt){cout << e << " ";}cout << endl; //7 7 1 9 2 8 8 3return 0;
}

1 9 2 3
1 9 2 8 8 3
7 7 1 9 2 8 8 3

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 34536)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

注: find函数是头文件“algorithm”当中的一个函数,该函数在指定迭代器区间寻找指定值的位置,并返回该位置的迭代器。

2.2.4 erase

list当中的erase函数支持两种删除方式:

  1. 删除指定迭代器位置的元素。
  2. 删除指定迭代器区间(左闭右开)的所有元素。
#include <iostream>
#include <algorithm>
#include <vector>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);list<int>::iterator pos = find(lt.begin(), lt.end(), 2);lt.erase(pos); //删除2for (auto e : lt){cout << e << " ";}cout << endl; //1 3 4 5pos = find(lt.begin(), lt.end(), 4);lt.erase(pos, lt.end()); //删除4及其之后的元素for (auto e : lt){cout << e << " ";}cout << endl; //1 3return 0;
}

1 3 4 5
1 3

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 26072)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.3 迭代器的使用

2.3.1 begin和end

通过begin函数可以得到容器中第一个元素的正向迭代器,通过end函数可以得到容器中最后一个元素的后一个位置的正向迭代器。

正向迭代器遍历容器:

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt(10, 2);//正向迭代器遍历容器list<int>::iterator it = lt.begin();while (it != lt.end()){cout << *it << " ";it++;}cout << endl;return 0;
}

2 2 2 2 2 2 2 2 2 2

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 27264)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

这里大家可以发现,和前面基本一模一样的,就换了一下容器,所以STL这里的学习是有相通性的,掌握了一个,剩下的都比较相似。

2.3.2 rbegin和rend

通过rbegin函数可以得到容器中最后一个元素的反向迭代器,通过rend函数可以得到容器中第一个元素的前一个位置的反向迭代器。

反向迭代器遍历容器:

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt(10, 2);//反向迭代器遍历容器list<int>::reverse_iterator rit = lt.rbegin();while (rit != lt.rend()){cout << *rit << " ";rit++;}cout << endl;return 0;
}

2 2 2 2 2 2 2 2 2 2

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 29276)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.4 list的元素获取

2.4.1 front和back

front函数用于获取list容器当中的第一个元素,back函数用于获取list容器当中的最后一个元素。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(0);lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);cout << lt.front() << endl; //0cout << lt.back() << endl; //4return 0;
}

0
4

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 22184)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.5 list的大小控制

2.5.1 size

size函数用于获取当前容器当中的元素个数。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);cout << lt.size() << endl; //4return 0;
}

4

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 33192)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.5.2 resize

resize的两种情况:

  1. 当所给值大于当前的size时,将size扩大到该值,扩大的数据为第二个所给值,若未给出,则默认为容器所存储类型的默认构造函数所构造出来的值。
  2. 当所给值小于当前的size时,将size缩小到该值
#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt(5, 3);for (auto e : lt){cout << e << " ";}cout << endl; //3 3 3 3 3lt.resize(7, 6); //将size扩大为7,扩大的值为6for (auto e : lt){cout << e << " ";}cout << endl; //3 3 3 3 3 6 6lt.resize(2); //将size缩小为2for (auto e : lt){cout << e << " ";}cout << endl; //3 3return 0;
}

3 3 3 3 3
3 3 3 3 3 6 6
3 3

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 20692)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

 

2.5.3 empty

empty函数用于判断当前容器是否为空。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;cout << lt.empty() << endl; //1return 0;
}

1

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 30808)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.5.4 clear

clear函数用于清空容器,清空后容器的size为0。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt(5, 2);for (auto e : lt){cout << e << " ";}cout << endl; //2 2 2 2 2cout << lt.size() << endl; //5lt.clear(); //清空容器for (auto e : lt){cout << e << " ";}cout << endl; //(无数据)cout << lt.size() << endl; //0return 0;
}

2 2 2 2 2
5

0

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 33584)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.6 list的操作函数

2.6.1 sort

sort函数可以将容器当中的数据默认排为升序。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(4);lt.push_back(7);lt.push_back(5);lt.push_back(9);lt.push_back(6);lt.push_back(0);lt.push_back(3);for (auto e : lt){cout << e << " ";}cout << endl; //4 7 5 9 6 0 3lt.sort(); //默认将容器内数据排为升序for (auto e : lt){cout << e << " ";}cout << endl; //0 3 4 5 6 7 9return 0;
}

4 7 5 9 6 0 3
0 3 4 5 6 7 9

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 31372)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.6.2 splice

splice函数用于两个list容器之间的拼接,其有三种拼接方式:

  1. 将整个容器拼接到另一个容器的指定迭代器位置。
  2. 将容器当中的某一个数据拼接到另一个容器的指定迭代器位置。
  3. 将容器指定迭代器区间的数据拼接到另一个容器的指定迭代器位置。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt1(4, 2);list<int> lt2(4, 6);lt1.splice(lt1.begin(), lt2); //将容器lt2拼接到容器lt1的开头for (auto e : lt1){cout << e << " ";}cout << endl; //6 6 6 6 2 2 2 2 list<int> lt3(4, 2);list<int> lt4(4, 6);lt3.splice(lt3.begin(), lt4, lt4.begin()); //将容器lt4的第一个数据拼接到容器lt3的开头for (auto e : lt3){cout << e << " ";}cout << endl; //6 2 2 2 2 list<int> lt5(4, 2);list<int> lt6(4, 6);lt5.splice(lt5.begin(), lt6, lt6.begin(), lt6.end()); //将容器lt6的指定迭代器区间内的数据拼接到容器lt5的开头for (auto e : lt5){cout << e << " ";}cout << endl; //6 6 6 6 2 2 2 2return 0;
}

6 6 6 6 2 2 2 2
6 2 2 2 2
6 6 6 6 2 2 2 2

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 3556)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

注意: 容器当中被拼接到另一个容器的数据在原容器当中就不存在了。(实际上就是将链表当中的指定结点拼接到了另一个容器当中)

2.6.3 remove

remove函数用于删除容器当中特定值的元素。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(1);lt.push_back(4);lt.push_back(3);lt.push_back(3);lt.push_back(2);lt.push_back(2);lt.push_back(3);for (auto e : lt){cout << e << " ";}cout << endl; //1 4 3 3 2 2 3lt.remove(3); //删除容器当中值为3的元素for (auto e : lt){cout << e << " ";}cout << endl; //1 4 2 2return 0;
}

1 4 3 3 2 2 3
1 4 2 2

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 25988)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.6.4 remove_if

remove_if函数用于删除容器当中满足条件的元素。

#include <iostream>
#include <list>
using namespace std;bool single_digit(const int& val)
{return val < 10;
}
int main()
{list<int> lt;lt.push_back(10);lt.push_back(4);lt.push_back(7);lt.push_back(18);lt.push_back(2);lt.push_back(5);lt.push_back(9);for (auto e : lt){cout << e << " ";}cout << endl; //10 4 7 18 2 5 9lt.remove_if(single_digit); //删除容器当中值小于10的元素for (auto e : lt){cout << e << " ";}cout << endl; //10 18return 0;
}

10 4 7 18 2 5 9
10 18

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 27772)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.6.5 unique

unique函数用于删除容器当中连续的重复元素。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(1);lt.push_back(4);lt.push_back(3);lt.push_back(3);lt.push_back(2);lt.push_back(2);lt.push_back(3);for (auto e : lt){cout << e << " ";}cout << endl; //1 4 3 3 2 2 3lt.sort(); //将容器当中的元素排为升序lt.unique(); //删除容器当中连续的重复元素for (auto e : lt){cout << e << " ";}cout << endl; //1 2 3 4return 0;
}

1 4 3 3 2 2 3
1 2 3 4

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 30556)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.6.6 merge

merge函数用于将一个有序list容器合并到另一个有序list容器当中,使得合并后的list容器仍然有序。(类似于归并排序)

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt1;lt1.push_back(3);lt1.push_back(8);lt1.push_back(1);list<int> lt2;lt2.push_back(6);lt2.push_back(2);lt2.push_back(9);lt2.push_back(5);lt1.sort(); //将容器lt1排为升序lt2.sort(); //将容器lt2排为升序lt1.merge(lt2); //将lt2合并到lt1当中for (auto e : lt1){cout << e << " ";}cout << endl; //1 2 3 5 6 8 9 return 0;
}

1 2 3 5 6 8 9

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 4632)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.6.7 reverse

reverse函数用于将容器当中元素的位置进行逆置。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.reverse(); //将容器当中元素的位置进行逆置for (auto e : lt){cout << e << " ";}cout << endl; //5 4 3 2 1 return 0;
}

5 4 3 2 1

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 33212)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.6.8 assign

assign函数用于将新内容分配给容器,替换其当前内容,新内容的赋予方式有两种:

  1. 将n个值为val的数据分配给容器。
  2. 将所给迭代器区间当中的内容分配给容器。
#include <iostream>
#include <string>
#include <list>
using namespace std;int main()
{list<char> lt(3, 'a');lt.assign(3, 'b'); //将新内容分配给容器,替换其当前内容for (auto e : lt){cout << e << " ";}cout << endl; //b b bstring s("hello world");lt.assign(s.begin(), s.end()); //将新内容分配给容器,替换其当前内容for (auto e : lt){cout << e << " ";}cout << endl; //h e l l o   w o r l dreturn 0;
}

b b b
h e l l o   w o r l d

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 33432)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

2.6.9 swap

swap函数用于交换两个容器的内容。

#include <iostream>
#include <list>
using namespace std;int main()
{list<int> lt1(4, 2);list<int> lt2(4, 6);lt1.swap(lt2); //交换两个容器的内容for (auto e : lt1){cout << e << " ";}cout << endl; //6 6 6 6for (auto e : lt2){cout << e << " ";}cout << endl; //2 2 2 2return 0;
}

6 6 6 6
2 2 2 2

C:\code\test_c\test_10_30\x64\Debug\test_10_30.exe (进程 22184)已退出,代码为 0 (0x0)。
按任意键关闭此窗口. . .

3. 总结

本篇博客为大家介绍了list这个容器,提到了它与其他容器相似的用法;还介绍了list特有的一些用法,大家需要重点掌握我上面所提到的接口,注意它们的联系与区别,以及每个接口所具有的细节,最后,希望本篇博客可以为大家带来帮助,感谢阅读!

相关文章:

STL——list的介绍和使用

前言 本篇博客我们继续来介绍STL的内容&#xff0c;这次我们要介绍的是list这个容器&#xff0c;可以简单地理解为顺序表&#xff0c;当然和我们之前学过顺序表还是有区别的&#xff0c;具体内容大家可以继续往下阅读&#xff0c;下面进入正文。 1. list简介 1.list是一种可…...

二百七十六、ClickHouse——Hive和ClickHouse非常不同的DWS指标数据SQL语句

一、目的 在完成数据之后对业务指标进行分析&#xff0c;Hive和ClickHouseSQL真不一样 二、部分业务指标表 2.1 统计数据流量表1天周期 2.1.1 Hive中原有代码 2.1.1.1 Hive中建表语句 --1、统计数据流量表——动态分区——1天周期 create table if not exists hurys_d…...

Elasticsearch Date类型,时间存储相关说明

本文介绍了在SpringBoot中处理Elasticsearch中日期时间格式的问题。当时间输出为UTC格式并存在时区差异时&#xff0c;可通过设置字段格式如yyyy-MM-dd HH:mm:ss并指定时区为GMT8来解决。存储Date类型数据时&#xff0c;可以使用JSON库如json-lib, fastjson, Jackson或gson进行…...

mathorcup2024台风 我all in ai

三个问题&#xff0c;力大砖飞。 不建物理模型&#xff0c;直接all in好吧 第一个故意无监督 第二个LSTMCNN注意力&#xff0c;刚好时间空间 第三个在第二个上加了个transfomer &#xff0c;然后LSTM变双向&#xff0c;增加层数&#xff08;基线模型选的经验公式&#xff0c;少…...

android 10 后台启动activity

摘要&#xff1a;Android 10&#xff08;API 级别 29&#xff09;及更高版本会限制应用何时可以启动 activity 背景。这些限制有助于最大限度地减少对用户的干扰&#xff0c; 让用户能够更好地控制其屏幕上显示的内容。本文以此为出发点&#xff0c;基于展锐平台对系统代码进行…...

文案创作新思路:Python与文心一言API的完美结合

在这个信息爆炸的时代&#xff0c;内容创作似乎成了一项需要魔法才能完成的任务。不过&#xff0c;别担心&#xff01;今天&#xff0c;我们将向你介绍一种新的“魔法”工具——百度文心一言 API。这款大语言模型不仅能与人对话互动&#xff0c;还能高效便捷地协助你获取创意灵…...

CentOS 7 上安装 MySQL 8.0 教程

&#x1f31f; 你好 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

Chromium HTML5 新的 Input 类型url对应c++

一、Input 类型: url url 类型用于应该包含 URL 地址的输入域。 在提交表单时&#xff0c;会自动验证 url 域的值。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body&g…...

java多线程编程(二)一一>线程安全问题, 单例模式, 解决程线程安全问题的措施

引言&#xff1a; 如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即在单线程环境应该的结果&#xff0c;则说这个程序是线程安全的 线程安全问题的原因&#xff1a; 一.操作系统的随机调度 &#xff1a; 二.多个线程修改同一个变量&#xff1a; 三.修改操作不是…...

Leetcode 213. 打家劫舍 II 动态规划

原题链接&#xff1a;Leetcode 213. 打家劫舍 II class Solution { public:int rob(vector<int>& nums) {int n nums.size();if (n 1)return nums[0];if (n 2)return max(nums[0], nums[1]);// 如果偷了第一家&#xff0c;就不能偷最后一家int dp[n - 1];dp[0] …...

就业市场变革:AI时代,我们将如何评估人才?

内容概要 在这个充满变革的时代&#xff0c;就业市场正被人工智能&#xff08;AI&#xff09;技术深刻改变。随着技术的进步&#xff0c;传统的人才评估方式逐渐显示出其局限性。例如&#xff0c;过去依赖于纸质简历和面试评估的方式在快速变化的环境中难以准确识别真实的人才…...

富格林:安全操作方式稳健出金

富格林认为&#xff0c;黄金一直是吸引投资者关注的投资产品之一&#xff0c;投资者不断踏入黄金投资交易市场。很多投资者都以为现货黄金投资是很容易实现出金获得丰厚利润&#xff0c;但是面对复杂的交易市场&#xff0c;不仅不能轻易实现安全获利出金&#xff0c;甚至可能还…...

早点包子店点餐的软件下载和点餐操作教程 佳易王餐饮点餐管理系统操作方法

一、概述 【软件试用版资源文件可以点文章最后卡片了解】 早点包子店点餐的软件下载和点餐操作教程 适合于早点早餐餐饮行业的软件&#xff0c;实现早点点餐&#xff0c;收银会员管理&#xff0c;库存统计&#xff0c;销售统计等一体化操作。 点餐的时候可以用手触摸点&…...

uniapp一键打包

1.先安装python环境&#xff0c; 2.复制这几个文件到uniapp项目里面 3.修改自己证书路径&#xff0c;配置文件路径什么的 4.在文件夹页面双击buildController.py或者cmd直接输入buildController.py 5.python报错&#xff0c;哪个依赖缺少安装哪个依赖 6.执行不动的话&…...

什么是ksqlDB?流处理世界里的新范式

在大数据技术快速迭代的今天,我们见证了数据处理范式的不断演进。从批处理到流处理,从复杂的编程框架到声明式API,技术在不断简化与进化。而ksqlDB的出现,为我们带来了一个全新的视角 - 它不仅仅是一个流处理引擎,更是重新定义了我们与实时数据交互的方式。 让我们重新认识流处…...

Vue.js组件开发

Vue.js 是一个流行的 JavaScript 框架&#xff0c;用于构建用户界面和单页应用程序。开发 Vue.js 组件是 Vue.js 开发的核心部分。下面是一些关于 Vue.js 组件开发的基本概念和示例。 1. 创建一个基本的 Vue 组件 <template><div><h1>{{ title }}</h1>…...

Oracle视频基础1.1.2练习

1.1.2 需求&#xff1a; 查询oracle组件和粒度大小&#xff0c; select component,granule_size from v$sga_dynamic_components;Oracle SGA 中组件和粒度大小查询详解 在 Oracle 数据库的内存结构中&#xff0c;SGA&#xff08;System Global Area&#xff0c;系统全局区&am…...

Hadoop分布式文件系统架构和设计

Hadoop分布式文件系统架构和设计 引言Hadoop 分布式文件系统 (HDFS) 是一个设计用于在普通硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。然而,HDFS 与其他分布式文件系统的差异是显著的。HDFS具有高度的容错能力,并且设计用于在低成本硬件上部署。H…...

Prompt Engineering (Prompt工程)

2 prompt工程2大原则 2.1 给出清晰&#xff0c;详细的指令 策略1&#xff1a;使用分割符清晰的指示输出的不同部分&#xff0c;比如"",<>,<\tag>等分隔符 策略2&#xff1a;指定一个结构化的输出&#xff0c;比如json,html等格式 策略3&#xff1a;要…...

第十四课 Vue中的HTML及文本渲染

Vue中的HTML及文本渲染 HTML渲染 v-html指令可以在DOM中渲染新的子HTML DOM&#xff0c;Vue官方认为HTML渲染是不安全的&#xff0c;并不建议直接做HTML插入操作。 <div id"app"><div v-html"vals"></div></div><script>n…...

无人机救援系统简单解读

无人机救援系统简单解读 1. 源由2. 场景分析2.1 人员搜索2.2 紧急物资投送2.3 环境评估 3. 系统分解4. 初步总结5. 参考资料 1. 源由 最近&#xff0c;关于《Rapid Response UAV Post-Disaster Location Network Incorporating ML, Radio Control, and Global Positioning Sys…...

广西自闭症儿童寄宿学校:打造温馨成长的家

在广西这片美丽的土地上&#xff0c;有一群特殊的孩子&#xff0c;他们生活在自己的世界里&#xff0c;对外界的喧嚣似乎无动于衷&#xff0c;他们就是自闭症儿童。自闭症&#xff0c;这个看似遥远的词汇&#xff0c;却实实在在影响着许多家庭。幸运的是&#xff0c;在这片热土…...

python 查看服务器主机 IP 地址

import socket hostname socket.gethostname() ## 获取主机名 ip_address socket.gethostbyname(hostname) # 通过主机名获取 IP 地址 print(“服务器主机 IP 地址为:”, ip_address)...

应对市场变化与竞争对手挑战的策略

应对市场和竞争对手的变化需要企业具备敏锐的市场洞察力、灵活的战略调整能力、持续的创新意识、有效的资源配置等关键能力。敏锐的市场洞察力是企业能够及时捕捉市场趋势和竞争动态的基础&#xff0c;它不仅帮助企业预见潜在的机会和威胁&#xff0c;还能指导企业制定更具前瞻…...

CSS_定位_网页布局总结_元素的显示与隐藏

目录 目标 1. 定位 1.1 为什么需要定位 1.2 定位组成 1. 定位模式 2. 边偏移 1.3 静态定位 static&#xff08;了解&#xff09; 1.4 相对定位 relative&#xff08;重要&#xff09; 1.5 绝对定位 absolute&#xff08;重要&#xff09; 1.6 子绝父相的由来&#xff…...

内存映射区

存储映射区介绍 存储映射I/O (Memory-mapped I/O) 使一个磁盘文件与存储空间中的一个缓冲区相映射。从缓冲区中取数据&#xff0c;就相当于读文件中的相应字节&#xff1b;将数据写入缓冲区&#xff0c;则会将数据写入文件。这样&#xff0c;就可在不使用read和write函数的情况…...

es安装拼音分词后Kibana出现内存错误

出现错误 今天在安装es的拼音分词器&#xff0c;并重启es容器后&#xff0c;登录Kibana无法使用&#xff0c;查询日志发现如下报错 Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations... | typelog timestamp2024…...

mysql 字符串拼接文本并换行

描述&#xff1a; 拼接字符串文本&#xff0c;文本需要换行 函数&#xff1a; concate&#xff08;‘A串’&#xff0c;char(10),‘B串’&#xff09;&#xff0c;其中char(10)代表换行 案例&#xff1a; select concat(问题一&#xff1a;组织错误,char(10),问题二&#xff1…...

IIC学习总结

一、基本概念 IIC&#xff08;Inter-Integrated Circuit&#xff09;其实是IICBus简称&#xff0c;所以中文应该叫集成电路总线&#xff0c;它是一种串行通信总线&#xff0c;使用多主从架构。 二、模块结构 I2C串行总线一般有两根信号线&#xff0c;一根是双向的数据线SDA&…...

【案例学习】暴力破解攻击(Brute Force Attack)

### 案例与影响 暴力破解攻击在历史上曾导致多次重大安全事件&#xff0c;特别是在用户数据泄露和账户被盗的案例中。随着计算能力的提升和密码管理技术的进步&#xff0c;暴力破解的威胁虽然有所减弱&#xff0c;但仍需警惕&#xff0c;特别是在面对高价值目标时。 【故事一…...

wordpress使用不同的全局样式/电商平台怎么加入

1.使用场景 当程序正常退出,系统调用 System.exit方法虚拟机被关闭时程序抛出异常时可通过这些钩子在jvm关闭的时候进行内存清理、资源回收等工作 通过我们的程序中运行完之后都会进行一些清理工作,比如关闭数据库资源,同步等操作。这时我们的钩子函数addShutdownHook有了用武…...

网站制作的评价标准/百度经验登录入口

1、就业范围广 PMP证书在全球206个国家通用&#xff0c;是世界上许多优秀企业的入职门槛&#xff0c;企业项目管理团队95%以上成员持有&#xff0c;PMP证书的优势就是不受行业限制&#xff0c;不管是IT、建筑、制药、制造业&#xff0c;还是电信、金融、通信领域&#xff0c;P…...

凡客建站快车/代发软文

使用capitalize()将字符串首字符变成大写 name my name is aubrey print (name.count(a)) #使用count来统计字符串有多少个a print (name.center(50,-)) #优先打印name中的字符&#xff0c;一共需要打印50个字符&#xff0c;…...

如何在对方网站上做外链/semantics

一、源码特点 asp.net数码销售仓库管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 下载地址&#xff1a; asp.net数码销售仓库管理系统VS开发sqlserver数据库web结构C#编程-电子政务文档类资源-…...

网站建站制作价格/网站的seo优化报告

像任何其他产品一样&#xff0c;钟表设计代表了设计师的才华。人们厌倦了经典的钟表&#xff0c;出现在每一个房子&#xff0c;看起来都是相同的。这就是为什么一群有才华的设计师尽最大努力改变这一点&#xff0c;他们的创作都很优秀。相信你会很期待这些类型的时钟挂在墙上是…...

wordpress多图主题/链接提交

因工作需要配置禅道管理系统邮件发信功能注意1、邮件使用 阿里云邮箱2、需在服务器开放465端口&#xff08;25端口禁用&#xff09;3、使用其他邮箱可能涉及到邮箱授权码问题&#xff0c;可自行查询。4、禅道管理系统邮件发信功能&#xff0c;由统一的一个邮箱给公司用户发信步…...