【海贼王的数据航海:利用数据结构成为数据海洋的霸主】顺序表

目录

1 -> 线性表

2 -> 顺序表

2.1 -> 概念及结构

2.2 -> 接口声明

2.3 -> 接口实现

2.3.1 -> 初始化

2.3.2 -> 销毁

2.3.3 -> 检查

2.3.4 -> 打印

2.3.5 -> 尾插

2.3.6 -> 头插

2.3.7 -> 尾删

2.3.8 -> 头删

2.3.9 -> 在pos位置插入x

2.3.10 -> 删除pos位置的值

2.3.11 -> 查找

2.3.12 -> 修改

3 -> 完整代码

3.1 -> SeqList.h

3.2 -> SeqList.c

3.3 -> Test.c


1 -> 线性表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串……

线性表在逻辑上是线性结构,也就是说它是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

2 -> 顺序表

2.1 -> 概念及结构

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删改查。

顺序表一般可以分为:

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

2. 动态顺序表:使用动态开辟的数组存储。

2.2 -> 接口声明

静态顺序表只适用于已知需要多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以实现动态顺序表。

#pragma once

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>

// 顺序表的动态存储
typedef int SLDateType;

typedef struct SeqList
{
	//	指向动态开辟的数组
	SLDateType* a;
	// 有效数据个数
	int size;
	// 容量空间大小
	int capacity;
}SL;

// 对数据的管理:增删查改 

// 顺序表初始化
void SLInit(SL* psl);

// 顺序表销毁
void SLDestroy(SL* psl);

// 顺序表检查,满则增容
void SLCheckCapacity(SL* psl);

// 顺序表打印
void SLPrint(SL* psl);

// 顺序表尾插
void SLPushBack(SL* psl, SLDateType x);

// 顺序表头插
void SLPushFront(SL* psl, SLDateType x);

// 顺序表尾删
void SLPopBack(SL* psl);

// 顺序表头删
void SLPopFront(SL* psl);

// 顺序表在pos位置插入x
void SLInsert(SL* psl, int pos, SLDateType x);

// 顺序表删除pos位置的值
void SLErase(SL* psl, int pos);

// 顺序表查找,找到返回下标,找不到返回-1
int SLFind(SL* psl, SLDateType x);

// 顺序表修改
void SLModify(SL* psl, int pos, SLDateType x);

2.3 -> 接口实现

2.3.1 -> 初始化

// 顺序表初始化
void SLInit(SL* psl)
{
	psl->a = (SLDateType*)malloc(sizeof(SLDateType) * 4);
	if (psl->a == NULL)
	{
		perror("malloc fail");
		return;
	}

	psl->capacity = 4;
	psl->size = 0;
}

2.3.2 -> 销毁

// 顺序表销毁
void SLDestroy(SL* psl)
{
	free(psl->a);
	psl->a = NULL;
	psl->capacity = 0;
	psl->size = 0;
}

2.3.3 -> 检查

// 顺序表检查,满则增容
void SLCheckCapacity(SL* psl)
{
	if (psl->size == psl->capacity)
	{
		SLDateType* tmp = (SLDateType*)realloc(psl->a, sizeof(SLDateType) * psl->capacity * 2);
		if (tmp == NULL)
		{
			perror("realloc fail");
			return;
		}

		psl->a = tmp;
		psl->capacity *= 2;
	}
}

2.3.4 -> 打印

// 顺序表打印
void SLPrint(SL* psl)
{
	for (int i = 0; i < psl->size; i++)
	{
		printf("%d ", psl->a[i]);
	}

	printf("\n");
}

2.3.5 -> 尾插

// 顺序表尾插
void SLPushBack(SL* psl, SLDateType x)
{
	SLCheckCapacity(psl);

	psl->a[psl->size++] = x;

	//复用
	//SLInsert(psl, psl->size - 1, x);
}
// 尾插测试
void SLTest1()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);

	SLPrint(&s);

	SLDestroy(&s);
}

 

2.3.6 -> 头插

// 顺序表头插
void SLPushFront(SL* psl, SLDateType x)
{
	SLCheckCapacity(psl);

	int end = psl->size - 1;
	while (end >= 0)
	{
		psl->a[end + 1] = psl->a[end];
		--end;
	}

	psl->a[0] = x;
	psl->size++;

	//复用
	//SLInsert(psl, 0, x);
}
// 头插测试
void SLTest2()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushFront(&s, 4);
	SLPushFront(&s, 5);
	SLPushFront(&s, 6);

	SLPrint(&s);

	SLDestroy(&s);
}

 

2.3.7 -> 尾删

// 顺序表尾删
void SLPopBack(SL* psl)
{
	// 暴力的检查
	assert(psl->size > 0);

	// 温柔的检查
	/*if (psl->size == 0)
		return;*/

	psl->size--;

	//复用
	//SLErase(psl, psl->size - 1);
}
// 尾删测试
void SLTest3()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushFront(&s, 4);
	SLPushFront(&s, 5);
	SLPushFront(&s, 6);

	SLPrint(&s);

	SLPopBack(&s);
	SLPopBack(&s);
	SLPopBack(&s);

	SLPrint(&s);

	SLDestroy(&s);
}

 

2.3.8 -> 头删

// 顺序表头删
void SLPopFront(SL* psl)
{
	assert(psl->size > 0);

	int start = 1;
	while (psl->a[start] < psl->size)
	{
		psl->a[start - 1] = psl->a[start];
		start++;
	}

	psl->size--;

	//复用
	//SLErase(psl, 0);
}
// 头删测试
void SLTest4()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushFront(&s, 4);
	SLPushFront(&s, 5);
	SLPushFront(&s, 6);

	SLPrint(&s);

	SLPopFront(&s);
	SLPopFront(&s);
	SLPopFront(&s);

	SLPrint(&s);

	SLDestroy(&s);
}

 

2.3.9 -> 在pos位置插入x

// 顺序表在pos位置插入x
// 头插、尾插可复用此
void SLInsert(SL* psl, int pos, SLDateType x)
{
	assert(0 <= pos && pos <= psl->size);

	SLCheckCapacity(psl);

	int end = psl->size - 1;
	while (end >= pos)
	{
		psl->a[end + 1] = psl->a[end];
		--end;
	}

	psl->a[pos] = x;
	psl->size++;
}
// 任意位置插入测试
void SLTest5()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushFront(&s, 4);
	SLPushFront(&s, 5);
	SLPushFront(&s, 6);

	SLPrint(&s);

	SLInsert(&s, 1, 99);
	SLInsert(&s, 3, 22);

	SLPrint(&s);

	SLDestroy(&s);
}

 

2.3.10 -> 删除pos位置的值

// 顺序表删除pos位置的值
// 头删、尾删可复用此
void SLErase(SL* psl, int pos)
{
	assert(0 <= pos && pos < psl->size);
	assert(psl->size > 0);

	int start = pos + 1;
	while (start < psl->size)
	{
		psl->a[start - 1] = psl->a[start];
		++start;
	}

	psl->size--;
}
// 任意位置删除测试
void SLTest6()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);
	SLPushBack(&s, 6);

	SLPrint(&s);

	SLErase(&s, 2);
	SLErase(&s, 4);

	SLPrint(&s);

	SLDestroy(&s);
}

 

2.3.11 -> 查找

// 顺序表查找
int SLFind(SL* psl, SLDateType x)
{
	for (int i = 0; i < psl->size; i++)
	{
		if (psl->a[i] == x)
			return i;
	}

	return -1;
}
// 查找测试
void SLTest7()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);
	SLPushBack(&s, 6);

	SLPrint(&s);

	int ans1 = SLFind(&s, 2);
	int ans2 = SLFind(&s, 6);

	printf("%d\n%d", ans1, ans2);

	SLDestroy(&s);
}

 

2.3.12 -> 修改

// 顺序表修改
void SLModify(SL* psl, int pos, SLDateType x)
{
	assert(0 <= pos && pos < psl->size);

	psl->a[pos] = x;
}
// 修改测试
void SLTest8()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);
	SLPushBack(&s, 6);

	SLPrint(&s);

	SLModify(&s, 2, 99);
	SLModify(&s, 0, 11);

	SLPrint(&s);

	SLDestroy(&s);
}

3 -> 完整代码

3.1 -> SeqList.h

#pragma once

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>

// 顺序表的动态存储
typedef int SLDateType;

typedef struct SeqList
{
	//	指向动态开辟的数组
	SLDateType* a;
	// 有效数据个数
	int size;
	// 容量空间大小
	int capacity;
}SL;

// 对数据的管理:增删查改 

// 顺序表初始化
void SLInit(SL* psl);

// 顺序表销毁
void SLDestroy(SL* psl);

// 顺序表检查,满则增容
void SLCheckCapacity(SL* psl);

// 顺序表打印
void SLPrint(SL* psl);

// 顺序表尾插
void SLPushBack(SL* psl, SLDateType x);

// 顺序表头插
void SLPushFront(SL* psl, SLDateType x);

// 顺序表尾删
void SLPopBack(SL* psl);

// 顺序表头删
void SLPopFront(SL* psl);

// 顺序表在pos位置插入x
void SLInsert(SL* psl, int pos, SLDateType x);

// 顺序表删除pos位置的值
void SLErase(SL* psl, int pos);

// 顺序表查找,找到返回下标,找不到返回-1
int SLFind(SL* psl, SLDateType x);

// 顺序表修改
void SLModify(SL* psl, int pos, SLDateType x);

3.2 -> SeqList.c

#include "SeqList.h"

// 顺序表初始化
void SLInit(SL* psl)
{
	psl->a = (SLDateType*)malloc(sizeof(SLDateType) * 4);
	if (psl->a == NULL)
	{
		perror("malloc fail");
		return;
	}

	psl->capacity = 4;
	psl->size = 0;
}

// 顺序表销毁
void SLDestroy(SL* psl)
{
	free(psl->a);
	psl->a = NULL;
	psl->capacity = 0;
	psl->size = 0;
}

// 顺序表检查,满则增容
void SLCheckCapacity(SL* psl)
{
	if (psl->size == psl->capacity)
	{
		SLDateType* tmp = (SLDateType*)realloc(psl->a, sizeof(SLDateType) * psl->capacity * 2);
		if (tmp == NULL)
		{
			perror("realloc fail");
			return;
		}

		psl->a = tmp;
		psl->capacity *= 2;
	}
}

// 顺序表打印
void SLPrint(SL* psl)
{
	for (int i = 0; i < psl->size; i++)
	{
		printf("%d ", psl->a[i]);
	}

	printf("\n");
}

// 顺序表尾插
void SLPushBack(SL* psl, SLDateType x)
{
	SLCheckCapacity(psl);

	psl->a[psl->size++] = x;

	//复用
	//SLInsert(psl, psl->size - 1, x);
}

// 顺序表头插
void SLPushFront(SL* psl, SLDateType x)
{
	SLCheckCapacity(psl);

	int end = psl->size - 1;
	while (end >= 0)
	{
		psl->a[end + 1] = psl->a[end];
		--end;
	}

	psl->a[0] = x;
	psl->size++;

	//复用
	//SLInsert(psl, 0, x);
}

// 顺序表尾删
void SLPopBack(SL* psl)
{
	// 暴力的检查
	assert(psl->size > 0);

	// 温柔的检查
	/*if (psl->size == 0)
		return;*/

	psl->size--;

	//复用
	//SLErase(psl, psl->size - 1);
}

// 顺序表头删
void SLPopFront(SL* psl)
{
	assert(psl->size > 0);

	int start = 1;
	while (psl->a[start] < psl->size)
	{
		psl->a[start - 1] = psl->a[start];
		start++;
	}

	psl->size--;

	//复用
	//SLErase(psl, 0);
}

// 顺序表在pos位置插入x
// 头插、尾插可复用此
void SLInsert(SL* psl, int pos, SLDateType x)
{
	assert(0 <= pos && pos <= psl->size);

	SLCheckCapacity(psl);

	int end = psl->size - 1;
	while (end >= pos)
	{
		psl->a[end + 1] = psl->a[end];
		--end;
	}

	psl->a[pos] = x;
	psl->size++;
}

// 顺序表删除pos位置的值
// 头删、尾删可复用此
void SLErase(SL* psl, int pos)
{
	assert(0 <= pos && pos < psl->size);
	assert(psl->size > 0);

	int start = pos + 1;
	while (start < psl->size)
	{
		psl->a[start - 1] = psl->a[start];
		++start;
	}

	psl->size--;
}

// 顺序表查找
int SLFind(SL* psl, SLDateType x)
{
	for (int i = 0; i < psl->size; i++)
	{
		if (psl->a[i] == x)
			return i;
	}

	return -1;
}

// 顺序表修改
void SLModify(SL* psl, int pos, SLDateType x)
{
	assert(0 <= pos && pos < psl->size);

	psl->a[pos] = x;
}

3.3 -> Test.c

#include "SeqList.h"

// 尾插测试
void SLTest1()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);

	SLPrint(&s);

	SLDestroy(&s);
}

// 头插测试
void SLTest2()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushFront(&s, 4);
	SLPushFront(&s, 5);
	SLPushFront(&s, 6);

	SLPrint(&s);

	SLDestroy(&s);
}

// 尾删测试
void SLTest3()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushFront(&s, 4);
	SLPushFront(&s, 5);
	SLPushFront(&s, 6);

	SLPrint(&s);

	SLPopBack(&s);
	SLPopBack(&s);
	SLPopBack(&s);

	SLPrint(&s);

	SLDestroy(&s);
}

// 头删测试
void SLTest4()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushFront(&s, 4);
	SLPushFront(&s, 5);
	SLPushFront(&s, 6);

	SLPrint(&s);

	SLPopFront(&s);
	SLPopFront(&s);
	SLPopFront(&s);

	SLPrint(&s);

	SLDestroy(&s);
}

// 任意位置插入测试
void SLTest5()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushFront(&s, 4);
	SLPushFront(&s, 5);
	SLPushFront(&s, 6);

	SLPrint(&s);

	SLInsert(&s, 1, 99);
	SLInsert(&s, 3, 22);

	SLPrint(&s);

	SLDestroy(&s);
}

// 任意位置删除测试
void SLTest6()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);
	SLPushBack(&s, 6);

	SLPrint(&s);

	SLErase(&s, 2);
	SLErase(&s, 4);

	SLPrint(&s);

	SLDestroy(&s);
}

// 查找测试
void SLTest7()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);
	SLPushBack(&s, 6);

	SLPrint(&s);

	int ans1 = SLFind(&s, 2);
	int ans2 = SLFind(&s, 6);

	printf("%d\n%d", ans1, ans2);

	SLDestroy(&s);
}

// 修改测试
void SLTest8()
{
	SL s;
	SLInit(&s);

	SLPushBack(&s, 1);
	SLPushBack(&s, 2);
	SLPushBack(&s, 3);
	SLPushBack(&s, 4);
	SLPushBack(&s, 5);
	SLPushBack(&s, 6);

	SLPrint(&s);

	SLModify(&s, 2, 99);
	SLModify(&s, 0, 11);

	SLPrint(&s);

	SLDestroy(&s);
}

int main()
{

	return 0;
}

感谢各位大佬支持!!!

互三啦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/409525.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【牛客】【刷题节】美团2024届秋招笔试第二场编程真题

1.小美的加法【简单题】 题意理解&#xff1a; 给定一个数组做连加操作&#xff0c;其中只能将一个加号变成乘号 将哪个加号变成乘号&#xff0c;使式子最后的结果最大 解题思路&#xff1a; 只有将两个相邻且乘机最大的数之间变成乘号后&#xff0c;才能保证整个式子结果最大 …

Spring之AOP源码解析(下)

前言 在上一遍文章中,我们主要讲解了ProxyFactory在Spring完成AOP动态代理的过程中发挥的作用。这一篇我们主要讲解这些注解都是如何注入Advisors,然后分析这些Advisors生效的条件 注解都是如何注入Advisor并匹配的 EnableTransactionManagement注解 我们在之前提到EnableT…

乡村研学|乡村研学小程序|基于微信小程序的乡村研学平台设计与实现(源码+数据库+文档)

乡村研学小程序目录 目录 基于微信小程序的乡村研学平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 &#xff08;1&#xff09;乡村研学管理 &#xff08;2&#xff09;商品信息管理 &#xff08;3&#xff09;商品类型管理 …

计算机网络:思科实验【2-MAC地址、IP地址、ARP协议及总线型以太网的特性】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;Cisco Packet Tracer实验 本文对应的实验报告源文件请关注微信公众号程序员刘同学&#xff0c;回复思科获取下载链接。 实验目的实验环境实验内容MAC地址、IP地址、ARP协议总线型以太网的…

【DAY04 软考中级备考笔记】数据结构基本结构和算法

数据结构基本结构和算法 2月25日 – 天气&#xff1a;晴 周六玩了一天&#xff0c;周天学习。 1. 什么是数据结构 数据结构研究的内容是一下两点&#xff1a; 如何使用程序代码把现实世界的问题信息化如何用计算机高效地处理这些信息从创造价值 2. 什么是数据 数据是信息的…

零基础C++开发上位机--基于QT5.15的串口助手(一)

嵌入式开发的过程中&#xff0c;大部分我们的代码是无法一次成功的。这时候我们大部分的工程师可能最熟练的调试方法是printf函数&#xff0c;打印随意一个数据&#xff0c;来观察当前运行的函数是否执行正确。我们连接的工具有各个大神做的串口助手。另外&#xff0c;在做一般…

从0开始python学习-53.python中flask创建简单接口

目录 1. 创建一个简单的请求,没有写方法时默认为get 2. 创建一个get请求 3. 创建一个post请求&#xff0c;默认可以使用params和表单传参 4. 带有参数的post请求 1. 创建一个简单的请求,没有写方法时默认为get from flask import Flask, request# 初始化一个flask的对象 ap…

【贪心算法】:LeetCode860.柠檬水找零

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本专栏是关于各种算法的解析&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结构专栏&…

Ubuntu22.04和Windows10双系统安装

概要 本篇演示Ubuntu22.04和Windows10双系统的安装。先安装Ubuntu22.04&#xff0c;再安装Windows10。 一、说明 1、电脑 笔者的电脑品牌是acer(宏碁/宏基) 电脑开机按F2进入BIOS 电脑开机按F12进入Boot Manager 2、U盘启动盘 需要用到两个U盘启动盘 &#xff08;1&a…

kubernetes集群搭建(1.26版本)

集群搭建 1.初始化安装k8s集群的实验1.1修改主机名称1.2关闭防火墙1.3关闭SELINUX1.4配置主机hosts文件&#xff0c;相互之间通过主机名访问1.5配置主机之间无密码登录1.6关闭交换分区swap&#xff0c;提升性能1.7修改机器内核参数1.9配置阿里云的repo源1.10配置安装k8s组件需要…

力扣● 343. 整数拆分 ● 96.不同的二叉搜索树

● 343. 整数拆分 想不到&#xff0c;要勇于看题解。 关键在于理解递推公式。 1、DP数组及其下标的含义&#xff1a;dp[i]是分解i这个数得到的最大的乘积。 2、DP数组如何初始化&#xff1a;dp[0]和dp[1]都没意义&#xff0c;所以直接不赋值&#xff0c;初始化dp[2]1即可。…

让程序员设计B端界面,好比武大郎招聘:向我看齐。不忍直视!

hello&#xff0c;我是大美B端工场&#xff0c;B端系统的要求越来越高了&#xff0c;很多公司还让程序员负责页面&#xff0c;页面搞的没法看&#xff0c;也怪不得程序员。程序员来搞页面&#xff0c;那还不是武大郎招聘——向我看齐&#xff0c;以我的标准为标准吗&#xff1f…

python 基础知识点(蓝桥杯python科目个人复习计划49)

今日复习内容&#xff1a;做复习题 例题1&#xff1a;希尔排序 题目描述&#xff1a; 希尔排序是直接插入排序算法的一种更高效的改进版本&#xff0c;但它是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出的改进方法之一&#xff1a; 1.插入排序在对几乎已经…

预训练-微调范式在人工智能领域的深远影响

预训练-微调范式的出现是人工智能领域的一大里程碑&#xff0c;它深刻改变了深度学习模型的训练方式和应用模式&#xff0c;并对整个行业产生了多方面的深远影响&#xff1a; 数据效率提升&#xff1a; 通过在大规模无标注数据上进行预训练&#xff0c;模型能够学习到丰富的语言…

linux常用的网络命令实战分享

文章目录 ifup/down命令ifconfig命令观察网络接口信息修改接口参数增加虚拟网络接口 route命令查看路由表增加路由表规则删除路由表规则 IP 命令ip linkip addr设定路由 ip route arp 命令 在实际研发运维工作中常常会涉及到网关相关的操作和知识&#xff0c;这里对linux下常用…

(详细使用指南)Linux下交叉编译带ffmpeg的opencv并移植到RK3588等ARM端

一 问题背景 瑞芯微RK3588等嵌入式板作为边缘端设备为算法模型的部署提供了便利&#xff0c;目前很多分类或好检测模型针对边缘端做了优化或量化&#xff0c;使得在边缘端也能达到实时稳定的识别和检测效果。 但嵌入式设备普遍的flash emmc不大&#xff0c;一般在32G左…

【数据结构与算法】(20)高级数据结构与算法设计之 Greedy Algorithm 贪心算法 代码示例与详细讲解

目录 4.2 Greedy Algorithm1) 贪心例子DijkstraPrimKruskal 2) 零钱兑换问题有几个解&#xff08;零钱兑换 II&#xff09;Leetcode 518最优解&#xff08;零钱兑换&#xff09;- 穷举法 Leetcode 322最优解&#xff08;零钱兑换&#xff09;- 贪心法 Leetcode 322 3) Huffman …

9.5K Star,又一款超棒开源轻量自动化运维平台

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 一个好的运维平台就变得非常重要了&#xff0c;可以节省大量的人力和物…

【HarmonyOS】低代码开发—使用低代码开发服务卡片

DevEco Studio还支持使用低代码开发功能开发服务卡片&#xff0c;目前只支持JS语言&#xff0c;且compileSdkVersion必须为7或以上。 下面以创建一个新的服务卡片为例进行说明。 1.打开一个工程&#xff0c;创建服务卡片&#xff0c;创建方法包括如下两种方式&#xff1a; 选…

SpringBoot自带的tomcat的最大连接数和最大的并发数

先说结果&#xff1a;springboot自带的tomcat的最大并发数是200&#xff0c; 最大连接数是&#xff1a;max-connectionsaccept-count的值 再说一下和连接数相关的几个配置&#xff1a; 以下都是默认值&#xff1a; server.tomcat.threads.min-spare10 server.tomcat.threa…