Google Play Store谷歌应用商店游戏数据分析

article/2025/9/18 1:46:08

数据集:Google Play Store Apps 网址:https://www.kaggle.com/lava18/google-play-store-apps?select=googleplaystore.csv

此数据集包含了两个csv文件,一个是Google play store app的整体数据,一个是Google play store用户评论的数据。
用户评论数据主观性非常大,且内容少,所以这里我们选取的是Google play store app的整体数据进行分析。
Google play store文件包含了13个字段,分别是
App: Application name(应用名称)
Category: Category the app belongs to(分类)
Rating: Overall user rating of the app (as when scraped)(评分)
Reviews: Number of user reviews for the app (as when scraped)(评论数)
Size: Size of the app (as when scraped)(大小)
Installs: Number of user downloads/installs for the app (as when scraped)(下载/安装量)
Type: Paid or Free(付费与否)
Price: Price of the app (as when scraped)(价格)
Content Rating: Age group the app is targeted at - Children / Mature 21+ / Adult(内容分级)
Genres: An app can belong to multiple genres (apart from its main category). For eg, a musical family game will belong to Music, Game, Family genres.(次分类)
Last Updated: Date when the app was last updated on Play Store (as when scraped)
Current Ver: Current version of the app available on Play Store (as when scraped)
Android Ver: Min required Android version (as when scraped)

一、导入数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as snsdata = pd.read_csv('D:/Textbooks/Kaggle/Google Play Store Apps/googleplaystore.csv')

此数据包含了10841行,13列。

data.shape
Out[291]: (10841, 13)

Rating 列的空缺值非常多,高至1474。

data.isna().sum().sort_values(ascending=False)
Out[293]: 
Rating            1474
Current Ver          8
Android Ver          3
Content Rating       1
Type                 1
Last Updated         0
Genres               0
Price                0
Installs             0
Size                 0
Reviews              0
Category             0
App                  0
dtype: int64

二、数据清洗

因为此处不对版本和更新时间进行分析,所以首先删除掉这三列。

data.drop(columns=['Android Ver','Current Ver','Last Updated'],inplace=True)

1. App

data['App'].unique().size
Out[295]: 9660

App在谷歌应用商店里不可以重名,这里需要删除重复值,确保分析结果准确。

data.drop_duplicates('App',inplace=True)

2. Category

print(data.Category.unique())
['ART_AND_DESIGN' 'AUTO_AND_VEHICLES' 'BEAUTY' 'BOOKS_AND_REFERENCE''BUSINESS' 'COMICS' 'COMMUNICATION' 'DATING' 'EDUCATION' 'ENTERTAINMENT''EVENTS' 'FINANCE' 'FOOD_AND_DRINK' 'HEALTH_AND_FITNESS' 'HOUSE_AND_HOME''LIBRARIES_AND_DEMO' 'LIFESTYLE' 'GAME' 'FAMILY' 'MEDICAL' 'SOCIAL''SHOPPING' 'PHOTOGRAPHY' 'SPORTS' 'TRAVEL_AND_LOCAL' 'TOOLS''PERSONALIZATION' 'PRODUCTIVITY' 'PARENTING' 'WEATHER' 'VIDEO_PLAYERS''NEWS_AND_MAGAZINES' 'MAPS_AND_NAVIGATION' '1.9']

Category 有一个异常值1.9,删除。

data=data[data.Category != '1.9']

3. Rating

data.Rating.isna().sum()

Rating 的空缺值非常多,删除的话会缺失很多数据,但是用平均数或者中位数填充也不妥当,所以这里选择忽略na值,不做处理。

4. Reviews

转换为数值型。

data.Reviews.dtype
Out[300]: dtype('O')
data.Reviews = pd.to_numeric(data.Reviews)

5. Size

data.Size.value_counts()
Out[306]: 
Varies with device    1227
11M                    182
12M                    181
13M                    177
14M                    177...
226k                     1
903k                     1
190k                     1
400k                     1
54k                      1
Name: Size, Length: 461, dtype: int64

Size数据去掉单位,统一转换成以k为单位的数值型。

def f(x):if x[-1] == 'M':res = float(x[:-1])*1024elif x[-1] == 'k':res = float(x[:-1])else:res = np.nanreturn res
data.Size = data.Size.apply(f)

6. Installs

 data.Installs.unique()
Out[308]: 
array(['10,000+', '500,000+', '5,000,000+', '50,000,000+', '100,000+','50,000+', '1,000,000+', '10,000,000+', '5,000+', '100,000,000+','1,000,000,000+', '1,000+', '500,000,000+', '50+', '100+', '500+','10+', '1+', '5+', '0+', '0'], dtype=object)

去掉加号和逗号,转换为数值型。

 def inst(x):if x[-1] == '+':res = float(x[:-1].replace(',',''))else:res = float(x)return res
data.Installs = data.Installs.apply(inst)

7. Type

data.Type.value_counts(dropna=False)
Out[313]: 
Free    8902
Paid     756
NaN        1
Name: Type, dtype: int64

有一个空缺值,删除。

data.Type.dropna(inplace=True)

8. Price

将“$”符号删除,并转换为数值型。

def prc(x):if x[0] == '$':res = float(x[1:])else:res = float(x)return res
data.Price = data.Price.apply(prc)

9. Content Rating

data['Content Rating'].value_counts()
Out[318]: 
Everyone           7903
Teen               1036
Mature 17+          393
Everyone 10+        322
Adults only 18+       3
Unrated               2
Name: Content Rating, dtype: int64

10. Genres

 data.Genres.value_counts()
Out[321]: 
Tools                                826
Entertainment                        561
Education                            510
Business                             420
Medical                              395...
Racing;Pretend Play                    1
Puzzle;Education                       1
Travel & Local;Action & Adventure      1
Comics;Creativity                      1
Health & Fitness;Education             1
Name: Genres, Length: 118, dtype: int64

多类别的数量很少,且有一个类别做分析已经足够。
为了便于分析,删除“;”后边的第二个类别。

data['Genres']=data.Genres.apply(lambda x:x.split(";")[0])

三、数据分析

先把游戏类别筛选出来。

gamedata = data[data['Category']=='GAME']

1.分析相关性

corrmat=gamedata.corr()
plt.figure(figsize=(15,10))
sns.heatmap(corrmat,annot=True,cmap=sns.diverging_palette(220, 20, as_cmap=True))

相关性分析
Price除了和Rating 有极小的正相关性,和其他指标都呈负相关,但是相关性都很小。
值得注意的是,上图除了Reviews和Installs存在较大的正向相关性,其他的相关性都非常小。
但是Installs和Reviews这两个指标相互影响,玩的人数越多自然评论越多。

2. 游戏类别分析和总体区别

谷歌安卓市场App一共有33个类别。

data.Category.nunique()
Out[327]: 33

看看游戏类别排在第几位。

plt.figure(figsize=(20,8))
fig = sns.countplot(x=data['Category'], palette="Set3",order = data['Category'].value_counts().index)
fig.set_xticklabels(fig.get_xticklabels(),rotation=90)
plt.show(fig)

在这里插入图片描述
游戏类别的数量排在第二位!仅次于家庭类别的数量。

我们来看看各类别的安装数量。

AllInstalls = data.groupby('Category')['Installs'].agg('sum').reset_index()
AllInstalls = AllInstalls.sort_values(by=['Installs'],ascending=False)
fig = plt.figure(figsize=(20,8))
title=plt.title('Comparing all categories on the basis of Installs')
bar=sns.barplot(x='Category',y='Installs',data=AllInstalls)
bar.set_xticklabels(bar.get_xticklabels(),rotation=90)
plt.show(bar)

各类别安装数量
游戏类别排在了第一!随后是交流和工具类别,这三者的总安装量和平均安装量都是居高不下的,安卓应用市场的游戏玩家众多,下载安装量也非常之高。

那么游戏的评分和总体的评分比较是怎样的呢?
首先将游戏和总体类别的数值进行比较

data.Rating.describe()
Out[335]: 
count    8196.000000
mean        4.173243
std         0.536625
min         1.000000
25%         4.000000
50%         4.300000
75%         4.500000
max         5.000000
Name: Rating, dtype: float64
gamedata.Rating.describe()
Out[336]: 
count    912.000000
mean       4.247368
std        0.384116
min        1.000000
25%        4.100000
50%        4.300000
75%        4.500000
max        5.000000
Name: Rating, dtype: float64

可以看出谷歌应用商店的总体平均分高达4.17,满分是5。
但游戏的平均评分比总体的平均评分还要高,高达4.25! 且波动幅度比总体评分要小。
下面用可视化来看走势。

fig,axes = plt.subplots(figsize=(12,6),ncols=2, nrows=1)
title=axes[0].set_title("Distribution of Rating(All App)", y = 1.1)
title=axes[1].set_title("Distribution of Rating(GAME)", y = 1.1)g1 = sns.kdeplot(data.Rating, color='red',shade = True,ax=axes[0])
g1.set_xlabel("Rating")
g1.set_ylabel("Frequency")g2 = sns.kdeplot(gamedata.Rating,color='blue', shade = True,ax=axes[1])
g2.set_xlabel("Rating")
g2.set_ylabel("Frequency")

在这里插入图片描述
可以看到在高分段,游戏类别的频率是明显高于总体类别的,说明游戏类别的整体质量偏高,玩家乐于给游戏类别打高分。

下面来看看付费方式的区别。
先来看看总体商店的付费与免费App的占比。

labelall =data['Type'].value_counts(sort = True).index
sizeall = data['Type'].value_counts(sort = True)colors = ["palegreen","orangered"]
explode = (0.1,0)  # explode 1st slice
plt.title('Percent of Free App in store',size = 20)
figall = plt.pie(sizeall, explode=explode, labels=labelall, colors=colors,autopct='%1.1f%%', shadow=True, startangle=270)

All Type
免费游戏占了92.2%,而付费游戏仅仅占比7.8%。

下面来看看游戏类别的Type占比。

labelgame =gamedata['Type'].value_counts(sort = True).index
sizegame = gamedata['Type'].value_counts(sort = True)plt.title('Percent of Free App in game',size = 20)
figgame = plt.pie(sizegame, explode=explode, labels=labelgame, colors=colors,autopct='%1.1f%%', shadow=True, startangle=270)

游戏Type
付费占比略微高一点,8.6%。
由此看出不管是总体还是游戏类别,免费游戏都远远大于付费游戏,比例看起来非常相似,游戏类别的付费比例要高一点点。

在游戏类别中,定价的分布是怎样的?

gameprice=gamedata[gamedata['Price'] != 0.0]
gpp= sns.countplot(gameprice['Price'], palette = "hls")
gpp.set_xticklabels(gpp.get_xticklabels(), rotation=90, ha="right") 
plt.title('Number of apps for every price',size = 20)

pricegame
定价大都都是尾数为0.99,可以看出来厂商觉得这样更加吸引玩家购买。而其中0.99美元远超过其他定价位列第一位,其次是1.99,2.99,4.99美元。

3. 游戏的种类分析

游戏类别下划分为不同种类的游戏,我们来看看每种游戏的数量。

plt.figure(figsize=(20,5))
fig = sns.countplot(x=gamedata['Genres'], palette="Set3",order = gamedata['Genres'].value_counts().index)
fig.set_xticklabels(fig.get_xticklabels(),rotation=90)
plt.show(fig)

游戏种类数量
动作类、街机类、竞速类游戏分别占领游戏种类数量的前三名。

接下来看看安装量。

G_installs = gamedata.groupby('Genres')['Installs'].agg('sum').reset_index()
G_installs = G_installs.sort_values(by=['Installs'],ascending=False)fig = plt.figure(figsize=(12,7))
title=plt.title('Comparing all Genres on the basis of Installs')
bar=sns.barplot(y=G_installs['Genres'],x=G_installs['Installs'],palette='hls')
plt.show(bar)  

游戏种类安装量
街机游戏成为安装量最多的游戏种类。
休闲游戏的数量虽然非常少,但是安装量却排到了第三,说明玩家众多,平均下载安装量很高。随后解密类游戏、策略类游戏也都表现不错。

用可视化直观的看平均安装量。

G_installs_avg = gamedata.groupby('Genres')['Installs'].agg('mean').reset_index( name='Avg_Installs')
G_installs_avg = G_installs_avg.sort_values(by=['Avg_Installs'],ascending=False)fig = plt.figure(figsize=(12,7))
title=plt.title('Comparing avg Genres on the basis of Installs')
bar=sns.barplot(y=G_installs_avg['Genres'],x=G_installs_avg['Avg_Installs'],palette='hls')
plt.show(bar)  

在这里插入图片描述
果然没错,休闲游戏的平均安装量遥遥领先,而值得一提的是,体育类游戏的平均下载量攀升到了第二名。

那么各类型游戏的评分分布是怎么样的呢?

g = sns.catplot(x="Genres",y="Rating",data=gamedata, kind="boxen", height = 10 ,
palette = "Set3")
g.despine(left=True)
g.set_xticklabels(rotation=90)
g = g.set_ylabels("Rating")
plt.title('Boxplot of Rating VS Genres',size = 20)

在这里插入图片描述

解密类、运动类、休闲类游戏的评分非常稳定,也很高。
而冒险类、音乐类、竞速类等游戏评分差异比较大,平均评分也较低。

是否评分分布跟游戏类型面向的人群有关系呢?
我们可以分析一下不同类型的Content Rating。

content_G = gamedata[gamedata['Genres'].isin(['Action','Arcade','Racing','Adventure','Card','Music','Board','Puzzle'])]
g = plt.figure(figsize=(20,5))
sns.set(style="whitegrid",font_scale=2,palette="pastel")
sns.countplot(hue=content_G['Content Rating'],x=content_G['Genres']);

这里综合了游戏类别的数量和平均安装量,选取了8个游戏类别进行对比。
在这里插入图片描述

游戏类型的Content Rating 对游戏的评分似乎没有关系。在图中,除了动作类型的游戏面向青少年的比较多以外,其他的都是面向全年龄。

4. 如何让游戏更加受欢迎

先来看看安装量最多的十款游戏。

game_sortinstalls = gamedata.sort_values(by =['Installs'],ascending=False)
plt.figure(figsize=(15,6))
fig = sns.barplot(x=game_sortinstalls['App'][:10], y=game_sortinstalls['Installs'][:10],palette="hls")
fig.set_xticklabels(fig.get_xticklabels(),rotation=90)
plt.tight_layout()
plt.show(fig)

intallstop10
Subway Surfers成为安装量最高的游戏。
下面我想看看游戏的大小是否对游戏的安装量有影响。
游戏的Size大小各有不同,我们可以先划分为几个类别。
先来看看Size的具体情况。

gamedata.Size.describe()
Out[390]: 
count       873.000000
mean      42871.368156
std       27853.882867
min         116.000000
25%       20480.000000
50%       38912.000000
75%       61440.000000
max      102400.000000
Name: Size, dtype: float64

最大的是102400k ,也就是100M,这是由于Google对安装包的大小上限为100M。
我们把Size划分为五个区间,每20M一个区间。

gamedata.loc[(gamedata['Size'] > 0) & (gamedata['Size'] <= 20480),'Sizeval'] = '0M+'
gamedata.loc[(gamedata['Size'] > 20480) & (gamedata['Size'] <= 40960),'Sizeval']   = '20M+'
gamedata.loc[(gamedata['Size'] > 40960) & (gamedata['Size'] <= 40960), 'Sizeval']   = '40M+'
gamedata.loc[(gamedata['Size'] > 40960) & (gamedata['Size'] <= 81920), 'Sizeval']   = '60M+'
gamedata.loc[(gamedata['Size'] > 81920) & (gamedata['Size'] <= 102400),'Sizeval']   = '80M+'

看看平均值。

gamedata[['Sizeval', 'Installs']].groupby(['Sizeval'], as_index=False).mean()
Out[394]: Sizeval      Installs
0     0M+  4.265999e+06
1    20M+  9.118494e+06
2    60M+  2.182831e+07
3    80M+  1.829975e+07

60M-80M这个区间的平均安装量最高。

sizep = sns.barplot(x="Sizeval",y="Installs",data=gamedata, palette = "Pastel1")
sizep  = g.set_ylabels("Size")
plt.title('Intalls VS Size',size = 20)

Sizeval

我们知道免费游戏占绝大部分的比例,安装量也最高,那么在付费游戏中,是收费越低安装量越高吗?

sns.set_style("darkgrid")
paidinstalls = gamedata[gamedata.Price>0]
p = sns.jointplot( "Price", "Installs", paidinstalls)

installs price

猜得没错,随着价格的增多,安装量逐渐减少。大多安装量的付费游戏集中在0到4.99美元之间。

现在我们来分析一下评分,评分也是评价游戏受欢迎的一个重要因素。

sns.set_style("darkgrid")
ax = sns.jointplot(gamedata['Size'], gamedata['Rating'])

size rating
看起来影响不大,总体没有关系,只是在Size非常小的时候,评分会有极低的现象。

既然大小对评分的影响不大,那么价格是否会对评分产生影响呢?

plt.figure(figsize = (10,10))
sns.regplot(x="Price", y="Rating", color = 'darkorange',data=gamedata);
plt.title('Rating and Price in Games',size = 20)

在这里插入图片描述

免费游戏数量庞大,评分分化严重,随着价格的升高,评分呈上升趋势,这说明价格越高的游戏确实质量越好,而且玩家对于付费游戏的期望会比免费游戏低。

现在我们知道评分高和安装量高的游戏大概特征了,那么评分和安装量存在什么关系吗?他们之间有没有矛盾之处?还是呈正向影响?

plt.figure(figsize = (10,10))
sns.regplot(x="Installs", y="Rating", color = 'teal',data=gamedata);
plt.title('Rating and Installs in Games',size = 20)

Rating Installs
看起来确实有一些关联!起码在比较高的安装量下,游戏的评分都不会过低,一般在4分以上。

4. 总结

1.除了安装量和评论数,各指标的相关性并不太大。
2.游戏应用是谷歌应用商店安装量最高的类别。
3.玩家对游戏的平均评价非常高,游戏的平均质量比较好。
4.付费游戏的比例很低,且游戏的定价普遍集中在0.99,1.99,2.99,4.99。
5.游戏安装量高的集中的60M-100M之间。
6.游戏的安装量和应用的大小、价格都有一定的关系,而且安装量大的游戏,评分都比较高且稳定,呈正向关系。


http://chatgpt.dhexx.cn/article/Ya7alyHy.shtml

相关文章

Vue向下滚动加载更多数据-scroll-案例

vue-infinite-scroll 安装 npm install vue-infinite-scroll --save尽管官方也推荐了几种载入方式&#xff0c;但“最vue”的方式肯定是在main.js中加入 import infiniteScroll from vue-infinite-scroll Vue.use(infiniteScroll)实现范例 官方给的代码范例是假设你在根组件…

jQuery 上拉加载更多

上拉加载&#xff0c;当用户浏览到页面底部时候&#xff0c;自动加载下一页的内容 不管是上拉加载还是下拉刷新&#xff0c;其实都离不开一个关键的事件&#xff1a;滚动条滚动事件。 本demo是窗口的滚动条事件&#xff0c;如果需要指定某个元素做上拉加载功能&#xff0c;请手…

uniapp实现上拉加载更多

目录 一、添加全部 1.在主页面中添加一列 2.改云函数 3.插件市场导入 加载中组件 二、实现上拉加载 1.云函数中可以接收参数 2.获取下拉事件 3.写触发这个下拉干嘛 在 显示加载中的组件里面 一、添加全部 1.在主页面中添加一列 data.unshift({name:全部}) //添加一列 …

element-ui,实现点击“加载更多“

首先&#xff0c;实现的大概效果如下&#xff1a; 接下来代码如下: <el-dialog v-el-drag-dialog title"预览" :visible.sync"dialogFormPreview" width"500px" ><div v-for"item in logList.slice(0,loadNum)" :key"i…

史上最全的使用RecyclerView实现下拉刷新和上拉加载更多

前言&#xff1a; 纵观多数App&#xff0c;下拉刷新和上拉加载更多是很常见的功能&#xff0c;但是谷歌官方只有一个SwipeRefreshLayout用来下拉刷新&#xff0c;上拉加载更多还要自己做。 本篇文章基于RecyclerView简单封装了这两个操作&#xff0c;下拉刷新支持LinearLayoutM…

一种Flutter加载更多的实现方法

转载注明出处&#xff1a;https://blog.csdn.net/skysukai 1、why flutter&#xff1f; 我们在进行Android开发的时候&#xff0c;比如布局文件&#xff0c;会创建一个xml来存放布局。写熟悉了觉得没什么&#xff0c;可是&#xff0c;用xml来存放布局文件是十年前的技术了。在…

Android BaseRecyclerViewAdapterHelper上拉加载更多

private boolean isErr false; //是否加载错误 private int TOTAL_COUNTER 16; //一共模拟加载16条数据&#xff0c;所有的数据总数 private int mCurrentCounter 6; //当前的数据总数&#xff0c;因为第一次默认加载6个//1.上拉加载mImgDetailsAdapter.setOnLoadMoreListen…

使用SmartRefreshLayout下拉刷新框架实现加载更多

使用 SmartRefreshLayout 可以实现recyclerview的下拉刷新和上拉加载更多&#xff0c;但是有时候在使用上拉加载更多时&#xff0c;不同的json格式需要不同的判断方法 1、后台根据每次相加的totalElements的个数作为请求的参数即pageSize12 pageNo1 {"content":[{…

Android recyclerview上拉加载更多

记录一下视频列表&#xff08;recyclerview&#xff09;上拉显示一个“加载更多”的item&#xff0c;然后加载数据。 效果图&#xff1a; 实现思路&#xff1a; 1.写两个item布局&#xff0c;一个用来展示数据&#xff0c;一个用来展示加载中也就是滑到最下方的时候显示的“…

vue 点击加载更多

然后按照需求一步步来&#xff0c;先写基本页面 如果不想看过程&#xff0c;直接去后面完整代码那就可以 <template><div><div><div class"Journalism" ref"div"><div v-for"item in todos" :key"item.id&quo…

uniapp实现点击加载更多

使用场景 举个栗子&#xff1a;外卖app当订单商品数量比较多时&#xff0c;不方便一次性展示出来。通常会展示一部分&#xff0c;并在页面给出一个查看更多功能。点击后即可自定义展示剩余内容&#xff0c;比如可以每次点击多展示N个内容&#xff0c;或展示所有。 实现效果 实…

RecyclerView系列之加载更多

一、背景 很久很久以前简单封装过一次RecyclerView&#xff0c;后来一直开发TV端&#xff0c;列表的需求花样不是很多&#xff0c;主要是解决TV端各种兼容问题&#xff0c;也没怎么琢磨这个美丽的控件了&#xff0c;现在打算重新整理一下&#xff0c;其实网上已经有很多优秀的开…

js页面中实现加载更多功能

分页-如何实现加载更多功能&#xff0c;目前的在很多网站上使用的加载更多功能中&#xff0c;使用最多的是iscroll.js实现的上拉加载更多、下拉刷新功能。但是iscroll.js本身并没有集成加载更多的功能&#xff0c;需要进行自行扩展。 最简单的就是给一个加载更多的按钮&#xf…

微信小程序之加载更多(分页加载)实例

1.业务需求&#xff1a;列表滚动到底部时&#xff0c;继续往上拉&#xff0c;加载更多内容 2.必传参数&#xff1a; &#xff08;1&#xff09;page: 1 //第几次加载 &#xff08;2&#xff09;limit: 5//每次加载的显示数据条数 &#xff08;3&#xff09;total: null //需要返…

自己收藏整理的一些操作系统资源

在CSDN混迹这么多年 感觉在技术宽度和广度都深不可测的C站 Windows方面的技术相对较少一些 今天&#xff0c;借着寻找C站宝藏的活动 介绍一些C站宝藏的 Windows相关资源技术专栏 附带一下猎奇操作系统的资源~~~ 【操作系统资源&#xff1a;吐血整理&#xff0c;建议收藏&a…

写代码爬取了某 Hub 资源,只为撸这个鉴黄平台!

黄色已经是我们所不容然而却防不胜防的&#xff0c;尤其是对于做内容的工具和平台&#xff0c;所以花了30分钟搭建了一个鉴黄平台&#xff0c;分享给大家。 &#xfeff; 数据准备 &#xfeff; 找了 N 多资源都不能解决问题&#xff0c;于是怒爬某 Bub资料&#xff0c;备用…

QGC(QGroundControl)地面站手把手教你改——高德地图的添加和瓦片地图在线资源

如何添加高德地图和瓦片地图在线资源 1. 演示效果2. 代码添加3. 瓦片地图在线资源3.1 高德地图3.2 天地图3.3 其它地图源相关链接 所有的热爱都要不遗余力&#xff0c;真正喜欢它便给它更高的优先级&#xff0c;和更多的时间吧&#xff01; 关于QGC地面站其它文章请点击这里: …

系统硬件资源测算

上一篇写到了架构在规划时&#xff0c;应该做哪些&#xff1f;当项目启动后&#xff0c;资源的需求就会提上议程&#xff0c;包括人力资源、项目所需的软件资源、硬件资源以及其他资源。而今天想探讨的是很少被触及的硬件资源。因为硬件资源的规划往往都是经验值的积累&#xf…

在线学习Java的资源网站

CodeGym&#xff08;https://codegym.cc/&#xff09;&#xff1a;一个在线Java编程课程&#xff0c;80%的内容是练习&#xff0c;适合一窍不通的入门者。 CodeAcademy&#xff08;https://www.codecademy.com/&#xff09;&#xff1a;该课程注重的是在找工作时非常有用的技术…

RTSP在线视频流资源地址

在线视频流地址&#xff1a; rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov 真机显示界面: 模拟器显示界面: 学好一门语言&#xff0c;动手去练&#xff0c;半天上手&#xff0c;一星期炉火纯青。—— 专攻无人车的学长