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

Cloud Studio实战——热门视频Top100爬虫应用开发

最近Cloud Studio非常火,我也去试了一下,感觉真的非常方便!我就以Python爬取B站各区排名前一百的视频,并作可视化来给大家分享一下Cloud Studio!应用链接:Cloud Studio实战——B站热门视频Top100爬虫应用开发

文章目录

  • 一、腾讯云Cloud介绍
  • 二、 B站爬虫
    • 2.1爬虫代码
    • 2.2爬虫结果
  • 三、数据可视化部分
    • 3.1主站分析饼状图
      • 3.1.1主站分析饼状图代码
      • 3.1.2主站分析饼状图结果
    • 3.2各站对比垂直图
      • 3.2.1各站对比垂直图代码
      • 3.2.2各站对比垂直图结果
    • 3.3词云分析
      • 3.3.1词云分析代码
  • 四、代码讲解
    • 4.1爬虫
    • 4.2主站分析饼状图
    • 4.3各站对比垂直图
    • 4.4词云分析
  • 五、Cloud Studio总结

一、腾讯云Cloud介绍

在这里插入图片描述
点开一个工作台,选择一个环节,即可在里面编辑代码,不用再担心本地环境不兼容的问题。腾讯云Cloud Studio是一种基于云的开发环境,可以帮助开发人员更高效地进行软件开发和协作。它提供了一个集成开发环境(IDE),可以在任何地方通过互联网访问,无需在本地安装任何软件。

腾讯云Cloud Studio的优势我总结为:

  1. 灵活性:Cloud Studio可以在任何设备上使用,只需一个支持Web浏览器的设备即可。这使开发人员可以随时随地访问他们的开发环境,无论是在办公室、家中还是旅途中。

  2. 资源可扩展性:Cloud Studio在云端运行,可以根据需要动态调整计算和存储资源。这意味着开发人员可以根据项目需求灵活地扩展或缩减资源,而无需关注硬件设备的限制。

  3. 协作能力:Cloud Studio支持多人协作开发,多个开发人员可以在同一个开发环境中同时工作。这样可以提高团队的协作效率,减少代码冲突和合并的问题。

  4. 安全性:腾讯云提供了严格的安全措施来保护用户的数据和开发环境。Cloud Studio使用安全的传输协议,并提供数据加密和访问控制等功能,确保用户的代码和数据得到保护。

  5. 生态系统整合:Cloud Studio与腾讯云的其他服务紧密集成,如云服务器、对象存储、数据库等。这使得开发人员可以方便地使用这些服务来构建和部署应用程序。

在我看来,腾讯云Cloud Studio提供了一个灵活、可扩展、安全和协作的开发环境,使开发人员能够更加高效地进行软件开发和协作。

二、 B站爬虫

在这里插入图片描述
B站,全称哔哩哔哩动画,是中国知名的在线视频分享平台,也是全球最大的二次元文化社区之一。B站以动画、漫画、游戏(ACG)为主题,为用户提供高质量的原创动画、弹幕评论、直播互动和社区交流等服务。作为一个年轻人喜爱的文化社区,B站汇集了大量的ACG内容创作者和粉丝,形成了独特的二次元文化氛围。通过B站,用户可以畅享各种精彩的动画作品、参与互动的直播活动,并与志同道合的人分享兴趣爱好、交流心得。

2.1爬虫代码

import requests
import pandas as pd
url_dict = {'全站': 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all','动画': 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=1&type=all','生活': 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=160&type=all','动物圈': 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=217&type=all','娱乐': 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=5&type=all','影视': 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=181&type=all','原创': 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=origin',
}
headers = {'Accept': 'application/json, text/plain, */*','Origin': 'https://www.bilibili.com','Host': 'api.bilibili.com','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15','Accept-Language': 'zh-cn','Connection': 'keep-alive','Referer': 'https://www.bilibili.com/v/popular/rank/all'
}for i in url_dict.items():url = i[1]  # url地址tab_name = i[0]  # tab页名称title_list = []play_cnt_list = []  # 播放数danmu_cnt_list = []  # 播放数coin_cnt_list = []  # 投币数like_cnt_list = []  # 点赞数dislike_cnt_list = []  # 点踩数share_cnt_list = []  # 分享数favorite_cnt_list = []  # 收藏数author_list = []score_list = []video_url = []try:r = requests.get(url, headers=headers)print(r.status_code)# pprint(r.content.decode('utf-8'))# r.encoding = 'utf-8'# pprint(r.json())json_data = r.json()list_data = json_data['data']['list']for data in list_data:title_list.append(data['title'])play_cnt_list.append(data['stat']['view'])danmu_cnt_list.append(data['stat']['danmaku'])coin_cnt_list.append(data['stat']['coin'])like_cnt_list.append(data['stat']['like'])dislike_cnt_list.append(data['stat']['dislike'])share_cnt_list.append(data['stat']['share'])favorite_cnt_list.append(data['stat']['favorite'])author_list.append(data['owner']['name'])score_list.append(data['score'])video_url.append('https://www.bilibili.com/video/' + data['bvid'])print('*' * 30)except Exception as e:print("爬取失败:{}".format(str(e)))df = pd.DataFrame({'视频标题': title_list,'视频地址': video_url,'作者': author_list,'综合得分': score_list,'播放数': play_cnt_list,'弹幕数': danmu_cnt_list,'投币数': coin_cnt_list,'点赞数': like_cnt_list,'点踩数': dislike_cnt_list,'分享数': share_cnt_list,'收藏数': favorite_cnt_list,})df.to_csv('B站TOP100-{}.csv'.format(tab_name), encoding='utf_8_sig')  # utf_8_sig修复乱码问题print('写入成功: ' + 'B站TOP100-{}.csv'.format(tab_name))

2.2爬虫结果

在这里插入图片描述

得到的是一个总站、六个分区的热门视频内容,存储在csv文件中。一共七个csv文件。打开全站文件可以看到:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gPoIuupZ-1691499948735)(image-1.png)]

csv文件中存储这当前区的视频标题,地址、作者、播放数、弹幕数、投币数等信息,可以利用这些数据进行数据处理操作。

三、数据可视化部分

3.1主站分析饼状图

3.1.1主站分析饼状图代码

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
# 全站饼状图
Total_station = pd.read_csv("B站TOP100-全站.csv")
num_dic = {}
# play_num = Total_station["播放数"]
barrage_num = Total_station["弹幕数"]
coin_num = Total_station["投币数"]
like_num = Total_station["点赞数"]
share_num = Total_station["分享数"]
collection_num = Total_station["收藏数"]
# num_dic["播放数"] = sum(play_num)
num_dic["弹幕数"] = sum(barrage_num)
num_dic["投币数"] = sum(coin_num)
num_dic["点赞数"] = sum(like_num)
num_dic["分享数"] = sum(share_num)
num_dic["收藏数"] = sum(collection_num)
Num = sum(num_dic.values())
# 单个数据
data = list(num_dic.values())
# 数据标签
labels = list(num_dic.keys())
# 各区域颜色
colors = ['green', 'orange', 'red', 'purple', 'blue']
# 数据计算处理
sizes = [data[0] / Num * 100, data[1] / Num * 100, data[2] / Num * 100, data[3] / Num * 100, data[4] / Num * 100]
# 设置突出模块偏移值
expodes = (0, 0, 0, 0.1, 0)
# 设置绘图属性并绘图
plt.pie(sizes, explode=expodes, labels=labels,shadow=True,autopct="%3.1f%%", colors=colors)
## 用于显示为一个长宽相等的饼图
plt.axis('equal')
plt.title("主站分析饼状图",fontsize=20)
# 保存并显示
plt.savefig('主站分析饼状图.png')
plt.show()

3.1.2主站分析饼状图结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AoRWrJxg-1691499948737)(image-2.png)]

3.2各站对比垂直图

3.2.1各站对比垂直图代码

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=Falseall_list =['视频标题','视频地址','作者','综合得分','播放数','弹幕数','投币数','点赞数','点踩数','分享数','收藏数']
all_dic = {}
Total_station = pd.read_csv("B站TOP100-全站.csv")
animal = pd.read_csv("B站TOP100-动物圈.csv")
animation = pd.read_csv("B站TOP100-动画.csv")
original = pd.read_csv("B站TOP100-原创.csv")
entertainment = pd.read_csv("B站TOP100-娱乐.csv")
film_television = pd.read_csv("B站TOP100-影视.csv")
life = pd.read_csv("B站TOP100-生活.csv")
# all_dic["全站"] = sum(Total_station["播放数"])
# 垂直各站对比图
all_dic["动物圈"] = sum(animal["播放数"])
all_dic["动画"] = sum(animation["播放数"])
all_dic["原创"] = sum(original["播放数"])
all_dic["娱乐"] = sum(entertainment["播放数"])
all_dic["影视"] = sum(film_television["播放数"])
all_dic["生活"] = sum(life["播放数"])
y1 = list(all_dic.values())
x = np.arange(len(y1))
plt.bar(x=x,height=y1,width=0.4)
a = [0,1,2,3,4,5]
labels = ['动物圈', '动画', '原创', '娱乐','影视','生活']
plt.xticks(a,labels,rotation = 10)
plt.xlabel('不同区名称',fontsize=10)
plt.ylabel('播放总数',fontsize=10)
plt.title("不同区前一百播放总数对比",fontsize=20)
plt.savefig("垂直各站对比图.jpg", dpi=300)
# plt.show()

3.2.2各站对比垂直图结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wtx4NZ8P-1691499948739)(image-3.png)]

3.3词云分析

3.3.1词云分析代码

import wordcloud as wc
import jieba
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
Total_station = pd.read_csv("B站TOP100-全站.csv")
f = open('temp.txt',mode='w')
title = Total_station["视频标题"][:5:]
author = Total_station["作者"]
for i in title:f.write(i)  # write 写入#关闭文件
for i in author:f.write(i)  # write 写入
f.close()
with open("temp.txt", mode="r", encoding="GBK") as fp:content = fp.read()  # 读取文件内容
res = jieba.lcut(content)  # 中文分词
text = " ".join(res)  # 用空格连接所有的词
mask = np.array(Image.open("背景.jpg"))  # 指定词云图效果
word_cloud = wc.WordCloud(font_path="msyh.ttc", mask=mask)  # 创建词云对象
word_cloud.generate(text)  # 生成词语
plt.imshow(word_cloud)  # 显示词云图
word_cloud.to_file("词云分析.png")  # 保存成图片
plt.show()  # 显示图片2.4.2词云分析结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5R9VhJmD-1691499948741)(image-4.png)]

四、代码讲解

4.1爬虫

  • 首先那么需要在那么自己电脑上安装request和pandas库,如果你们是anaconda环境的话,它应该自己自带这两个库,不用再另外安装,没有这两个库的话,要自行安装,对应教程可以上CSDN或者B站里面找一找,教程很多,跟着他后面做就能安装上。
  • url_dict ={}是定义了一个字典,这个字典的键就是分区的名字,值就是对应的url,你也可以理解为它的网址。
  • Headers就是起到一个隐藏自己的作用,你在本地pycharm去爬浏览器,如果不加这个headers的话,浏览器很容易就能判断出你是一个爬虫,就把你拒之门外了。这个headers就相当于穿了一个外套,或者你也可以理解为拿到了一个浏览器认可的身份证。有了这个包装,你才可以顺利的去爬取指定的浏览器。
  • 接下来一个for循环,ur l_dict就是我们上面定义的字典,ur l_dict.items()就是获取它的所有键和值。url即为i[1],tab_name = i[0]。
  • try – except:用于捕获异常,防止爬虫过程中出现异常,这段指令可以让程序更加健壮。
  • try里面的内容是整个爬虫的核心:r = requests.get(url, headers=headers)+ json_data = r.json()是获取目标网站的信息,返回的是一个键和值关联的嵌套字典(如下图)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8aZYYWG-1691499948742)(image-5.png)]

list_data = json_data[‘data’][‘list’]是获取键为data的字典里面键为list的值,返回的是一个列表。
用for循环遍历list_data,将对应数据加到对应列表中,这里涉及到的知识点是列表、字典的索引,以及嵌套字典嵌套列表的索引。
df = pd.DataFrame将对应字典转化为DataFrame格式,方便之后写入csv文件中。
最后利用df.to_csv将数据写入csv文件中,utf_8_sig修复乱码问题。再给个提示语句,提示写入完成。

4.2主站分析饼状图

  • 首先通过pandas读取文件,将弹幕数、投币数、点赞数、分享数、收藏数依次用变量存储起来。
  • 利用字典将变量与对应变量和一一对应,总和即为data = list(num_dic.values()),数据标签为labels = list(num_dic.keys())。在设置一个颜色列表colors = [‘green’, ‘orange’, ‘red’, ‘purple’, ‘blue’]。
  • 数据计算处理,即求出每一部分占总体的多少,expodes设置模块偏移量。
  • plt.pie是用来绘制饼图,在这个函数里面添加数据、标签、颜色等信息。
  • 再整个图片上添加标题,最后将图片保存后显示出来。

4.3各站对比垂直图

  • 首先读取各分区的数据,提取不同分区的播放数据,求总和作为该分区的热度。
  • 垂直对比图用plt.bar来绘制,需要两个基本参数,x和y。x即为不同分区的名称,y即为上面求的热度值。
  • 利用plt.xlabel、plt.ylabel、plt.title分别添加x,y轴的标题和整张图片标题,最后将图片保存后显示出来。

4.4词云分析

  • 首先你要安装这些依赖库:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mC3C2HfQ-1691499948743)(image-6.png)]

  • 同样,我们读取全站的数据,title = Total_station[“视频标题”][:5:]读取热度排名前五的标题,author = Total_station[“作者”]读取所有热门作者。

  • with open(“temp.txt”, mode=“r”, encoding=“GBK”) as fp:打开temp文件,如果不存在的话就新建,利用for循环将标题和作者信息输入到temp文件中,并最后关闭文件。

  • res = jieba.lcut(content)利用jieba分词器进行中文分词,并用空格连接所有词。

  • mask = np.array(Image.open(“背景.jpg”))指定词云图效果,之后创建词云对象,生成词语并显示词云图。

  • 最后保存片并显示。

五、Cloud Studio总结

通过使用腾讯云Cloud Studio,我成功地开发了一个应用程序,用于爬取B站视频数据并进行可视化分析。这个应用程序具有以下几个关键特点:

  1. 灵活性和便利性:使用Cloud Studio,我可以随时随地访问我的开发环境,无需担心设备和软件的限制。这使得开发过程更加灵活和便利。

  2. 数据爬取:通过调用B站的API接口,我能够获取到所需的视频数据,包括视频标题、播放量、点赞数等。这为后续的可视化分析提供了数据基础。

  3. 可视化分析:我使用Python的数据分析和可视化库,对爬取到的B站视频数据进行处理和分析。通过绘制图表和图形,我能够更直观地展示视频数据的趋势、热门内容和用户喜好等。

  4. 实时更新:借助Cloud Studio的云端环境,我可以定期运行我的应用程序,实时获取最新的B站视频数据并更新可视化结果。这使得我的应用程序始终保持最新和准确的数据。

总的来说,腾讯云Cloud Studio为我提供了一个高效、灵活和安全的开发环境,使我能够成功地开发了一个爬取B站视频并可视化的应用程序。这个应用程序不仅可以帮助我更好地了解B站视频的趋势和热门内容,还可以为其他用户提供有价值的数据分析和参考。

相关文章:

Cloud Studio实战——热门视频Top100爬虫应用开发

最近Cloud Studio非常火,我也去试了一下,感觉真的非常方便!我就以Python爬取B站各区排名前一百的视频,并作可视化来给大家分享一下Cloud Studio!应用链接:Cloud Studio实战——B站热门视频Top100爬虫应用开…...

php 去除二维数组重复

在 PHP 中,我们常常需要对数组进行处理和操作。有时候,我们需要去除数组中的重复元素,这里介绍一种针对二维数组的去重方法。 以下是列举一些常见的方法: 方法一:使用 array_map 和 serialize 函数 array_map 函数可以…...

玩转graphQL

转载至酒仙桥的玩转graphQL - SecPulse.COM | 安全脉搏 前言 在测试中我发现了很多网站开始使用GraphQL技术,并且在测试中发现了其使用过程中存在的问题,那么,到底GraphQL是什么呢?了解了GraphQL后能帮助我们在渗透测试中发现哪些…...

神经网络super(XXX, self).__init__()的含义

学习龙良曲老师的课程,在77节有这样一段代码 import torch from torch import nnclass Lenet5(nn.Module):def __init__(self):super(Lenet5,self).__init__()那么,super(XXX, self).init()的含义是什么? Python中的super(Net, self).init()…...

45.杜芬方程解仿真解曲线(matlab程序)

1.简述 Dufing方程是一种重要的动力系统山,是反映工程物理系统中非线性现象和混沌动力学行为的极其重要的方程式。通过Duffing方程可以探讨铁磁谐振电路中的分岔、拟周期运动、子谐波振荡。而在非线性与混沌系统的研究中,Duffing方程展示了丰富的混沌动力…...

服务器数据恢复-EXT3分区误删除邮件的数据恢复案例

服务器数据恢复环境: 一台服务器有一组由8块盘组建的RAID5阵列,EXT3文件系统。 服务器故障: 由于工作人员的误操作导致文件系统中的邮件丢失。用户需要恢复丢失的邮件数据。 服务器数据恢复过程: 1、将故障服务器中所有磁盘以只…...

C 语言的逗号运算符

逗号运算符 comma operator 逗号运算符最常用在 for 循环的循环头中. 程序示例&#xff1a; #include<stdio.h> #define FIRST_OZ 46 #define NEXT_OZ 20int main(void) {int ounces;float cost;printf("ounces cost\n");for (ounces 1, cost FIRST_OZ…...

无人车沿着指定线路自动驾驶与远程控制的实践应用

有了前面颜色识别跟踪的基础之后&#xff0c;我们就可以设定颜色路径&#xff0c;让无人车沿着指定线路做自动驾驶了&#xff0c;视频&#xff1a;PID控制无人车自动驾驶 有了前几章的知识铺垫&#xff0c;就比较简单了&#xff0c;也是属于颜色识别的一种应用&#xff0c;主要…...

C++ 多态性——纯虚函数与抽象类

抽象类是一种特殊的类&#xff0c;它为一个类族提供统一的操作界面。抽象类是为了抽象和设计的目的而建立的。可以说&#xff0c;建立抽象类&#xff0c;就是为了通过它多态地使用其中的成员函数。抽象类处于类层次的上层&#xff0c;一个抽象类自身无法实例化&#xff0c;也就…...

小程序如何使用防抖和节流?

防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;都是用来优化函数执行频率的技术&#xff0c;特别在处理用户输入、滚动等频繁触发的情况下&#xff0c;它们可以有效减少函数的执行次数&#xff0c;从而提升性能和用户体验。但它们的工作方式和应…...

计算机三级网络技术(持续更新)

BGP考点 A S&#xff1a;自治系统 BGP: Border Gateway Protocol&#xff08;当前使用的版本是 BGP-4&#xff09;外部网关协议 动态路由协议可以按照工作范围分为IGP以及EGP。IGP工作在同一个AS内&#xff0c;主要用来发现和计算路由&#xff0c;为AS内提供路由信息的交换&…...

Django Rest_Framework(二)

文章目录 1. http请求响应1.1. 请求与响应1.1.1 Request1.1.1.1 常用属性1&#xff09;.data2&#xff09;.query_params3&#xff09;request._request 基本使用 1.1.2 Response1.1.2.1 构造方式1.1.2.2 response对象的属性1&#xff09;.data2&#xff09;.status_code3&…...

Kotlin~Visitor访问者模式

概念 将数据结构和操作分离&#xff0c;使操作集合可以独立于数据结构变化。 角色介绍 Visitor&#xff1a;抽象访问者&#xff0c;为对象结构每个具体元素类声明一个访问操作。Element&#xff1a;抽象元素&#xff0c;定义一个accept方法ConcreteElement&#xff1a;具体元…...

LVS-DR模式集群构建过程演示

一、工作原理 LVS的工作原理 1.当用户向负载均衡调度器&#xff08;Director Server&#xff09;发起请求&#xff0c;调度器将请求发往至内核空间 2.PREROUTING链首先会接收到用户请求&#xff0c;判断目标IP确定是本机IP&#xff0c;将数据包发往INPUT链 3.IPVS是工作在IN…...

UML-A 卷-知识考卷

UML-A 卷-知识考卷 UML有多少种图&#xff0c;请列出每种图的名字&#xff1a; 常用的几种UML图&#xff1a; 类图&#xff08;Class Diagram&#xff09;&#xff1a;类图是描述类、接口、关联关系和继承关系的图形化表示。它展示了系统中各个类之间的静态结构和关系。时序…...

BpBinder与PPBinder调用过程——Android开发Binder IPC通信技术

在Android系统中&#xff0c;进程间通信&#xff08;IPC&#xff09;是一个非常重要的话题。Android系统通过Binder IPC机制实现进程间通信&#xff0c;而Binder IPC通信技术则是Android系统中最为重要的进程间通信技术之一。本文将介绍Binder IPC通信技术的原理&#xff0c;并…...

篇十五:模板方法模式:固定算法的步骤

篇十五&#xff1a;"模板方法模式&#xff1a;固定算法的步骤" 设计模式是软件开发中的重要知识&#xff0c;模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为型设计模式&#xff0c;用于定义一个算法的骨架&#xff0c;将算法中一些步骤的具…...

web-ssrf

目录 ssrf介绍 以pikachu靶场为例 curl 访问外网链接 利用file协议查看本地文件 利用dict协议扫描内网主机开放端口 file_get_content 利用file协议查看本地文件&#xff1a; fsockopen() 防御方式: ssrf介绍 服务器端请求伪造&#xff0c;是一种由攻击者构造形成…...

【HarmonyOS】【续集】实现从视频提取音频并保存到pcm文件功能(API6 Java)

【关键字】 视频提取类Extractor、视频编解码、保存pcm文件、getAudioTime 【背景和问题】 上篇中介绍了从视频提取音频并保存到pcm文件功能&#xff0c;请参考文档&#xff1a;https://developer.huawei.com/consumer/cn/forum/topic/0209125665541017202?fid0101591351254…...

MySQL为什么要使用 B+Tree 作为索引结构?

MySQL为什么要使用 BTree 作为索引结构&#xff1f; 基本情况 常规的数据库存储引擎 &#xff0c;一般都是采用 B 树或者 B树来实现索引的存储。B树是一种多路平衡树&#xff0c;用这种存储结构来存储大量数据&#xff0c;它的整个高度 会相比二叉树来说 &#xff0c;会矮很多…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...