Kibana:Spotify Wrapped 第二部分:深入挖掘数据
作者:来自 Elastic Philipp Kahr
我们将比以往更深入地探究你的 Spotify 数据并探索你甚至不知道存在的联系。
在由 Iulia Feroli 撰写的本系列的第一部分中,我们讨论了如何获取 Spotify Wrapped 数据并在 Kibana 中对其进行可视化。在第 2 部分中,我们将深入研究数据,看看还能发现什么。为此,我们将利用一些不同的方法,并使用 Spotify 到 Elasticsearch 将数据索引到 Elasticsearch。这个工具更先进一些,需要更多的设置,但它是值得的。数据更加结构化,我们可以提出更复杂的问题。
与第一种方法有何不同?
在第一篇博客中,我们直接使用了 Spotify 导出功能,并没有执行任何规范化任务或任何其他数据处理。这次我们将使用相同的数据,但我们将执行一些数据处理以使数据更易于使用。这将使我们能够回答更复杂的问题,例如:
- 我最喜欢的 100 首歌曲的平均时长是多少?
- 我最喜欢的 100 首歌曲的平均受欢迎程度是多少?
- 一首歌曲的平均聆听时长是多少?
- 我最常跳过的曲目是什么?
- 我什么时候喜欢跳过曲目?
- 我是否在一天中的某个特定时间比其他时间听得更多?
- 我是否在某一周的某一天比其他日子听得更多?
- 这是一个特别有趣的月份吗?
- 收听时间最长的艺术家是哪位?
Spotify 每年都会推出一项有趣的体验,向你展示你当年听过的音乐。它不会提供逐年的变化,因此你可能会错过一些曾经位列前十但现在已经消失的艺术家。
数据处理
我们在第一篇和第二篇文章中处理数据的方式有很大的不同。如果你想继续使用第一篇文章中的数据,你将需要考虑一些字段名称的变化,以及需要恢复到 ES|QL 来动态地进行某些提取,例如一天中的 hour of day。
尽管如此,大家都应该能够跟上这篇文章。 在 Spotify to Elasticsearch 仓库中进行的数据处理涉及向 Spotify API 请求歌曲时长、流行度,并对某些字段进行重命名和增强。 例如,Spotify 导出的 artist
字段本质上只是一个字符串,无法表示合作曲目或多艺术家参与的歌曲。
仪表板
我在 Kibana 中创建了一个仪表板来可视化数据。仪表板在这里可用,你可以将其导入到你的 Kibana 实例中。仪表板非常全面,可以回答上述许多问题。
让我们一起探讨一些问题并了解如何回答它们!
我最喜欢的 100 首歌曲的平均时长是多少?
为了回答这个问题,我们可以使用 Lens 或 ES|QL。让我们来探讨一下这三个选项。让我们以 Elasticsearch 的方式正确地表述这个问题。我们想要找到最热门的 100 首歌曲,然后计算所有这些歌曲的平均时长。用 Elasticsearch 术语来说,这将是两个聚合:
- 找出最热门的 100 首歌曲
- 计算这100首歌曲的平均时长。
Lens
在 Lens 中,这个过程相当简单。创建一个新的 Lens 视图,切换到表格模式,然后将 title
字段拖放到表格中。接着,点击 title
字段,将大小设置为 100,并启用精确模式(accuracy mode)。然后,将 duration
字段拖放到表格中,并选择 last value,因为我们只需要每首歌的最新时长数据。同一首歌的时长是固定的。在 last value 聚合方式的底部,有一个用于汇总行的下拉菜单,选择 average,这样就能看到平均值。
ES|QL
与 DSL 和聚合相比,ES|QL 是一种相当新鲜的语言,但它非常强大且易于使用。要在 ES|QL 中回答同样的问题,你可以编写以下查询:
from spotify-history
| stats duration=max(duration), count=count() by title
| sort count desc
| limit 100
| stats `Average duration of the songs`=avg(duration)
让我带你一步步解析这条 ES|QL 查询:
from spotify-history
- 这是我们使用的索引模式。stats duration=max(duration), count=count() by title
- 这是第一步的聚合,我们计算每首歌的最大时长 (max(duration)
) 和播放次数 (count()
)。在 Lens 中我们使用的是last value
,但由于 ES|QL 目前不支持first
或last
,我们改用max
。sort count desc
- 按播放次数降序排列歌曲,使最常听的歌曲排在最前面。limit 100
- 限制结果仅返回前 100 首歌曲。stats Average duration of the songs=avg(duration)
- 计算所有歌曲的平均时长。
某个月是否对我特别重要?
要回答这个问题,我们可以使用 Lens,结合 runtime field 和 ES|QL。
首先,我们注意到数据中没有直接表示 month 的字段,而是需要从 @timestamp
字段计算出来。有多种方法可以实现这一点:
- 使用 runtime field,为 Lens 提供支持。
- 使用 ES|QL 进行计算。
我个人认为 ES|QL 是更简洁且更快速的解决方案。
FROM spotify-history
| eval month=DATE_EXTRACT("MONTH_OF_YEAR", @timestamp)
| stats count=count() by month
就是这样,不需要做任何特别的事情,我们可以利用 DATE_EXTRACT 函数从 @timestamp 字段中提取月份,然后对其进行聚合。使用 ES|QL 可视化,我们可以将其放到仪表板上。
如何查看每位艺术家的年度听歌时长?
这个分析的目的是观察某位艺术家是否只是短暂流行,还是长期受到关注。例如,Spotify 的年度 Wrapped 只展示前 5 位艺术家,但也许你的第 6 位艺术家一直保持不变,或者你的 第 10 位之后的艺术家变化很大?
用 Lens 创建百分比柱状图
- 拖拽
listened_to_ms
字段 —— 这个字段表示你听某首歌的时长(单位:毫秒)。 - 修改聚合方式 —— Lens 默认使用
median
(中位数),但我们需要改成 sum(总和)。 - 设置图表类型 —— 在顶部选择 百分比(percentage) 而不是 堆叠(stacked)。
- 按艺术家拆分数据 —— 选择
artist
字段,并设置为 Top 10(前 10 位艺术家)。 - 启用精确模式(accuracy mode) —— 在 高级(Advanced) 下拉菜单中,选择 accuracy mode。
- 调整时间维度(可选)—— 选择
@timestamp
作为时间字段,并将最小间隔 (minimum interval
) 设为 year,这样每个柱状条代表一年的数据。
如何解读图表?
- 每种颜色代表一个艺术家,占比显示该艺术家的听歌时长在总时长中的百分比。
- 例如,在我的数据里:
- Fred Again.. 是我听得最多的艺术家,占了 近 12% 的总听歌时长。
- 2024 年 Fred Again.. 的播放占比有所下降,而 Jamie XX 显著上升。
- Billie Eilish 在 2024 年依旧被频繁播放,而且柱状条变宽了,说明她的播放总时长比 2023 年增加了。
这样,我们就能清楚地看到某位艺术家的受欢迎程度是如何随时间变化的! 🎵
如何分析每位艺术家的热门歌曲播放时长占比?
这个问题比听上去更复杂!Spotify 可能会告诉你某位艺术家的最热单曲,或者你的前 5 首最常听的歌,但它不会告诉你:
- 你听这位艺术家的时间是否集中在一首歌上,还是分布在多首歌之间?
- 你最喜欢的艺术家是否有一首特别 “上头” 的歌,你不断循环播放?
使用 Lens 和 Treemap 进行可视化分析
- 创建一个新的 Lens 视图。
- 选择 Treemap(矩形树图) 作为图表类型。
- 设置度量值(Metric):
- 选择
sum
作为聚合方式。 - 选择
listened_to_ms
作为字段(表示歌曲的总播放时长)。
- 选择
- 设置分组(Group by):
- 第一层分组:选择
artist
(按艺术家分组)。 - 第二层分组:添加
title
(按歌曲分组)。
- 第一层分组:选择
如何解读这个图表?
- 如果一个艺术家的 Treemap 主要被一首歌占据 🟩,那么你的听歌时间可能集中在单曲循环。
- 如果一个艺术家的 Treemap 比较均匀 🟦🟨🟥,说明你喜欢他的多首歌曲,而不是单一曲目。
- 可以观察不同艺术家之间的占比,看看是否有某些艺术家特别突出。
例如,
- Fred Again.. 可能有一首歌占了他播放时长的 80%,说明这首歌你一直在循环。
- Billie Eilish 可能的播放时长较均匀分布在她的多张专辑中,说明你喜欢她的整体作品。
优化 Treemap:分析前 100 位艺术家的播放时长分布
为了让数据更加全面,我们可以调整 Treemap 设置,使其更具可读性和精确度。
调整设置:
-
限制艺术家数量:
- 在
artist
维度中,选择 Top 100(前 100 位艺术家)。 - 在 高级选项(Advanced dropdown) 中,取消选择 “other”(即不包含未进入前 100 的艺术家)。
- 启用 accuracy mode 以确保数据更精确。
- 在
-
限制单曲数量:
- 在
title
(歌曲)维度中,选择 Top 10(每位艺术家的前 10 首歌)。 - 启用 accuracy mode,保证排序准确。
- 在
如何解读 Treemap 结果?
通过 Treemap,即使不考虑时间因素,我们可以直观地看到:
- Fred Again.. 占了我所有 Spotify 听歌时间的 5.67%。
- 其中,1.21% 仅仅用于播放 Delilah (pull me out of this),说明这首歌占据了 Fred Again.. 总播放时间的较大比例。
- 这让我们可以分析,某位艺术家的播放时间是否被一首歌主导,还是多个歌曲均匀分布。
Treemap 直观地展示了数据分布,能够帮助我们发现长期重复听的歌曲或特定偏好。 🎶📊
我是否在特定的时间和星期听歌?
我们可以使用 Lens 结合 Heat Map(热力图) 轻松可视化分析听歌习惯。
创建 Heat Map
- 创建新的 Lens 视图,选择 Heat Map(热力图) 作为图表类型。
- 设置水平轴(Horizontal Axis):
- 选择
dayOfWeek
(星期几)。 - 设置为 Top 7(默认可能是 Top 3,修改为 7 以显示所有天)。
- 选择
- 设置垂直轴(Vertical Axis):
- 选择
hourOfDay
(小时)。
- 选择
- 设置单元格值(Cell Value):
- 选择
Count of records
(记录数量),即播放次数。
- 选择
如何解读 Heat Map?
- 颜色越深,表示你在该时间段的播放次数越多。
- 你可以发现:
- 是否有固定的听歌高峰?(如每天晚上 9 点,或周六下午)
- 你更喜欢早晨听歌,还是深夜循环播放?
- 工作日和周末的听歌模式是否不同?
这样,你可以清楚地了解自己的听歌习惯,甚至可以用来发现 Spotify 推荐算法是否与你的日常习惯匹配 🎧🔥
优化 Heat Map 可视化,提高可读性
在解释 Heat Map 结果时,有一些细节可能会让人困扰。让我们优化它,使其更清晰、更直观。
改进点 1:隐藏图例
- 默认情况下,Heat Map 会显示图例(Legend),但它可能并不那么重要。
- 解决方案:点击顶部的 图例符号(Triangle, Square, Circle),然后 禁用图例(disable legend)。
这样可以减少视觉干扰,让 Heat Map 更聚焦于数据本身! 🎧🔥
优化 Heat Map:排序问题和使用 Filters 排序星期几
排序问题确实会影响数据的易读性,尤其是星期几的排序。默认情况下,星期几的排序可能会乱序,变成 Monday, Wednesday, Thursday 或其他任何顺序,具体取决于数据的排列。让我们通过 Filters 来修正星期几的排序。
改进点 2:使用 Filters 排序星期几
- 点击 dayOfWeek 字段。
- 选择 Filters 而不是 Top Values。这样,星期几会按照标准的顺序排列(例如:Monday, Tuesday, Wednesday 等)。
使用 Filters 来排序能确保星期几按照正确的顺序显示,从而更方便地解读数据! 🎯
优化 Heat Map 排序:手动设置每个星期几的过滤器
- 在 Filters 选项中,开始输入每个星期几的名称。
- 为每个星期几设置过滤器,例如:
- "dayOfWeek": "Monday" 并为其设置标签为 "Monday"。
- 重复这个过程,设置每个星期几的过滤器,直到所有星期几都设置好。
这样,你就能确保每个星期几按照正确的顺序排列在热力图中,便于更准确地解读数据。
关于时区的注意事项
需要注意的是,Spotify 提供的数据是以 UTC+0 为标准的,并且没有时区信息。尽管他们提供了 IP 地址和你收听时的国家,理论上我们可以推测时区信息,但这可能会很麻烦,尤其是像美国这样有多个时区的国家。
为什么这很重要?
- Elasticsearch 和 Kibana 都有时区支持。
- 如果你为
@timestamp
字段提供了正确的时区信息,Kibana 会自动将时间调整为你浏览器的本地时间。
最终效果:
- 一旦完成这些设置,你的 Heat Map 应该看起来像这样:
- 从图表中,我们可以看出,我在工作日(尤其是工作时间)非常活跃,而在周六和周日的听歌时间较少。
通过这种方式,你可以更加准确地分析自己的听歌习惯,并且不受时区问题的干扰! 📊🎧
结论
在这篇博客中,我们深入探讨了 Spotify 数据的一些细节,展示了几种简单快捷的可视化方法,帮助你更好地了解和分析自己的听歌历史。能够如此深入地掌控自己的数据,确实令人惊叹!希望你们继续关注我们的后续博客文章,探索更多有趣的分析技巧!
想要获得 Elastic 认证?
了解下一期 Elasticsearch Engineer 培训 的时间安排!
Elastic 提供了许多新功能,帮助你构建适合自己需求的最佳搜索解决方案。通过我们的 样本笔记本,你可以深入了解更多,开始免费云试用,或在本地机器上尝试 Elastic。
原文:Spotify Wrapped part 2: Diving deeper into the data - Elasticsearch Labs
相关文章:
Kibana:Spotify Wrapped 第二部分:深入挖掘数据
作者:来自 Elastic Philipp Kahr 我们将比以往更深入地探究你的 Spotify 数据并探索你甚至不知道存在的联系。 在由 Iulia Feroli 撰写的本系列的第一部分中,我们讨论了如何获取 Spotify Wrapped 数据并在 Kibana 中对其进行可视化。在第 2 部分中&#…...
半导体晶圆精控:ethercat转profient网关数据提升制造精度
数据采集系统通过网关连接离子注入机,精细控制半导体晶圆制造过程中的关键参数。 在半导体制造中,晶圆制造设备的精密控制是决定产品性能的关键因素。某半导体工厂采用耐达讯Profinet转EtherCAT协议网关NY-PN-ECATM,将其数据采集系统与离子注…...
CMake小结2(PICO为例)
1 前言 之前写过一篇cmake,不过很简单:CMake小结_cmake ${sources}-CSDN博客 构建系统现在真的太多了,完全学不过来的感觉,meson,gardle,buildroot, Maven。。。我是真的有点放弃治疗了。之前…...
5. Go 方法(结构体的方法成员)
Go语言没有传统的 class ,为了让函数和结构体能够关联,Go引入了“方法”的概念。 当普通函数添加了接收者(receiver)后,就变成了方法。 一、函数和方法示例 // 普通函数 func Check(s string) string {return s }//…...
Linux查看和处理文件内容
1.文本文件 有字符集编码的文件 如:ASCII、UTF-8、Unicode、ANSI等 常见的文本文件 txt、xml、conf、properties、yml等配置文件、日志文 件、源代码 2.二进制文件 除文本文件外的文件 如:可执行程序、图片、音频、视频 3.cat 格式:…...
关于网络端口探测:TCP端口和UDP端口探测区别
网络端口探测是网络安全领域中的一项基础技术,它用于识别目标主机上开放的端口以及运行在这些端口上的服务。这项技术对于网络管理和安全评估至关重要。在网络端口探测中,最常用的两种协议是TCP(传输控制协议)和UDP(用…...
Spring IoC和DI
Spring IoC和DI 1 IOC1.1 什么是IoC?1.2 IoC 介绍1.2.1 传统程序开发1.2.2 问题分析1.2.3 IoC程序开发1.2.3 IoC 优势 1.3 DI 介绍 2. IoC & DI 使⽤IoC 详解Bean的存储1.1 Controller(控制器存储) 1.2 Service(服务存储&…...
centos9之ESXi环境下安装
一、centos9简介 CentOS Stream 9是一个基于RHEL(Red Hat Enterprise Linux)的开源操作系统。它是CentOS Stream系列的最新版本。CentOS Stream是一个中间发行版,位于RHEL和Fedora之间,旨在提供更及时的软件更新和新功能。CentOS …...
【论文学习】基于规模化Transformer模型的低比特率高质量语音编码
以下文章基于所提供的文档内容撰写,旨在对该论文“Scaling Transformers for Low-Bitrate High-Quality Speech Coding”进行较为系统和深入的分析与总结。 论文地址:https://arxiv.org/pdf/2411.19842 一、研究背景与动机 自20世纪70年代以来ÿ…...
Docker 2025/2/24
用来快速构建、运行和管理应用的工具。帮助部署。 快速入门 代码略 解释 docker run :创建并运行一个容器,-d是让容器在后台运行 --name mysql :给容器起个名字,必须唯一 -p 3306:3306 :设置端口映射 -e KEYVALUE :是设置环境变量 mysql :指定运行的…...
Rust语言基础知识详解【一】
1.在windows上安装Rust Windows 上安装 Rust 需要有 C 环境,以下为安装的两种方式: 1. x86_64-pc-windows-msvc(官方推荐) 先安装 Microsoft C Build Tools,勾选安装 C 环境即可。安装时可自行修改缓存路径与安装路…...
Kronecker分解(K-FAC):让自然梯度在深度学习中飞起来
Kronecker分解(K-FAC):让自然梯度在深度学习中飞起来 在深度学习的优化中,自然梯度下降(Natural Gradient Descent)是一个强大的工具,它利用Fisher信息矩阵(FIM)调整梯度…...
Ubutu部署WordPress
前言 什么是word press WordPress是一种使用PHP语言开发的建站系统,用户可以在支持PHP和MySQL数据库的服务器上架设WordPress。它是一个开源的内容管理系统(CMS),允许用户构建动态网站和博客。现在的WordPress已经强大到几乎可以…...
请解释 React 中的 Hooks,何时使用 Hooks 更合适?
一、Hooks 核心理解 1. 什么是 Hooks? Hooks 是 React 16.8 引入的函数式编程范式,允许在函数组件中使用状态管理和生命周期能力。就像给函数组件装上了"智能芯片",让原本只能做简单展示的组件具备了处理复杂逻辑的能力。 2. 类…...
在Linux桌面上创建Idea启动快捷方式
1、在桌面新建idea.desktop vim idea.desktop [Desktop Entry] EncodingUTF-8 NameIntelliJ IDEA CommentIntelliJ IDEA Exec/home/software/idea-2021/bin/idea.sh Icon/home/software/idea-2021/bin/idea.svg Terminalfalse TypeApplication CategoriesApplication;Developm…...
如何在netlify一键部署静态网站
1. 准备你的项目 确保你的静态网站文件(如 HTML、CSS、JavaScript、图片等)都在一个文件夹中。通常,项目结构如下: my-static-site/ ├── index.html ├── styles/ │ └── styles.css └── scripts/└── script.js…...
网页制作09-html,css,javascript初认识のhtml如何使用表单
表单主要用来收集客户端提供的相关信息。,使网页具有交互作用。在网页制作的过程中,常常需要使用表单,如进行会员注册,网上调查和搜索等 访问者可以使用如文本域列表框,复选框以及单选按钮之类的表单对象输入信息,然后…...
Linux 命令大全完整版(03)
1. 系统管理命令 screen 功能说明:多重视窗管理程序。语 法:screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]补充说明:screen 为多重视窗管理程序。此处…...
【新人系列】Python 入门专栏合集
✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…...
嵌入式软件数据结构(一)链表知识点专栏 附源码 附原理
嵌入式软件数据结构(一)链表知识点专栏 附源码 附原理 前言: 首先我们要知道什么是链表? 什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指…...
order by布尔盲注、时间盲注
pdo防御下,order by、limit不能参数绑定,可以进行sql注入 案例:靶场的less-46 布尔盲注: import requests from lxml import htmldef get_id_one(URL, paload):res requests.get(urlURL, paramspaload)tree html.fromstring(…...
数据结构与算法-图论-最短路-拓展运用
选择最佳路线 分析: 这是一道图论中的最短路径问题,目标是在给定的公交网络中,找到从琪琪家附近的车站出发,到她朋友家附近车站(编号为 s )的最短时间。以下是对该问题的详细分析: 问题关键信息…...
数据开发的简历及面试
简历 个人信息: 邮箱别写QQ邮箱, 写126邮箱/189邮箱等 学历>>本科及以上写,大专及以下不写 专业>>非计算机专业不写 政治面貌>>党员写, 群众不用写 掌握的技能: 精通 > 熟悉 > 了解 专业工具: 大数据相关的 公司: 如果没有可以写的>>金融服…...
android s下make otapackage编译失败
[DESCRIPTION] android s上,我司推荐使用split build的方式进行编译,但是部分客户依旧会采用AOSP full build的方式进行编译。而我司在这块release的时候,并未进行验证。因此执行make otapackage的时候,会出现如下报错。 [0312/…...
【算法通关村 Day12】字符串
字符串青铜挑战 字符串转换 转换为小写字母 给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。leetcode791 public class ToLowerCase {/*** 将字符串中的大写字母转换为小写字母。** param s 输入字符串* return 转换…...
grafana K6压测
文章目录 install and runscript.jsoptions最佳实践 report 解析 https://grafana.com/docs/k6/latest/get-started install and run install # mac brew install k6当前目录下生成压测脚本 # create file script.js k6 new [filename] # create file ‘script.js’ in …...
SQLite 安装教程以及可视化工具介绍
目录 简述 1. Windows 系统安装 1.1 下载预编译的二进制文件 1.2 解压文件 1.3 配置环境变量 1.4 验证安装 2. GUI 可视化工具 2.1 免费工具 2.1.1 DB Browser for SQLite 2.1.2 SQLiteStudio 2.1.3 SQLite Expert 2.1.4 SQLiteGUI 2.1.5 Antares SQL 2.1.6 DbGa…...
谷云科技iPaaS×DeepSeek:构建企业智能集成的核心底座
2025年,DeepSeek大模型的爆发式普及,正引领软件行业实现 “智能跃迁”。从代码生成到系统集成,从企业级应用到消费级产品,自然语言交互能力已成为新一代软件的核心竞争力。据行业分析,超60%的软件企业已启动大模型适配…...
mac 下 java 调用 gurobi 不能加载 jar
在 mac 电脑中的 java 始终不能加载 gurobi 的 jar 包,java 的开发软件 eclipse,idea 总是显示找不到 gurobi 的 jar 包,但是 jar 包明明就在那里。 摸索了三个小时,最后发现原因竟然是: jar 包太新,替换…...
京准电钟:NTP精密时钟服务器在自动化系统中的作用
京准电钟:NTP精密时钟服务器在自动化系统中的作用 京准电钟:NTP精密时钟服务器在自动化系统中的作用 NTP精密时钟服务器在自动化系统中的作用非常重要,特别是在需要高精度时间同步的场景中。NTP能够提供毫秒级的时间同步精度,这…...
京东-零售-数据研发面经【附答案】
近期,有参加春招的同学和我交流了他的面试历程,我针对这些内容进行了细致的总结与梳理,并在此分享出来,希望能助力大家学习与借鉴。 1.八股文 1)HashMap的底层原理是什么【见V6.0面试笔记 Java基础部分第19题】 2&am…...
面试之《react hooks在源码中是怎么实现的?》
要深入理解 React Hooks 在源码中的实现,可以从以下几个关键方面来剖析: 核心数据结构 在 React 内部,使用链表来管理每个函数组件的 Hooks。每个 Hook 对应一个节点,这些节点通过 next 指针相连。以下是简化后的 Hook 节点结构…...
泛型的约束有哪几种?(C#)
目录 1 值类型约束(where T : struct) 2 引用类型约束(where T : class) 3 无参构造函数约束(where T : new ()) 4 基类约束(where T : <基类名>) 5 接口约束(…...
Harmony开发笔记(未完成)
一、感想 作为一名拥有11年经验的Android开发者,我亲历了Android从高速发展到如今面临“僧多粥少”的过程。技术的世界瞬息万变,没有一种技术能够让人依赖一辈子。去年初,我自学了鸿蒙系统,并顺利通过了鸿蒙官方的初级和高级认。…...
DevSecOps普及:安全与开发运维的深度融合
一、引言 随着软件开发模式的演进,DevOps已成为现代软件工程的主流实践。然而,在传统的DevOps流程中,安全往往被视为开发和运维之外的额外环节,导致安全漏洞在产品交付后才被发现,增加了修复成本和风险。为了解决这一…...
JavaScript 系列之:Ajax、Promise、Axios
前言 同步:会阻塞。同步代码按照编写的顺序逐行依次执行,只有当前的任务完成后,才会执行下一个任务。 异步:异步代码不会阻塞后续代码的执行。当遇到异步操作时,JavaScript 会将该操作放入任务队列中,继续…...
為什麼使用不限量動態住宅IP採集數據?
在瞭解“不限量動態住宅IP數據採集”之前,我們需要先搞清楚什麼是“動態住宅IP”。簡單來說,動態IP是一種會定期變化的IP地址,通常由互聯網服務提供商(ISP)分配給家庭用戶。與固定IP(靜態IP)不同…...
vue3-06vue2(Object.defineProperty)与vue3(基于ES6的Proxy)的响应式原理对比
1.vue2响应原理 1.1对于对象与数组 对象类型: 通过 object.defineProperty() 对属性的读取、修改进行拦截 (数据劫持) 数组类型:通过重写更新数组的一系列方法来实现拦截。 (对数组的变更方法进行了包裹) Vue2的响应式是基于Object.defineProperty实现的 1.2 基本原理Objec…...
MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 4
第04章_逻辑架构 1. 逻辑架构剖析 首先MySQL是典型的C/S架构,即Client/Server架构,服务器端程序使用的mysqld。 不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本&…...
清华大学DeepSeek文档下载,清华大学deepseek下载(完成版下载)
文章目录 前言一、清华大学DeepSeek使用手册下载二、清华大学DeepSeek使用手册思维导图 前言 这是一篇关于清华大学deepseek使用手册pdf的介绍性文章,主要介绍了DeepSeek的定义、功能、使用方法以及如何通过提示语设计优化AI性能。以下是对这些核心内容的简要概述&…...
HDFS数据多目录、异构存储、回收站
1.NameNode元数据多目录 HDFS集群中可以在hdfs-site.xml中配置“dfs.namenode.name.dir”属性来指定NameNode存储数据的目录,默认NameNode数据存储在${hadoop.tmp.dir}/dfs/name目录,“hadoop.tmp.dir”配置项在core-site.xml中。 我们也可以将NameNod…...
windows设置暂停更新时长
windows设置暂停更新时长 win11与win10修改注册表操作一致 ,系统界面不同 1.打开注册表 2.在以下路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键新建 DWORD 32位值,名称为FlightSettingsMaxPauseDays 根据需求填写数…...
04 路由表的IP分组传输过程
目录 1、路由表的核心结构 2、IP分组传输过程和数据包转发过程 2.1、IP分组传输过程 2.2、数据包转发过程 2.3、IP分组传输过程和数据包转发的区别 3、数据包的变化 3.1、拓扑结构 3.2、传输过程详解(主机A → 主机B) 3.2.1、主机A发送数据 3.2…...
实现Python+Django+Transformers库中的BertTokenizer和BertModel来进行BERT预训练,并将其应用于商品推荐功能
一、环境安装准备 #git拉取 bert-base-chinese 文件#创建 虚拟运行环境python -m venv myicrplatenv#刷新source myicrplatenv/bin/activate#python Django 集成nacospip install nacos-sdk-python#安装 Djangopip3 install Django5.1#安装 pymysql settings.py 里面需要 # 强制…...
数据结构---定长顺序表
1.线性表的定义 存在唯一的一个被称为“第一个”的数据元素;存在唯一的一个被称为“最后一个”的数据元素;除第一个之外,集合中的每一个数据元素都只有一个前驱;除最后一个之外,集合中的每一个数据元素都只有一个后继…...
Elasticsearch 相关面试题
1. Elasticsearch基础 Elasticsearch是什么? Elasticsearch是一个分布式搜索引擎,基于Lucene实现。 Mapping是什么?ES中有哪些数据类型? Mapping:定义字段的类型和属性。 数据类型:text、keyword、integer、…...
冒泡排序(Bubble Sort)详细教程:Java实现与优化
一、什么是冒泡排序? 冒泡排序(Bubble Sort)是一种简单的排序算法,它的基本思想是通过两两比较相邻元素,将较大的元素“冒泡”到数列的末尾。每一轮遍历会将一个较大的元素放到正确的位置,直到整个数组有序…...
【git】【reset全解】Git 回到上次提交并处理提交内容的不同方式
Git 回到上次提交并处理提交内容的不同方式 在 Git 中,若要回到上次提交并对提交内容进行不同处理,可使用 git reset 命令搭配不同选项来实现。以下为你详细介绍操作步骤及各选项的作用。 1. 查看提交历史 在操作之前,可通过以下命令查看提…...
矩阵的 正定(Positive Definite)与负定(Negative Definite):从Fisher信息矩阵看“曲率”的秘密
矩阵的正定与负定:从Fisher信息矩阵看“曲率”的秘密 在数学和统计学中,矩阵的“正定性”和“负定性”是一对重要概念,尤其在优化、统计推断和机器学习中频繁出现。比如,Fisher信息矩阵(Fisher Information Matrix, F…...
Uniapp 小程序:语音播放与暂停功能的实现及优化方案
界面部分 //开启语音 <button class"open" v-if"showPlayfalse" click"playText">这是开启播放的图片</button >//关闭语音 <button class"close" v-if"showPlaytrue" click"stopText">这是…...