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

Python爬虫与数据分析:中国大学排名的深度挖掘

前言

👉 小编已经为大家准备好了完整的代码和完整的Python学习资料,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费】

一、选题背景

              高考作为中国学生生涯中最为重要的事,在高考之后,选择一所好的大学则是接下的人生的一块的敲门砖,选择有着好的大学,和有着良好教育氛围的城市以及所选择的大学近年来的变化是很重要的事,在以前,想要了解这些需要翻阅查找大量的资料,而现在我们可以通过python轻易地了解这些。

二、爬虫方案设计

1.方案名称:

  中国大学年排名变化数据与可视化分析

2.爬取的内容与数据特征分析:

  通过网站收录的中国大学截止到2019年的排名(因为2020到2021年的疫情对排名变化)

3. 方案概述

  分析网站页面结构,找到爬取数据的位置,根据不同的数据制定不同的爬取方法

三、网站页面结构分析

  1.网页页面的结构与特性分析

  通过浏览器“审查元素”查看源代码及“网络”反馈

可以看到每一个 tr 里面都有一行数据,这就是所需要的数据,通过 contents 获取标签对里面的数据。

四、爬虫程序设计

     1. 数据的爬取

import requests
from lxml import html
def Tree(url):req = requests.get(url)req.encoding ='utf-8-sig'allUniv = []tree = html.fromstring(req.text)trs = tree.xpath('//tbody/tr')for tr in trs:tds = tr.xpath('td')if tds == 0:continueoneUniv=[]oneUniv.append(tds[0].text)name = tds[1].xpath('div')oneUniv.append(name[0].text)for td in tds[2:]:oneUniv.append(td.text)allUniv.append(oneUniv)return allUnivurl='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
tree=Tree(url)
print("排名   学校名称   省市   总分")
for i in range(20):print(tree[i][0],tree[i][1],tree[i][2],tree[i][3],sep='   ')from bs4 import BeautifulSoup
def Req(url):req=requests.get(url)req.encoding='utf-8-sig'allUniv=[]soup=BeautifulSoup(req.text,"html.parser")trs=soup.find_all('tr')for tr in trs:tds=tr.find_all('td')if len(tds)==0:continueoneUniv=[]for td in tds:oneUniv.append(td.string)allUniv.append(oneUniv)return allUnivallUniv1=Req(url)
print("排名   学校名称   省市   总分")
for i in range(20):print(allUniv1[i][0],allUniv1[i][1],allUniv1[i][2],allUniv1[i][3],sep='   ')import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"]
name=[]
sorce=[]
for i in range(10):name.append(allUniv1[i][1])sorce.append(float(allUniv1[i][3]))
plt.barh(range(len(sorce)),sorce,tick_label=name)
plt.title("2019年排名前十位的大学及其总分")
plt.xlabel('分数')
plt.show()from collections import Counter
province=[]
for i in range(len(allUniv1)):province.append(allUniv1[i][2])
result=Counter(province)
print(result)

2.数据简单分析且可视化

    (1)绘制饼状图

import matplotlib as mpl
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
plt.pie(result.values(),labels=result.keys(),radius=2)
plt.title("各省份大学数量占比饼状图")
plt.show()

(2)绘制柱状图

def dataanly1():df_score = df.sort_values('score',ascending=False) # asc Flase降序 True升序 ; descname1 = df_score.schoolname[:10]  # x轴坐标score1 = df_score.score[:10]    # y轴坐标plt.bar(range(10),score1,tick_label=name1)  # 绘制条形图,用range()能保持x轴顺序一致plt.ylim(10,100)plt.title("大学评分最高Top10",color=colors1)plt.xlabel("大学名称")plt.ylabel("评分")# 标记数值for x,y in enumerate(list(score1)):plt.text(x,y+0.5,'%s' %round(y,1),ha='center',color=colors1)passpl.xticks(rotation=270) # 旋转270°plt.tight_layout()  # 去除空白plt.show()
def DXAnly2():area_count = df.groupby(by='area').area.count().sort_values(ascending=False)# 绘图方法1area_count.plot.bar(color='#4652B1')  # 设置为蓝紫色pl.xticks(rotation=0)  # x轴名称太长重叠,旋转为纵向for x, y in enumerate(list(area_count.values)):plt.text(x, y + 0.5, '%s' % round(y, 1), ha='center', color=colors1)plt.title('各地区大学数量排名')plt.xlabel('地区')plt.ylabel('数量(所)')plt.show()

 

def dataanly1():df_score = df.sort_values('score',ascending=False) # asc Flase降序 True升序 ; descname1 = df_score.schoolname[:10]  # x轴坐标score1 = df_score.score[:10]    # y轴坐标plt.bar(range(10),score1,tick_label=name1)  # 绘制条形图,用range()能保持x轴顺序一致plt.ylim(10,100)plt.title("大学评分最高Top10",color=colors1)plt.xlabel("大学名称")plt.ylabel("评分")# 标记数值for x,y in enumerate(list(score1)):plt.text(x,y+0.5,'%s' %round(y,1),ha='center',color=colors1)passpl.xticks(rotation=270) # 旋转270°plt.tight_layout()  # 去除空白plt.show()

 

     通过所绘制柱状图与饼状图,我们可以清晰地看出优秀大学在各个省份占比,在选择大学的时候,可以优先选择教育资源更加多源,高等教育水平更高的省份城市,

其中前三名的地区是北京、江苏、上海,经济水平较为发达的地区,可以简单的看见高素质教育水平可以影响地区经济的发展。

(4)绘制折线图

from pyecharts.charts import Line
from pyecharts import options as optsline = (Line().add_xaxis(top10_sum.index.tolist()).add_yaxis("总分", top10_sum["总分"].astype('int').tolist()).set_global_opts(title_opts=opts.TitleOpts(title="中国最好大学TOP10(各省份)" ,subtitle="总分"))
)
line.render_notebook()

(5)绘制词云

from PIL import Image
from os import path
from wordcloud import WordCloud
wordcloud=WordCloud(background_color = '#f3f3f3',font_path = 'C:\Windows\Fonts\msyh.ttc',margin=3,max_font_size=60,random_state=50,scale=10,colormap='viridis',)
wordcloud.generate_from_frequencies(result)
plt.imshow(wordcloud,interpolation = 'bilinear')
plt.axis('off')
plt.show()

 (6)各省市大学数量平均分纵向柱状图 

df1.sort_values(by=['平均分'], ascending=False, inplace=True)
d1 = df1.index.tolist()
d2 = df1['数量'].values.tolist()
d3 = df1['平均分'].values.tolist()bar0 = (Bar().add_xaxis(d1).add_yaxis('数量', d2).add_yaxis('平均分数', d3).set_global_opts(title_opts=opts.TitleOpts(title='中国大学排名'),yaxis_opts=opts.AxisOpts(name='量'),xaxis_opts=opts.AxisOpts(name='省份'),)
)

(7)各省市大学数量平均分横向柱状图

df1.sort_values(by=['平均分'], inplace=True)d1 = df1.index.tolist()
d2 = df1['数量'].values.tolist()
d3 = df1['平均分'].values.tolist()bar1 = (Bar().add_xaxis(d1).add_yaxis('数量', d2).add_yaxis('平均分数', d3).reversal_axis().set_series_opts(label_opts=opts.LabelOpts(position='right')).set_global_opts(title_opts=opts.TitleOpts(title='中国大学排名'),yaxis_opts=opts.AxisOpts(name='省份'),xaxis_opts=opts.AxisOpts(name='量'),)
)

(8)绘制玫瑰图

name = df_counts.index.tolist()count = df_counts.values.tolist()c0 = (Pie().add('',[list(z) for z in zip(name, count)],radius=['20%', '60%'],center=['50%', '65%'],rosetype="radius",label_opts=opts.LabelOpts(is_show=False),).set_series_opts(label_opts=opts.LabelOpts(formatter='{b}: {c}'))
)

(9)大学地图分布

name = df0.index.tolist()count = df0.values.tolist()m = (Map().add('', [list(z) for z in zip(name, count)], 'china').set_global_opts(title_opts=opts.TitleOpts(title='中国大学排名'),visualmap_opts=opts.VisualMapOpts(max_=40, split_number=8, is_piecewise=True),))

(10)选定绘制折线图

       选择一所大学,查看这所大学今年来的排名变化,这里选择北京邮电大学

sorce2=[]
for i in range(4):url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming'+str(i+2016)+'.html'allUniv=Req(url)for i in range(len(allUniv)):if  allUniv[i][1]=="北京邮电大学":j=ibreaksorce2.append(float(allUniv[j][3]))
print(sorce2)years=[2016,2017,2018,2019]
plt.subplot(1,1,1)
plt.plot(years,sorce2,marker='o')
plt.grid(True)
plt.title("北京邮电大学2016-2019年评分走势")
plt.xlabel('年')
plt.ylabel('分数')
plt.show()

五、代码汇总

import requests
from lxml import htmldef Tree(url):req = requests.get(url)req.encoding ='utf-8-sig'allUniv = []tree = html.fromstring(req.text)trs = tree.xpath('//tbody/tr')for tr in trs:tds = tr.xpath('td')if tds == 0:continueoneUniv=[]oneUniv.append(tds[0].text)name = tds[1].xpath('div')oneUniv.append(name[0].text)for td in tds[2:]:oneUniv.append(td.text)allUniv.append(oneUniv)return allUnivurl='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'tree=Tree(url)print("排名   学校名称   省市   总分")for i in range(20):print(tree[i][0],tree[i][1],tree[i][2],tree[i][3],sep='   ')from bs4 import BeautifulSoupdef Req(url):req=requests.get(url)req.encoding='utf-8-sig'allUniv=[]soup=BeautifulSoup(req.text,"html.parser")trs=soup.find_all('tr')for tr in trs:tds=tr.find_all('td')if len(tds)==0:continueoneUniv=[]for td in tds:oneUniv.append(td.string)allUniv.append(oneUniv)return allUnivallUniv1=Req(url)print("排名   学校名称   省市   总分")for i in range(20):print(allUniv1[i][0],allUniv1[i][1],allUniv1[i][2],allUniv1[i][3],sep='   ')import csvwith open('text2019.csv', 'w',newline='') as csvfile:writer = csv.writer(csvfile)writer.writerow(['排名','学校名称','省市','总分','指标得分','生源质量(新生高考成绩得分)','培养结果(毕业生就业率)','社会声誉(社会捐赠收入·千元)','科研规模(论文数量·篇)','科研质量(论文质量·FWCI)','顶尖成果(高被引论文·篇)','顶尖人才(高被引学者·人)','科技服务(企业科研经费·千元)','成果转化(技术转让收入·千元)'])for row in allUniv1:writer.writerow(row)import matplotlib.pyplot as pltplt.rcParams["font.sans-serif"]=["SimHei"]
name=[]
sorce=[]for i in range(10):name.append(allUniv1[i][1])sorce.append(float(allUniv1[i][3]))
plt.barh(range(len(sorce)),sorce,tick_label=name)
plt.title("2019年排名前十位的大学及其总分")
plt.xlabel('分数')
plt.show()from collections import Counterprovince=[]
for i in range(len(allUniv1)):province.append(allUniv1[i][2])
result=Counter(province)
print(result)import matplotlib as mplmpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
plt.pie(result.values(),labels=result.keys(),radius=2)
plt.title("各省份大学数量占比饼状图")from PIL import Image
from os import path
from wordcloud import WordCloudwordcloud=WordCloud(background_color = '#f3f3f3',font_path = 'C:\Windows\Fonts\msyh.ttc',margin=3,max_font_size=60,random_state=50,scale=10,colormap='viridis',)
wordcloud.generate_from_frequencies(result)
plt.imshow(wordcloud,interpolation = 'bilinear')plt.axis('off')
plt.show()
plt.show()def dataanly1():df_score = df.sort_values('score',ascending=False) # asc Flase降序 True升序 ; descname1 = df_score.schoolname[:10]  # x轴坐标score1 = df_score.score[:10]    # y轴坐标plt.bar(range(10),score1,tick_label=name1)  # 绘制条形图,用range()能保持x轴顺序一致plt.ylim(10,100)plt.title("大学评分最高Top10",color=colors1)plt.xlabel("大学名称")plt.ylabel("评分")# 标记数值for x,y in enumerate(list(score1)):plt.text(x,y+0.5,'%s' %round(y,1),ha='center',color=colors1)passpl.xticks(rotation=270) # 旋转270°plt.tight_layout()  # 去除空白plt.show()def DXAnly2():area_count = df.groupby(by='area').area.count().sort_values(ascending=False)# 绘图方法1area_count.plot.bar(color='#4652B1')  # 设置为蓝紫色pl.xticks(rotation=0)  # x轴名称太长重叠,旋转为纵向for x, y in enumerate(list(area_count.values)):plt.text(x, y + 0.5, '%s' % round(y, 1), ha='center',
color=colors1)plt.title('各地区大学数量排名')plt.xlabel('地区')plt.ylabel('数量(所)')plt.show()from PIL import Image
from os import path
from wordcloud import WordCloudwordcloud=WordCloud(background_color = '#f3f3f3',font_path = 'C:\Windows\Fonts\msyh.ttc',margin=3,max_font_size=60,random_state=50,scale=10,colormap='viridis',)
wordcloud.generate_from_frequencies(result)
plt.imshow(wordcloud,interpolation = 'bilinear')
plt.axis('off')
plt.show()from pyecharts.charts import Line
from pyecharts import options as optsline = (Line().add_xaxis(top10_sum.index.tolist()).add_yaxis("总分", top10_sum["总分"].astype('int').tolist()).set_global_opts(title_opts=opts.TitleOpts(title="中国最好大学TOP10(各省份)" ,subtitle="总分"))
)
line.render_notebook()df1.sort_values(by=['平均分'], ascending=False, inplace=True)
d1 = df1.index.tolist()
d2 = df1['数量'].values.tolist()
d3 = df1['平均分'].values.tolist()bar0 = (Bar().add_xaxis(d1).add_yaxis('数量', d2).add_yaxis('平均分数', d3).set_global_opts(title_opts=opts.TitleOpts(title='中国大学排名'),yaxis_opts=opts.AxisOpts(name='量'),xaxis_opts=opts.AxisOpts(name='省份'),)
)df1.sort_values(by=['平均分'], inplace=True)d1 = df1.index.tolist()
d2 = df1['数量'].values.tolist()
d3 = df1['平均分'].values.tolist()bar1 = (Bar().add_xaxis(d1).add_yaxis('数量', d2).add_yaxis('平均分数', d3).reversal_axis().set_series_opts(label_opts=opts.LabelOpts(position='right')).set_global_opts(title_opts=opts.TitleOpts(title='中国大学排名'),yaxis_opts=opts.AxisOpts(name='省份'),xaxis_opts=opts.AxisOpts(name='量'),)
)name = df_counts.index.tolist()count = df_counts.values.tolist()c0 = (Pie().add('',[list(z) for z in zip(name, count)],radius=['20%', '60%'],center=['50%', '65%'],rosetype="radius",label_opts=opts.LabelOpts(is_show=False),).set_series_opts(label_opts=opts.LabelOpts(formatter='{b}: {c}'))
)name = df0.index.tolist()count = df0.values.tolist()m = (Map().add('', [list(z) for z in zip(name, count)], 'china').set_global_opts(title_opts=opts.TitleOpts(title='中国大学排名'),visualmap_opts=opts.VisualMapOpts(max_=40, split_number=8, is_piecewise=True),))sorce2=[]
for i in range(4):url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming'+str(i+2016)+'.html'allUniv=Req(url)for i in range(len(allUniv)):if  allUniv[i][1]=="北京邮电大学":j=ibreaksorce2.append(float(allUniv[j][3]))
print(sorce2)years=[2016,2017,2018,2019]
plt.subplot(1,1,1)
plt.plot(years,sorce2,marker='o')
plt.grid(True)
plt.title("北京邮电大学2016-2019年评分走势")
plt.xlabel('年')
plt.ylabel('分数')
plt.show()

 六、总结

         一所好的大学,对人生的影响是非常巨大的,在力所能及的范围内选择一所位于教育资源更加多源,高等教育水平更高的省份城市的优秀大学是非常重要的事,作为判断标准的数据,在以往单单是一所大学的相关资料就需要通过大量、繁琐的查找与翻阅才能够得到,若是多所大学的多年的变化则需要更多的时间。而现在通过python的则能够相对轻松的得到。

 结语

学会了Python就业还是不用愁的,这些行业在薪资待遇上可能会有一些区别,但是整体来看还是很好的,我也不会说往哪个方向发展是最好的,各取所长选择自己最感兴趣的去学习就好。

作为一个IT的过来人,我自己整理了一些python学习资料,希望对你们有帮助。

朋友们如果需要可以点击下方链接或微信扫描下方二维码都可以免费获取【保证100%免费】。

CSDN大礼包:《2024最新Python全套学习礼包》【安全链接,放心点击】

编程资料、学习路线图、源代码、软件安装包等!

① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

相关文章:

Python爬虫与数据分析:中国大学排名的深度挖掘

前言 👉 小编已经为大家准备好了完整的代码和完整的Python学习资料,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费】 一、选题背景 高考作为中国学生生涯中最为重要的事,在高考之后,选择一所…...

微软开源库 Detours 详细介绍与使用实例分享

目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口,实现对程序异常的拦截 C软件异常排查从入门到精通…...

js中的getElementById的使用方法

在JavaScript中,document.getElementById()是一种用于通过元素的id属性获取DOM元素的方法。它的作用是返回与指定id匹配的HTML元素。 使用document.getElementById()可以通过元素的id属性直接获取该元素的引用,然后可以使用该引用对元素进行各种操作。例…...

设计模式 - 桥接模式

💝💝💝首先,欢迎各位来到我的博客!本文深入理解设计模式原理、应用技巧、强调实战操作,提供代码示例和解决方案,适合有一定编程基础并希望提升设计能力的开发者,帮助读者快速掌握并灵活运用设计模式。 💝💝💝如有需要请大家订阅我的专栏【设计模式】哟!我会定…...

LeetCode530 二叉搜索树的最小绝对差

前言 题目: 530. 二叉搜索树的最小绝对差 文档: 代码随想录——二叉搜索树的最小绝对差 编程语言: C 解题状态: 成功解决! 思路 注意题目中的二叉搜索树,这个条件暗示每个节点的左子节点肯定小于该节点&am…...

【STM32 FreeRTOS】信号量与互斥锁

二值信号量 二值信号量的本质是一个队列长度为1的队列,该队列就只有空和满两种情况,这就是二值。 二值信号量通常用于互斥访问或任务同步,与互斥信号量比较类似,但是二值信号量有可能会导致优先级翻转的问题,所以二值…...

SP:eric 靶场复现【附代码】(权限提升)

靶机下载地址: https://www.vulnhub.com/entry/sp-eric,274/https://www.vulnhub.com/entry/sp-eric,274/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24|grep -B 2 08:00:27:75:19:80 1.2. 端口扫描 nmap 192.168.7.104 -p…...

SpringBoot项目启动直接结束--已解决

点击启动类&#xff0c;项目启动了&#xff0c;但是却直接停止了。遇到这个问题如何解决呢&#xff1f; 想要项目一直启动是要部署在tomcat服务器上面了&#xff0c;说明现在项目没有运行在tomcat服务器上面。 解决方案: 添加springweb的starter依赖。 <dependency><…...

【笔记】从零开始做一个精灵龙女-画贴图阶段(下)

补充四点&#xff0c;第一&#xff0c;前期画体积用一号或十三号笔刷&#xff0c;压力60&#xff0c;硬度80&#xff0c;体积大一点 2号笔刷比较适合画过渡和软一点的东东 第二&#xff0c; 游戏里面角色原画海报都是发光很亮很透。但是在bp不能画那么亮&#xff0c;因为你进…...

React 学习——react项目中加入echarts图

实现的代码如下&#xff1a; import * as echarts from echarts import { useEffect, useRef } from react; const Home ()>{const chartRef useRef(null);useEffect(()>{// const chartDom document.getElementById(main);//使用id获取节点const chartDom chartRef…...

链表算法题一

​ 旋转链表 旋转链表 首先考虑特殊情况 若给定链表为空表或者单个节点,则直接返回head,不需要旋转操作.题目给定条件范围: 0 < k < 2 ∗ 1 0 9 0 < k < 2 * 10^9 0<k<2∗109,但是受给定链表长度的限制,比如示例2中,k4与k1的效果等价. 那么可以得出kk%l…...

Unity(2022.3.38LTS) - 基础概念

目录 一. 场景 二. 游戏对象 三. 组件 四. 标签 五. 静态游戏对象 六. 保存 一. 场景 Unity 场景是游戏或应用开发中的一个重要概念。 Unity 场景的组成元素&#xff1a; 它通常包含了各种游戏对象&#xff0c;比如 3D 模型、灯光、摄像机、脚本组件、音频源等等。 作用…...

无人机之飞手必看篇

一、熟悉无人机设备 了解你的无人机&#xff1a;熟悉无人机的各个部分&#xff0c;包括遥控器、电池、螺旋桨和摄像头等。 预飞行检查&#xff1a;在每次飞行前进行预检查&#xff0c;确保所有部件正常工作&#xff0c;螺旋桨牢固&#xff0c;电池充满电。 二、选择适当的飞…...

数据结构(11)——二叉搜索树

欢迎来到博主的专栏&#xff1a;数据结构 博主ID:代码小豪 文章目录 二叉搜索树二叉搜索树的声明与定义二叉搜索树的查找二叉搜索树的插入二叉搜索树的中序遍历二叉搜索树的删除 二叉搜索树 二叉搜索树也称二叉排序树&#xff0c;是具备以下特征的二叉树 &#xff08;1&#x…...

如何使用和配置 AWS CLI 环境变量?

欢迎来到雲闪世界。环境变量在配置和保护应用程序方面起着至关重要的作用&#xff0c;在使用 AWS CLI&#xff08;命令行界面&#xff09;时&#xff0c;它们的使用尤其重要。在这篇博客文章中&#xff0c;我们将深入探讨环境变量的世界&#xff0c;探索它们的用途、它们在 AWS…...

七、流程控制

if语句 在go语言中if语句的写法是比较简单的&#xff0c;也是很常见的 func main() {a : trueif a {fmt.Println("a is true")} }if else 语句 func main() {a : trueif !a {fmt.Println("a is true")} else {fmt.Println("a is false")} }el…...

【通过python启动指定的文件】

通过python启动指定的文件 在 Python 中&#xff0c;可以使用os模块的startfile函数&#xff08;在 Windows 系统中&#xff09;或者subprocess模块来启动指定的文件。 以下是使用os模块在 Windows 系统中的示例&#xff1a; import osfile_path "C:\\path\\to\\your\…...

区块链开源的项目有哪些?

区块链领域有许多开源项目&#xff0c;它们覆盖了从基础设施到应用层的不同方面。以下是一些著名的区块链开源项目&#xff1a; 1. Bitcoin (比特币)&#xff1a;第一个去中心化的加密货币&#xff0c;源代码在 GitHub 上开源。它实现了区块链技术的基本概念。 2. Ethereum (…...

3152. 特殊数组 II(24.8.14)

题目 如果数组的每一对相邻元素都是两个奇偶性不同的数字&#xff0c;则该数组被认为是一个 特殊数组 。 你有一个整数数组 nums 和一个二维整数矩阵 queries&#xff0c;对于 queries[i] [fromi, toi]&#xff0c;请你帮助你检查 子数组 nums[fromi…toi] 是不是一个 特殊数组…...

Android 全系统版本文件读写最佳适配,CV 即用(适配到 Android 14)

结合着Android的历史问题&#xff0c;我们需要这样写才行&#xff1a; 首先 manifest 部分 <manifest><!-- Devices running Android 12L (API level 32) or lower --><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" a…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

【Android】Android 开发 ADB 常用指令

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

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具&#xff0c;可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长&#xff0c;测试它所需的工作量也会呈指数级增长。GoRepl…...