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

数据结构之顺序表

目录

1.线性表

1.1 线性表的定义:零个或多个数据元素的有限序列。

1.2深度解析

1.3 线性表的抽象数据类型

2.顺序表

2.1 顺序表的定义和存储方式

2.2静态顺序表

2.2.1 静态顺序表的使用

2.2.3 为什么我们要使用typedef呢?

2.2.4 为什么我们要使用结构体来封装这三个变量?

2.2.5 静态数据表的缺点

2.3动态顺序表

2.3.1动态顺序表的优点

2.3.2 顺序表的增、删、查、改

顺序表的初始化

顺序表的销毁

顺序表的输出

顺序表的扩容

顺序表的插入与删除

顺序表的尾插

顺序表的尾删

顺序表的头插

顺序表的头删

顺序表的某个位置插入

顺序表的某个位置删除

2.4完整代码


1.线性表

1.1 线性表的定义:零个或多个数据元素的有限序列。

1.2深度解析

  • 序列:表示元素和元素是有顺序的,若有多个元素,则第一个数据无前驱,最后一个数据无后继,其他元素有且仅有一个前驱和后继。
  • 有限:在计算机中处理对象都是有限的,不像在数学概念中,有无限个元素的数列。

1.3 线性表的抽象数据类型

线性表的存储结构主要有两种:顺序存储结构和链式存储结构。顺序存储结构是将线性表中的元素存储在一段连续的内存空间中,而链式存储结构则是通过指针将各个元素连接起来,不一定占用连续的内存空间。不同的存储结构会影响线性表操作的效率,例如在顺序表中插入或删除元素可能需要移动大量元素,而在链表中这些操作通常更高效。

2.顺序表

顺序表就是一种顺序存储结构

2.1 顺序表的定义和存储方式

顺序表:用一段地址连续的存储单元依次存储数据元素的线性结构。

存储方式:在内存中找一块空地,通过占位的方式,把一定的存储空间占用,然后将相同的数据类型元素依次放在这块空地中,那么,既然存储的元素都是相同的数据类型,那么在c语言中我们就可以用一维数组来实现顺序结构的存储

2.2静态顺序表

静态顺序表:使用定长数组存储元素。

2.2.1 静态顺序表的使用

//静态顺序表
typedef int SLDataType; //方便后续该数据类型,如果不这么设置,想要修改数据类型的话,会产生很多步骤
#define N 20
typedefy struct SeqList
{SLDataType a[N];	//存储空间的起始位置int size;		//有效数据的个数int capacity;	//空间容量大小
}SL;

由上述代码可得,顺序表需要三个变量

存储空间的起始地址:a

有效数据的个数:size

空间容量的大小:capacity

2.2.3 为什么我们要使用typedef呢?

在顺序表中使用typedef主要是为了提高代码的可读性和可维护性。typedef是C和C++编程语言中的一个关键字,它允许为现有的数据类型(如基本数据类型int, float, char等)或自定义的数据类型(如结构体、枚举等)创建一个新的名字。这种做法可以使代码更加简洁,并且能够更好地表达数据的用途和含义
typedef int SLDataType; //方便后续该数据类型,如果不这么设置,想要修改数据类型的话,会产生很多步骤

在结构体那里使用简化了名称,方便后续结构体

2.2.4 为什么我们要使用结构体来封装这三个变量?

  • 明确数据关系:结构体允许我们将相关的数据项组合在一起,形成一个数据集合。这样做的好处是能够明确数据之间的关系,使得代码更加清晰和易于理解。例如,在顺序表中,我们可以使用结构体来封装数组和记录数组长度的变量,从而更直观地表示顺序表的状态。
  • 简化对数据块的操作:通过结构体,我们可以将一系列相关的数据操作封装在一起,形成一个数据块。这样,当我们需要对这些数据进行操作时,只需要操作这个数据块即可,而不需要逐个处理每个数据项。这大大简化了对数据块的操作,提高了代码的效率和可读性。
  • 简化参数列表:在函数调用时,如果需要传递多个相关的数据项,使用结构体可以简化参数列表。将这些数据项打包成一个结构体,作为函数的参数,可以减少函数传递时的多个参数传进传出的复杂性。
  • 减少维护成本:使用结构体可以减少代码的维护成本。一旦数据结构定义好了,就可以在整个程序中重复使用,而不需要每次都重新定义这些数据项。此外,如果需要改变数据结构,只需要修改结构体的定义,而不需要在所有使用这些数据的地方都进行修改。

2.2.5 静态数据表的缺点

  • 内存空间的预分配:静态数据表在创建时需要预先申请足够大的一整块内存空间,这意味着存储数据元素的个数从其创建的那一刻就已经确定,后期无法更改。这种设计限制了灵活性,如果后续需要增加更多的数据,可能会遇到内存不足的问题。
  • 内存碎片化:静态数据表可能会存在内存碎片化使用的情况,而且内存不连续,需要借助指针进行访问。这种内存管理方式可能导致内存利用率不高,同时也增加了编程的复杂性。
  • 文件体积大:由于数据都存储在HTML文件中,静态数据表的文件体积通常较大。这不仅占用了更多的存储空间,也可能影响网站的传输效率和加载速度。
  • 维护困难:如果需要更改源代码,静态数据表要求必须全部更改,而不能像动态数据表那样局部更新。这对于非专业人士来说可能会比较麻烦,尤其是在需要频繁更新内容的情况下。

总而言之就是空间开多了浪费,开少了不够

2.3动态顺序表

//动态顺序表
typedef int SLDataType; //方便后续该数据类型,如果不这么设置,想要修改数据类型的话,会产生很多步骤
#define INIT_CAPACITY 4
typedef struct SeqList
{SLDataType* arr;	//存储空间的起始位置int size;		//有效数据的个数int capacity;	//空间容量大小
}SL;

2.3.1动态顺序表的优点

  • 灵活的容量调整:动态顺序表的一个显著优点是其容量可以动态调整。这意味着当需要插入的元素数量超过当前表长时,可以动态地增加数据域的长度。这种特性克服了静态顺序表容量固定不变的缺点,使得动态顺序表能够适应不断变化的数据量需求。
  • 高效的存取速度:由于动态顺序表中的元素在内存中是连续存储的,因此可以通过下标直接访问元素,实现了快速的随机访问。这种O(1)级别的存取速度使得动态顺序表在需要频繁访问元素的应用场景中非常高效。
  • 简洁的代码实现:动态顺序表的操作相对简单,例如初始化、插入、查找、删除等操作都可以通过简单的函数实现。这不仅降低了编程的复杂性,也有助于提高代码的可读性和维护性。
  • 自动化内存管理:在C++等高级语言中,动态顺序表(如vector)可以自动管理内存,包括动态分配和释放内存。这种自动化管理减少了手动管理内存的负担,降低了出现内存泄漏等错误的风险。
  • 空间利用率高:动态顺序表在存储数据时,由于其元素是连续存储的,因此具有较高的空间密度和利用率。相比于一些链式结构,动态顺序表在存储空间的使用上更加紧凑。
  • 综上所述,动态顺序表因其灵活的容量调整、高效的存取速度、简洁的代码实现、自动化内存管理和高空间利用率等优点,在数据结构中占有重要地位,并广泛应用于各种软件开发中。

2.3.2 顺序表的增、删、查、改

顺序表的初始化
//顺序表的初始化
void SLInit(SL* ps)
{assert(ps);//将a的空间申请好ps->a = (SLDataType*)malloc(sizeof(SLDataType) * INIT_CAPACITY);//检查空间是否开辟成功if (ps->a == NULL){perror("malloc fail");return 1;}ps->size = 0;ps->capacity = INIT_CAPACITY;
}
顺序表的销毁
//顺序表的销毁
void SLDestroy(SL* ps)
{assert(ps);free(ps->a);ps->a = NULL;ps->size = 0;ps->capacity = 0;
}
顺序表的输出
//顺序表的输出
void SLPrint(SL* ps)
{assert(ps);int i = 0;for (i = 0;i < ps->size;i++){printf("%d ", ps->a[i]);}printf("\n");
}
顺序表的扩容
//检查容量并决定是否扩容
void SLCheckCapacity(SL* ps)
{assert(ps);//当有效数字个数等于空间容量时,我们就需要扩容了SLDataType* tmp = (SLDataType*)realloc(ps->a,sizeof(SLDataType) * INIT_CAPACITY * 2);//检查是否扩容成功if (tmp == NULL){perror("rrealloc fail");return 1;}ps->a = tmp;ps->capacity *= 2;
}
顺序表的插入与删除
顺序表的尾插

//尾插
void SLPushBack(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);ps->a[ps->size] = x;ps->size++;
}
顺序表的尾删

//尾删
void SLPopBack(SL* ps)
{assert(ps);assert(ps->size > 0);SLCheckCapacity(ps);ps->a[ps->size - 1] = 0;ps->size--;
}

顺序表的头插

//头插
void SLPushFront(SL* ps, SLDataType x)
{assert(ps);SLCheckCapacity(ps);int end = ps->size - 1;while (end >= 0){ps->a[end+1] = ps->a[end];--end;}ps->a[0] = x;ps->size++;
}
顺序表的头删
//头删
void SLPopFront(SL* ps)
{assert(ps);assert(ps->size > 0);int begin = 1;while (begin < ps->size){ps->a[begin - 1] = ps->a[begin];++begin;}ps->size--;
}
顺序表的某个位置插入

//某个位置插入
void SLInsert(SL* ps, int pos, SLDataType x)
{assert(ps);assert(pos >= 0 && pos <= ps->size);SLCheckCapacity(ps);int end = ps->size-1;if (end >= pos){ps->a[end + 1] = ps->a[end];end--;}ps->a[pos]=x;ps->size++;
}
顺序表的某个位置删除

//某个位置删除
void SLErase(SL* ps, int pos)
{assert(ps);assert(pos >= 0 && pos < ps->size);SLCheckCapacity(ps);int begin = pos + 1;while (begin < ps->size){ps->a[begin] = ps->a[begin - 1];++begin;}ps->size--;
}

头插:SLInsert(ps, 0, x);

头删:SLErase(ps, ps->size - 1);

尾插:SLInsert(ps,ps->size, x);

尾删:SLErase(ps, 0);

2.4完整代码

//SeqLIst.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>/*
typedef int SLDataType;
#define N 10//静态顺序表--开少了不够用,开多了浪费struct SeqList
{SLDataType a[N];int size;
};
*/typedef int SLDataType;//好处想改为其他类型,只用改一处数据
#define INIT_CAPACITY 4//动态顺序表--按需申请
typedef struct SeqList
{SLDataType* a;//一个指针指向一个空间,在堆上申请空间int size;			 //有效数据个数int capacity;	//空间容量
}SL;//数据管理的需求:增,删,查,改//顺序表的初始化
void  SLTnit(SL* ps);
//销毁
void SLDestroy(SL* ps);
//打印顺序表
void SLPrint(SL* s);
//检查容量并决定是否扩容
void SLCheckCapacity(SL* ps);//顺序表的插入与删除
//尾插
void SLPushBack(SL* ps, SLDataType x);
//尾删
void SLPopBack(SL* ps);
//头插
void SLPushFront(SL* ps, SLDataType x);
//头删
void SLPopFront(SL* ps);
//某个位置插入
void SLInsert(SL* ps, int pos, SLDataType x);
//某个位置删除
void SLErase(SL* ps, int pos);
//查找
int SLFind(SL* ps, SLDataType x);
//SeqList.c
#include"SeqList.h"//初始化
void  SLTnit(SL* ps)
{assert(ps);ps->a =(SLDataType*)malloc(sizeof(SLDataType)*INIT_CAPACITY);if (ps->a == NULL){perror("malloc fail");return 1;}ps->size = 0;ps->capacity = INIT_CAPACITY;
}//销毁
void SLDestroy(SL* ps)
{assert(ps);free(ps->a);ps->a == NULL;ps->capacity = ps->size = 0;
}//打印顺序表
void SLPrint(SL* ps)
{assert(ps);for (int i = 0;i < ps->size;++i){printf("%d ", ps->a[i]);}printf("\n");
}//检查容量并决定是否扩容
void SLCheckCapacity(SL* ps)
{assert(ps);//检查容量够不够,不够则扩容if (ps->size == ps->capacity){SLDataType* tmp = (SLDataType*)realloc(ps->a, sizeof(SLDataType) * ps->capacity * 2);//一般来说扩容2倍比较合适//检验是否开辟成功if (tmp == NULL){perror("realloc fail");return 1;}ps->a = tmp;ps->capacity *= 2;}
}//尾插
void SLPushBack(SL* ps, SLDataType x)
{//assert(ps);//SLCheckCapacity(ps);//ps->a[ps->size] = x;//ps->size++;SLInsert(ps, ps->size, x);
}//尾删
void SLPopBack(SL* ps)
{assert(ps);//暴力检查assert(ps->size > 0);//温柔的检查/*if (ps->size == 0)return 1;*///ps->a[ps->size - 1] = 0;//ps->size--;SLErase(ps, ps->size - 1);
}//头插
void SLPushFront(SL* ps, SLDataType x)
{//assert(ps);//SLCheckCapacity(ps);//int end = ps->size - 1;//while (end >= 0)//{//	ps->a[end+1] = ps->a[end];//	--end;//}//ps->a[0] = x;//ps->size++;SLInsert(ps, 0, x);
}//头删
void SLPopFront(SL* ps)
{//assert(ps);//assert(ps->size > 0);从前往后来//int begin = 1;//while (begin < ps->size)//{//	ps->a[begin - 1] = ps->a[begin];//	++begin;//}//ps->size--;SLErase(ps, 0);
}//某个位置插入
void SLInsert(SL* ps, int pos, SLDataType x)
{assert(ps);assert(pos >= 0 && pos <= ps->size);SLCheckCapacity(ps);int end = ps->size-1;if (end >= pos){ps->a[end + 1] = ps->a[end];end--;}ps->a[pos]=x;ps->size++;
}//某个位置删除
void SLErase(SL* ps, int pos)
{assert(ps);assert(pos >= 0 && pos < ps->size);SLCheckCapacity(ps);int begin = pos + 1;while (begin < ps->size){ps->a[begin] = ps->a[begin - 1];++begin;}ps->size--;
}//查找
int SLFind(SL* ps, SLDataType x)
{assert(ps);for (int i = 0;i <ps->size;i++){if (ps->a[i] == x){return i;}}return -1;
}

相关文章:

数据结构之顺序表

目录 1.线性表 1.1 线性表的定义&#xff1a;零个或多个数据元素的有限序列。 1.2深度解析 1.3 线性表的抽象数据类型 2.顺序表 2.1 顺序表的定义和存储方式 2.2静态顺序表 2.2.1 静态顺序表的使用 2.2.3 为什么我们要使用typedef呢&#xff1f; 2.2.4 为什么我们要使…...

【计算机视觉】三种图像质量评价指标详解:PSNR、SSIM与SAM

图像质量评价指标详解&#xff1a;PSNR、SSIM与SAM 文章目录 图像质量评价指标详解&#xff1a;PSNR、SSIM与SAM1. 峰值信噪比(PSNR)1.1 数学定义1.2 特点与局限性 2. 结构相似性指数(SSIM)2.1 数学定义2.2 特点与应用 3. 光谱角度映射器(SAM)3.1 数学定义3.2 特点与应用 4. Py…...

轻舟系列FPGA加速卡:大模型分布式训练中的高效协同者

在超大规模模型&#xff08;如千亿级参数&#xff09;的分布式训练中&#xff0c;计算、存储与通信的协同优化是突破性能瓶颈的关键。绿算技术公司的轻舟系列FPGA加速卡凭借其低延迟、高能效和可编程特性&#xff0c;能够成为分布式训练架构中的异构加速节点。其在训练集群中的…...

C++20 小语法

这个提案允许在static_assert和if constexpr中从整形转换为布尔类型。 以下表格就可以表示所有内容。 对于严格的C 编译器来说&#xff0c;以前在这种情境下int无法向下转换为bool&#xff0c;需要手动强制转换&#xff0c; C23 这一情况得到了改善。 对于严格的C编译器来说&a…...

LM393比较器的比较翻转电压不对

问个问题&#xff0c;用的LM393比较器&#xff0c;3.3V供电&#xff0c;比较器输出上拉到3.3V&#xff0c; V给的基准2.8V&#xff0c;V-电压从1V升到2.3V&#xff0c;比较器就输出0V了&#xff0c;按理论超过2.8V才翻转到0V的 根据问题描述和电路分析&#xff0c;比较器LM393…...

解决 shadui组件库Popover 点击后会消失

react用了shadui组件库 <Popover><PopoverTrigger><div className"text-operation-item" onClick{props.callback}><img src{props.imgSrc} width{20} height{20} /></div></PopoverTrigger><PopoverContent className"…...

国联股份卫多多与北京慧闻科技(集团)签署战略合作协议

4月27日&#xff0c;北京慧闻科技&#xff08;集团&#xff09;有限公司&#xff08;以下简称“慧闻科技”&#xff09;销售总监王兴卓一行到访国联股份卫多多&#xff0c;同卫多多/纸多多副总裁、产发部总经理段任飞&#xff0c;卫多多机器人产业链总经理桂林展开深入交流&…...

从数据到决策:如何使用Python进行自动驾驶数据分析

从数据到决策:如何使用Python进行自动驾驶数据分析 大家好,我是Echo_Wish,今天来和大家聊一聊在自动驾驶领域中,如何通过Python进行数据分析。随着自动驾驶技术的不断发展,数据分析在这一领域的作用越来越重要。从传感器数据的处理到模型的训练和优化,Python在自动驾驶数…...

IIS服务器提示ERR_HTTP2 PROTOCOL ERROR解决方案

今天我的淘宝店来了一个客户&#xff0c;说小程序苹果访问没问题&#xff0c;安卓系统访问出现ERR HTTP2 PROTOCAL ERROR的错误见下图 方法供大家闭坑步骤&#xff1a;通过注册表修改(高级) 打开注册表编辑器 (regedit) 导航到&#xff1a; HKEY_LOCAL_MACHINE\SYSTEM\Current…...

Django的异步任务队列管理_Celery

1 基本原理 Celery 是一个异步任务队列&#xff0c;能够将耗时操作&#xff08;如发邮件、处理图片、网络爬虫等&#xff09;从 Django 主线程中分离出来&#xff0c;由后台的 worker 处理&#xff0c;避免阻塞请求。Celery 作为独立运行的后台进程&#xff08;Worker&#xf…...

Ubuntu18.04安装IntelliJ IDEA2025步骤

1.下载linux版本的idea 复制下面链接到虚拟机浏览器 下载 IntelliJ IDEA 下载好后&#xff0c;你的文件里会多一个文件&#xff0c;如下图 2.解压并运行Idea 2.1在/usr/local/路径下新建安装目录IDEA&#xff1a; 打开终端输入以下命令&#xff1a; sudo mkdir -p /usr/loc…...

LLM - Large Language Model

回顾2024&#xff1a;与LLM又相伴一年的经历与思考 - 知乎万字长文入门大语言模型&#xff08;LLM&#xff09; - 知乎“大模型本质就是两个文件&#xff01;”特斯拉前AI总监爆火LLM科普&#xff0c;时长1小时&#xff0c;面向普通大众 - 知乎大模型本质及趋势剖析&#xff0c…...

解决Ubuntu20.04重启出现显卡驱动异常的问题(操作记录)

一、问题情况 电脑异常断电&#xff0c;重启后&#xff0c;显示界面异常&#xff0c;显卡驱动已丢失。 二、操作流程 1、查看安装显卡驱动 ls /usr/src | grep nvidia 记住该驱动&#xff0c;我的是nvidia-550.127.05 2、安装dkms&#xff08;如果没有&#xff09; sudo …...

23.开关电源干扰控制的EMC改善措施

开关电源干扰控制的EMC改善措施 1. 开关电源的EMI干扰机理2. 钳位抑制EMI3. 阻容吸收抑制EMI4. 波形整形抑制EMI 1. 开关电源的EMI干扰机理 2. 钳位抑制EMI 只能抑制Ts阶段。 3. 阻容吸收抑制EMI 4. 波形整形抑制EMI...

新能源汽车声纹监测技术的发展趋势是什么?

新能源汽车声纹监测技术有以下发展趋势&#xff1a; 智能化与自动化程度不断提高 故障自动诊断与预警&#xff1a;未来声纹监测系统将能够更加准确地自动识别和分析新能源汽车各部件的声纹特征变化&#xff0c;不仅能检测出故障&#xff0c;还能对故障的发展趋势进行预测&…...

如何获取按关键字搜索京东商品详情(代码示例)

在电商领域&#xff0c;获取京东商品的详细信息对于市场分析、选品上架、库存管理和价格策略制定等方面至关重要。京东作为国内知名的电商平台&#xff0c;提供了丰富的商品资源。通过 Python 爬虫技术&#xff0c;我们可以高效地获取京东商品的详细信息&#xff0c;包括商品名…...

C#中构造器及属性的加载顺序

一.基本原则: 先加载静态构造函数和静态字段,后加载普通构造函数和普通字段;先加载基类再加载子类; 二.具体的加载顺序: 父类静态字段--->父类静态构造函数--->子类静态字段--->子类静态构造函数--->父类实例字段---> 父类实例构造函数--->子类实例字段-…...

vue项目中如何使用markdown编辑器

在开发中,编辑markdown和回显markdown都是常见的需求。在vue(2.x和3.x都可以)中可以使用mavon-editor这个第三方依赖包。示例很简单易懂。 安装 npm install mavon-editor 注册 在main.js中注册这个组件 import Vue from vue import mavonEditor from mavon-editor impor…...

Python爬虫(9)Python数据存储实战:基于pymysql的MySQL数据库操作详解

目录 一、背景与核心价值二、pymysql核心操作详解2.1 环境准备2.2 数据库连接与基础操作2.3 事务处理与错误回滚2.4 高级功能&#xff1a;批量插入与性能优化 三、pymysql进阶技巧3.1 连接池管理&#xff08;推荐使用DBUtils&#xff09;3.2 SQL注入防御3.3 与ORM框架对比 四、…...

WPF之Button控件详解

文章目录 1. 引言2. Button控件基础Button类定义 3. Button控件的核心属性3.1 Content属性3.2 IsDefault属性3.3 IsCancel属性3.4 其他常用属性 4. 按钮样式与模板自定义4.1 简单样式设置4.2 使用Style对象4.3 触发器使用4.4 使用ControlTemplate完全自定义4.5 按钮视觉状态 5.…...

如何查看电脑电池使用情况

第一步打开cmd&#xff1a; 在键盘上按下winr 或者在搜索框中输入cmd 点击命令提示符 进入命令框 第二步输入命令&#xff1a; powercfg/batteryreport 出现如下情况 第三部找到对应电池报告进行查看&#xff1a; 在对应路径下找到电池报告 点击battery-report.html 到此…...

软考-软件设计师中级备考 6、数据结构 图

1. 有向图 有向图是由顶点集合 V 和有向边集合 E 组成的图结构。在有向图中&#xff0c;边是有方向的&#xff0c;即从一个顶点指向另一个顶点&#xff0c;通常用有序对 (u, v) 表示&#xff0c;其中 u 是边的起始顶点&#xff0c;v 是边的终止顶点。例如&#xff0c;在一个表…...

Label Studio 软件介绍及安装使用说明

背景说明 在做AI项目建模的时候&#xff0c;往往需要数据标注工作&#xff0c;比较常用的数据标注软件是Labeling或者Labelme,这两个都是离线的单独标注软件&#xff0c;使用起来是比较方便的&#xff0c;也是入门级学者比较适合的软件&#xff0c;然而有时候我们数据标注的数据…...

Azure 数字孪生是什么?

“Azure 数字孪生”是一项平台即服务 (PaaS) 产品/服务&#xff0c;它能够创建基于整个环境的数字模型的孪生图&#xff0c;这些图可能是建筑物、工厂、农场、能源网络、铁路、体育场馆&#xff0c;甚至整个城市。 这些数字模型可用于获取洞察力&#xff0c;以推动产品改进、运…...

界面控件DevExpress WPF v25.1预览 - AI功能增强(语义搜索)

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...

【神经网络与深度学习】五折交叉验证(5-Fold Cross-Validation)

引言 五折交叉验证&#xff08;5-Fold Cross-Validation&#xff09;是一种广泛应用于机器学习模型性能评估的技术&#xff0c;通过多次实验确保模型的评估结果更加稳定、可靠&#xff0c;同时最大限度地利用有限的数据资源。它将数据分成若干子集&#xff0c;交替作为训练集和…...

Linux权限概念讲解

1. 用户类型 1.1 用户分类 在Linux里面用户分为两类&#xff0c;一种是超级用户&#xff08;root&#xff09;&#xff0c;一种是普通用户。 超级用户只有一个&#xff0c;而普通用户可以有很多个。 如果我们在root用户状态下想要变成普通用户&#xff0c;我们可以使用命令…...

网络安全零基础培训 L1-8 PHP基础语法

文章目录 1 认识PHP1.1 PHP简介1.2 主要的特点1.3 跨平台性1.4 与数据库的良好集成1.5 开源和社区支持1.6 应用场景1.6.1 网站开发1.6.2 内容的管理程序1.6.3 Web应用程序开发1.6.4 为什么学习了解PHP 2 PHP的基础语法2.1 创建第一个PHP程序2.2 如何写注释2.3 PHP的变量2.4 PHP…...

鸿蒙 长列表加载性能优化

长列表加载性能优化 针对长列表加载这一场景&#xff0c;对列表渲染时间、页面滑动帧率、应用内存占用等方面带来优化&#xff0c;提升性能和用户体验的手段有如下 4 种&#xff1a; 懒加载&#xff1a;提供列表数据按需加载能力&#xff0c;解决一次性加载长列表数据耗时长、…...

第十二届蓝桥杯 2021 C/C++组 卡片

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 代码详解&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 卡片 - 蓝桥云课 思路&#xff1a; 思路详解&#…...

vscode 使用gitcode团队管理项目

1、下载安装vscode https://code.visualstudio.com/Download 2、安装git 3、在vscode中安装GitLens插件 4、打开终端 点击会显示当前更改的项目 5、提交更改的文件&#xff0c;会提示输入用户名、密码&#xff0c;这里的密码即是令牌&#xff0c;令牌在第一次创建的时候显…...

uniapp+vue3+ts 使用canvas实现安卓端、ios端及微信小程序端二维码生成及下载

加粗样式uniapp多端生成带二维码海报并保存至相册的实现 在微信小程序开发中&#xff0c;我们常常会遇到生成带有二维码的海报并保存到手机相册的需求&#xff0c;比如分享活动海报、产品宣传海报等。今天就来和大家分享一下如何通过代码实现这一功能。 准备工作 在开始之前&am…...

vue mixin混入与hook

mixin混入是 ‌选项式 API‌&#xff0c;在vue3-Composition API <script setup> 中无法直接使用&#xff0c;需通过 setup() 函数转换 vue2、vue3选项式API: // mixins/mixin.js export const mixin {methods: {courseType(courseLevel) {const levelMap {1: 初级,…...

《Masked Autoencoders Are Scalable Vision Learners》---CV版的BERT

目录 一、与之前阅读文章的关系&#xff1f; 二、标题&#xff1a;带掩码的自auto编码器是一个可拓展的视觉学习器 三、摘要 四、核心图 五、结果图 六、不同mask比例对比图 七、“Introduction” (He 等, 2021, p. 1) 引言 八、“Related Work” (He 等, 2021, p. 3)相…...

(云计算HCIP)HCIP全笔记(十三)本篇介绍虚拟化技术,内容包含:虚拟化资源、虚拟化过程、I/O虚拟化、虚拟化架构KVM和Xen介绍、主流虚拟化技术介绍

1. 虚拟化资源 1.1 虚拟化对象 CPU虚拟化&#xff1a; 目标是使虚拟机上的指令能被正常执行&#xff0c;且效率接近物理机 内存虚拟化&#xff1a; 目标是能做好虚拟机内存空间之 间的隔离&#xff0c;使每个虚拟机都认为自己拥有了整个内存地址&#xff0c;且效率页能接近物理…...

C++核心编程:类与对象全面解析

C核心编程&#xff1a;类与对象全面解析 大家好&#xff01;今天我要和大家深入探讨C面向对象编程中最核心的概念&#xff1a;类与对象。&#x1f468;‍&#x1f4bb; 这是我们迈向高级C开发的第一步&#xff0c;掌握好这部分内容&#xff0c;对未来学习更高级的设计模式和框…...

Linux基础命令和文件系统结构:从入门到实践

目录 1. 引言 2. Linux文件系统结构概述 2.1 根目录 ​编辑 2.2 常见目录介绍&#xff1a; 1. /home&#xff1a;用户的家目录 2. /etc&#xff1a;存放配置文件的目录 3. /var&#xff1a;可变数据 4. /bin 和 /sbin&#xff1a;常见命令和系统管理工具 5. /tmp&…...

「Mac畅玩AIGC与多模态05」部署篇03 - 在 Mac 上部署本地向量化模型(Embedding Models)

一、概述 本篇介绍如何在 macOS 环境下,为 Dify 平台部署本地向量化模型(Embedding Models),支持知识库文档向量化、语义检索与智能体上下文增强。向量化模型是实现知识库问答与 RAG(检索增强生成)应用的基础组件。 二、部署流程 1. 环境准备 确认 Docker Desktop 正常…...

Java-Optional类

介绍 Optional是 Java 8 引入的一个类&#xff0c;用于解决空指针异常问题。它本质上是一个容器类&#xff0c;可以包含或不包含一个非空值。 示例 创建Optional对象 Optional.of(T value)&#xff1a;创建一个包含非空值的Optional对象。如传入null值&#xff0c;会抛出Nu…...

Android 热点开发调试总结

Android 热点开发调试总结 文章目录 Android 热点开发调试总结一、前言二、热点开发1、开关和默认配置wifi和热点配置信息保存的位置&#xff1a; 2、主要流程3、相关日志4、相关广播5、demo示例 三、其他1、Android 热点开发调试小结2、其他热点相关知识小结&#xff08;1&…...

【“星瑞” O6 评测】 — llm CPU部署对比高通骁龙CPU

前言 随着大模型应用场景的不断拓展&#xff0c;arm cpu 凭借其独特优势在大模型推理领域的重要性日益凸显。它在性能、功耗、架构适配等多方面发挥关键作用&#xff0c;推动大模型在不同场景落地 1. CPU对比 星睿 O6 CPU 采用 Armv9 架构&#xff0c;集成了 Armv9 CPU 核心…...

快乐数(双指针解法)

题目链接202. 快乐数 - 力扣&#xff08;LeetCode&#xff09; 题目拆解 1 取一个正整数每一位的平方和为&#xff0c;如果为1那么直接可以判定为快乐数&#xff0c;如果不为1&#xff0c;就重复这个过程&#xff0c;直到出现1 2 实际上&#xff0c;这道题只有两种情况&#xf…...

【Vue3-Bug】中路由加载页面直接显示空白

Vue3中路由加载页面直接显示空白 没有子路由 路由定义不能重复&#xff0c;请自己查看数据在main.js(或者)mina.ts入口文件中&#xff0c;需要将router的注入到vue中的执行放在&#xff0c;vue挂在元素之前 // 顺序不能变 app.use(router) app.mount(#app)在App.vue中 // 在…...

线性代数——行列式⭐

目录 一、行列式的定义⭐ 1-1、三阶行列式练习 1-2、下面介绍下三角行列式、上三角行列式、对角行列式 ​编辑 二、行列式的性质 2-1、性质1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6 ​编辑 2-2、性质7 2- 3、拉普拉斯定理、克莱姆法则 三…...

flume----初步安装与配置

目录标题 **flume的简单介绍**⭐flume的**核心组件**⭐**核心特点** **安装部署**1&#xff09;**解压安装包**2&#xff09;**修改名字** **&#xff08;配置文件时&#xff0c;更方便&#xff09;****3&#xff09;⭐⭐配置文件**4&#xff09;**兼容Hadoop**5&#xff09;**…...

vscode源代码管理Tab-文件右侧标志(M、A 等)的含义

Git 常用标志(M、A 等)的含义 在 VSCode 的源代码管理&#xff08;Source Control&#xff09;标签页中&#xff0c;文件右侧显示的 Monaco 装饰徽章&#xff08;Badge&#xff09;&#xff08;如 M、A 等&#xff09;&#xff0c;本质上是对 Git 文件状态标志 的可视化呈现。…...

【力扣刷题实战】丢失的数字

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a;丢失的数字 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C&#xff09; 兄弟们共勉 &#xff01;&#xff01;&#xff01; 每篇前言 博客主页&#xff1a;小…...

具身智能机器人的应用场景及最新进展

具身智能机器人正通过“感知-学习-决策-行动”的闭环能力&#xff0c;重塑全球各行业的生产与服务模式。以下是其在当今世界的典型应用场景及最新进展&#xff1a; 一、工业制造&#xff1a;柔性生产与智能运维 高精度装配与检测 特斯拉Optimus通过双目视觉与惯性测量单元&…...

网络安全怎么入门?快速了解

网络安全是一个快速发展的领域&#xff0c;入门需要系统化的学习和实践。以下是适合零基础或转行者的分阶段学习路径&#xff0c;涵盖必备知识、学习资源、实战方法和职业方向&#xff1a; 一、基础阶段&#xff08;1-3个月&#xff09; 1. 掌握核心基础知识 计算机网络&#…...

STM32N6570-DK ISP调试

STM32N6570-DK之ISP调试应用 准备工作-下载安装软件包:一、使用STM32CubeProgrammer给板子烧入STM32N6_ISP_IQTune_App_revC01-v1.1.0-trusted.bin。二、打开STM32 ISP IQTune.exe ,出现可连接端口:三、根据教程进行相应调试:准备工作-下载安装软件包: https://www.st.co…...