Python 和 Pyecharts 对Taptap相关数据可视化分析
结果展示:
数据来源:
Python爬取TapTap 热门游戏信息并存储到数据库(详细版)
目录
结果展示:
数据来源:
Python爬取TapTap 热门游戏信息并存储到数据库(详细版
一、引言
二、准备工作
三、代码详解
1、游戏评分分布可视化(visualize_game_scores函数)
四、总结
一、引言
在游戏领域,数据可视化能够帮助我们更直观地了解游戏的各种情况,比如游戏评分分布、游戏标签分布、不同开发商的游戏数量以及各评分区间内不同标签的游戏数量等。本文将介绍如何通过 Python 结合 Pyecharts 库对从数据库中获取的游戏相关数据进行可视化处理,让数据 “说话”,呈现出有价值的信息。
二、准备工作
在开始之前,我们需要确保已经安装了以下必要的库:
pip install pymysql
pip install pyecharts
pyecharts
:用于创建各种精美的图表,如柱状图、饼图等,方便进行数据可视化。pymysql
:用于连接 MySQL 数据库,以便从数据库中获取我们所需的游戏相关数据。
三、代码详解
1、游戏评分分布可视化(visualize_game_scores函数)
首先,通过pymysql连接到本地的 MySQL 数据库(地址为127.0.0.1,端口3306,用户名为root,密码为921108,数据库名为fjj)。
db = pymysql.Connect(host='127.0.0.1',port=3306,user='root',password='921108',db='fjj'
)
cursor = db.cursor()
- 接着,从名为
Taptap
的表中查询游戏评分数据,并将获取到的数据进行处理,转换为合适的格式(将评分数据从元组形式转换为浮点数列表)。
sql = "SELECT score FROM Taptap"
cursor.execute(sql)
scores = cursor.fetchall()
score_list = [float(score[0]) for score in scores]
- 然后,统计不同评分区间(如
0-2
、2-4
、4-6
、6-8
、8-10
)的游戏数量,并存入字典score_count
中。
score_count = {}
for score in score_list:if score < 2:score_count.setdefault('0-2', 0)score_count['0-2'] += 1elif score < 4:score_count.setdefault('2-4', 0)score_count['2-4'] += 1elif score < 6:score_count.setdefault('4-6', 0)score_count['4-6'] += 1elif score < 8:score_count.setdefault('6-8', 0)score_count['6-8'] += 1elif score <= 10:score_count.setdefault('8-10', 0)score_count['8-10'] += 1
- 之后,使用
Pyecharts
创建一个柱状图,设置其宽度、高度等初始化参数,并添加x
轴(评分区间)和y
轴(各评分区间对应的游戏数量)数据,同时设置了全局选项(如标题、坐标轴名称及样式、提示框样式等)和系列选项(在柱状图上显示数据标签)。
bar = Bar(init_opts=opts.InitOpts(width='800px', height='500px'))
bar.add_xaxis(list(score_count.keys()))
bar.add_yaxis("游戏数量", list(score_count.values()),itemstyle_opts=opts.ItemStyleOpts(color='#009688'))
bar.set_global_opts(title_opts=opts.TitleOpts(title="游戏评分分布", title_textstyle_opts=opts.TextStyleOpts(font_size=20)),xaxis_opts=opts.AxisOpts(name="评分区间", axislabel_opts=opts.LabelOpts(font_size=14)),yaxis_opts=opts.AxisOpts(name="游戏数量", axislabel_opts=opts.LabelOpts(font_size=14)),tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br>{b} : {c}")
)
bar.set_series_opts(label_opts=opts.LabelOpts(position='top', font_size=12)
)
- 最后,将生成的柱状图渲染为
game_scores.html
文件,可在浏览器中查看可视化结果。
bar.render("game_scores.html")
2、游戏标签分布可视化(visualize_game_tags函数)
同样先连接数据库,查询游戏标签数据。
db = pymysql.Connect(host='127.0.0.1',port=3306,user='root',password='921108',db='fjj'
)
cursor = db.cursor()
sql = "SELECT tags FROM Taptap"
cursor.execute(sql)
tags_data = cursor.fetchall()
- 处理数据时,将所有标签提取出来并统计每个标签出现的次数。先将获取到的标签字符串按特定分隔符(这里是 “、”)分割成列表,再将所有标签合并到一个列表中,最后统计每个标签的出现次数并存入字典
tag_count
。
all_tags = []
for tags in tags_data:tag_list = tags[0].split("、")all_tags.extend(tag_list)tag_count = {}
for tag in all_tags:tag_count[tag] = tag_count.get(tag, 0) + 1
- 创建饼图,设置其初始化参数、添加数据(标签及对应的出现次数),并设置全局选项(如标题样式、图例选项、提示框样式等)和系列选项(这里隐藏了游戏标签,将
show
属性设置为False
)。
pie = Pie(init_opts=opts.InitOpts(width='800px', height='500px'))
pie.add("", [(tag, count) for tag, count in tag_count.items()],radius=["30%", "60%"],center=["50%", "50%"],itemstyle_opts=opts.ItemStyleOpts(color=lambda x: '#%02x%02x%02x' % (int(255 * x['value'] / sum(tag_count.values())),int(255 * (1 - x['value'] / sum(tag_count.values()))),int(255 * 0.5))))
pie.set_global_opts(title_opts=opts.TitleOpts(title="游戏标签分布", title_textstyle_opts=opts.TextStyleOpts(font_size=25,color='pink'), pos_left="50%"),legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%", is_show=False),tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br>{b} : {c}")
)
pie.set_series_opts(label_opts=opts.LabelOpts()
)
- 将生成的饼图渲染为
game_tags.html
文件,以便在浏览器中查看。
pie.render("game_tags.html")
3、各评分区间内不同标签的游戏数量可视化(visualize_tags函数)
连接数据库并查询游戏评分和标签数据。
db = pymysql.Connect(host='127.0.0.1',port=3306,user='root',password='921108',db='fjj'
)
cursor = db.cursor()
sql = "SELECT label, COUNT(*) AS game_count FROM Taptap GROUP BY label"
cursor.execute(sql)
developers_data = cursor.fetchall()
- 提取开发商名称和对应的游戏数量分别存入列表
developers
和game_counts
。
developers = [data[0] for data in developers_data]
game_counts = [data[1] for data in developers_data]
- 创建柱状图,添加
x
轴(开发商名称)和y
轴(游戏数量)数据,并设置全局选项和系列选项(在柱状图上显示数据标签)。
bar = Bar(init_opts=opts.InitOpts(width='800px', height='500px'))
bar.add_xaxis(developers)
bar.add_yaxis("游戏数量", game_counts,itemstyle_opts=opts.ItemStyleOpts(color='#FF5722'))
bar.set_global_opts(title_opts=opts.TitleOpts(title="不同开发商的游戏数量", title_textstyle_opts=opts.TextStyleOpts(font_size=20)),xaxis_opts=opts.AxisOpts(name="开发商", axislabel_opts=opts.LabelOpts(font_size=14)),yaxis_opts=opts.AxisOpts(name="游戏数量", axislabel_opts=opts.LabelOpts(font_size=14)),tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br>{b} : {c}")
)
bar.set_series_opts(label_opts=opts.LabelOpts(position='top', font_size=12)
)
- 最后将柱状图渲染为
developers_games_count.html
文件供查看。
bar.render("developers_games_count.html")
4、各评分区间内不同标签的游戏数量可视化(visualize_tags_函数)
连接数据库并查询游戏评分和标签数据。
db = pymysql.Connect(host='127.0.0.1',port=3306,user='root',password='921108',db='fjj'
)
cursor = db.cursor()
sql = "SELECT score, tags FROM Taptap"
cursor.execute(sql)
data = cursor.fetchall()
- 定义评分区间字典,并将查询到的数据根据评分分类到不同的评分区间中,每个评分区间对应一个标签列表。
score_ranges = {'0-2': [], '2-4': [], '4-6': [], '6-8': [], '8-10': []}
for row in data:score = float(row[0])tags = row[1].split("、")if score < 2:score_ranges['0-2'].extend(tags)elif score < 4:score_ranges['2-4'].extend(tags)elif score < 6:score_ranges['4-6'].extend(tags)elif score < 8:score_ranges['6-8'].extend(tags)elif score <= 10:score_ranges['8-10'].extend(tags)
- 统计各评分区间内不同标签的产品数量,将结果存入字典
tag_count_in_ranges
。
tag_count_in_ranges = {}
for range_name, tags in score_ranges.items():tag_count = {}for tag in tags:tag_count[tag] = tag_count.get(tag, 0) + 1tag_count_in_ranges[range_name] = tag_count
- 创建堆叠柱状图,依次添加各评分区间的数据到
x
轴和y
轴,并设置全局选项和系列选项(在堆叠柱状图上显示数据标签)。
bar = Bar(init_opts=opts.InitOpts(width='800px', height='500px'))
for range_name, tag_count in tag_count_in_ranges.items():bar.add_xaxis(list(tag_count.keys()))bar.add_yaxis(range_name, list(tag_count.values()),itemstyle_opts=opts.ItemStyleOpts(color='#03A9F4'))
bar.set_global_opts(title_opts=opts.TitleOpts(title="各评分区间内不同标签的游戏数量", title_textstyle_opts=opts.TextStyleOpts(font_size=20)),xaxis_opts=opts.AxisOpts(name="游戏标签", axislabel_opts=opts.LabelOpts(font_size=14)),yaxis_opts=opts.AxisOpts(name="游戏数量", axislabel_opts=opts.LabelOpts(font_size=14)),tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br>{b} : {c}")
)
bar.set_series_opts(label_opts=opts.LabelOpts(position='top', font_size=12)
)
- 将生成的堆叠柱状图渲染为
tags_in_score_ranges.html
文件以便查看。
bar.render("tags_in_score_ranges.html")
四、总结
通过以上四个函数,我们分别实现了对游戏评分分布、游戏标签分布、不同开发商的游戏数量以及各评分区间内不同标签的游戏数量的可视化。这些可视化结果能够帮助我们更清晰地了解游戏相关数据的特点和分布情况,为游戏的开发、推广、运营等方面提供有价值的参考。在实际应用中,我们可以根据具体需求进一步对这些可视化图表进行分析和解读,从而做出更明智的决策。
希望这篇文章能够帮助大家更好地理解如何使用 Python 和 Pyecharts 进行游戏相关数据的可视化处理。如果有任何疑问,欢迎在评论区留言交流。
相关文章:
Python 和 Pyecharts 对Taptap相关数据可视化分析
结果展示: 数据来源: Python爬取TapTap 热门游戏信息并存储到数据库(详细版) 目录 结果展示: 数据来源: Python爬取TapTap 热门游戏信息并存储到数据库(详细版 一、引言 二、准备工作 三、…...
系统学习算法: 专题二 滑动窗口
题目一: 算法原理: 依然第一反应是暴力枚举,将所有的子数组都枚举出来,找到满足条件的长度最小的子数组,但是需要两层循环,时间复杂度来到O(N^2) 接下来就该思考如何进行优化 如果…...
Docker的save和export命令的区别,load和import的区别 笔记241124
Docker的save和export命令的区别,load和import的区别 解说1: Docker的save和export命令,以及load和import命令,在功能和使用场景上存在显著的区别。以下是对这两组命令的详细对比和解释: Docker save和export命令的区别 使用方式和目的&am…...
cad中为什么不使用C0C1C2连续,而使用G0G1G2连续
在CAD中,之所以使用G0、G1、G2连续而不是C0、C1、C2连续,主要是因为G连续性更侧重于几何空间的连续性,与视觉感知和制造过程更为相关。 • G0连续:保证曲线或曲面在连接点处没有断开,即位置连续。这在CAD中非常重要&a…...
Linux:makefile的使用
makefile小结: makefile的应用: 一个简单的 Makefile 文件包含一系列的“规则”,其样式如下: 目标(target)…: 依赖(prerequiries)… 命令(command) 目标(target)通常是要生成的文件的名称,可以是可执行文件或OBJ文件…...
局域网的网络安全
网络安全 局域网基本上都采用以广播为技术基础的以太网,任何两个节点之间的通信数据包,不仅为这两个节点的网卡所接收,也同时为处在同一以太网上的任何一个节点的网卡所截取。因此,黑客只要接入以太网上的任一节点进行侦听&#…...
【Leetcode 每日一题 - 补卡】3235. 判断矩形的两个角落是否可达
问题背景 给你两个正整数 x C o r n e r xCorner xCorner 和 y C o r n e r yCorner yCorner 和一个二维整数数组 c i r c l e s circles circles,其中 c i r c l e s [ i ] [ x i , y i , r i ] circles[i] [x_i, y_i, r_i] circles[i][xi,yi,ri] 表示…...
Android Studio安装TalkX AI编程助手
文章目录 TalkX简介编程场景 TalkX安装TalkX编程使用ai编程助手相关文章 TalkX简介 TalkX是一款将OpenAI的GPT 3.5/4模型集成到IDE的AI编程插件。它免费提供特定场景的AI编程指导,帮助开发人员提高工作效率约38%,甚至在解决编程问题的效率上提升超过2倍…...
C++类型转换
C类型转换 1.C语言中的类型转换2.C强制类型转换2.1.static_cast2.2.reinterpret_cast2.3.const_cast2.4.dynamic_cast 3.RTTI 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀🚀系列专栏:【…...
241127学习日志——[CSDIY] [InternStudio] 大模型训练营 [20]
CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…...
关于函数式接口和编程的解析和案例实战
文章目录 匿名内部类“匿名”在哪里 函数式编程lambda表达式的条件Supplier使用示例 ConsumeracceptandThen使用场景 FunctionalBiFunctionalTriFunctional 匿名内部类 匿名内部类的学习和使用是实现lambda表达式和函数式编程的基础。是想一下,我们在使用接口中的方…...
基于米尔全志T527开发板的FacenetPytorch人脸识别方案
本篇测评由优秀测评者“小火苗”提供。 本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志 T527开发板)的FacenetPytorch人脸识别方案测试。 一、facenet_pytorch算法实现人脸识别 深度神经网络 1.简介 Facenet-PyTorch 是一个基于 PyTorch 框架实…...
Java基础面试题11:简述System.gc()和Runtime.gc()的作用?
System.gc() 和 Runtime.gc() 是 Java 中用于提示 JVM(Java 虚拟机)进行垃圾回收的两个方法。它们的作用类似,但也有一些细微的区别。下面我们来详细说明。 System.gc() 和 Runtime.gc() 的区别 简单来说,System.gc() 等同于 Run…...
物料理解笔记·蓝白段子线·端子线座子焊接反了怎么处理!!!
目录 蓝白端子排线 端子线座子焊接错了怎么办 端子线如何拆线 编写不易,请勿搬运,仅供学习,感谢理解 蓝白端子排线 蓝白端子排线,这种端子线常用与编码电机的接线,或者在板子上通过提供段子线的接口,通…...
string接口模拟实现2
文章目录 浅拷贝insert插入一个字符insert插入一个字符串删除erasefind(查找一个字符)\\\\\\\find(查找一个字符串:子串substr)查找的练习(网址)赋值operator比较大小 浅拷贝 //浅拷贝string::string(const string& str){//开一样大的空间࿰…...
第 42 章 - Go语言 设计模式
在Go语言中,设计模式是一种被广泛接受的解决常见问题的最佳实践。这些模式可以分为三类:创建型模式、结构型模式和行为型模式。下面我将结合案例以及源代码对这三种类型的设计模式进行详细讲解。 创建型模式 创建型模式主要关注对象的创建过程…...
使用redis-plus-plus库连接redis
使用redis-plus-plus库连接redis 一、安装redis-plus-plus1.1安装hiredis1.2编译安装redis-plus-plus 二、redis的连接使用2.1创建redis对象2.2向redis中添加元素2.3判断元素是否存在2.4获取元素2.5设置获取过期时间2.6获取类型2.7 删除当前数据库 一、安装redis-plus-plus C …...
qt QGraphicsRotation详解
1、概述 QGraphicsRotation 是 Qt 框架中 QGraphicsTransform 的一个子类,它专门用于处理图形项的旋转变换。通过 QGraphicsRotation,你可以对 QGraphicsItem(如形状、图片等)进行旋转操作,从而创建动态和吸引人的视觉…...
嵌入式Qt使用ffmpeg视频开发记录
在此记录一下Qt下视频应用开发的自学历程,可供初学者参考和避雷。 了解常用音频格式yuv420p、h264等了解QML,了解QVideoOutput类的使用,实现播放yuv420p流参考ffmpeg官方例程,调用解码器实现h264解码播放 不需要手动分帧。ffmpeg…...
《String类》
目录 一、定义与概述 二、创建字符串对象 2.1 直接赋值 2.2 使用构造函数 三、字符串的不可变性 四、常用方法 4.1 String对象的比较 4.1.1 比较是否引用同一个对象 4.1.2 boolean equals(Object anObject)方法:按照字典序比较 4.1.3 int compareTo(Strin…...
Java—Properties类
Properties类是Java中用于处理属性文件(.properties文件)的类。属性文件是一种简单的文本文件,用于存储键值对数据,常用于保存配置信息。 Properties类继承自Hashtable类,它的键和值都是字符串类型。它提供了一些方法…...
wireshark抓包TR069协议
Wireshark是一个网络协议分析器,它允许用户捕获和详细查看网络流量。TR069协议是CPE(Customer Premises Equipment,用户驻地设备)和ACS(Auto-Configuration Server,自动配置服务器)之间沟通的通…...
【连接池】.NET开源 ORM 框架 SqlSugar 系列
.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...
FileReader和 FileWriter
FileReader和FileWriter是用于操作文件的类,它们分别用于读取和写入数据。下面是它们的一些基本用法: FileReader: 创建一个FileReader对象,指定要读取的文件路径。使用read()方法读取文件的内容,返回一个整数字符表…...
html 中的 <code>标签
定义和用途 <code> 标签是HTML中的一个内联元素,用于定义计算机代码片段。当你需要在网页内容中展示代码,比如编程语言代码(如JavaScript、Python、Java等)、命令行指令、标记语言代码(如HTML、XML等)…...
使用Apache HttpClient发起一个POST HTTP请求
Apache HttpClient 是一个强大的Java库,用于处理HTTP请求。 它支持多种HTTP方法,包括GET、POST、PUT、DELETE等。 本教程将重点介绍如何使用Apache HttpClient发送POST HTTP请求。 POST请求通常用于向服务器发送数据以创建或更新资源。 我们将演示如…...
Android复习代码1-4章
public class RudioButton extends AppCompatActivity {Overrideprotected void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_rudio_button);// 找到RadioGroup和TextView的实例RadioGroup radioGrou…...
CSS新特性(11)
一.计算盒子宽度calc函数,可以用加减乘除来计算 -*/ 让父盒子永远比子盒子小30像素 二.CSS3过渡transition搭配hover一起使用 该盒子宽度可以从200px到400px,谁做变化给谁加 不仅要写宽还要写高利用逗号,多个属性一起写都用逗号 既想要宽度变又想要高度…...
架构-微服务-服务网关
文章目录 前言一、网关介绍1. 什么是API网关2. 核心功能特性3. 解决方案 二、Gateway简介三、Gateway快速入门1. 基础版2. 增强版3. 简写版 四、Gateway核心架构1. 基本概念2. 执行流程 五、Gateway断言1. 内置路由断言工厂2. 自定义路由断言工厂 六、过滤器1. 基本概念2. 局部…...
Leetcode(区间合并习题思路总结,持续更新。。。)
讲解题目:合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间, 并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入&a…...
11.21c++中的函数
练习: 编写mystring类:拥有以下功能: 1.带参、无参构造函数,拷贝构造函数,析构函数 2.编写 append(const mystring r) 为当前字符串尾部,拼接新的字符串r 3.编写 isEqual(const mystring r) 判断当前字符串…...
Rook入门:打造云原生Ceph存储的全面学习路径(下)
文章目录 六.Rook部署云原生CephFS文件系统6.1 部署cephfs storageclass6.2 创建容器所需cephfs文件系统6.3创建容器pod使用rook-cephfs提供pvc6.4 查看pod是否使用rook-cephfs 七.Ceph Dashboard界面7.1 启用dashboard开关7.2 ceph-dashboard配置外部访问7.3 Dashboard web ad…...
UI控件使用说明
文章目录 一、控件的公共属性二、常用控件的私有属性三、控件的显示与隐藏 一、控件的公共属性 struct element {u32 highlight: 1; //高亮标志u32 state: 3; //内核记录控件的状态u32 ref: 5; //内核计数值u32 prj: 3; //工程序号u32 hide_action: 1; //HIDE_WI…...
Java面向对象.抽象
目录 1.object类 一、Object类的地位 所有类的父类 2.抽象类 一、定义与声明 抽象类的概念 二、抽象方法 抽象方法的特点 三、继承抽象类 子类的责任 3.抽象方法基础理念 1.抽象方法的特征 2.将abstaract加在方法的前面,该类无法被继承 1.首先࿰…...
uniapp在小程序连接webScoket实现余额支付
webScoket文档:uni.connectSocket(OBJECT) | uni-app官网 /plugins/event.js const Dep function() {this.Evens Object.create(null); } class Event {constructor({dep new Dep()} {}) {if (dep.constructor Object && Object.keys(dep).length 0…...
【C语言】连接陷阱探秘(4):检查外部类型
目录 一、外部类型概述 1.1. 外部类型的重要性 1.2. 外部类型在C语言中的使用 1.3. 注意事项 二、常见的外部类型陷阱 2.1. 结构体和联合体的大小不匹配 2.1.1. 示例代码 2.1.2. 正确的做法 2.2. 枚举类型的值不匹配 2.3. 函数签名不一致 2.3.1. 函数签名不一致的问…...
Hexo博客在多个设备同步
title: ‘Hexo博客在多个设备同步’ date: 2024-11-28 19:08:08 categories: Hexo教程 cover: /img/cover4.jpg description: ‘实现Hexo博客在不同的设备上都可以使用和上传’ 博客链接1 :Hexo搭建博客的多终端同步问题 博客链接2:Hexo博客多台电脑设备同步管理 …...
Pytorch使用手册-使用 TensorBoard 可视化模型、数据和训练过程(专题十)
在 60 分钟速成课程中,我们展示了如何加载数据,将其传递通过我们定义的作为 nn.Module 子类的模型,训练该模型并在测试数据上进行测试。为了查看发生了什么,我们在模型训练过程中打印一些统计信息,以便了解训练是否进展顺利。然而,我们可以做得更好:PyTorch 与 TensorBo…...
Linux网络——NAT/代理服务器
一.NAT技术 1.NAT IP转换 之前我们讨论了, IPv4 协议中, IP 地址数量不充足的问题,NAT 技术就是当前解决 IP 地址不够用的主要手段, 是路由器的一个重要功能。 NAT 能够将私有 IP 对外通信时转为全局 IP. 也就是一种将私有 IP 和全局IP 相互转化的技术方法: 很…...
使用ffmpeg命令实现视频文件间隔提取帧图片
将视频按每隔五秒从视频中提取一张图片 使用 ffmpeg 工具,通过设置 -vf(视频过滤器)和 -vsync 选项 命令格式 ffmpeg -i input_video.mp4 -vf "fps1/5" output_%03d.png 解释: -i input_video.mp4:指定输…...
Elasticsearch实战:从搜索到数据分析的全面应用指南
Elasticsearch(简称 ES)是一个强大的分布式搜索引擎和分析工具,它能够快速处理海量数据,并提供全文检索、结构化搜索、数据分析等功能。在现代系统中,它不仅是搜索的核心组件,也是数据分析的有力工具。 本文…...
【CSS in Depth 2 精译_064】10.3 CSS 中的容器查询相对单位 + 10.4 CSS 容器样式查询 + 10.5 本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容) 【第十章 CSS 容器查询】 ✔️ 10.1 容器查询的一个简单示例 10.1.1 容器尺寸查询的用法 10.2 深入理解容器 10.2.1 容器的类型10.2.2 容器的名称10.2.3 容器与模块化 CSS 10.3 与容器相关的单位 ✔…...
滑动窗口讲解(c基础)
滑动窗口的基本概念 滑动窗口是一种高效处理线性数据结构(如数组、字符串)的算法技巧。它就像是一个可移动的 “框”,框住数据结构中的一部分元素,通过不断地移动这个 “框”(即滑动窗口),对框内…...
Flink的双流join理解
如何保证Flink双流Join准确性和及时性、除了窗口join还存在哪些实现方式、究竟如何回答才能完全打动面试官呢。。你将在文中找到答案。 1 引子 1.1 数据库SQL中的JOIN 我们先来看看数据库SQL中的JOIN操作。如下所示的订单查询SQL,通过将订单表的id和订单详情表ord…...
springboot341+vue校园求职招聘系统设计和实现pf(论文+源码)_kaic
毕 业 设 计(论 文) 校园求职招聘系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,…...
dmdba用户资源限制ulimit -a 部分配置未生效
dmdba用户资源限制ulimit -a 部分配置未生效 1 环境介绍2 数据库实例日志报错2.1 mpp01 实例日志报错2.2 mpp02 实例日志报错 3 mpp02 服务器资源限制情况4 关闭SELinux 问题解决4.1 临时关闭 SELinux4.2 永久关闭 SELinux 5 达梦数据库学习使用列表 1 环境介绍 Cpu x86 Os Ce…...
kafka-clients之CommonClientConfigs
CommonClientConfigs是kafka-clients库中一个包含Kafka通用配置项的类,它定义了Kafka Producer、Consumer、Admin等客户端共享的配置。以下是其中的主要配置项及其含义: 1. bootstrap.servers 类型:List<String>说明:Kafk…...
支持多种快充协议的取电芯片,支持最大功率140W
前言 在快节奏的现代生活中,人们对于小家电的依赖日益加深,而随之而来的充电问题也日益凸显。传统的充电方式往往受限于电压、电流的限制,难以满足不同设备对电力的多样化需求。而PD快充协议的诞生,则为这一难题提供了全新的解决…...
《Vue零基础入门教程》第十四课:列表渲染
往期内容 《Vue零基础入门教程》第六课:基本选项 《Vue零基础入门教程》第八课:模板语法 《Vue零基础入门教程》第九课:插值语法细节 《Vue零基础入门教程》第十课:属性绑定指令 《Vue零基础入门教程》第十一课:事…...
Linux系统 进程
Linux系统 进程 进程私有地址空间用户模式和内核模式上下文切换 进程控制进程控制函数获取进程 ID创建和终止进程回收子进程让进程休眠加载并运行程序 系统调用错误处理利用fork和execve运行程序 进程 异常是允许操作系统内核提供进程(process)概念的基…...