0902,DEQUE,LIST,VECTOR
目录
01_vector.cc
02_vector.cc
作业
01STL包括哪些组件?各自具有哪些特点?
02 序列式容器包括哪些?他们之间有哪些异同?
03 下面程序有什么错误?
04 创建和初始化vector的方法,每种都给出一个实例?当然也可以把deque与list写出来
05 如果c1与c2是两个容器,下面的比较操作有什么限制?if(c1 < c2)
06 STL中的std::deque容器的实现原理?
07 评委打分的例子:要求:有五名选手ABCDE,10个评委打分,去掉最高分和最低分,求出每个选手的平均分。
08 编程题:从一个 vector 初始化一个 string。
09 题目:使用vector打印九九乘法表。
01_vector.cc
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;template <class T>
class vec{
public:
private:typedef T* _iterator;
};
void test(){/*1*/vector<int> num0;/*2*/vector<int> num1(10,5);//count same valueint arr[10]={0,1,2,3,4,5,6,7,8,9};/*3*/vector<int> num2(arr,arr+10);//[0,10)/*4*///copy & move/*5*/vector<int> num3{4,5,6,3,2,7,3,9};//-----------------------------------//vector<int>::iterator it=num1.begin();//未初始化迭代器for(;it!=num1.end();++it){cout<<*it<<" ";}cout<<endl;//-----------------------------------//for(size_t idx;idx!=sizeof(arr)/sizeof(arr[0]);++idx){cout<<num1[idx]<<" ";}cout<<endl;//-----------------------------------//for(auto itt=num2.begin();itt!=num2.end();itt++){cout<<*itt<<" ";}cout<<endl;//-----------------------------------//for(auto &ele: num3){cout<<ele<<" ";}cout<<endl;
}int main(void)
{test();return 0;
}
02_vector.cc
#include <iostream>
#include <vector>
#include <deque>
#include <list>
using std::cout;
using std::endl;
using std::vector;
using std::list;
using std::deque;template <typename Container>
void display(const Container & con){for(auto &ele: con){cout<<ele<<" ";}cout<<endl;
}
void display_cap(const vector<int> & con){cout<<endl;display(con);cout<<"size::"<<con.size()<<endl;cout<<"capacity::"<<con.capacity()<<endl;
}//---------------------------------//
//vector 可变数组
template <class T>
class vec{
public:T* data(){return _M_start;}
private:T* _M_start; //第一个元素T* _M_finish; //最后一个元素的下一个位置T* _M_end_of_storage; //最后一个空间的下一个位置
};
//---------------------------------//
//deque 逻辑连续 物理存储分散
//中控器数组 Map --> 小片段(内部连续)
//迭代器不是一个普通类型的指针,是一个类,对指针的基本功能都做了重载
template <class T>
class _Tp{
private:_Tp* _M_cur;_Tp* _M_first;_Tp* _M_last;/* _Map_pointer _M_node; //和中控器联系 */
};
template <class _Tp,class _Alloc>
class _deque_base{
};
//---------------------------------//void test(){vector<int> num3{4,5,6,7,8,9};display(num3);num3.push_back(333);display(num3);num3.pop_back();display(num3);//vector不支持头部插入和删除,一端开口//效率——整体前移/后移cout<<"<<<<<<<<<<<<<<<<vector first number addr"<<endl;&num3;//error _M_tartcout<<&(*num3.begin())<<endl;cout<<&(num3[0])<<endl;int *pdata=num3.data();cout<<pdata<<endl;vector<int>::iterator v_it=num3.begin();v_it++;v_it+=2;cout<<"*v_it "<<*v_it<<endl;num3.insert(v_it,11);//insert front ,return curdisplay_cap(num3);cout<<"*v_it "<<*v_it<<endl;/* num3.insert(v_it,10,222);//迭代器失效 invalid pointer */v_it=num3.begin();num3.insert(v_it,10,222);//迭代器失效 invalid pointerdisplay_cap(num3);cout<<"*v_it "<<*v_it<<endl;v_it=num3.begin();num3.insert(v_it,{666,777,888});display_cap(num3);cout<<"*v_it "<<*v_it<<endl;v_it=num3.begin();num3.insert(v_it,num3.begin(),num3.end());display_cap(num3);cout<<"*v_it "<<*v_it<<endl;//insert操作的时候,会导致底层发生扩容操作//迭代器还指向老的空间,老的空间已经回收了,所以//迭代器失效了//解决:每次都重新 置位 迭代器cout<<endl<<endl;//-----------------------------//list<int> num2{4,5,6,7,8,9};display(num2);num2.push_back(333);num2.push_front(44444);display(num2);num2.pop_back();num2.pop_front();display(num2);cout<<"<<<<<<<<<<<<<<<<<<list push anywhere"<<endl;list<int>::iterator l_it=num2.begin();l_it++;/* l_it+=2; */cout<<"*l_it "<<*l_it<<endl;num2.insert(l_it,11);//insert front ,return curdisplay(num2);cout<<"*l_it "<<*l_it<<endl;num2.insert(l_it,3,222);display(num2);cout<<"*l_it "<<*l_it<<endl;num2.insert(l_it,{666,777,888});display(num2);cout<<"*l_it "<<*l_it<<endl;num2.insert(l_it,num2.begin(),num2.end());display(num2);cout<<"*l_it "<<*l_it<<endl;cout<<endl<<endl;//-----------------------------//deque<int> num1{0,1,2,3,4,5,6,7};display(num1);num1.push_back(333);num1.push_front(44444);display(num1);num1.pop_back();num1.pop_front();display(num1);cout<<"<<<<<<<<<<<<<<<<<<deque push anywhere"<<endl;deque<int>::iterator d_it=num1.begin();d_it++;d_it+=2;cout<<"*d_it "<<*d_it<<endl;num1.insert(d_it,11);//insert前面一半,前移前面一半,后面一半后移display(num1);cout<<"*d_it "<<*d_it<<endl;num1.insert(d_it,3,222);display(num1);cout<<"*d_it "<<*d_it<<endl;num1.insert(d_it,{666,777,888});display(num1);cout<<"*d_it "<<*d_it<<endl;num1.insert(d_it,num1.begin(),num1.end());display(num1);cout<<"*d_it "<<*d_it<<endl;cout<<endl;}int main(void)
{test();return 0;
}
作业
01STL包括哪些组件?各自具有哪些特点?
01 容器(用来存放数据,也是数据结构
02 算法(用来实现容器的算法操作
03 迭代器(用来访问容器中的成员,是广义上的指针,也叫泛型指针
04 适配器(起到适配的作用
05 函数对象(仿函数:进行定制化操作
06 空间配置器(对空间的申请和释放进行管理
02 序列式容器包括哪些?他们之间有哪些异同?
01 vector 可变数组
02 deque 双向队列
03 list 双向链表
04 foward_list 单向链表
05 array 数组
内存上,array 和 vector是一片连续的空间,其余是逻辑上连续,物理存储时分散的
实现上,vector底层通过三个指针实现,分别指向第一个元素的位置,最后一个元素的下一个位置,最后一个空间的下一个位置;
deque的实现依靠 中控器数组Map+小片段实现的,片段内部是连续的,片段与片段之间是不连续的,当deque需要扩容时,直接对Map进行扩容,申请新的小片段(小片段成员包括四个指针,分别指向第一个元素,最后一个元素,当前元素,一个指针用于和Map进行联系)
list 链表喵
使用上,deque,vector支持随机访问,list不支持
03 下面程序有什么错误?
list<int> lst;
list<int>::iterator iter1 = lst.begin(), iter2 = lst.end();
while(iter1 < iter2)
{ //....
}
list的迭代器不能进行<比较,要用迭代器特有的!=
04 创建和初始化vector的方法,每种都给出一个实例?当然也可以把deque与list写出来
01 创建空容器
02 count个value
03 迭代器
04 {}
05 拷贝构造和移动构造
#include <iostream>
#include <vector>
#include <deque>
#include <list>
using std::cout;
using std::endl;
using std::vector;
using std::list;
using std::deque;template <class T>
void print( T & con){for(auto & ele: con){cout<<ele<<" ";}cout<<endl;
}void test(){/*1*/vector<int> num0;/*2*/vector<int> num1(10,5);//count same valueint arr[10]={0,1,2,3,4,5,6,7,8,9};/*3*/vector<int> num2(arr,arr+10);//[0,10)/*4*/vector<int> num4(num1);/*4*/vector<int> num5(vector<int>{1,2,3});/*5*/vector<int> num3{4,5,6,3,2,7,3,9};print(num0);print(num1);print(num2);print(num3);print(num4);print(num5);cout<<endl;
}
void test1(){/*1*/deque<int> num0;/*2*/deque<int> num1(10,5);//count same value/*3*/deque<int> num2(num1.begin(),num1.end());//[0,10)/*4*/deque<int> num4(num1);/*4*/deque<int> num5(deque<int>{1,2,3});/*5*/deque<int> num3{4,5,6,3,2,7,3,9};print(num0);print(num1);print(num2);print(num3);print(num4);print(num5);cout<<endl;
}
void test2(){/*1*/list<int> num0;/*2*/list<int> num1(10,5);//count same value/*3*/list<int> num2(num1.begin(),num1.end());//[0,10)/*4*/list<int> num4(num1);/*4*/list<int> num5(list<int>{1,2,3});/*5*/list<int> num3{4,5,6,3,2,7,3,9};print(num0);print(num1);print(num2);print(num3);print(num4);print(num5);cout<<endl;
}
int main(void)
{test();test1();test2();return 0;
}
05 如果c1与c2是两个容器,下面的比较操作有什么限制?if(c1 < c2)
01,是相同的容器类型
02,容器的元素类型支持比较操作
03,容器内部元素的顺序性比较(deque,vector支持,list不支持,只能使用!=)
04,容器支持随机访问元素
06 STL中的std::deque容器的实现原理?
deque的实现依靠 中控器数组Map+小片段实现的,片段内部是连续的,片段与片段之间是不连续的,当deque需要扩容时,直接对Map进行扩容,申请新的小片段(小片段成员包括四个指针,分别指向第一个元素,最后一个元素,当前元素,一个指针用于和Map进行联系)
07 评委打分的例子:要求:有五名选手ABCDE,10个评委打分,去掉最高分和最低分,求出每个选手的平均分。
思路:
1.创建Person类,定义name,score成员属性;创建五名选手存放到vector容器中;
2.遍历vector容器,首先10个评委的打分存放到deque容器中,sort算法对分数排序,去掉最高最低分;
3.deque容器遍历,进行剩余分数的累加,求平均;
4.输出每个选手的姓名,成绩
提示:还是容器vector与deque的基本使用
//嘻嘻,每一个初始化都会worning#include <iostream>
#include <vector>
#include <deque>
#include <string.h>
#include <random>
using std::cout;
using std::endl;
using std::vector;
using std::deque;
using std::ostream;#define PER_NUM 5
#define SCO_NUM 10class Person{
public:
//const char* 坏,终于知道为什么worning了Person(char* name,int sc):_name(new char[strlen(name)+1]()),_score(sc){strcpy(_name,name);}Person(const Person & p):_name(new char[strlen(p._name)+1]()),_score(p._score){strcpy(_name,p._name);}//vector初始化使用拷贝构造~Person(){if(_name){delete [] _name;_name=nullptr;}}Person & operator=(const Person & p){if(this!=&p){delete [] _name;_name=new char[strlen(p._name)+1]();strcpy(_name,p._name);_score=p._score;}return *this;}void p_sc(int sc){_score=sc;}friend ostream & operator<<(ostream & os,const Person & p);
private:char* _name;int _score;
};
ostream & operator<<(ostream & os,const Person & p){os<<p._name<<"--"<<p._score<<" ";return os;
}//-------------------------//
void test(){Person p1("xixi",0);Person p2("jiajia",0);Person p3("kewu",0);Person p4("dada",0);Person p5("shazi",0);vector<Person> people{p1,p2,p3,p4,p5};std::random_device rd;//获取随机数种子std::mt19937 gen(rd());//生成随机数引擎std::uniform_int_distribution<> dis(60,100);//范围for(int i=0;i<PER_NUM;i++){deque<int> sc;for(int j=0;j<SCO_NUM;j++){sc.push_back(dis(gen));/* cout<<sc[j]<<" "; */}/* cout<<endl; */int max=0,min=0,rel=0;for(auto & ele:sc){if(ele>max){max=ele;}if(ele<min){min=ele;}rel+=ele;}rel=(rel-max-min)/(SCO_NUM-2);people[i].p_sc(rel); cout<<people[i]<<endl;}cout<<endl;
}
int main(void)
{test();return 0;
}
#include <iostream> #include <string> #include <vector> #include <deque> #include <algorithm>using namespace std;class Person { public:Person(const string &name,int score) : _name(name), _score(score){}string _name;int _score; };void creatPerson(vector<Person>& vec) {string nameSeed = "ABCDE";for (int idx = 0; idx < 5; ++idx){string name = "选手";name += nameSeed[idx];int score = 0;Person p(name, score);vec.push_back(p);} }void setScore(vector<Person>& vec) {for (vector<Person>::iterator it = vec.begin(); it != vec.end(); ++it){deque<int> dq;for (int idx = 0; idx < 10; ++idx) {//将分数设定在[60, 100]范围中int score = ::rand() % 41 + 60;//产生随机的分数dq.push_back(score);}//对分数进行排序sort(dq.begin(), dq.end());dq.pop_front();//去掉最低分dq.pop_back();//去掉最高分int sum = 0;for (deque<int>::iterator dit = dq.begin(); dit != dq.end(); ++dit){sum += *dit;}//求10个评委的平均分int avg = sum/dq.size();//然后将10个评委的平均分赋值给每个选手it->_score = avg; } }void showScore(vector<Person>& vec) {for (vector<Person>::iterator it = vec.begin(); it != vec.end(); ++it) {cout << "姓名:" << it->_name << " 平均分数:" << it->_score << endl;} }int main() {//种随机种子::srand(::clock());//定义Person类型的容器vector<Person> vec;//创建五名选手,创建容器类里面的成员及其属性creatPerson(vec);//给每个选手设定分数(让10个评委打分)setScore(vec);//显示每个选手的分数showScore(vec); return 0; }不想看,虽然我的初始化一直woring
//Person(const char* name,int score)坏,终于知道为什么worning了
08 编程题:从一个 vector<char> 初始化一个 string。
提示:可以定义vector如下:vector<char> vc = { 'H', 'E', 'L', 'L', 'O' };然后查看如何给string进行初始化或者赋值,考查对vector与string的基本使用
#include <iostream>
#include <vector>
#include <deque>
#include <list>
#include <string>
using std::cout;
using std::endl;
using std::vector;
using std::list;
using std::deque;
using std::string;//---------------------------------//void test(){vector<char>vc={'h','e','l','l','o'};string s1{'\0'};cout<<s1<<endl;for(auto & ele:vc){s1+=ele;}s1+='\0';cout<<s1<<endl;
}int main(void)
{test();return 0;
}
#include <iostream> #include <string> #include <vector> using namespace std; int main() {vector<char> vc = { 'H', 'E', 'L', 'L', 'O' };string s(vc.data(), vc.size());cout << s << endl;return 0; }我好蠢嘻嘻
09 题目:使用vector打印九九乘法表。
提示:可以使用vector嵌套vector的使用方式。例如:vector<vector<int>>,然后就是veector的基本操作。
#include <iostream>
#include <vector>
#include <deque>
#include <list>
#include <string>
using std::cout;
using std::endl;
using std::vector;
using std::list;
using std::deque;
using std::string;//---------------------------------//void print(vector<vector<int>> & con){for(int i=0;i<9;i++){for(auto & ell : con[i]){cout<<(i+1)<<"×"<<ell<<"="<<(i+1)*(ell)<<" ";}cout<<endl;}
}//---------------------------------//
void test(){vector<vector<int>> v1(9);for(int i=0;i<9;i++){vector<int> tempv;for(int j=0;j<=i;j++){tempv.push_back(j+1);}v1[i]=tempv;}print(v1);
}int main(void)
{test();return 0;
}
#include<iostream> #include<vector>using namespace std;int main() {vector<vector<int> >v2d;for (int i = 0; i < 9; i++){v2d.push_back(vector<int>());}for (int i = 0; i < v2d.size(); i++){for (int j = 0; j <= i; j++){v2d[i].push_back((i + 1) * (j + 1));}}for (int i = 0; i < v2d.size(); i++){for (int j = 0; j < v2d[i].size(); j++){cout << i + 1 << "*" << j + 1 << "=" << v2d[i][j] << "\t";}cout << endl;}return 0; }01,初始化9个空 vector<int>-->vector<vector<int>>
02,vector<int>存乘积
03,打印
相关文章:
0902,DEQUE,LIST,VECTOR
目录 01_vector.cc 02_vector.cc 作业 01STL包括哪些组件?各自具有哪些特点? 02 序列式容器包括哪些?他们之间有哪些异同? 03 下面程序有什么错误? 04 创建和初始化vector的方法,每种都给出一个实例…...
LeetCode 每日一题 2024/9/2-2024/9/8
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 9/2 3153. 所有数对中数位不同之和9/3 2708. 一个小组的最大实力值9/4 2860. 让所有学生保持开心的分组方法数9/5 3174. 清除数字9/6 3176. 求出最长好子序列 I9/7 3177. 求…...
Linux中的Vim文本编辑器
Linux中的Vim是一个非常强大的文本编辑器,它提供了丰富的命令来支持各种文本编辑操作。以下是一个Vim常用命令的详细总结,涵盖了基本操作、编辑命令、移动光标、查找替换、保存退出等多个方面。 一、基本操作 启动Vim vim:直接启动Vim编辑器…...
rancher搭建k8s及jenkins自动化部署
1、准备环境 角色IP用途k8s-rancher-master192.168.3.63master节点k8s-rancher-node01192.168.3.64node节点k8s-rancher-node02192.168.3.66node节点k8s-rancher-server192.168.2.33rancher-server节点注: 服务器名需要配置不同,相同服务器名不能加入node节点 在所有节点进行…...
vue el-dialog嵌套解决无法点击问题
产生原因: 当你在 el-dialog 上嵌套另一个 el-dialog 窗口时,可能会遇到内部对话框无法点击的问题。这通常是由于嵌套对话框的遮罩层(overlay)或其他样式问题造成的。 解决方案: 如果你的 el-dialog 组件支持 append-to-body 属性ÿ…...
c# c++程序 交互
目录 一、两种不同程序写的进程交互 1、定义交互消息 2、定义C进程发来的消息ID 3、定义C进程交互的句柄 及给C进程发送的消息ID 4、定义交互消息所需的数据类型 5、引入所需的系统函数 6、给主进程发消息 7、写入本进程主窗口句柄 8、处理发来的交互消息 一、两种不…...
解决ruoyi框架中使用pagehelper插件分页查询后对数据进行对象转换后失效问题
一、场景重现 使用rouyi框架时,可以看到很多分页查询,如: //-----------SysConfigController------------- GetMapping("/list") public TableDataInfo list(SysConfig config) {startPage();List<SysConfig> list config…...
RabbitMQ 应用
文章目录 前言1. Simple 简单模式2. Work Queue 工作队列模式3. Pubulish/Subscribe 发布/订阅模式Exchange 的类型 4. Routing 路由模式5. Topics 通配符模式6. RPC RPC通信7. Publisher Confirms 发布确认1. 单独确认2. 批量确认3. 异步确认 前言 前面我们学习了 RabbitMQ 的…...
使用Python读取Excel数据的详细指南
在数据分析中,Excel文件是一种常见的数据存储格式。使用Python读取Excel数据可以帮助我们更方便地进行数据处理和分析。本文将介绍如何在Python 2和Python 3中读取Excel数据,具体步骤和代码示例详细说明。 准备工作 在开始之前,请确保你已经…...
VitePress 动态路由与路径加载器详解
在使用 VitePress 构建静态网站时,动态路由功能允许我们通过单个 Markdown 文件和动态数据生成多个页面。本文将详细介绍如何使用动态路由以及路径加载器文件来生成这些页面,并提供实例代码和解释说明。 动态路由基础 动态路由的核心在于使用带有参数的…...
C#编程语言及.NET 平台快速入门指南
Office Word 不显示 Citavi 插件,如何修复?_citavi安装后word无加载项-CSDN博客 https://blog.csdn.net/Viviane_2022/article/details/128946061?spm1001.2100.3001.7377&utm_mediumdistribute.pc_feed_blog_category.none-task-blog-classify_ta…...
高等代数精解【9】
文章目录 向量空间与矩阵矩阵的行列式矩阵A的秩保持不变方阵的行列式线性无关的条件1. 线性组合为零向量的唯一性2. 矩阵的秩3. 几何解释(对于二维和三维空间)4. 行列式(对于方阵)总结 矩阵的非零子式基础重要性例子注意事项 非奇…...
谷粒商城の缓存篇
文章目录 前言一、本地缓存和分布式缓存1.本地缓存2.分布式缓存 二、项目实战1.配置Redis2.整合业务代码2.1 缓存击穿2.2 缓存雪崩2.3 缓存穿透2.4 业务代码1.0版2.5 分布式锁1.0版2.6 分布式锁2.0版2.7 Spring Cache及缓存一致性问题2.7.1 Spring Cache2.7.2 缓存一致性问题2.…...
永远学习:为什么人工智能难以适应新挑战
理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境,正如水适应水瓶。”——中国谚语 “适应或灭亡,现在和以往一样,是大自然的必然法则。”——赫伯特乔治威尔斯 近年来,人工智能取得了长足的进步。所…...
【spring】 Jackson :@JsonIgnore 注解
@JsonIgnore 是 Jackson 库中的一个注解,用于在序列化和反序列化过程中忽略某个字段。也就是说,当对象被转换为 JSON 或从 JSON 转换为对象时,带有 @JsonIgnore 注解的字段将不会被包含在内在这个示例中,ignoredField 字段将不会出现在生成的 JSON 字符串中。 import com.…...
Dependencies与DependencyManagement的区别
现在Maven项目管理,在开发中时比较常用的,在一些项目汇总遇到依赖冲突的问题之后,还是没有能有一个很好的解决办法,这次就来看看在使用Maven管理依赖的过程中dependencies与dependencyManagement的区别。 DepencyManagement应用场…...
git svn 日记
1. git log -p -1 --name-only 该命令用于查看最新的一次提交记录的详细信息,包括文件更改情况。 git log:显示 Git 仓库的提交历史。-p:显示每次提交的差异 (diff),也就是文件内容的修改部分。-1:表示只显示最近的一…...
FSMC
RAM ROM RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。 并且RAM的速度要远远高于ROM的速度。 SRAM SRAM 的存储单元以锁存器来存储数据,种电路结构不需要定时…...
NAT技术+代理服务器+内网穿透
NAT技术 IPv4协议中,会存在IP地址数量不充足的问题,所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的,而公网中的IP地址都是唯一的,所以NAT(Network Address Translation&…...
【ABAP】ole2 excel多sheet导入导出
原理就不分享了 原来是用了动态表格,但是要导出不方便,所以就写死了,excel多sheet导入的类放在另一篇文章里 REPORT zcdemo17. INCLUDE ole2incl.DATA: excel TYPE ole2_object,workbooks TYPE ole2_object,workbook TYPE ole2_object…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
