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

备战蓝桥杯 链表详解

目录

链表概念

静态单链表的实现

静态双链表的实现

循环链表

算法题练习:

1.排队顺序

2.单向链表

3.队列安排

4.约瑟夫问题


链表概念

上一次我们用顺序存储实现了线性表,这次我们用链式存储结构实现的线性表就叫链表

链表每个节点包含数据本身和下一个节点和上一个节点的地址

链表的分类

单链表 双链表

带头链表 不带头链表

循环链表等等

我们竞赛一般都用的是带头链表

双向链表的特点是比较任意的找到前驱节点

循环链表的特点是从任意节点的位置开始都能遍历完整个链表

我们的动态实现链表是用new申请节点,delete释放节点

但是这种动态形式对时间消耗很大,所以我们竞赛中实现的是静态的链表

静态单链表的实现

我们用两个足够大的数组来实现静态链表

一个是elem数组用来存储每个节点的数据域

一个是next数组用来存储每个节点的指针域

一个变量h表示头节点的位置

一个变量id表示新加入节点的位置

静态单链表的头插

我们应该先把2连上,再进行1的连接,如果我们先进行1的连接,那么第一个节点就找不到了,2无法进行

所以我们要头插的时候,先让id++ 为新节点腾位置,再把数据的值给e[id]

然后我们实现2号连接,我们把ne[id]=ne[h]

最后我们实现1号连接,ne[h]=id;

我们的时间复杂度就是O(1)

代码:

void push_front(int x)
{e[++id] = x;ne[id] = ne[h];ne[h] = id;
}

遍历链表:

用for循环,int i先初始化为ne[h],i只要不等于0就继续进入循环,每次循环i都变成ne[i] 就完成了我们的遍历链表操作

代码

void Print()
{for (int i = ne[h]; i; i = ne[i]){cout << e[i] << " ";}cout << endl;
}

测试结果

查询节点 第一种方法就是遍历链表查询,返回节点的下标

int find(int x)
{//解法1遍历链表for (int i = ne[h]; i; i = ne[i]){if (e[i] == x)return i;}return 0;
}

查询节点的第二种方法,用空间替代时间,开一个mp数组,mp数组的下标就是我们链表的值,数组的值就是我们的链表节点的存储位置

相比于遍历的查询,我们mp数组的时间复杂度只是O(1),但是有两点局限性,1是数据的值不能太大,2是数据的值不能重复,不然就不知道存哪个下标了

int find(int x)
{return mp[x];
}

每次头插的时候 把新节点的存储位置更新到mp里

void push_front(int x)
{e[++id] = x;mp[x] = id;ne[id] = ne[h];ne[h] = id;
}

在任意位置之后 插入节点

如果我们先连接1号路线,那我们就找不到三这个节点了,所以我们应该先连接2号路线,也就是说,我们先让id++给新节点腾出位置,然后我们连接2号路线也就是让ne[id]=ne[p],再连接1号路线,也就是让ne[p]=id

void insert(int p, int x)
{//在存储位置为p的节点后面插入一个新节点id++;e[id] = x;mp[x] = id;ne[id] = ne[p];ne[p] = id;}

删除在任意位置之后的元素

如图,这种情况我们只要让1直接连接3 跳过2就行了,这时候虽然2还在我们的数组里面,但是遍历的时候不会遍历到他,也就相当于删除了这个节点了

也就是我们要删除2,就让ne[1]=ne[ne[1]]就行了,如果我们传p的话,就让ne[p]=ne[ne[p]]

当然,如果我们删除的节点是最后一个的下一个的话,就需要特殊判断一下,不然会存在bug

比如下图

我们要删除6节点的下一个节点的时候,ne[6]=ne[ne[6]],也就是ne[6]=ne[0],就会让我们的6节点和4节点再形成一个连接,破坏原有的结构

所以我们需要特判一下

void erase(int p)
{if (ne[p])//当p不是最后一个元素的时候{mp[e[ne[p]]] = 0;//清空标记ne[p] = ne[ne[p]];}
}

测试

我们单链表会了头插,查询存储位置,任意位置之后插入,任意位置之后删除这几个操作就够用了,其他的操作时间复杂度太高了我们基本用不到

静态单链表总代码

#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int e[N], ne[N], h, id;
int mp[N];
void Print()
{for (int i = ne[h]; i; i = ne[i]){cout << e[i] << " ";}cout << endl;
}
void push_front(int x)
{e[++id] = x;mp[x] = id;ne[id] = ne[h];ne[h] = id;
}
int find(int x)
{解法1遍历链表//for (int i = ne[h]; i; i = ne[i])//{//	if (e[i] == x)//		return i;//}//return 0;return mp[x];
}
void insert(int p, int x)
{//在存储位置为p的节点后面插入一个新节点id++;e[id] = x;mp[x] = id;ne[id] = ne[p];ne[p] = id;}
void erase(int p)
{if (ne[p])//当p不是最后一个元素的时候{mp[e[ne[p]]] = 0;//清空标记ne[p] = ne[ne[p]];}
}
int main()
{for (int i = 1; i <= 5; i++){push_front(i);Print();}erase(2);Print();erase(3);Print();/*cout << find(1) << endl;cout << find(5) << endl;cout << find(6) << endl;*//*insert(3, 10);insert(5, 100);Print();*/
}

静态双链表的实现

下面我们来介绍一下双链表的实现,双链表无非就是在单链表的基础上增加了前驱指针,我们只需要多开一个足够大的数组来存储前面的元素的存储位置就行了

静态双链表的创建

#include <iostream>
using namespace std;
const int N = 1e5+10;
int e[N], ne[N], pre[N];
int id, h;

静态双链表的头插

a是哨兵位

和单链表一样,我们1号路线应该最后实现不然的话我们就找不到b这个节点了,自然也就连不上我们的链表了,我们先让id++为新节点腾出位置,然后e[id]=x 为了规范一下操作

我们首先先把新节点的pre指针和ne指针与相邻的两个节点连接

也就是ne[id]=ne[h] , pre[id] = h

接下来我们把b节点的前指针连接新节点,也就是3号路线

pre[ne[h]]=id

最后,我们修改哨兵位的ne指针,

ne[h]=id;

我们来实现一下代码

void push_front(int x)
{id++;e[id] = x;//先修改新来节点的左右指针ne[id] = ne[h];pre[id] = h;//再修改哨兵位下一个节点的左指针pre[ne[h]] = id;//最后修改哨兵位的右指针ne[h] = id;
}

测试头插

实现按值查找,我们还是用mp[N]空间代替时间

int find(int x)
{return mp[x];
}

在插入的时候更新mp数组

在任意位置之后插入元素

如图,我们想要在p这个存储位置后面插入一个元素,和头插差不多,id++,e[id]=x我们应该先更改新节点的左右指针,也就是pre[id] = p ne[id] = ne[p]

然后更改p右边的节点的左指针

pre[ne[p]]=id

最后更改p位置的右指针

ne[p]=id

代码实现

void insert_back(int p, int x)
{id++;e[id] = x;//修改新节点左右指针ne[id] = ne[p];pre[id] = p;//修改p后面节点的左指针pre[ne[p]] = id;//修改p的右指针ne[p] = id;
}

测试

在任意位置之前插入元素

比如如图,我们要插入y这个节点,首先给节点腾出位置,然后先把新节点的左右指针连接上,然后连插入节点之前的节点的右指针,最后修改p的左指针。

代码

void insert_front(int p, int x)
{id++;e[id] = x;//修改新节点的左右指针ne[id] = p;pre[id] = pre[p];//修改p前节点的右指针ne[pre[p]] = id;//修改p存储位置的左指针pre[p] = id;mp[x] = id;
}

测试代码

删除任意位置的元素

如图我们要删除p存储位置的节点,首先我们要让ne[pre[p]] = ne[p]

然后让  pre[ne[p]] = pre[p]

也就是让该节点的上一个节点的右指针指向该节点下一个节点,让该节点下一个节点的左指针指向该节点的上一个指针,然后mp[e[p]] = 0清空标记

循环链表

我们之前写的单链表其实就是循环链表,因为我们把最后一个节点的右指针写为0,其实就是头节点的下标

算法题练习:

1.排队顺序

第一行n是小朋友个数

第二行分别是第i个小朋友的下一个小朋友的编号,相当于我们链表的ne[N]的数组,而我们的数据域就是下标,我们只需要写一个遍历链表的代码就行了

第三行表示第一个小朋友的编号,我们遍历的起点

#include <iostream>
using namespace std;
const int N = 1e6+10;
int ne[N];
int n;
int main()
{cin >> n;for(int i = 1;i<=n;i++){cin >> ne[i];}int h;cin >> h;for(int i = h;i;i=ne[i]){cout << i << " ";} 
}

2.单向链表

#include <iostream>
using namespace std;
const int N = 1e5+10;
const int M = 1e6+10;
int id,h,ne[N],e[N];
int mp[M];int main()
{id++;e[id] = 1;mp[1] = id;int q;cin >> q;int op,x,p;while(q--){cin >> op >> x;p = mp[x];if(op == 1)//插入到x后面 {int y;cin >> y;id++;e[id] = y;ne[id] = ne[p];ne[p] = id;mp[y] = id;	}else if(op == 2){if(ne[p]){cout << e[ne[p]] << endl;	}else cout << "0" << endl;}else{mp[e[ne[p]]] = 0;ne[p] = ne[ne[p]];	}}
}

3.队列安排

4.约瑟夫问题

相关文章:

备战蓝桥杯 链表详解

目录 链表概念 静态单链表的实现 静态双链表的实现 循环链表 算法题练习&#xff1a; 1.排队顺序 2.单向链表 3.队列安排 4.约瑟夫问题 链表概念 上一次我们用顺序存储实现了线性表&#xff0c;这次我们用链式存储结构实现的线性表就叫链表 链表每个节点包含数据本身…...

基于华为Maas(大模型即服务)和开源的Agent三方框架构建AI聊天助手实践

引言 随着人工智能技术的快速发展,AI聊天助手已经成为企业与用户之间沟通的重要桥梁。为了构建一个高效、智能且易于扩展的AI聊天助手,我们可以利用华为云提供的Maas(Model-as-a-Service,大模型即服务)平台,结合开源的Agent三方框架来实现。本文将详细介绍这一实践过程,…...

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8&#xff08;You Only Look Once&#xff09;和OpenCV实现车道线和车辆检测&#xff0c;目标是创建一个可以检测道路上的车道并识别车辆的系统&#xff0c;并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…...

【如何从0到1设计测试用例使用Fiddler完成弱网测试】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 ⭐⭐⭐测试用…...

PHP语言的函数实现

PHP语言的函数实现 在现代Web开发中&#xff0c;PHP是一种流行的后端脚本语言。它以简单易学和强大的功能著称&#xff0c;广泛应用于构建动态网站和Web应用程序。在PHP中&#xff0c;函数是组织代码、提高代码重用性和可读性的关键元素。本文将深入探讨PHP的函数实现&#xf…...

开源生成式物理引擎Genesis,可模拟世界万物

这是生成大模型时代 —— 它们能生成文本、图像、音频、视频、3D 对象…… 而如果将所有这些组合到一起&#xff0c;我们可能会得到一个世界&#xff01; 现在&#xff0c;不管是 LeCun 正在探索的世界模型&#xff0c;还是李飞飞想要攻克的空间智能&#xff0c;又或是其他研究…...

Apache Paimon-实时数据湖

一、Apache Paimon是什么? Flink社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合&#xff0c;推出新一代的 Streaming Lakehouse 技术&#xff0c;促进数据在数据湖上真正实时流动起来&#xff0c;并为用户提供实时离线一体化的开发体验。 …...

Git:Cherry-Pick 的使用场景及使用流程

前面我们说了 Git合并、解决冲突、强行回退等解决方案 >> 点击查看 这里再说一下 Cherry-Pick功能&#xff0c;Cherry-Pick不是merge&#xff0c;只是把部分功能代码Cherry-Pick到远程的目标分支 git cherry-pick功能简介&#xff1a; git cherry-pick 是用来从一个分…...

蓝桥杯---纯职业小组(c语言)

问题描述 在蓝桥王国&#xff0c;国王统治着一支由n 个小队组成的强大军队。每个小队都由相同职业的士兵组成。具体地&#xff0c;第i 个小队包含了 bi名职业为ai的士兵。近日&#xff0c;国王计划在王宫广场举行一场盛大的士兵检阅仪式&#xff0c;以庆祝王国的繁荣昌盛。然而…...

先辑芯片HPM5300系列之SEI多摩川协议命令表问题研究

多摩川协议有9条命令&#xff0c;但是先辑SEI的命令表只有8张。0-6是可用的&#xff0c;第7张是黑洞表&#xff0c;所以只有7张可用。 命令表的限制颇多&#xff0c;比如命令表只能按顺序使用 &#xff1a;例如0、1、3&#xff0c;那么命令表3是不能用的。 如果想要实现9个命令…...

C++:string

一、string概念 之前介绍过通过字符数组保存字符串&#xff0c;然后对字符数组中的字符串做各种操作&#xff1b;为了更加简单方便&#xff0c;在C中&#xff0c;又增加了 string 来处理字符串。 char str[20] "hello world"; string 字符串其实是一种更加高级的封…...

用c实现C++类(八股)

在 C 语言中&#xff0c;虽然没有内建的面向对象编程&#xff08;OOP&#xff09;特性&#xff08;如封装、继承、多态&#xff09;&#xff0c;但通过一些编程技巧&#xff0c;我们仍然可以模拟实现这些概念。下面将用通俗易懂的方式&#xff0c;逐步介绍如何在 C 中实现封装、…...

一区10+!线粒体基因组+宏基因组,微生态研究跨界新组合

在自然界中&#xff0c;微生物与宿主之间的共生关系是生物多样性和生态系统功能的重要组成部分。这些相互作用不仅塑造了宿主的进化历程&#xff0c;而且对宿主的生存和适应性至关重要。然而&#xff0c;这些共生关系的进化动态和共生菌基因组的演变仍然是微生物生态学和进化生…...

基于Python编程语言的自动化渗透测试工具

摘 要 近些年来网络安全形势变得越来越严峻&#xff0c;全球数百万个政企遭遇过不同程度的网络攻击。渗透测试是一种对目标进行信息安全评估的方法&#xff0c;而目前该行业仍在存在着安全服务行业价格昂贵&#xff0c;安全人才缺口巨大&#xff0c;在渗透测试时步骤繁琐、效率…...

浅析大语言模型安全和隐私保护国内外标准和政策

过去两年&#xff0c;大模型技术已经普及并逐步渗透到各行各业&#xff0c;2025年注定是大模型应用井喷式发展的一年&#xff0c;AI在快速发展的同时&#xff0c;其带来的安全风险也逐渐凸显。人工智能系统的安全性和隐私保护已经成为社会关注的重点。 附下载&#xff1a;600多…...

C++例程:使用I/O模拟IIC接口(6)

完整的STM32F405代码工程I2C驱动源代码跟踪 一&#xff09;myiic.c #include "myiic.h" #include "delay.h" #include "stm32f4xx_rcc.h" //初始化IIC void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphCl…...

【YOLOv8杂草作物目标检测】

YOLOv8杂草目标检测 算法介绍模型和数据集下载 算法介绍 YOLOv8在禾本科杂草目标检测方面有显著的应用和效果。以下是一些关键信息的总结&#xff1a; 农作物幼苗与杂草检测系统&#xff1a;基于YOLOv8深度学习框架&#xff0c;通过2822张图片训练了一个目标检测模型&#xff…...

Mysql--基础篇--SQL(DDL,DML,窗口函数,CET,视图,存储过程,触发器等)

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是用于管理和操作关系型数据库的标准语言。它允许用户定义、查询、更新和管理数据库中的数据。SQL是一种声明性语言&#xff0c;用户只需要指定想要执行的操作&#xff0c;而不需要详细说明如何…...

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work...

【教程】Unity 本地化多语种 | Localization 工具组

开发平台&#xff1a;Unity 6.0 编程平台&#xff1a;Visual Studio 2022 编程语言&#xff1a;CSharp 6.0 工具包类&#xff1a;Localization   一、前言 本地化多语言类型是软件面向国际化所必须的功能项。Unity 在 2022 版本后推出 Localization 工具包&#xff0c;以降低…...

模式识别与机器学习

文章目录 考试题型零、简介1.自学内容(1)机器学习(2)机器学习和统计学中常见的流程(3)导数 vs 梯度(4)KL散度(5)凸优化问题 2.基本概念3.典型的机器学习系统4.前沿研究方向举例 一、逻辑回归1.线性回归2.逻辑回归3.随堂练习 二、贝叶斯学习基础1.贝叶斯公式2.贝叶斯决策3.分类器…...

鸿蒙面试 2025-01-10

写了鉴权工具&#xff0c;你在项目中申请了那些权限&#xff1f;&#xff08;常用权限&#xff09; 位置权限 &#xff1a; ohos.permission.LOCATION_IN_BACKGROUND&#xff1a;允许应用在后台访问位置信息。 ohos.permission.LOCATION&#xff1a;允许应用访问精确的位置信息…...

在vscode上

第一步 安装插件 &#xff08;1&#xff09;从菜单处打开vscode&#xff0c;之后点击左侧“拓展”&#xff0c;在搜索栏输入“platform”&#xff0c;安装这个插件。 注&#xff1a;安装过程可能会慢一点&#xff0c;可以尝试连接自己的热点 &#xff08;2&#xff09;安装完…...

用WebGPU实现现代Web3D渲染——突破传统性能瓶颈的解决方案

引言 随着Web技术的不断发展&#xff0c;Web3D应用的需求不断增加。从游戏引擎到可视化工具&#xff0c;3D渲染技术正在被广泛地应用。然而&#xff0c;传统WebGL技术在性能、效率和灵活性上仍存在局限性。而WebGPU作为一种新兴的Web标准&#xff0c;为现代3D渲染提供了强大而…...

HTML5 加载动画(Loading Animation)

加载动画&#xff08;Loading Animation&#xff09;详解 概述 加载动画是指在数据加载过程中&#xff0c;向用户展示的一种视觉效果&#xff0c;旨在提升用户体验&#xff0c;告知用户系统正在处理请求。它可以减少用户的等待焦虑感&#xff0c;提高界面的互动性。 常见的加…...

.NET AI 开发人员库 --AI Dev Gallery简单示例--问答机器人

资源及介绍接上篇 nuget引用以下组件 效果展示&#xff1a; 内存和cpu占有&#xff1a; 代码如下&#xff1a;路径换成自己的模型路径 模型请从上篇文尾下载 internal class Program{private static CancellationTokenSource? cts;private static IChatClient? model;privat…...

Linux 高级路由 —— 筑梦之路

Linux 高级路由详解 本文将基于您提供的 Linux 高级路由极简教程 文章&#xff0c;深入探讨 Linux 高级路由的概念、配置方法以及应用场景。 一、什么是 Linux 高级路由&#xff1f; Linux 高级路由是指利用 Linux 内核提供的强大网络功能&#xff0c;实现超越传统路由表和默…...

实习总结(经历篇)

自从读研后,有可能是看见同龄的财会专业的同学去各种大厂实习:B站,阿里等,身边也有舍友在有过小厂实习,所以一直有个想法就是去实习,这个想法终于在研一的暑假快开始前被我赋予行动。 研一暑假和同门一起在boss等招聘软件投简历,但是当时并没有很好的对简历做修改,投递…...

【ShuQiHere】pandas 与 DataFrame 全面详解

【ShuQiHere】 本文将为您系统介绍 pandas 与 DataFrame 之间的区别&#xff0c;着重讲解 DataFrame 的常用方法以及相关的数据可视化操作&#xff0c;包括 df.hist()、df.plot()、df.boxplot() 等。无论您是数据分析新手还是有经验的专业人士&#xff0c;都可以从本文中快速掌…...

【回眸】发财日记

积累本金&#xff0c;有舍有得。 上学时在线上兼职&#xff0c;基本够开销没攒下钱&#xff0c;上班之后工资还能攒下不少。 对于花销要有舍有得。认同一句话“买东西要买能力范围内最好的”。 所以&#xff0c;每次花钱前都会思考: 是否需要&#xff0c;是否能替代已有产品&…...

文件读写到SQLite数据库的方法

在 SQLite 数据库中&#xff0c;将文件读写到数据库的常见方法主要有以下几种&#xff1a; 1. 将文件以 BLOB 类型存储 BLOB&#xff08;Binary Large Object&#xff09; 是 SQLite 中的二进制数据类型&#xff0c;可以直接用来存储文件内容。 步骤&#xff1a; 创建表 创建一…...

基于SDN的ddos攻击检测与防御

本项目依赖mininet, floodlight, sFlow-RT 1&#xff0c;启动floodlight cd floodlightjava -jar target/floodlight.jar 浏览器访问http://localhost:8080/ui/pages/index.html 或者http://localhost:8080/ui/index.html 2&#xff0c;创建 mininet拓扑 sudo mn --toposingl…...

RocketMQ 和 Kafka 有什么区别?

目录 RocketMQ 是什么? RocketMQ 和 Kafka 的区别 在架构上做减法 简化协调节点 简化分区 Kafka 的底层存储 RocketMQ 的底层存储 简化备份模型 在功能上做加法 消息过滤 支持事务 加入延时队列 加入死信队列 消息回溯 总结 来源:面试官:RocketMQ 和 Kafka 有…...

关于人工智能学习框架

人工智能学习框架&#xff1a;智能时代的强大引擎 在人工智能蓬勃发展的今天&#xff0c;学习框架如同一座座坚实的桥梁&#xff0c;连接着理论与实践&#xff0c;承载着创新与突破&#xff0c;为智能科技的前行提供了强大动力。本文将深入剖析人工智能学习框架的重要意义、核…...

Android14上使用libgpiod[gpioinfo gpioget gpioset ...]

环境 $ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.5 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.5 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="…...

【文件I/O】UNIX文件基础

IO编程的本质是通过 API 操作 文件。 什么是 IO I - Input 输入O - Output 输出 这里的输入和输出都是站在应用&#xff08;运行中的程序&#xff09;的角度。外部特指文件。 这里的文件是泛指&#xff0c;并不是只表示存在存盘中的常规文件。还有设备、套接字、管道、链接…...

TensorFlow Quantum快速编程(高级篇)

五、实战:量子分类器应用 5.1 数据准备 在实战构建量子分类器时,数据准备是基石环节。选用鸢尾花数据集,这一经典数据集在机器学习领域应用广泛,其涵盖了三种鸢尾花品种的样本,每个样本包含花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征。鉴于本次构建二分类量子分类…...

无人机+无人车:车机协同技术探索详解

无人机与无人车之间的协同技术是一种重要的研究方向&#xff0c;它结合了无人机的高空视野和无人车的地面移动能力&#xff0c;旨在实现更高效、灵活的作业。以下是对无人机与无人车车机协同技术的详细探索&#xff1a; 一、技术基础 1. 通信机制&#xff1a; 无人机与无人车…...

解决WordPress出现Fatal error: Uncaught TypeError: ftp_nlist()致命问题

错误背景 WordPress版本&#xff1a;wordpress-6.6.2-zh_CN WooCommerce版本&#xff1a;woocommerce.9.5.1 WordPress在安装了WooCommerce插件后&#xff0c;安装的过程中没有问题&#xff0c;在安装完成后提示&#xff1a; 此站点遇到了致命错误&#xff0c;请查看您站点管理…...

scrapy爬取图片

scrapy 爬取图片 环境准备 python3.10scrapy pillowpycharm 简要介绍scrapy Scrapy 是一个开源的 Python 爬虫框架&#xff0c;专为爬取网页数据和进行 Web 抓取而设计。它的主要特点包括&#xff1a; 高效的抓取性能&#xff1a;Scrapy 采用了异步机制&#xff0c;能够高效…...

【数据库】六、数据库设计

文章目录 六、数据库设计1 数据库设计步骤1.1 规划阶段1.2 需求分析1.3 概念设计阶段(重点)1.4 逻辑设计阶段(重点)1.5 物理设计阶段1.6 数据库的实现1.7 数据库运行与维护 2 概念模型设计2.1 ER模型2.1.1 ER模型的基本元素2.1.2 联系的设计2.1.3 采用ER模型的概念设计2.1.4 ER…...

错误的类文件: *** 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中

一、问题 用maven对一个开源项目打包时&#xff0c;遇到了“错误的类文件: *** 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。”&#xff1a; 二、原因 原因是当前java环境是Java 8&#xff08;版本52.0&#xff09;&#xff0c;但…...

不同音频振幅dBFS计算方法

1. 振幅的基本概念 振幅是描述音频信号强度的一个重要参数。它通常表示为信号的幅度值&#xff0c;幅度越大&#xff0c;声音听起来就越响。为了更好地理解和处理音频信号&#xff0c;通常会将振幅转换为分贝&#xff08;dB&#xff09;单位。分贝是一个对数单位&#xff0c;能…...

《探秘开源多模态神经网络模型:AI 新时代的万能钥匙》

《探秘开源多模态神经网络模型&#xff1a;AI 新时代的万能钥匙》 一、多模态模型的崛起之路&#xff08;一&#xff09;从单一到多元&#xff1a;模态的融合演进&#xff08;二&#xff09;关键技术突破&#xff1a;解锁多模态潜能 二、开源多模态模型深度剖析&#xff08;一&…...

计算机网络之---端口与套接字

总括 端口&#xff1a;是计算机上用于标识网络服务的数字标识符&#xff0c;用于区分不同的服务或应用程序。套接字&#xff1a;是操作系统提供的用于进程间网络通信的编程接口&#xff0c;允许程序通过它来进行数据的发送、接收和连接管理。关系&#xff1a;端口号用于标识服…...

el-tabs中tabs过多造成form表单输入的时候卡顿

这里写自定义目录标题 tabs过多造成的输入卡顿解决方案方案一方案二 出现的并发问题解决方案 tabs过多造成的输入卡顿 描述&#xff1a;前端要写一个需求&#xff0c;大概有一百多个tab渲染过来&#xff0c;每个tab中都是一个表单&#xff0c;这个时候数据渲染任务加重&#x…...

vue+vite打包空白问题

在使用vuevite创建项目之后如果我们在部署项目的时候使用的不是主域名 比如www.custom.com 而是使用了www.custom.com/test 为访问域名的时候 如果不小心没有注意到这个变化 在打包上线之后会出现页面空白 js或者css404问题 我们可以在vite.config.ts去配置路径base export de…...

【python翻译软件V1.0】

如果不想使用密钥的形式&#xff0c;且需要一个直接可用的中英文翻译功能&#xff0c;可以使用一些免费的公共 API&#xff0c;如 opencc 或其他无需密钥的库&#xff0c;或直接用 requests 获取翻译结果。 其中&#xff0c;我可以给你一个简单的代码示例&#xff0c;使用 tra…...

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(while循环应用)

实战训练1—求最大公约数 问题描述&#xff1a; 给定两个正整数&#xff0c;求它们的最大公约数。 输入格式&#xff1a; 输入一行&#xff0c;包含两个正整数。 输出格式&#xff1a; 输出一行&#xff0c;包含gcd正整数&#xff0c;即这两个正整数的最大公约数。 输入…...

HTTPS协议的基础与工作原理

什么是HTTPS&#xff1f; HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是HTTP协议的安全版本&#xff0c;它通过SSL/TLS协议对通信数据进行加密&#xff0c;确保数据的安全传输。与HTTP相比&#xff0c;HTTPS能防止数据被窃取、篡改或伪造&#xff0c;广…...