c++stl模板总结
stl
- 总结stl模板
- vector
- deque
- list
- forward_list
- stl集合类
- set&unorder_set
- map&unorder_map
- 自适应容器栈和队列
- stack
- queue
- priority_queue
总结stl模板
vector
1.初始化
vector具有多个重载的构造函数,可以在实例化vector时指定他开始时应该包含的元素个数以及元素的初始值,还可以用一个vector初始化另一个vector
vector<int> integers;
vector<int> initVector{1,2,3};//c++11 列表初始化
vector<int> integer=(1,2,3);//初始化10个元素
vector<int> temElments(10);
//用10个元素0初始化vector
vector<int> temElemInit(10, 0);vector<int> copyVector(tenElemInit);
vector<int> partialCopy(a.cbegin(), a.cbegin()+5);
2.常用函数(增删查)
c.insert(it, x) //向任意迭代器it插入一个元素x ,O ( N )
c.front() //返回第一个数据O (1)
c.back() //返回数组中的最后一个数据 O (1)
c.pop_back() //删除最后一个数据O (1)
c.push_back(element) //在尾部加一个数据O (1)
c.size() //返回实际数据个数(unsigned类型)O (1)
c.resize(n, v)//改变数组大小为n,n个空间数值赋为v,如果没有默认赋值为0c.clear() //清除元素个数O (N),N为元素个数
c.erase(first, last); //删除[first,last)的所有元素,O ( N )c.begin();
c.end();sort(c.begin(),c.end()); //默认排序
sort(c.begin()+1, end()); //对1,n区间进行从小到大排序
3.遍历
//使用数组访问[]
vector<int> integers{1,2,3};
for(size_t index=0;index<integers.size();index++){cout<<integers[i];//开发时最好使用va.at(intdex),运行阶段检查容器大小,如果索引超出边界,将引发异常
}
//使用指针访问
vecotr<int>::const_iterator elem = integers.cbegin();
while(element!=integers.end()){size_t index = distance(integers.cbegin(), element);cout<<*element<<endl;
}
deque
stl动态数组,与vector类似,但支持在数组开头和末尾插入或删除元素
deque<int> intDeque;
- 常用函数
dq.push_back()
dq.pop_back();//删除集合最后一个元素
dp.push_front();
dp.pop_front();//删除集合第一个元素
dp.size();
dp.clear();
dp.empty();
- 遍历
for(auto element = intDeque.begin();element!=intDeque.end();++element){
cout<<*element;
}
list
双向链表,插入删除速度快
1.初始化
list<int> listInts;
list<int> list10Int(10);
list<int> list4IntEach1(4,1);
list<int> listCopyAnother(listInts);
list<int> listPartialCopyofAnother(listInts.cbegin(),listInts.cend());
2.常用函数
l.push_back();
l.push_front();
l.insert(interator pos, const T& x);//向指定为位置插入值x
l.insert(interator pos, size_type n, const T& x);l.insert(interator pos, InputIterator f, InputIterator l);
//输入类型InputIterator是一种模板参数类型,可指定任何集合的边界
l.erase(value);
l.erase(l.begin(),l.end());
l.reverse();//对list中的翻转
l.sort();//对元素进行排序
l.sort(SortPredicate_Descending);//指定排序标准bool SortPredicate_Descending(const int& lhs, const int& rhs){return lhs<rhs;
}
forward_list
单向链表
forward_lists<int> flistInt(1,3,4,2,5);
flistInt.remove(2);
flistInt.sort();
fl.push_back();
fl.pop_back();
-
如果需要频繁插入和删除元素(尤其是在中间),应该使用std::list
-
要使用list等stl容器存储object时,要实现<和==运算符,以提供排序和删除谓词
-
无需在两端插入和删除元素时,且不用在中间插入和删除时,请不要使用list,请使用vector
-
如果不想按照标准进行删除和排序,给sort和remove提供一个谓词函数即可
stl集合类
set&unorder_set
stl容器set、multiset、unorder_set和unorder_multiset
容器set和multiset能够在容器中快速查找key,key是存储在一维容器中的值,set和multiset的区别就在于后者可以存储重复的值,而前者只能存储唯一的值。
**优点:**底层采用红黑树,插入时排序,适合频繁find场景
缺点:无法替换修改元素
set适合频繁查找型,插入删除是红黑树复杂度,替换的操作是先删除元素然后再插入元素
1.实例化
set<int> setInts1;
multiset<int> mulsetInts1;set<int> setInts2(setInts1);
multiset<int> multisetInts2(setInts1.cbegin(),setInts1.cend());
2.常用
s.inserst(value);
s.insert(s1.cbegin(),s2.cend());
s.count(value);
s.size();//容器包含多少元素
s.find(value); return iterator; //在使用迭代器之前需要判断是否到达容器末尾
s.erase(key);
s.erase(element);
s.erase(iLowerBound, iUpperBound);
stl映射类
map, multimap, unorder_map,unordered_multimap
map和multimap底层为红黑树,同样不能修改元素
map
- 初始化
map<int, string> mapIntToStr1;
multimap<int, string> mmapIntStr1;map<int, string> mapIntToStr2(mapIntToStr1);
map<int,string> mapIntToStr3(mapIntToStr1.cbegin(),mapIntToStr1.cend());
map<int, string, ReverseSort<int>> mapIntToString4(mapIntToStr1.cbegin(),mapIntToStr1.cend());
map<int, string>mmapIntToStr2(mmapIntToStr1);
常用函数:
mp.find(key) //返回键为key的映射的迭代器 $O(logN) $ 注意:用find函数来定位数据出现位置,它返回一个迭代器。当数据存在时,返回数据所在位置的迭代器,数据不存在时,返回mp.end ( )
mp.end()
mp.erase(it) //删除迭代器对应的键和值O ( 1 ) O(1)O(1)mp.erase(key)//根据映射的键删除键和值 O ( l o g N ) O(logN)O(logN)mp.erase(first,last)删除左闭右开区间迭代器对应的键和值O(last-first)mp.size()返回映射的对数$ O(1)$
mp.insert(make_pair(int, string))
mp.insert(pair<int, string>(1,"one"));mp.clear()清空map中的所有元素O ( N ) O(N)O(N)mp.insert()插入元素,插入时要构造键值对mp.empty(); //如果map为空,返回true,否则返回falsemp.begin() //返回指向map第一个元素的迭代器(地址)mp.end(); //返回指向map尾部的迭代器(最后一个元素的下一个地址)mp.rbegin(); //返回指向map最后一个元素的迭代器(地址)mp.rend(); //返回指向map第一个元素前面(上一个)的逆向迭代器(地址)mp.count(key);//查看元素是否存在,因为map中键是唯一的,所以存在返回1,不存在返回0mp.lower_bound();//返回一个迭代器,指向键值>= key的第一个元素mp.upper_bound();//返回一个迭代器,指向键值> key的第一个元素
用于正向遍历map :
map<int,int> mp;mp[1] = 2;mp[2] = 3;mp[3] = 4;auto it = mp.begin();while(it != mp.end()) {cout << it->first << " " << it->second << "\n";it ++;}
用于逆向遍历map:
map<int,int> mp;mp[1] = 2;mp[2] = 3;mp[3] = 4;auto it = mp.rbegin();while(it != mp.rend()) {cout << it->first << " " << it->second << "\n";it ++;}
其他:
map&unorder_map
map:内部用红黑树实现,具有自动排序(按键从小到大)功能。空间占用较大。
unordered_map:内部用哈希表实现,内部元素无序杂乱。查找速度非常快。
map非常适合存储键值对,在查找方面,map的性能可能要比stl vector要高,但是查找速度会随着元素的增加而降低,map的复杂度为log级别
unorder_map<int,string> umap;
umap.insert(make_pair(1000, "Thousand");
umap.find(key);//根据键查找迭代器umap.load_factor(); //查找加载因子
umap.max_load_factor(); //查找最大加载因子
umap.max_bucket_count();//查找桶的最大数量
使用场景
需要存储键值对且键值对可能重复时,(如电话簿)
必须保证插入和查找的时间固定时(通常是元素非常多的时候)
疑问?是map快还是umap快
查找速度:由于unorder_map底层采用hash_table,在不发生冲突的情况下,unorder_map的速度更快,在模拟随机插入10万个<int,int>元素,随机查找一个值时,速度相差 1 0 3 10^3 103个量级。
解决冲突:采用链式法解决。每个桶(bucket)维护一个链表(或其他数据结构),用于存储所有哈希到该桶的元素。当发生哈希冲突时,新元素将被插入到对应桶的链表中
扩容:插入元素的个数如果大于阈值(um.size()*um.load_factor(),数组长度*装载因子),自动扩容,一般是bucket_size=8, 之后扩容到64.
自适应容器栈和队列
stack
- 介绍,允许在顶部插入和删除元素,不允许访问中间的元素。
stack默认底层使用deque(双向动态数组)来存储数据,但是可以使用vector和list来存储数据。
stack<int> numsInStack;
stack<double, vector<int>> doublesStackedVec;
stack<int> numsInStackCopy(numsInStack);
2.常用函数
s.push(); //增加元素 O(1)
s.pop(); //移除栈顶元素 O(1)
s.empty(); //检测栈内是否为空,空为真 O(1)
s.size(); //返回栈内元素的个数 O(1)
s.top(); //取得栈顶元素(但不删除)O(1)
3.栈的遍历
stack<int> st;
for (int i = 0; i < 10; ++i) st.push(i);
while (!st.empty()) {int tp = st.top(); // 栈顶元素st.pop();
}
queue
只允许在末尾插入元素,以及从开头删除元素,queue,不允许访问中间的元素,可以访问开头(front())和末尾的元素(back()),
std::queue的定义如下:
template<class elementType,class Container = deque<Type>
>class queue;
其中ElementType是queue对象包含的元素的类型,Container是std::queue用于存储其数据的集合类型,可将该模板参数设置为std::list, vector获deque,默认为deque
1.实例化
queue<int> qi;
queue<double, list<double>> dbQInList
queue<int> copyQ(qi);
2.成员函数
q.push(); //在队尾(即最后一个位置)插入一个元素,numsInQ.push(25);
q.pop(); //将队尾(即最开始位置)的元素删除
q.front();//返回向队首元素的引用
q.back(); //返回指向队尾元素的引用
q.empty(); //检查队列是否为空并返回一个bool值
q.size(); //返回队列中的元素
对于queue没有提供begin(), end()等函数 (所以队列不支持遍历),而大多数STL容器都提供了这些函数,包括queue类在底层的deque,vector,list这是有意为之的,因为只允许对queue
执行符合队列行为特征的操作。
priority_queue
priority_queue和queue的不同之处在于,包含最大值的元素在队首,且只能在队首操作
底层默认采用vector作为内部数据结构容器
template<
class elementType,
class Container = vector<Type>
class Compare=less<typename Container::value_type>
>
class priority_queue
1.初始化
priority_queue<int> numsInPrioQ; //使用默认less提供的比较标准,因此队列将值最大的元素放在队首
priority_queue<int, deque<int>, greater<int>> numsInDescendingQ;
priority_queue<int> copyQ(numsInPrioQ);
2.成员函数
pq.push(); 在优先级中插入一个元素
pq.push(); //删除队首元素,即最大的元素
pq.top(); //返回指向队列的最大元素(即队首元素)的引用
pq.empty(); //检查优先级队列是否为空,并返回一个bool值
pq.size(); //返回优先级队列中的元素个数
由以上函数可知,只能使用top()来访问队列中的成员,返回值最大的元素,值最大的元素是通过默认谓词less确定的。
相关文章:
c++stl模板总结
stl 总结stl模板vectordequelistforward_liststl集合类set&unorder_setmap&unorder_map 自适应容器栈和队列stackqueuepriority_queue 总结stl模板 vector 1.初始化 vector具有多个重载的构造函数,可以在实例化vector时指定他开始时应该包含的元素个数以…...
文本生成类(机器翻译)系统评估
在机器翻译任务中常用评价指标:BLEU、ROGUE、METEOR、PPL。 这些指标的缺点:只能反应模型输出是否类似于测试文本。 BLUE(Bilingual Evaluation Understudy):是用于评估模型生成的句子(candidate)和实际句子(referen…...
Harmony NEXT-越过相机读写权限上传图片至项目云存储中
问题成因 在制作用户注册登录界面时想要实现用户头像上传共能,查询API文档,发现有picker和PhotoAccessHelper两个包可以选择使用,但是在使用PhotoAccessHelper包拉起相册并读入所选的照片后将该照片传入云存储中产生报错,需要相册…...
C++算法练习-day53——17.电话号码的字母组合
题目来源:. - 力扣(LeetCode) 题目思路分析 题目要求我们将一个数字字符串(每个数字对应一组字母,如2对应abc,3对应def等)转换成所有可能的字母组合。这是一个典型的组合生成问题,…...
计算机网络性能
任何一个系统都可以或需要不同的指标来度量系统的优劣、状态或特性。计算机网络是综合计算机技术与通信技术的复杂系统,可以通过许多指标对一个计算机网络的整体或局部、全面或部分、静态或动态等不同方面的性能进行度量与评价 1、传输时延 当一个分组在输出链路发…...
MAC卸载Vmware Fusion后无法再安装解决方案
MAC卸载Vmware Fusion后无法再安装解决方案 执行脚本 sudo rm -rf /Library/Application Support/VMware/VMware Fusion sudo rm -rf /Library/Application Support/VMware/Usbarb.rules sudo rm -rf /Library/Application Support/VMware Fusion sudo rm -rf /Library/Prefe…...
windows 服务器角色
windows 服务器角色 Active Directory Rights Management Services Active Directory RightsManagement Services (AD RS)帮助保护信息,防止未授权使用。AD RMS 将建立用户标识,并为授权用户提供受保护信息的许可证。 ServicesActive Directory 联合身…...
NAT学习手册
NAT(Network Address Translation,网络地址转换)是一种在局域网(LAN)内部使用私有地址,而在连接到互联网时将这些私有地址转换为全球唯一且有效的公网地址的技术。这种技术的主要目的是解决IPv4地址空间不足…...
python -从文件夹批量提取pdf文章的第n页,并存储起来
python -从文件夹批量提取pdf文章的第n页,并存储起来 废话不多说,看下面代码 讲解一下下面代码 reader PyPDF2.PdfReader (file) 将文件转化为PdfReader 对象,方便使用内置方法。 first_page reader.pages[0] 提取第一页 writer PyPDF…...
RPC中定时器制作思路
定时器设计 time_event time_event 类用来封装定时时间,内部需要包含一个任务执行时间,是否重复标记、是否取消标记,对于重复任务,还需要一个重复间隔时间。以及一个回调函数,用来执行任务到期后需要执行的动作。 构…...
Flutter简单实现滑块验证
现在实现一个 Flutter 滑动验证组件,类似于许多网站和应用程序中常见的“滑动以验证”功能。它通过滑动一个滑块来完成验证操作,用户需要将滑块拖动到指定位置以完成验证。 前置知识点整理 StatefulWidget 在 Flutter 中,StatefulWidget 是…...
第33周:运动鞋识别(Tensorflow实战第五周)
目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 1.3 查看数据 二、数据预处理 2.1 加载数据 2.2 可视化数据 2.3 再次检查数据 2.4 配置数据集 2.4.1 基本概念介绍 2.4.2 代码完成 三、构建CNN网络 四、训练模型 4.1 设置动态学习率 4.2 早停与保存最佳模型…...
C#中switch语句使用
编写一个程序,使用switch语句将用户输入的分数转换成等级,如表 private static void Main(string[] args) { Console.WriteLine("请输入分数:"); int score int.Parse(Console.ReadLine()); switch (score) …...
2024.11.28(作业)
思维导图 功能函数声明文件 #ifndef _FUN_H__ #define _FUN_H__ #include <myhead.h>#define MAX 50 //数组大小 #define QAZ 20 //长度和字符串大小typedef int datatype; //数据元素类型//2.1 定义顺序表类型 typedef struct {datatype data[MAX];int len; }S…...
充分统计量(Sufficient Statistic)概念与应用: 中英双语
充分统计量:概念与应用 在统计学中,充分统计量(Sufficient Statistic) 是一个核心概念。它是从样本中计算得出的函数,能够完整且无损地表征样本中与分布参数相关的信息。在参数估计中,充分统计量能够帮助我…...
2. STM32_中断
中断 中断是什么: 打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。 中断的意义: 中断可以高效处理紧急程序,不会一直占用CPU资源。如实时控制、故障处理、处理不确定…...
CAD 文件 批量转为PDF或批量打印
CAD 文件 批量转为PDF或批量打印,还是比较稳定的 1.需要本地安装CAD软件 2.通过 Everything 搜索工具搜索,DWG To PDF.pc3 ,获取到文件目录 ,替换到代码中, originalValue ACADPref.PrinterConfigPath \ r"C:…...
明明的随机数
题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉ÿ…...
2024金盾信安杯线上赛 MISC ezpng[wp]
下载题目发现给了个password和png 图片发现损坏的 password丢随波逐流一键解 base64 给出解码的结果是 cimbar搜索发现在Github有工具 然后对附件中的图片进行小厨房xor 得到一张新图片 利用工具进行跑出答案...
C与指针。
目录 1_指针理解 1.1变量的值 1.2变量的地址 1.3指针 1.4取变量的地址 2_分析指针 2.1分析指针变量的要素 2.2根据需求定义指针变量 3_指针的使用 3.1指针对变量的读操作 3.2指针对变量的写操作 4_指针占用空间的大小与位移 4.1指针占用空间的大小 4.2指针的位移…...
使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践
使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践 在这篇博客中,我们将介绍如何利用 Selenium 和 Python 爬取腾讯新闻的内容,并将结果保存到 CSV 文件中。本教程包含以下内容: 项目简介依赖安装实现功能的代码实现中的关键技…...
ElasticSearch的下载和基本使用(通过apifox)
1.概述 一个开源的高扩展的分布式全文检索引擎,近乎实时的存储,检索数据 2.安装路径 Elasticsearch 7.8.0 | Elastic 安装后启动elasticsearch-7.8.0\bin里的elasticsearch.bat文件, 启动后就可以访问本地的es库http://localhost:9200/ …...
处理HTTP请求的两种常见方式:多个处理器(Handler)、多个处理函数(HandleFunc),两者有什么区别
一、多个处理器(Handler)、多个处理函数(HandleFunc),两者的区别: 在Go语言中,处理HTTP请求的两种常见方式是使用http.Handler接口和http.HandleFunc函数。它们都用于定义如何处理HTTP请求,但它们之间有一些关键的区别࿱…...
在oracle下载jdk显示400 Bad Request Request Header Or Cookie Too Large
下载JDK17,官网地址:【https://www.oracle.com/cn/java/technologies/downloads/#jdk17-windows】 问题: 出现 400 Bad Request: Request Header Or Cookie Too Large 错误,通常是由于浏览器存储的 Cookies 或请求头过大所导致的…...
机器学习与深度学习-2-Softmax回归从零开始实现
机器学习与深度学习-2-Softmax回归从零开始实现 1 前言 内容来源于沐神的《动手学习深度学习》课程,本篇博客对于Softmax回归从零开始实现进行重述,依旧是根据Python编程的PEP8规范,将沐神的template代码进行简单的修改。近期有点懒散哈哈哈…...
Vue3之弹窗
文章目录 第一步、引入JS第二步、弹框 在前端开发语言Vue3,在管理端如何进行弹窗?下面根据API实现效果。 Element API文档: Element-plus文档 搭建环境可参考博客【 初探Vue3环境搭建与nvm使用】 第一步、引入JS <script lang"ts&…...
计算机的错误计算(一百七十一)
摘要 探讨 MATLAB 中秦九韶(Horner)多项式的错误计算。 例1. 用秦九韶(Horner)算法计算(一百零七)例1中多项式 直接贴图吧: 这样,MATLAB 给出的仍然是错误结果,因为准…...
利用Python爬虫精准获取淘宝商品详情的深度解析
在数字化时代,数据的价值日益凸显,尤其是在电子商务领域。淘宝作为中国最大的电商平台之一,拥有海量的商品数据,对于研究市场趋势、分析消费者行为等具有重要意义。本文将详细介绍如何使用Python编写爬虫程序,精准获取…...
_C#_串口助手_字符串拼接缺失问题(未知原理)
最近使用WPF开发串口助手时,遇到一个很奇怪的问题,无论是主线程、异步还是多线程,当串口接收速度达到0.016s一次以上,就会发生字符串缺失问题并且很卡。而0.016s就一切如常,仿佛0.015s与0.016s是天堑之隔。 同一份代码…...
volcano k8s 部署
下载volcano-development文件 官网 https://volcano.sh/zh/docs/installation/volcano-development.yaml wget https://raw.githubusercontent.com/volcano-sh/volcano/master/installer/volcano-development.yaml部署volcano 查下需要下载的镜像 grep vc- volcano-develo…...
Linux---对时/定时服务
文章目录 目录 文章目录 前言 一.对时服务 服务端配置 客户端配置 二.定时服务 单次定时任务 循环定时任务 前言 在当今信息化高速发展的时代,时间的准确性和任务的定时执行对于各种系统和服务来说至关重要。Linux操作系统,凭借其强大的功能和灵活的…...
13 设计模式之外观模式(家庭影院案例)
一、什么是外观模式? 1.定义 在日常生活中,许多人喜欢通过遥控器来控制家中的电视、音响、DVD 播放器等设备。虽然这些设备各自独立工作,但遥控器提供了一个简洁的界面,让用户可以轻松地操作多个设备。而这一设计理念正是 外观模…...
spring boot整合ArtemisMQ进行手动消息确认
1、SpringBoot整合ArtemisMQ进行手动消息确认使用的是: factory.setSessionTransacted(false); factory.setSessionAcknowledgeMode(ActiveMQJMSConstants.INDIVIDUAL_ACKNOWLEDGE); 2、SpringBoot整合ActiveMQ进行手动消息确认使用的是: factory.setSe…...
dpwwn02靶场
靶机下载地址:https://download.vulnhub.com/dpwwn/dpwwn-02.zip 信息收集 ip add 查看kali Linux虚拟机的IP为:10.10.10.128 https://vulnhub.com/entry/dpwwn-2,343/中查看靶机的信息,IP固定为10.10.10.10 所以kali Linux添加仅主机网卡…...
展示和添加篮球队信息--laravel与elementplus
之前使用laravel与inertia来做过一样的功能,感觉不满意,因此再结合elementplus重做一遍,先展示下重做后的效果。重写后的代码相比之下比较优雅。 球队首页 球队添加页 球员首页 很明显的改变,我新增了侧栏菜单来控制局部模块(这里是指NBABasketba…...
K8S疑难概念理解——Pod,应该以哪种Kind来部署应用,为什么不直接Pod这种kind?
文章目录 一、Pod概念深度理解,为什么一般不直接以kindPod资源类型来部署应用?二、究竟应该以哪种资源类型来部署应用 一、Pod概念深度理解,为什么一般不直接以kindPod资源类型来部署应用? Pod是Kubernetes中的最小部署单元,可以包含一个或…...
centos7怎么安装keepalive+nginx
在CentOS 7上安装Keepalived和Nginx,可以按照以下步骤进行: 安装Nginx 添加Nginx到Yum源: rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm安装Nginx: yum install -y ng…...
DevOps工程技术价值流:Jenkins驱动的持续集成与交付实践
一、Jenkins系统概述 Jenkins:开源CI/CD引擎的佼佼者 Jenkins,作为一款基于Java的开源持续集成(CI)与持续交付(CD)系统,凭借其强大的插件生态系统,成为DevOps实践中不可或缺的核心…...
el-select 修改样式
这样漂亮的页面,搭配的却是一个白色风格的下拉框 ,这也过于刺眼。。。 调整后样式为: 灯红酒绿总有人看着眼杂,但将风格统一终究是上上选择。下面来处理这个问题。 分为两部分。 第一部分:是修改触发框的样式 第二部…...
文本内容处理命令和正则表达式
文本内容处理命令 grep 用来过滤文本内容,以匹配要查询的结果。 -m 数字 匹配几次后停止: grep -m 1 /root/etc/passwd #查找包含root的行 -v 取反 -i 忽略字符的大小写,默认的,可以不加 -n 显示匹配的行号 -c 统计匹配的…...
【PlantUML系列】类图(一)
目录 一、类 二、接口 三、抽象类 四、泛型类 五、类之间的关系 六、添加注释 七、包图 八、皮肤参数 一、类 使用class关键字定义类,类名后跟大括号,声明类的属性和方法。 属性:格式为{visibility} attributeName : AttributeType…...
【Leetcode Top 100】21. 合并两个有序链表
问题背景 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 数据约束 两个链表的节点数目范围是 [ 0 , 50 ] [0, 50] [0,50] − 100 ≤ N o d e . v a l ≤ 100 -100 \le Node.val \le 100 −100≤Node.val≤100 l 1 l_1 …...
【真正离线安装】Adobe Flash Player 32.0.0.156 插件离线安装包下载(无需联网安装)
网上很多人声称并提供的flash离线安装包是需要联网才能安装成功的,其实就是在线安装包,而这里提供的是真正的离线安装包,无需联网即可安装成功。 点击下面地址下载离线安装包: Adobe Flash Player 32.0.0.156 for IE Adobe Fla…...
UG NX二次开发(C#)-如何进行NX多版本的编译
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、以删除对象为例3、解决方案1、前言 由于UG NX的版本不同,新版本与旧版本开发过程中,如果是在一个工程中,其会出现低版本不能编译高版本NX的问题,这是因为高版本会引入新的函数,或者…...
Spark优化--开发调优、资源调优、数据倾斜调优和shuffle调优等
针对Spark优化,我们可以从多个角度进行,包括开发调优、资源调优、数据倾斜调优和shuffle调优等。以下是一些具体的优化方法: 1. 开发调优 避免创建重复的RDD:对于同一份数据,只应该创建一个RDD,避免创建多…...
911事件反思:灾难通信和ddos之间的取舍
流量分析与监控 建立基线流量模型:在正常情况下监控和记录网络流量,建立正常流量的基线。这样,当突发请求发生时,可以更容易地识别出流量的异常变化。 实时流量监控:使用流量分析工具实时监控网络流量,快速…...
网络安全之IP伪造
眼下非常多站点的涉及存在一些安全漏洞,黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》(建议搞IT的都要看下)中。亚伦斯沃茨(真实人物,神一般的存在)涉…...
算法笔记:力扣24. 两两交换链表中的节点
思路: 本题最简单的就是通过递归的形式去实现 class Solution {public ListNode swapPairs(ListNode head) {if(head null || head.next null){return head;}ListNode next head.next;head.next swapPairs(next.next);next.next head;return next;} } 对于链…...
Shell脚本小练习
学习了这么长时间Shell脚本,总得来一次小小的练习吧,那么请看下文! 1.用Shell写一个小计算器。 通过read命令获取用户输入的表达式,表达式的格式设定为操作数1 运算符 操作数2,例如53,然后利用设计的脚本…...
Fastify装饰器:增强你的路由处理功能加入日志
Fastify以其出色的性能和扩展性脱颖而出。装饰器是Fastify提供的一个强大功能,它允许开发者在不修改核心代码的情况下,向请求(Request)和响应(Response)对象添加自定义属性和方法。本文将通过一个简单的示例…...