基于Python的猎聘网招聘数据采集与可视化分析
1.1项目简介
在现代社会,招聘市场的竞争日趋激烈,企业和求职者都希望能够更有效地找到合适的机会与人才。猎聘网作为国内领先的人力资源服务平台,汇聚了大量的招聘信息和求职者数据,为研究招聘市场趋势提供了丰富的素材。基于Python的猎聘网招聘数据采集与可视化分析,旨在通过技术手段深入挖掘招聘数据背后的价值。通过爬虫技术,可以自动化地获取猎聘网的招聘信息,包括职位名称、薪资范围、工作地点、公司规模等关键数据,为后续分析打下基础。通过图表和可视化工具,研究者能够直观地展示招聘市场的趋势和变化,帮助企业和求职者更好地把握市场动态,做出明智决策。同时,分析结果还可以为招聘策略的制定提供数据支持,助力企业优化人才招聘流程。
基于Python的猎聘网招聘数据采集与可视化分析,不仅为研究招聘市场提供了工具和方法,也为行业发展提供了重要的决策依据,具有重要的理论和实际意义。
1.2课题目标
基于Python的猎聘网招聘数据采集与可视化分析的研究目标主要集中在以下几个方面。
数据采集是本研究的核心目标之一。通过使用Python中的爬虫技术,系统化地获取猎聘网上的招聘信息,包括职位名称、薪资、工作地点、公司类型、招聘时间等关键信息。通过自动化的数据采集,节省人工收集时间,确保数据的全面性和准确性,为后续分析提供坚实的数据基础。
数据清洗和预处理是确保分析结果可靠的重要环节。研究目标包括对采集到的数据进行去重、缺失值处理和数据格式标准化等操作,以提高数据质量,从而增强分析的有效性和准确性。
数据分析是另外一个重要目标。利用Python的Pandas和NumPy等库,深入分析招聘数据中的趋势和特征,包括薪资水平的分布、热门职位的变化、地区招聘需求及其增长等。通过对数据进行定量分析,揭示招聘市场的潜在规律和发展趋势。
数据可视化是提升分析结果传播效果的关键环节。通过使用Matplotlib和Seaborn等可视化工具,将分析结果以图表形式呈现,使得复杂数据变得直观易懂。研究的最终目标是为企业和求职者提供可视化的市场洞察,帮助他们更有效地制定招聘和求职策略,推动招聘市场的优化发展。通过这些研究目标,旨在为人力资源管理和决策提供科学依据。
2 设计思路
2.1开发环境与工具
开发环境主要包括Python编程语言、网络爬虫技术、数据处理与分析库、数据可视化工具以及Pycharm开发环境,并运用到 Requests,Pandas,Numpy,等库。该项目的开发环境如下表 2-1 所示。
表2-1 系统开发环境版本表
开发工具 | 版本 |
---|---|
Pycharm | PyCharm Community Edition 2023.2.1 |
Python | Python 3.9 |
Pandas | Pandas 1.1.5 |
Matplotlib | Matplotlib 3.5.3 |
2.1.1 Pycharm
PyCharm是一款强大的Python集成开发环境(IDE),由JetBrains公司开发,广泛应用于数据分析、Web开发、人工智能等多个领域。在基于Python的猎聘网招聘数据采集与可视化分析项目中,PyCharm提供了众多便利的功能,极大地提升了开发效率和编码体验。PyCharm具备智能代码补全和实时错误检测的功能,能够帮助开发者快速编写高质量的Python代码。在进行数据采集时,使用PyCharm可以轻松调用第三方库,如BeautifulSoup和Scrapy,进行网页爬虫和数据提取。同时,其内置的调试工具使得开发者能够逐步调试代码,快速定位和修复问题,从而提升数据采集的准确性和效率。PyCharm提供了强大的项目管理功能,支持虚拟环境的创建和管理,方便开发者在不同项目间切换,避免库版本冲突。在猎聘网招聘数据分析中,使用PyCharm可以轻松管理各种数据处理和可视化库,如Pandas、Matplotlib和Seaborn,使得数据处理和可视化分析更加顺畅。
2.2.2 Python
Python是一种广泛使用的高级编程语言,以其简洁易读的语法和强大的功能而闻名。在基于Python的猎聘网招聘数据采集与可视化分析中,Python的优势体现在多个方面,使其成为数据科学和分析领域的热门选择。Python拥有丰富的库和框架,特别适合数据处理和可视化。例如,使用BeautifulSoup和Scrapy等库,可以轻松实现网页爬虫,自动化地从猎聘网采集招聘信息。同时,Pandas库为数据清洗和整理提供了强大的支持,让用户能够高效地处理和分析数据;而NumPy则为数值计算提供了基础,能够加速数据处理过程。Python在数据可视化方面同样表现出色。借助Matplotlib和Seaborn等可视化库,开发者可以将分析结果以图表的形式呈现,直观地展示招聘市场的趋势和特点。这种可视化能力不仅有助于分析结果的理解和传播,还能帮助企业和求职者做出更为明智的决策。Python具有良好的跨平台特性,能够在Windows、macOS和Linux等多种操作系统上运行,方便开发者在不同环境中进行工作。同时,Python社区活跃,丰富的在线资源和文档,使得开发者在遇到问题时能够快速找到解决方案。
2.2.3 Requests
在基于Python的猎聘网招聘数据采集与可视化分析中,Requests库作为一款强大的HTTP库,扮演着至关重要的角色。Requests库使得编写网络爬虫变得简单而高效,极大地简化了HTTP请求的过程,成为数据采集的热门工具。Requests库的一个主要优势是其友好的接口和易于使用的语法。通过简单的几行代码,开发者可以发送GET或POST请求,获取目标网页的HTML内容。这对于猎聘网等招聘平台的数据采集尤为重要,用户只需指定目标URL,Requests库便可自动处理连接和请求,返回的数据也易于解析和存储。Requests库支持各种HTTP功能,包括请求头的自定义、会话管理、Cookie处理等。在数据采集过程中,有时需要模拟真实用户的访问行为,以避免被网站识别为爬虫。通过设置请求头和使用会话对象,开发者能够有效地模拟浏览器请求,增强抓取的成功率。Requests库与BeautifulSoup等解析库结合使用,可以实现更为强大的数据提取功能。采集到的HTML内容可以通过BeautifulSoup进行解析,提取所需的招聘信息,如职位名称、薪资、公司名称等。这样,开发者可以灵活地获取和处理数据,为后续的分析和可视化奠定基础。
2.2.4 Pandas
在基于Python的猎聘网招聘数据采集与可视化分析中,Pandas库发挥着核心作用。Pandas是一个强大的数据处理和分析库,特别适合处理结构化数据,使得数据操作变得高效而简便。Pandas提供了两种主要的数据结构:Series和DataFrame。其中,DataFrame是一个二维的表格结构,类似于电子表格或数据库的表格,非常适合存储和操作来自猎聘网的招聘数据。在数据采集完成后,开发者可以轻松地将爬取到的招聘信息(如职位名称、薪资、公司名称和工作地点等)存储为一个DataFrame,便于后续的数据清洗和分析。Pandas具备强大的数据处理功能。通过其丰富的方法,用户可以快速进行数据筛选、排序、分组、合并和透视等操作。这些功能使得开发者能够对招聘数据进行深入分析,识别出热门职位、薪资水平和不同地区的招聘需求等趋势。例如,可以利用Pandas对薪资数据进行分组统计,从而揭示不同职位或行业的薪资差异。Pandas与数据可视化库(如Matplotlib和Seaborn)无缝集成,方便将分析结果以直观的图表形式展现。开发者可以直接通过Pandas生成图表,帮助用户更好地理解招聘市场的变化和趋势。
2.2技术架构
基于Python的招聘数据采集与可视化分析的技术架构主要包括数据采集、数据处理和分析、以及数据可视化三个关键部分:
-
爬虫模块:数据采集是整个分析流程的第一步,主要通过Python中的Requests库。具体流程包括:发送HTTP请求:使用Requests库发送GET请求,获取猎聘网上的招聘信息页面。解析网页内容:采用json解析获取的api接口数据,提取所需的信息,例如职位名称、薪资范围、公司名称、招聘要求和工作地点等。存储数据:将提取到的数据存储为CSV文件,为后续的数据处理做准备。
-
数据清洗模块:这一部分主要使用Pandas库来进行数据清洗、处理和分析,具体步骤包括:通过Pandas对采集到的数据进行去重、缺失值处理和格式标准化,以保证数据的质量和一致性。利用Pandas进行数据分组、聚合和统计分析,识别招聘市场的趋势和特征。例如,分析不同职位的薪资水平、地区招聘需求的变化等。将数据进行整理和转化,以便于后续的可视化包括将数据转换为适合绘图的格式,或计算新的特征变量。
-
在数据可视化阶段,主要通过Matplotlib和Seaborn等可视化库实现。具体步骤包括:根据分析结果,使用Matplotlib和Seaborn绘制柱状图、折线图、饼图等多种图表,以展示招聘数据的趋势和特征。对图表进行美化和定制,包括设置标题、坐标轴标签、颜色方案等,提高可读性和视觉效果。将可视化结果汇总成报告,为企业和求职者提供决策依据。
技术架构图如下2-1:
图2-1技术架构图
3 数据采集
本项目采集猎聘网招聘网站招聘数据4093条存入csv。采集的网页信息如下图:
数据采集的实现过程主要依赖于使用Requests库向猎聘网的API发送请求,并处理返回的数据。具体的过程如下:
代码中定义了一个名为post_data的函数,负责进行数据采集。该函数首先设置了请求的目标URL,即猎聘网的招聘信息API接口。然后,定义了HTTP请求的头信息(headers),这些头信息模拟了真实用户的浏览器请求,以避免被网站识别为爬虫。这些头信息包括了常见的用户代理、内容类型和来源等信息,确保请求能够顺利通过。
代码定义了一个职位行业的列表,覆盖多个行业类别,如“大数据”等。对于每个行业,程序将循环遍历每一页的招聘信息,最多获取21页的数据。每页的请求都包含了特定的请求体(data),其中mainSearchPcConditionForm部分指定了城市、当前页面、每页大小以及行业类型等参数。这样,通过设置不同的请求参数,程序能够获取到不同页面的招聘信息。
在每次发送POST请求后,程序会通过requests.post方法将请求发送到指定的URL,并将响应结果存储在response对象中。为避免对服务器造成过大压力,代码中使用了time.sleep(2),让程序在每次请求之间暂停2秒,控制请求频率。
一旦成功接收到响应,程序会调用parse_data函数解析响应内容。该函数首先尝试将JSON格式的响应数据转换为Python对象,并从中提取出招聘信息列表jobCardList。如果解析成功,程序会将提取到的招聘信息传递给sync_data2db函数进行后续处理。
在sync_data2db函数中,程序会遍历所有的招聘信息,并将每条信息的相关字段(如岗位名称、学历要求、工作经验、发布时间、链接、地区、薪资、标签、公司名称、行业、公司规模和融资情况)写入到CSV文件中。使用Python内置的CSV模块,程序以追加模式打开目标CSV文件,并使用csv.writer将每条招聘数据写入新的一行。主要代码如下图。
采集结果如下图:
4 数据处理
4.1数据去重和标准化
具体实现如下:
去重处理:使用data.drop_duplicates(inplace=True)方法去除数据中的重复行。这一步骤对于确保分析结果的准确性非常重要,因为重复的数据可能会导致统计结果失真。
学历信息标准化:在处理学历数据时,使用data['学历']=data['学历'].str.replace('统招本科','本科')将学历字段中的“统招本科”统一替换为“本科”,保证数据的一致性,减少分类时的困扰。去重和标准化后数据集信息如下图。
4.2数据分组统计和汇总
主要包括对不同维度数据的分组统计和汇总。具体实现如下:
薪资分布的分段:使用pd.cut方法将薪资数据分为多个区间,并为每个区间指定标签。price_bin = pd.cut(data['薪资'], bins=[0,5000,10000,15000,20000,25000,30000,1000000], ...)将薪资信息划分为“<5000元”、“5000元-10000元”等多个等级,便于后续进行分布分析和可视化。
岗位数量统计:使用data.groupby方法对不同类别(如学历、工作经验、行业、公司规模、公司融资情况)进行分组,并统计每个类别下的岗位数量。例如,data1=data.groupby('学历')['岗位名'].count().reset_index()将数据按学历分组,计算每个学历类别下的岗位数量,并将结果存储在data1中。
平均薪资计算:同样使用groupby方法计算不同类别(如学历、工作经验、行业等)的平均薪资。data11=data.groupby('学历')['薪资'].mean().reset_index()实现了对每个学历类别的平均薪资计算,结果存储在data11中。分组统计和汇总后结果如下图。
4.3 数据合并
在统计得到岗位数量和薪资数据后,代码中有多个数据合并的步骤。具体实现如下:
合并岗位数量和平均薪资:使用pd.merge方法将岗位数量和平均薪资数据表合并,以便于后续的可视化展示。例如,combined_data = pd.merge(data3, data33, on='行业')将行业岗位数量与行业平均薪资合并在一起,便于进行行业分析。结果如下图:
5 数据分析与可视化
5.1薪资分布环形图实现
薪资分布环形图的实现主要通过以下几个步骤完成,具体过程如下:
薪资数据的分布通过pd.cut函数进行了分段处理。代码中使用price_bin = pd.cut(data['薪资'], bins=[0, 5000, 10000, 15000, 20000, 25000, 30000, 1000000], include_lowest=True, right=False, labels=['<5000元', '5000元-10000元', '10000元-15000元', '15000元-20000元', '20000元-25000元', '25000-30000元', '>30000元'])将薪资数据划分为七个区间,从而便于进行分布分析。每个薪资区间都被指定了相应的标签,便于后续在图中展示。使用pd.value_counts(price_bin)统计每个薪资区间的岗位数量,从而生成了一个包含各薪资区间及其对应数量的Series df_price。这一步骤的目的是为绘制环形图提供基础数据。在绘制环形图时,代码使用了plt.pie函数。其中,df_price作为数据源,labels=df_price.index用于指定各个区间的标签,autopct='%1.1f%%'用于显示每个区间所占总数的百分比,startangle=90则将图形的起始角度设置为90度,以便更好地展示数据。colors=plt.cm.tab20.colors指定了图形的颜色,使得图形更加美观。最后,为了形成环形图的效果,代码添加了一个白色中心圆,,程序成功绘制了薪资分布的环形图,直观地体现了不同薪资区间的岗位数量分布,帮助受众更清晰地理解薪资结构。如下图
5.2学历分布分析饼图实现
学历分布分析的饼图通过以下步骤实现。数据的清洗和整理是绘制饼图的基础。使用data.groupby('学历')['岗位名'].count().reset_index()统计不同学历类别下的岗位数量,结果存储在data1中。之后,饼图的绘制主要依赖于Matplotlib库中的plt.pie函数。具体实现中,代码plt.figure(figsize=(8, 8))设置了图形的大小,确保饼图在视觉上更加清晰。接着,使用plt.pie(data1['岗位名'], labels=data1['学历'], autopct='%1.1f%%', startangle=140)绘制饼图,其中data1['岗位名']提供了每个学历类别的岗位数量,labels=data1['学历']用于标注各个扇区的学历类型,autopct='%1.1f%%'设置了每个扇区占总数的百分比显示,startangle=140则指定了图形的起始绘制角度,以便优化扇区的视觉效果。最后,plt.title('学历分布分析')为饼图添加标题,并使用plt.axis('equal')确保饼图为圆形。通过这些步骤,程序成功生成了展示不同学历层次岗位数量比例的饼图,直观地反映了招聘市场中各学历层次的分布情况,帮助分析者理解学历与岗位数量之间的关系。如下图。
5.3工作经验与岗位数量分布柱形图实现
工作经验与岗位数量的分布柱形图通过以下步骤实现。数据的分组和统计是绘制柱形图的基础。通过data.groupby('工作经验')['岗位名'].count().reset_index()对数据进行分组,统计各工作经验类别下的岗位数量,并将结果存储在data2中。这一过程确保了数据结构适合进行可视化展示。使用Matplotlib库中的plt.bar()函数生成柱形图。代码plt.figure(figsize=(10, 6))设置了图形的大小,使图表更具可读性。随后,plt.bar(data2['工作经验'], data2['岗位名'], color='skyblue')绘制柱形图,其中data2['工作经验']为X轴的数据,表示不同的工作经验要求;data2['岗位名']为Y轴的数据,表示对应的岗位数量,color='skyblue'则为柱形图选择了明亮的颜色,增强了视觉效果。为了使图表更加清晰,代码中加入了X轴和Y轴的标签,分别通过plt.xlabel('工作经验')和plt.ylabel('岗位数量')进行设置,同时使用plt.title('工作经验与岗位数量分布')为图表添加了标题。plt.xticks(rotation=45)将X轴的标签倾斜45度,以防止文字重叠并提高可读性。通过这些步骤,程序成功绘制了展示不同工作经验要求下岗位数量分布的柱形图,为分析招聘市场对工作经验的需求提供了直观的视角。如下图。
5.4岗位数量和平均薪资组合柱形图实现
岗位数量和平均薪资的组合柱形图实现过程主要包括数据准备、图形创建和多Y轴的绘制。通过合并岗位数量和平均薪资数据,使用pd.merge函数将两个数据框结合,具体实现为combined_data = pd.merge(data3, data33, on='行业')。此操作将行业的岗位数量与平均薪资整合到一个数据框中,便于后续分析和可视化。接下来,使用Matplotlib库进行图形绘制,通过fig, ax1 = plt.subplots(figsize=(12, 6))创建一个图形和一个坐标轴,并设置图形大小,以增强视觉效果。绘制岗位数量的柱形图,代码ax1.bar(top_industries['行业'], top_industries['岗位数量'], color='tab:blue', alpha=0.6, label='岗位数量')将行业名称作为X轴,岗位数量作为Y轴,设置了柱子的颜色和透明度。为了更好地展示平均薪资,创建一个共享同一X轴的第二个Y轴,使用ax2 = ax1.twinx()实现。然后,使用ax2.plot(top_industries['行业'], top_industries['平均薪资'], color='tab:orange', marker='o', label='平均薪资')绘制描述平均薪资的折线图,设置了独特的颜色和标记样式,使得两种数据能够清晰区分。通过设置图表标题plt.title('行业岗位数量与平均薪资前十的组合柱形图')和显示图形plt.show(),将组合图展示给用户,使其能够直观地理解各行业在岗位数量和平均薪资方面的关系,从而为招聘决策提供数据支持。如下图。
5.5公司规模数量占比及公司规模平均薪资组合图实现
公司规模数量占比及公司规模平均薪资的组合图通过一系列步骤实现,主要利用Matplotlib库来展示数据。首先,数据准备阶段使用pd.merge将公司规模的岗位数量和对应的平均薪资合并到一个新的数据框中,代码实现为combined_data = pd.merge(data4, data44, on='公司规模')。这个操作确保每个公司规模的类别都有相应的岗位数量和平均薪资信息,方便后续的可视化。图形的绘制分为两个部分:环形图和柱形图。首先,通过fig, ax1 = plt.subplots(1, 2, figsize=(14, 6))创建一个包含两个子图的画布,设置图形大小,以便清晰展示信息。在第一个子图中,使用ax1[0].pie(combined_data['岗位数量'], labels=combined_data['公司规模'], autopct='%1.1f%%', startangle=90, colors=plt.cm.tab20.colors)绘制公司规模数量的占比环形图。此处,autopct='%1.1f%%'用于显示每个扇区的百分比,startangle=90则调整图形的起始角度,使得图形更加美观。
在第二个子图中,使用ax1[1].bar(combined_data['公司规模'], combined_data['平均薪资'], color='skyblue')绘制公司规模的平均薪资柱形图,X轴为公司规模,Y轴为平均薪资,颜色设置为明亮的天蓝色以增强视觉吸引力。此外,添加适当的标签和标题,通过ax1[1].set_xlabel('公司规模')和ax1[1].set_ylabel('平均薪资')进行X轴和Y轴的标注,确保用户可以轻松理解轴的含义。最后,通过plt.tight_layout()进行布局调整,确保图形元素不重叠,最终使用plt.show()展示组合图,使得信息清晰地呈现在用户面前,为分析公司规模与招聘市场的动态提供有力的可视化支持。如下图。
5.6公司融资情况岗位数量及公司平均薪资对比实现
公司融资情况的岗位数量及公司平均薪资对比图通过几个关键步骤实现,主要利用Matplotlib库的双Y轴功能来展示数据。数据准备阶段使用pd.merge将公司融资情况的岗位数量与平均薪资合并,具体实现为combined_data = pd.merge(data5, data55, on='公司融资情况')。这一步确保了每个融资情况类别都包含了相应的岗位数量和平均薪资,形成了便于可视化的数据框。
绘图部分的实现首先通过fig, ax1 = plt.subplots(figsize=(10, 6))创建一个新的图形和坐标轴,设置图形的大小以便于信息的清晰展示。然后,使用ax1.bar(combined_data['公司融资情况'], combined_data['岗位数量'], color='skyblue', label='岗位数量')绘制公司融资情况的岗位数量柱形图,其中X轴表示公司融资情况,Y轴表示岗位数量,柱子的颜色为天蓝色,便于视觉识别。
为了同时展示平均薪资,使用ax2 = ax1.twinx()创建一个共享同一X轴的第二个Y轴。然后,利用ax2.plot(combined_data['公司融资情况'], combined_data['平均薪资'], color='orange', marker='o', label='平均薪资')绘制公司平均薪资的折线图,设置独特的颜色和标记,以便于与柱形图区分。通过ax1.set_ylabel('岗位数量', color='skyblue')和ax2.set_ylabel('平均薪资', color='orange')设置两个Y轴的标签,确保用户可以明确理解两个数据系列的含义。最后,使用plt.title('公司融资情况岗位数量及公司平均薪资对比')为图表添加标题,并通过plt.tight_layout()调整布局,确保信息展示不重叠,最终使用plt.show()展示图形。这种组合图形有效地展示了不同融资情况对岗位数量和平均薪资的影响,为分析招聘市场的动态提供了重要的可视化支持。如下图。
6 总结与展望
6.1总结
基于Python的猎聘网招聘数据采集与可视化分析项目,充分展示了数据科学在现代招聘市场中的应用潜力。通过有效的数据采集手段,利用Requests库从猎聘网的API中提取大量的招聘信息,程序实现了自动化的数据收集,极大地提高了效率。在数据处理阶段,借助Pandas库对原始数据进行了清洗和分析,确保了数据的准确性和一致性。分析过程中,统计了岗位数量、薪资水平、公司规模和融资情况等因素,提供了对招聘市场的深入见解。
可视化方面,Matplotlib和Seaborn等库使得数据的展示更加直观和生动。通过饼图、柱形图和组合图等多种形式,项目成功展示了学历分布、工作经验要求、行业趋势以及公司融资情况对招聘市场的影响。这些结果不仅为求职者提供了丰富的信息,也为企业在制定招聘策略时提供了有力的数据支持。总体来说,该项目有效地将数据采集、处理和可视化结合在一起,展示了数据分析在招聘领域的实际应用价值。
6.2展望
展望未来,基于Python的猎聘网招聘数据采集与可视化分析项目可以进一步拓展多个方向。
可以考虑引入机器学习算法,对招聘市场数据进行更深入的分析与预测,例如利用历史数据预测未来的招聘趋势或薪资变动。这将有助于企业更好地规划招聘策略,优化人才配置。
增强数据采集的灵活性和全面性也是一个重要方向。未来可以考虑结合更多的数据源,例如其他招聘网站、社交媒体以及行业报告,从而获取更全面的招聘市场视角。此外,提升数据处理的自动化程度,利用定时任务和数据管道技术使数据更新更加实时化,将极大增强分析的时效性。
在可视化方面,可以探索更多交互式图表和仪表板的实现,例如使用Plotly或Dash等库,构建实时数据展示平台,使用户能够更方便地进行数据查询和分析。这些改进和扩展将增强项目的实用性和应用范围,为招聘市场的研究与分析提供更强有力的支持。
相关文章:
基于Python的猎聘网招聘数据采集与可视化分析
1.1项目简介 在现代社会,招聘市场的竞争日趋激烈,企业和求职者都希望能够更有效地找到合适的机会与人才。猎聘网作为国内领先的人力资源服务平台,汇聚了大量的招聘信息和求职者数据,为研究招聘市场趋势提供了丰富的素材。基于Pyt…...
oracle数据库的启动与关闭
一.oracle数据库的启动过程 启动实例(Start the Instance) 启动实例:一个Oracle数据库实例由内存结构和后台进程组成,启动实例时会加载这些内存结构和启动进程。实例是数据库的一个运行时环境,它包含了数据库的控制文…...
openGauss开源数据库实战十六
文章目录 任务十六 openGauss逻辑结构:触发器管理任务目标实施步骤一、测试openGauss的触发器1.创建测试表2.创建触发器对应的函数3.创建触发器4.测试触发器 二、触发器的类型1.行级触发器2.语句级触发器3.AFTER触发器和 BEFORE触发器 任务十六 openGauss逻辑结构:触发器管理 …...
智能教育的关键之一是构建智能学习系统
教育部办公厅12月27日发布《关于加强中小学人工智能教育的通知》,提出人工智能教育六大主要任务和举措,包括构建系统化课程体系、实施常态化教学与评价、开发普适化教学资源、建设泛在化教学环境、推动规模化教师供给和组织多样化交流活动。《通知》提出…...
【Linux 篇】Docker 容器星河与镜像灯塔:Linux 系统下解锁应用部署奇幻征程
文章目录 【Linux 篇】Docker 容器星河与镜像灯塔:Linux 系统下解锁应用部署奇幻征程前言一 、docker上部署mysql1. 拉取mysql镜像2. 创建容器3. 远程登录mysql 二 、docker上部署nginx1. 拉取nginx镜像2. 在dockerTar目录下 上传nginx.tar rz命令3. 创建nginx容器4…...
十四(AJAX)、AJAX、axios、常用请求方法(GET POST...)、HTTP协议、接口文档、form-serialize
1. AJAX介绍及axios基本使用 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content&q…...
雪花算法生成ID
下面将简单介绍雪花算法的简单应用和在web应用中的使用。 雪花算法的组成:雪花算法是由64位组成:符号位(1)、时间戳(41)、机器码(5[数据中心]5[机器ID])、计数器(12) 对于雪花算法的源码可以在这里看:bwmarrin/snowflake: A simple to use …...
Java - JSR223规范解读_在JVM上实现多语言支持
文章目录 1. 概述2. 核心目标3. 支持的脚本语言4. 主要接口5. 脚本引擎的使用执行JavaScript脚本执行groovy脚本1. Groovy简介2. Groovy脚本示例3. 如何在Java中集成 Groovy4. 集成注意事项 6. 与Java集成7. 常见应用场景8. 优缺点9. 总结 1. 概述 JSR223(Java Spe…...
vue3 基本使用
Vue 3 提供了多种方式来构建用户界面,包括选项式 API 和 Composition API。下面我将详细介绍 Vue 3 的基本使用和语法,主要集中在选项式 API 上,因为这对于初学者来说更容易上手。 1. 创建 Vue 项目 如果你还没有一个 Vue 项目,…...
Redis自学之路—高级特性(实现消息队列)(七)
目录 简介 Redis的Key和Value的数据结构组织 全局哈希表 渐进式rehash 发布和订阅 操作命令 publish 发布消息 subscribe 订阅消息 psubscribe订阅频道 unsubscribe 取消订阅一个或多个频道 punsubscribe 取消订阅一个或多个模式 查询订阅情况-查看活跃的频道 查询…...
ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本)
ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本) code review! 参考笔记 1.ROS基本框架1——编写简单的发布者和订阅者(C++和Python版本) 2.ROS基本框架2——在ROS开发中创建并使用自定义消息(C++版本) 文章目录 ROS基本框架2——在ROS开发中创建并使用自定义…...
计算机的错误计算(一百七十二)
摘要 探讨 MATLAB 对于算式 的计算误差。 例1. 在 MATLAB 中计算 的值。 直接贴图吧: 这样,MATLAB 的输出中只有3位正确数字,有效数字的错误率为 (16-3)/16 81.25% . 因为16位的正确输出为 0.2971242332737277e-18(ISReals…...
贵州大学oj平台高级语言第九次作业(四)
题目:链表的基础操作 题目描述 链表是软件中一种最基本的数据结构,它是用链式存储结构实现数据存储的线性表。它较顺序表(如数组)而言在插入和删除数据时不必移动其后的大批量元素。现在给你一些整数,然后会频繁地插入和删除其中的某些元素&a…...
手机卡限速丨中国移动5G变3G,网速500kb
以下猜测错误,又有新的猜测:河南移动的卡出省限速。可能是因为流量结算。 “2024年7月1日起,中国移动集团内部将开启跨省流量结算” 在深圳四五年了,之前没有过,就从上个月开始。11月底解除限速,12月刚开…...
种花问题算法
假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。 给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 …...
Node.js-Mongodb数据库
MongoDB MongoDB是什么? MongoDB是一个基于分布式文件存储的数据库 数据库是什么? 数据库(DataBase)是按照数据结构来组织、存储和管理数据的应用程序(软件) 数据库作用? 对数据进行增、删…...
Nginx
目录 基本介绍 Nginx核心功能 Nginx下载&安装&启动 配置防火墙 Nginx常用命令 Nginx配置文件 全局块 events块 http块 http全局块 server 块 检查配置信息 快速入门 安装JDK 安装Tomcat 反向代理分析 Location语法规则 反向代理配置-Location实例 …...
CTF-PWN: 全保护下格式化字符串利用 [第一届“吾杯”网络安全技能大赛 如果能重来] 赛后学习(没思路了)
通过网盘分享的文件:如果能重来.zip 链接: https://pan.baidu.com/s/1XKIJx32nWVcSpKiWFQGpYA?pwd1111 提取码: 1111 --来自百度网盘超级会员v2的分享漏洞分析 格式化字符串漏洞,在printf(format); __int64 sub_13D7() {char format[56]; // [rsp10h] [rbp-40h]…...
HTML5系列(7)-- Web Storage 实战指南
前端技术探索系列:HTML5 Web Storage 实战指南 🗄️ 致读者:本地存储的新纪元 👋 前端开发者们, 今天我们将深入探讨 HTML5 中的 Web Storage 技术,这是一个强大的本地存储解决方案,让我们能…...
RocketMQ: 保证消息的可靠性投递
概述 在分布式系统中,消息队列作为异步通信的重要组件,其可靠性和稳定性至关重要RocketMQ 是阿里巴巴开源的一款高性能、高可靠性的分布式消息中间件,广泛应用于各种场景,如交易订单处理、日志收集、流计算等 RocketMQ 的可靠性…...
消息传递神经网络(Message Passing Neural Networks, MPNN)
消息传递神经网络(Message Passing Neural Networks, MPNN) 一、引言二、消息传递框架概述1.消息传递阶段(1)消息生成与传播-message(2)消息聚合-aggregate(3)消息更新-update&#…...
Python干货总结篇:列表、字典、集合、元组的区别与用途
前言: 更详细知识点,搞懂列表、字典、集合、元组到底是什么,可关注主页文章:Python知识点精汇! 目录 一、特点与用途 1.列表:a[ ] 2.集合:a{ } 3.字典:a{key:value} 4.元组&am…...
vue.js学习(day 18)
实例:面经基础版...
【Gitlab】CICD使用minio作为分布式缓存
1、安装minio 下载适合自己系统版本的安装文件https://dl.min.io/server/minio/release/windows-amd64/ yum install xxx.rpm 2、配置/etc/profile export MINIO_ACCESS_KEYroot [ui登录账号] export MINIO_SECRET_KEYminioDev001 [ui登录密码] export MINIO_OPTS"…...
医院管理系统
私信我获取源码和万字论文,制作不易,感谢点赞支持。 医院管理系统 摘要 随着信息互联网信息的飞速发展,医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求,创建了一个计…...
编译器优化技术
方法内联 逃逸分析 公共子表达式消除 数据边界检查消除...
高斯消元——acwing
题目一:高斯消元解线性方程组 883. 高斯消元解线性方程组 - AcWing题库 分析 代码 #include<bits/stdc.h> using namespace std;const int N 110; const double eps 1e-6; // 注意了double, 和1e-6 ,,这样才是double的0 int n;double a[N][N];int guass…...
华为关键词覆盖应用市场ASO优化覆盖技巧
在我国的消费者群体当中,华为的品牌形象较高,且产品质量过硬,因此用户基数也大。与此同时,随着影响力的增大,华为不断向外扩张,也逐渐成为了海外市场的香饽饽。作为开发者和运营者,我们要认识到…...
[代码随想录06]哈希表的使用,有效字母异位词,两数组交集,快乐数,两数之和
前言 哈希表是什么?一句话带你理解,简单来说我们对于杂乱的数据,怎么快速找到数据,如何做呢?一般的做法就是遍历复杂度为o(N)去找寻一个数据,但是吧,我们这样思考的话,还是花了大量时…...
linux网络抓包工具
linux网络抓包工具 一、tcpdump1.1 基本用法1.2 龙芯平台实例操作 二、wireshark2.1 主要功能2.2 龙芯平台实例操作 一、tcpdump tcpdump 指令可列出经过指定网络界面的数据包文件头,可以将网络中传送的数据包的 “头” 完全截获下来提供分析。它支持针对网络层、协…...
运维工程师.云计算工程师面试题.考试题
《(全国)运维自动化阶段第1套卷》 卷面总分 题号 单选题 90 题分 得分 一、单选题(每题2分,共计70分;得分____) 1. 下面哪个选项可以做变量名称?( ) A、if B、123abc C、for D、User_Name 2. 哪种数据类型可以做增,删,改相关操作?( ) A、字符串 B、列表 C、元…...
递归1——递归入门
目录 1.递归 2.递归的基本题目 2.1.题目一——P5739 【深基7.例7】计算阶乘 - 洛谷 | 计算机科学教育新生态 2.2.题目二——B2064 斐波那契数列 - 洛谷 | 计算机科学教育新生态 2.3.题目三——B2142 求 123...N 的值 - 洛谷 | 计算机科学教育新生态 2.4.题目四——B2144…...
XuperChain核心流程
04-XuperChain核心流程 0 XuperChain架构图 核心框架 Xuper Chain主要由 Xuper Core 这个核心引擎来构建。Xuper Core 分为三个部分: 基础组件:日志、存储、监控等关键组件,以及密码学库等基本组件。 核心组件:包括共识、合约、账…...
2024.12.2工作复盘
1.今天学了什么? 简单的写了一篇博客,是关于参数校验的问题,参数校验,一个是前后端校验到底一不一致,一个是绕过前端校验,看后台的逻辑到底能不能校验住。 2.今天解决了什么问题? 3.今天完成…...
关于Vscode配置Unity环境时的一些报错问题(持续更新)
第一种报错: 下载net请求超时(一般都会超时很正常的) 实际时并不需要解决,它对你的项目毫无影响 第二种报错: .net版本不匹配 解决:(由于造成问题不一样,所以建议都尝试一次&…...
微信小程序——文档下载功能分享(含代码)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
长短期记忆网络 (LSTM) 简介
文章目录 一、说明二、传统 RNN 的问题三、为什么梯度消失?四、长短期记忆网络简介五、忘记门六、Update Gate (Input Gate)七、Output Gate八、数学上的内存九、从 LSTM 到 Transformer十、总结 一、说明 机器学习取得进步的领域之一是自然语言处理。对于用于机器…...
【电子通识】USB Type-C线缆为什么有的用到E-Marker芯片
USB Type-C接口具备数据传输、充电(基于USB PD协议)和音频视频传输能力。但是,上述功能都有强弱之别,并因此衍生出了无数种规格的USB Type-C线缆。 如下所示直接搜索就可以看到,虽然都是Type-C接口,但存在很多不同种类的线缆规格。 以数据传输为例,USB Type-C可选USB2.0…...
【故障处理系列--移动云云盘根目录在线扩容】
移动云云盘根目录扩容 **目的:**测试harbor仓库服务器的根目录能否在线扩容 1、移动云控制台系统盘扩容 这里以我自己的虚拟机演示 2、查看分区的文件类型 3、安装growpart工具 rootgitlab-cli:~# apt install cloud-guest-utils -y rootgitlab-cli:~# apt ins…...
混沌工程/混沌测试/云原生测试/云平台测试
背景 私有云/公有云/混合云等具有复杂,分布式,环境多样性等特点,许多特殊场景引发的线上问题很难被有效发现。所以需要引入混沌工程,建立对系统抵御生产环境中失控条件的能力以及信心,提高系统面对未知风险得能力。 …...
CQ 社区版 2024.11 | 新增“审批人组”概念、可通过SQL模式自定义审计图表……
CloudQuery 社区 11 月新版本来啦!本月版本依旧是 CUG(CloudQuery 用户组)尝鲜版的更新。 针对审计模块增加了 SQL 模式自定义审计图表;在流程模块引入了“审批人组”概念。此外,在 SQL 编辑器、连接管理等模块都涉及…...
【maven-4】IDEA 配置本地 Maven 及如何使用 Maven 创建 Java 工程
IntelliJ IDEA(以下简称 IDEA)是一款功能强大的集成开发环境,广泛应用于 Java 开发。下面将详细介绍如何在 IDEA 中配置本地 Maven,并创建一个 Maven Java 工程,快速上手并高效使用 Maven 进行 Java 开发。 1. Maven …...
c语言结构体
c语言结构体 1. 结构体的定义 在C语言中,结构体是一种用户自定义的数据类型,它允许你将不同类型的数据组合成一个单一的实体。结构体的定义以struct关键字开头,后面跟着结构体标签(可以省略,但为了方便后续引用&#…...
洛谷二分题
P1024 [NOIP2001 提高组] 一元三次方程求解 题目描述 有形如:𝑎𝑥3𝑏𝑥2𝑐𝑥𝑑0ax3bx2cxd0 这样的一个一元三次方程。给出该方程中各项的系数(𝑎,ᵄ…...
vue3的项目目录和关键文件
注意换插件 vue2的是 Vetur ;vue3的是volar 这里注意volar插件已更名为Vue - Official vite.config.js 放跟vite配置相关的内容 区别于vue2;vue2是vue.config.js;vue2是基于webpack的,vue3是基于vite的 main.js import { creat…...
rabbitmq原理及命令
目录 一、RabbitMQ原理1、交换机(Exchange)fanoutdirecttopicheaders(很少用到) 2、队列Queue3、Virtual Hosts4、基础对象 二、RabbitMQ的一些基本操作:1、用户管理2、用户角色3、vhost4、开启web管理接口5、批量删除队列 一、Ra…...
洛谷 P1308 [NOIP2011 普及组] 统计单词数 C语言
题目: https://www.luogu.com.cn/problem/P1308 复制Markdown 展开 题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 现在,请你编程实现…...
vue基础之5:vue数据代理、事件处理、事件修饰符、键盘事件
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
RK3568平台开发系列讲解(PWM篇)sysyfs 操作 pwm 原理讲解
🚀返回专栏总目录 文章目录 一、高精度定时器介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 📢使用 sysfs 和内核 API 函数对硬件 PWM 进行控制, 而当硬件 PWM 不够用的时候, 可以使用 GPIO 来模拟实现 PWM, 也可以称之为软件 PWM, 软件 PWM 是通过软件编程实…...
python 练习题
目录 1,输入三个整数,按升序输出 2,输入年份及1-12月份,判断月份属于大月,小月,闰月,平月,并输出本月天数 3,输入一个整数,显示其所有是素数因子 4&#…...