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

字节青训Marscode——8:找出整形数组中超过一半的数

问题描述

小R从班级中抽取了一些同学,每位同学都会给出一个数字。已知在这些数字中,某个数字的出现次数超过了数字总数的一半。现在需要你帮助小R找到这个数字。


测试样例

样例1:

输入:array = [1, 3, 8, 2, 3, 1, 3, 3, 3]
输出:3

样例2:

输入:array = [5, 5, 5, 1, 2, 5, 5]
输出:5

样例3:

输入:array = [9, 9, 9, 9, 8, 9, 8, 8]
输出:9

步骤1:问题定义与分析

题目要求:

从一个整数数组 array 中找出某个出现次数超过数组长度一半的数字,保证这样的数字一定存在。

输入与输出:
  • 输入:一个整数数组 array,长度为 n
  • 输出:数组中某个出现次数超过 n / 2 的数字。
限制与边界条件:
  1. 数组中保证一定存在满足条件的数字。
  2. 数组长度 n 的范围未明确给出,但假设为合理范围(如 1 <= n <= 10^6)。
  3. 只需要输出符合条件的任意一个数字,不需要处理无解的情况。
问题性质:
  • 根据题意,某个数字的出现次数超过总数的一半,称为 多数元素
  • 这种问题可以通过经典的算法(如摩尔投票法)高效解决,而不需要使用暴力计数法。

步骤2:算法设计与分析

方法1:哈希表计数
  • 使用哈希表统计每个数字的出现次数。
  • 遍历数组,当某个数字的出现次数超过 n / 2 时返回该数字。
时间复杂度与空间复杂度:
  • 时间复杂度:O(n),需要遍历数组。
  • 空间复杂度:O(n),存储哈希表。
适用场景

适用于小规模数据,且有足够的内存空间支持额外的哈希表存储。


方法2:摩尔投票法(最佳选择)

摩尔投票法是一种高效的线性时间算法,专门用于解决多数元素问题。

算法步骤:
  1. 初始化一个候选值 candidate 和计数器 count 为 0。
  2. 遍历数组:
    • 如果当前计数为 0,将当前数字设置为候选值 candidate,并将计数器设置为 1。
    • 如果当前数字等于 candidate,计数器加 1。
    • 如果当前数字不等于 candidate,计数器减 1。
  3. 遍历结束时,candidate 即为多数元素。
时间复杂度与空间复杂度:
  • 时间复杂度:O(n),只需遍历数组一次。
  • 空间复杂度:O(1),不需要额外的存储空间。
适用场景

适用于任何规模的数据,且是本问题的最佳解决方案。

摩尔投票法原理解释

摩尔投票法(Boyer-Moore Voting Algorithm)是一种高效的算法,用于在一个数组中找到出现次数超过一半的元素(即 多数元素)。它的核心思想是通过一种计数机制,利用元素的多数性来进行筛选,最终在 O(n) 的时间复杂度内找到目标元素,并且空间复杂度为 O(1)。

问题背景

在一个大小为 n 的数组中,假设存在一个数字的出现次数超过 n / 2,也就是说这个数字是多数元素。摩尔投票法的目标是找出这个元素。通过遍历数组一次并利用投票机制,我们能够在常数空间内找到这个元素。

摩尔投票法的基本原理
  1. 计数器: 摩尔投票法通过维护一个计数器来识别出现次数最多的元素。这个计数器会随着遍历数组而动态调整。

  2. 选举过程

    • 候选人:首先,我们假设某个元素是候选人(candidate),并初始化计数器为 0。
    • 投票规则
      • 如果当前计数器为 0,选择当前元素作为新的候选人,并将计数器设置为 1。
      • 如果当前元素与候选人相同,计数器加 1。
      • 如果当前元素与候选人不同,计数器减 1。

    这种“投票”方式能够抵消一些非多数元素的干扰,并最终得到一个可能是多数元素的候选值。

  3. 计数的终结: 当整个数组遍历完成后,candidate 就是候选的多数元素。由于多数元素的出现次数超过了数组长度的一半,这个候选元素一定就是多数元素。

详细步骤
  1. 初始化

    • candidate(候选元素)初始化为一个任意值。
    • count(计数器)初始化为 0。
  2. 遍历数组

    • 对于数组中的每个元素:
      • 如果 count == 0,选择当前元素作为新的候选元素,并将计数器设为 1。
      • 如果当前元素等于 candidate,则增加计数器。
      • 如果当前元素与 candidate 不同,则减少计数器。
  3. 返回结果

    • 遍历结束后,candidate 即为数组中出现次数最多的元素。
直观解释

假设数组中的多数元素出现次数超过了数组总长度的一半(n/2)。在摩尔投票法中,元素的“投票”机制确保了最多的元素最终会“胜出”。具体来说:

  • 当遇到与当前候选人不同的元素时,我们会减去一个计数,导致非多数元素的出现机会被“削弱”。
  • 只有当某个元素的出现次数非常高时,才可能在整个数组中最终成为唯一的候选人。
举例说明

假设我们有数组:[3, 3, 4, 2, 4, 4, 2, 4, 4]

  • 第一步:candidate = 3, count = 0
    • 看到第一个元素 3count = 1candidate = 3
    • 看到第二个元素 3count = 2candidate = 3
    • 看到第三个元素 4count = 1candidate = 3count--)。
    • 看到第四个元素 2count = 0candidate = 2count = 1)。
    • 看到第五个元素 4count = 2candidate = 4
    • ...
    • 遍历完成后,candidate = 4 是多数元素。
为什么摩尔投票法有效?
  • 由于题目保证了多数元素一定存在,并且它的出现次数超过数组的一半,因此,在摩尔投票法中,不同的元素相互“抵消”掉的次数是对等的,最终剩下的就是多数元素。
  • 当计数器归零时,说明当前候选元素被其他元素“抵消”了,我们就将候选元素换成新的元素,从而不断减少非多数元素的影响,直到最后剩下的候选元素必然是多数元素。

摩尔投票法的优势

  1. 时间复杂度 O(n)

    • 只需要遍历数组一次,因此时间复杂度是 O(n),其中 n 是数组的长度。
  2. 空间复杂度 O(1)

    • 只使用了两个变量:candidatecount,因此空间复杂度是 O(1),不需要额外的空间。
  3. 适用于大规模数据

    • 在大规模数据中,摩尔投票法具有很高的效率,特别是在内存和空间限制较大的情况下,能够以最优的时间和空间复杂度完成任务。

步骤3:C++ 代码实现

使用摩尔投票法解决问题:

#include <iostream>
#include <vector>using namespace std;int solution(vector<int> array) {// 摩尔投票法int candidate = 0; // 候选元素int count = 0;      // 计数器// 第一次遍历,确定候选元素for (int num : array) {if (count == 0) {candidate = num; // 重置候选元素count = 1;       // 初始化计数器} else if (num == candidate) {count++; // 当前数字等于候选元素,计数器加1} else {count--; // 当前数字不等于候选元素,计数器减1}}// 此时candidate即为超过一半的数字,直接返回return candidate;
}int main() {// 测试用例cout << (solution({1, 3, 8, 2, 3, 1, 3, 3, 3}) == 3) << endl; // 输出 1 (True)cout << (solution({5, 5, 5, 1, 2, 5, 5}) == 5) << endl;       // 输出 1 (True)cout << (solution({9, 9, 9, 9, 8, 9, 8, 8}) == 9) << endl;   // 输出 1 (True)return 0;
}
代码解释:
  1. candidate:记录当前的候选多数元素。
  2. count:记录候选元素的计数。
  3. 第一遍遍历:通过计数器逻辑,找出候选元素。
  4. 时间复杂度:O(n),遍历数组一次。
  5. 空间复杂度:O(1),无额外空间开销。

步骤4:通过解决这个问题获得的启发

  1. 算法设计的重要性:摩尔投票法以 O(n) 的时间和 O(1) 的空间高效解决了问题,体现了精妙的算法设计对效率的提升。
  2. 多数性质的利用:当一个元素出现次数超过数组长度的一半时,不需要完全统计,利用其多数性质即可快速筛选。
  3. 扩展应用:摩尔投票法不仅适用于确定多数元素,还可扩展到寻找多于 n/3 次出现的元素(需要两轮计数)。

步骤5:实际应用分析

实际场景:
  1. 舆情分析

    • 在一个讨论群中,找出被提及最多的关键词。例如,在一个由用户输入的评论数据中,快速筛选出出现频率超过一半的品牌名称或产品关键词。
    • 实现方法
      • 将评论数据转化为数组形式,使用摩尔投票法筛选出最多的品牌关键词。
  2. 传感器数据监测

    • 在实时监测数据中,找出传感器的主流输出值,用于检测异常值。例如,某个值的输出频率异常高,可能表示系统进入了稳定状态。
  3. 选举系统

    • 在电子投票中,快速统计获胜的候选人(多数原则)。
实现示例:

在一个评论数据分析系统中,利用哈希表结合摩尔投票法,可以在多个评论字段中高效找出讨论最多的关键词。配合数据库或大数据平台,还可以实时生成分析报告,提升业务决策效率。

相关文章:

字节青训Marscode——8:找出整形数组中超过一半的数

问题描述 小R从班级中抽取了一些同学&#xff0c;每位同学都会给出一个数字。已知在这些数字中&#xff0c;某个数字的出现次数超过了数字总数的一半。现在需要你帮助小R找到这个数字。 测试样例 样例1&#xff1a; 输入&#xff1a;array [1, 3, 8, 2, 3, 1, 3, 3, 3] 输出…...

Fastapi + vue3 自动化测试平台---移动端App自动化篇

概述 好久写文章了&#xff0c;专注于新框架&#xff0c;新UI界面的实践&#xff0c;废话不多说&#xff0c;开搞 技术架构 后端&#xff1a; Fastapi Airtest multiprocessing 前端&#xff1a; 基于 Vue3、Vite、TypeScript、Pinia、Pinia持久化插件、Unocss 和 Elemen…...

go并发设计模式runner模式

go并发设计模式runner模式 真正运行的程序不可能是单线程运行的&#xff0c;go语言中最值得骄傲的就是CSP模型了&#xff0c;可以说go语言是CSP模型的实现。 假设现在有一个程序需要实现&#xff0c;这个程序有以下要求&#xff1a; 程序可以在分配的时间内完成工作&#xff0…...

[TPAMI 2024]Vision-Language Models for Vision Tasks: A Survey

论文网址&#xff1a;Vision-Language Models for Vision Tasks: A Survey | IEEE Journals & Magazine | IEEE Xplore 论文Github页面&#xff1a;GitHub - jingyi0000/VLM_survey: Collection of AWESOME vision-language models for vision tasks 英文是纯手打的&…...

Qt—QLineEdit 使用总结

文章参考:Qt—QLineEdit 使用总结 一、简述 QLineEdit是一个单行文本编辑控件。 使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。 通过改变 QLineEdit 的 echoMode() ,可以设置其属性,比如以密码的形式输入。 文本的长度可以由 m…...

Flutter 之 InheritedWidget

InheritedWidget 是 Flutter 框架中的一个重要类&#xff0c;用于在 Widget 树中共享数据。它是 Flutter 中数据传递和状态管理的基础之一。通过 InheritedWidget&#xff0c;你可以让子 Widget 在不需要显式传递数据的情况下&#xff0c;访问祖先 Widget 中的数据。这种机制对…...

#JAVA-常用API-爬虫

1.爬虫 我们在正则表达式的讲解中可以使用字符串的方法materchs()来匹配&#xff0c;并且返回一个boolean值 String name "lshhhljh"; System.out.println(name.matches("lsh{3}\\s{3}")); //true现在我们将利用正则表达式来爬取本地或者网站上的文本内…...

Qt Serial Bus 前置介绍篇

文章目录 Qt Serial Bus 简介前言 什么是 Qt Serial Bus&#xff1f;Qt Serial Bus 的核心功能支持的协议1. **CAN 总线**2. **Modbus**3. **自定义协议** 应用场景优势总结 Qt Serial Bus 简介 前言 Qt Serial Bus 是 Qt 框架中的一个模块&#xff0c;用于与工业设备和嵌入式…...

JavaScript(一)

1.JavaScript 基本使用 2.JavaScript简单事件 3.JavaScript修改样式 4.JavaScript数据类型 JavaScript和Java有什么关系 知识点一 JavaScript基本使用 JS写在哪 还有一种写在中间的&#xff0c;也就是<head>里面 JS一些注意事项 JS修改元素内容 #JS获取对象<…...

Python实现网站资源批量下载【可转成exe程序运行】

Python实现网站资源批量下载【可转成exe程序运行】 背景介绍解决方案转为exe可执行程序简单点说详细了解下 声明 背景介绍 发现 宣讲家网 的PPT很好&#xff0c;作为学习资料使用很有价值&#xff0c;所以想下载网站的PPT课件到本地&#xff0c;但是由于网站限制&#xff0c;一…...

el-upload上传多个文件,一次请求,Django接收

1、:file-list"fileList" :on-change"handleChange" 将文件赋值到fileList 2、 :auto-upload"false" 手动触发上传 写个按钮点击执行这个 this.$refs.upload.submit(); 3、自己写上传&#xff0c;不会再触发上传成功或失败回调 4、 request.FI…...

【错误记录】jupyter notebook打开后服务器错误Forbidden问题

如题&#xff0c;在Anaconda Prompt里输入jupyter notebook后可以打开浏览器&#xff0c;但打开具体项目后就会显示“服务器错误&#xff1a;Forbidden”&#xff0c;终端出现&#xff1a; tornado.web.HTTPError: HTTP 403: Forbidden 查看jupyter-server和jupyter notebook版…...

修改MVCActiveRecord支持匿名函数(用于动态决定数据库连接)

要修改 TMVCActiveRecordMiddleware 以直接接受一个匿名函数&#xff08;用于动态决定数据库连接&#xff09;以及一个配置文件名&#xff0c;你需要对构造函数进行一些调整。这可以通过重载构造函数以接收另一个参数——匿名函数来实现。 构造函数修改步骤 假设你的目标是允…...

SpringMVC(一)

ModelAndView ModelAndView 是 Spring MVC 框架中的一个类&#xff0c;用于在控制器中返回模型数据和视图信息。 模型&#xff1a; 包含应用程序的数据&#xff0c;这些数据将被传递到视图层进行渲染。模型数据通常以键值对的形式存储在一个 map 中。 视图&#xff1a; 指定要渲…...

nginx配置笔记

前言 nginx官方文档: https://nginx.org/en/docs/openresty官方文档: https://github.com/openresty/lua-nginx-module一、配置 1. 配置实例 1.1. 80端口转443 server {listen 80 default_server;listen [::]:80 default_server;rewrite ^ https://$http_host$request_uri?…...

解决idea使用maven打包时无法将本地lib库文件和resource目录中的资源文件打包进jar文件的问题!!!

一、问题复现 1&#xff09;项目结构如下 我们看到项目中手动添加了本地lib资源&#xff0c;同时bootspring的配置文件和mapper文件也放在了resouces目录中。 2&#xff09;上述结构的项目在使用maven打包时&#xff0c;最终生成的jar文件中将不包含lib库文件&#xff0c;甚…...

html button 按钮单选且 高亮

<DIV class"middle"> <div class"containerTarget"> <span class"hover-target1" οnclick"btn(1);">韵达 </span> <span class"hover-target2" οnclick"btn(2);">中通 </span…...

GitLab使用中遇到的一些问题-记录

错误内容一 Warning: Permanently added gitlab.com (ED25519) to the list of known hosts. gitgitlab.com: Permission denied (publickey). Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. …...

【合作原创】使用Termux搭建可以使用的生产力环境(二)

前言 上期文章没看的可以先从上期文章开始看起 【合作原创】使用Termux搭建可以使用的生产力环境&#xff08;一&#xff09;-CSDN博客 目前我们已经完成了FinalShell ssh连接手机Termux的功能了&#xff0c;这期我们继续朝我们的目标前进。今天早上有读者进群以为生成环境指…...

UG NX二次开发(C#)-选择对象居中(不是全部居中)

文章目录 1、前言2、什么是对象居中3、功能实现代码3.1 对象居中3.1 恢复原视图1、前言 在UG NX二次开发过程中,我们经常会用到居中以查看完整的模型,但是对于如果想展示某些对象,而不是全部模型时,那么我们就想将选择的对象(如体对象)居中查看,当查看结束后还能恢复到…...

12.2深度学习_项目实战

十、项目实战 鲍勃开了自己的手机公司。他想与苹果、三星等大公司展开硬仗。 他不知道如何估算自己公司生产的手机的价格。在这个竞争激烈的手机市场&#xff0c;你不能简单地假设事情。为了解决这个问题&#xff0c;他收集了各个公司的手机销售数据。 鲍勃想找出手机的特性(例…...

【Go底层】select原理

目录 1、背景2、go版本3、 selectgo函数解释【1】函数参数解释【2】函数具体解释第一步&#xff1a;遍历pollorder&#xff0c;选出准备好的case第二步&#xff1a;将当前goroutine放到所有case通道中对应的收发队列上第三步&#xff1a;唤醒groutine 4、总结 1、背景 select多…...

QT实战-qt各种菜单样式实现

本文主要介绍了qt普通菜单样式、带选中样式、带子菜单样式、超过一屏幕菜单样式、自定义带有滚动条的菜单样式&#xff0c; 先上图如下&#xff1a; 1.普通菜单样式 代码&#xff1a; m_pmenu new QMenu(this);m_pmenu->setObjectName("quoteListMenu"); qss文…...

Qt 窗口类型、窗口标志和窗口属性

一、窗口类型 Qt 窗口标志枚举类型用于指定小部件的各种窗口系统属性。其中一些标志取决于底层窗口管理器是否支持它们。以下是窗口类型: Qt::QWidget:这是 QWidget 的默认类型。如果它们有父级,这种类型的部件是子部件,如果没有父控件,则为独立窗口。Qt::Window:通常具…...

Windows远程桌面连接到Linux

我的电脑是一台瘦客户端&#xff0c;公司设置的不能安装其他软件&#xff0c;里面只有几个软件&#xff0c;还好有一个远程桌面&#xff08;Remote Desktop Connection&#xff09;&#xff0c;我想连接到另一台Linux的电脑上。 在Linux上安装xrdp&#xff1a; sudo apt insta…...

http(请求方法,状态码,Cookie与)

目录 1.http中常见的Header(KV结构) 2.http请求方法 2.1 请求方法 2.2 telnet 2.3 网页根目录 2.3.1 概念 2.3.2 构建一个首页 2.4 GET与POST方法 2.4.1 提交参数 2.4.2 GET与POST提交参数对比 2.4.3 GET和POST对比 3.状态码 3.1 状态码分类 3.2 3XXX状态码 3.2 …...

海康gige工业相机无驱动取像突破(c#实现,最后更新,你也可以移植到linux下去用)

买了3个海康的相机&#xff0c;最初测试成功的是500万相机。 然后写了一个通用版&#xff0c;害怕有问题&#xff0c;又买了600万的相机&#xff0c;测试果然不及格&#xff0c;花了九牛二虎之力找到一个小问题&#xff0c;就这个 if (changdu > 1000)&#xff1b; 最后又…...

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

1.数据集介绍 ETT(电变压器温度)&#xff1a;由两个小时级数据集&#xff08;ETTh&#xff09;和两个 15 分钟级数据集&#xff08;ETTm&#xff09;组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 traffic(交通) &#xff1a;描…...

使用OpenCV和卡尔曼滤波器进行实时活体检测

引言 在现代计算机视觉应用中&#xff0c;实时检测和跟踪物体是一项重要的任务。本文将详细介绍如何使用OpenCV库和卡尔曼滤波器来实现一个实时的活体检测系统。该系统能够通过摄像头捕捉视频流&#xff0c;并使用YOLOv3模型来检测目标对象&#xff08;例如人&#xff09;&…...

Node.js:开发和生产之间的区别

Node.js 中的开发和生产没有区别&#xff0c;即&#xff0c;你无需应用任何特定设置即可使 Node.js 在生产配置中工作。但是&#xff0c;npm 注册表中的一些库会识别使用 NODE_ENV 变量并将其默认为 development 设置。始终在设置了 NODE_ENVproduction 的情况下运行 Node.js。…...

实时数据开发 | Flink的数据分区策略--物理分区操作

物理分区操作 物理分区(physica1partitioning)操作的作用是根据指定的分区策略将数据重新分限到不同节点的 Task 实例上执行。当使用DataSteam提供的 API对数据处理过程中&#xff0c;赖于算子本身对数据的分区控制&#xff0c;如果用户希望自己控制数据分区&#xff0c;例如当…...

C++ 之弦上舞:string 类与多样字符串操作的优雅旋律

string 类的重要性及与 C 语言字符串对比 在 C 语言中&#xff0c;字符串是以 \0 结尾的字符集合&#xff0c;操作字符串需借助 C 标准库的 str 系列函数&#xff0c;但这些函数与字符串分离&#xff0c;不符合 OOP 思想&#xff0c;且底层空间管理易出错。而在 C 中&#xff0…...

ElementUI:el-drawer实现在父组件区域内打开抽屉组件非全屏

我们在开发ElementUI的时候遇到抽屉组件全屏的问题&#xff0c;但是我们需要在指定div中展示出来&#xff0c;上代码&#xff1a; 1、在el-drawer中增加属性 el-drawerstyle"position: absolute"z-index"-1":append-to-body"false">// do s…...

HarmonyOS开发中,如何高效定位并分析内存泄露相关问题

HarmonyOS开发中&#xff0c;如何高效定位并分析内存泄露相关问题 (1)Allocation的应用调试方式Memory泳道Native Allocation泳道 (2)Snapshot(3)ASan的应用使用约束配置参数使能ASan方式一方式二 启用ASanASan检测异常码 (4)HWASan的应用功能介绍约束条件使能HWASan方式一方式…...

Unity类银河战士恶魔城学习总结(P156 Audio Settings音频设置)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了音频的大小设置与保存加载 音频管理器 UI_VolumeSlider.cs 定义了 UI_VolumeSlider 类&#xff0c;用于处理与音频设置相关的…...

SpringMVC工作原理【流程图+文字详解SpringMVC工作原理】

SpringMVC工作原理 前端控制器&#xff1a;DispactherServlet处理器映射器&#xff1a;HandlerMapping处理器适配器&#xff1a;HandlerAdapter处理器&#xff1a;Handler&#xff0c;视图解析器&#xff1a;ViewResolver视图&#xff1a;View 首先用户通过浏览器发起HTTP请求…...

web五、元素尺寸和位置、节点操作(DOM,查找节点,增加节点,删除节点)、阶段案例

一、元素尺寸与位置 注意&#xff1a;offset家族返回不带单位的数字&#xff0c;而且都是只读的 1&#xff0c;元素尺寸&#xff08;大小&#xff09; 大小&#xff1a; offsetWidth和offsetHeight 获取元素的自身宽高、包含元素自身设置的宽高、padding、border 返回的是…...

Vue前端开发-路由树配置

一个配置路由的文件由导入路由模块、创建路由对象和导出路由对象三个部分组成&#xff0c;在创建路由对象时&#xff0c;需要构建路由数组&#xff0c;路由数组中包括一级、二级和多级路由结构&#xff0c;因此&#xff0c;这种结构的路由配置&#xff0c;又称为路由树配置。 …...

记录一次网关异常

记一次网关异常 网关时不时就会出现下面的异常。关键是不知道什么时候就会报错&#xff0c;并且有时候就算什么都不操作&#xff0c;也会导致这个异常。 ERROR org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in schedul…...

级联树结构TreeSelect和上级反查

接口返回结构 前端展示格式 前端组件 <template><div ><el-scrollbar height"70vh"><el-tree :data"deptOptions" :props"{ label: label, children: children }" :expand-on-click-node"false":filter-node-me…...

家政小程序开发,打造便捷家政生活小程序

目前&#xff0c;随着社会人就老龄化和生活压力的加重&#xff0c;家政服务市场的需求正在不断上升&#xff0c;家政市场的规模也正在逐渐扩大&#xff0c;发展前景可观。 在市场快速发展的影响下&#xff0c;越来越多的企业开始进入到市场中&#xff0c;同时家政市场布局也发…...

Redis和MySQL之间如何进行数据同步

原因 为什么要进行Redis和MySQL的数据同步&#xff1f; 性能优化&#xff1a;MySQL是关系型数据库&#xff0c;数据读取和存储相对复杂&#xff1b;Redis是内存数据库&#xff0c;读写速度极快&#xff0c;将热点数据存在Redis&#xff0c;可以大大提高系统的访问速度。 数据…...

Kafka的学习路径规划

目录标题 1. 记&#xff08;记忆力&#xff09;Kafka核心概念Kafka关键配置 2. 懂&#xff08;理解力&#xff09;Kafka工作原理Kafka核心功能Kafka架构设计 3. 网&#xff08;知识网络&#xff09;技术栈整合用例和场景 4. 拓&#xff08;全面拓展&#xff09;学习材料多样化内…...

SpringBoot 框架下基于 MVC 的高校办公室行政事务管理系统:设计开发全解析

2系统开发环境 2.1vue技术 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第…...

【JavaEE】Spring Boot 项目创建

目录 一、idea创建Spring Boot项目1.1 创建过程1.2 依赖下载问题 二、网页创建Spring Boot项目三、目录介绍四、运⾏项⽬&#xff0c;看是否创建成功4.1 请求响应流程分析 五、常见报错5.1 Whitelabel Error Page4.1.1 注解写错&#xff1a;5.1.2 500 ⽆法访问此⽹站 六、状态码…...

java垃圾回收机制介绍

Java垃圾回收机制&#xff08;Garbage Collection, GC&#xff09;是Java编程语言中的一项重要特性&#xff0c;它自动管理内存&#xff0c;释放不再使用的对象 1. 堆&#xff08;Heap&#xff09;&#xff1a; • Java虚拟机&#xff08;JVM&#xff09;中用于存储对象实例的内…...

计算机视觉硬件知识点整理六:工业相机选型

文章目录 前言一、工业数字相机的分类二、相机的主要参数三、工业数字摄像机主要接口类型四、选择工业相机的考量因素六、实例分析 前言 随着科技的不断进步&#xff0c;工业自动化领域正经历着前所未有的变革。作为工业自动化的重要组成部分&#xff0c;工业相机在工业检测、…...

一种多功能调试工具设计方案开源

一种多功能调试工具设计方案开源 设计初衷设计方案具体实现HUB芯片采用沁恒微CH339W。TF卡功能网口功能SPI功能IIC功能JTAG功能下行USB接口 安路FPGA烧录器功能Xilinx FPGA烧录器功能Jlink OB功能串口功能RS232串口RS485和RS422串口自适应接口 CAN功能烧录器功能 目前进度后续计…...

鸿蒙NEXT开发笔记(十九)仿抖音快手App的相对布局

上一节我们利用photoAccessHelper实现了从相册挑选视频的功能&#xff0c;但在短视频APP界面&#xff0c;视频画面上还叠加了若干交互图标&#xff0c;包括但不限于&#xff1a;点赞、收藏、评论、分享等等。那么在某个组件上叠加显示其他组件&#xff0c;就用到了相对布局这个…...

微信小程序px和rpx单位互转方法

js代码如下 Page({data: {width: 0,width2: 0},onLoad: function (options) {let px this.pxToRpx(380)let rpx this.rpxToPx(730.7692307692307) // 检查两个互转是否是相同即可,例如pxToRpx(380)转成730.7692307692307 则rpxToPx(730.7692307692307)如果是380则代表互转没…...