PySpark案例实战

一、前言介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、基础准备

在这里插入图片描述

# 导包
from pyspark import SparkConf,SparkContext
#创建SparkConf类对象
conf=SparkConf().setMaster("local[*]").setAppName("test_spark_app")
#基于SparkXConf类对象创建SparkContext对象
sc=SparkContext(conf=conf)
#打印PySpark的运行版本
print(sc.version)
#停止SparkContext对象的运行(停止pySpark程序)
sc.stop()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、数据输入

from pyspark import SparkConf,SparkContext
 
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
# 通过parallelize方法将Python对象加载到Spark内,成为RDD对象
rdd1=sc.parallelize([1,2,3,4,5])
rdd2=sc.parallelize((1,2,3,4,5))
rdd3=sc.parallelize("abcdefg")
rdd4=sc.parallelize({1,2,3,4,5})
rdd5=sc.parallelize({"key1":"value1","key2":"value2"})
 
#如果要查看RDD里面有什么内容,需要用collect()方法
print(rdd1.collect())
print(rdd2.collect())
print(rdd3.collect())
print(rdd4.collect())
print(rdd5.collect())
 
 
sc.stop()

注意:字符串返回的是[‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’] 字典返回的是[‘key1’,‘key2’]

在这里插入图片描述
读取hello.txt的内容:

在这里插入图片描述

from pyspark import SparkConf,SparkContext
 
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
# # 通过parallelize方法将Python对象加载到Spark内,成为RDD对象
# rdd1=sc.parallelize([1,2,3,4,5])
# rdd2=sc.parallelize((1,2,3,4,5))
# rdd3=sc.parallelize("abcdefg")
# rdd4=sc.parallelize({1,2,3,4,5})
# rdd5=sc.parallelize({"key1":"value1","key2":"value2"})
#
# #如果要查看RDD里面有什么内容,需要用collect()方法
# print(rdd1.collect())
# print(rdd2.collect())
# print(rdd3.collect())
# print(rdd4.collect())
# print(rdd5.collect())
 
 
#用textFile方法,读取文件数据加载到Spark内,成为RDD对象
rdd=sc.textFile("C:/Users/GYH/Desktop/data/pyspark_heima/hello.txt")
print(rdd.collect())
sc.stop()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、数据计算

3.1 map方法


from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
 
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
# 准备一个RDD
rdd=sc.parallelize([1,2,3,4,5])
 
#通过map方法将全部数据都乘以10
def func(data):
    return data*10
 
rdd2=rdd.map(func) #(T) -> U
                   #(T) -> T
print(rdd2.collect())
#链式调用
 

在这里插入图片描述
注意:

import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置

代码中:

 def func(data):
     return data*10

可以替换成lambda

rdd2=rdd.map(lambda x:x*10)

完整代码:


from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
 
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
# 准备一个RDD
rdd=sc.parallelize([1,2,3,4,5])
 
#通过map方法将全部数据都乘以10
# def func(data):
#     return data*10
 
rdd2=rdd.map(lambda x:x*10) #(T) -> U
                            #(T) -> T
print(rdd2.collect())
#链式调用
 

在这里插入图片描述
链式调用 可以直接使用.的方式

rdd2=rdd.map(lambda x:x*10).map(lambda x:x+5)

完整代码:

from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
 
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
# 准备一个RDD
rdd=sc.parallelize([1,2,3,4,5])
 
#通过map方法将全部数据都乘以10
# def func(data):
#     return data*10
 
rdd2=rdd.map(lambda x:x*10).map(lambda x:x+5) #(T) -> U
                            #(T) -> T
print(rdd2.collect())
#链式调用
 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 flatMap方法

在这里插入图片描述
在这里插入图片描述


from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
 
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
# 准备一个RDD
rdd=sc.parallelize(["itheima itcast 666","itheima itheima it cast","python itheima"])
#需求,RDD数据里面的一个个单词提取出来
rdd2=rdd.map(lambda x:x.split(" "))
rdd1=rdd.flatMap(lambda x:x.split(" "))
print(rdd1.collect())
print(rdd2.collect())

flatMap算子

计算逻辑和map一样

可以比map多出,接触一层嵌套的功能

在这里插入图片描述

3.3 reduceByKey算子

reduceBeKey中的聚合逻辑是:

[1,2,3,4,5] 然后聚合函数:lambda a,b:a+b


a  b

1+2=3

    3+3=6

      6+4=10

          10+5=15
from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
 
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
#准备一个RDD
rdd =sc.parallelize([('男',99),('男',88),('女',99),('女',66)])
# 求男生和女生两组的成绩之和
rdd2=rdd.reduceByKey(lambda a,b:a+b)
print(rdd2.collect())

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 数据计算练习案例

要求:

# 完成单词计数统计
# 1.构建执行环境入口对象
# 2.读取数据文件
# 3.取出全部单词
# 4.将所有单词都转换为二元元组,单词为Key value 设置为1
# 5.分组并求和
# 6.打印输出

在这里插入图片描述

# 完成单词计数统计
# 1.构建执行环境入口对象
from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
#2.读取数据文件
rdd=sc.textFile("C:/Users/GYH\Desktop/data/pyspark_heima/hello.txt")
#3.取出全部单词
word_rdd=rdd.flatMap(lambda x:x.split(" "))
# print(word_rdd.collect())
 
#4.将所有单词都转换为二元元组,单词为Key value 设置为1
word_with_one_rdd=word_rdd.map(lambda word:(word,1))
# print(word_with_one_rdd.collect())
#5.分组并求和
result=word_with_one_rdd.reduceByKey(lambda a,b:a+b)
#6打印输出
print(result.collect())

在这里插入图片描述

3.5 filter方法

在这里插入图片描述
在这里插入图片描述

from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
#准备一个RDD
rdd=sc.parallelize([1,2,3,4,5])
# 对RDD的数据进行过滤
rdd2=rdd.filter(lambda num:num%2==0)
 
print(rdd2.collect())

在这里插入图片描述

3.6 distinct方法

在这里插入图片描述
在这里插入图片描述

from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
#准备一个RDD
rdd=sc.parallelize([1,1,3,3,5,5,7,8,8,9,10])
#对RDD的数据进行去重
rdd2=rdd.distinct()
print(rdd2.collect())

在这里插入图片描述

3.7 sortBy方法

在这里插入图片描述
在这里插入图片描述
rdd.sortBy(func,ascending=Flase,numPartition=1)

#func(T)–>U:告知按照rdd中的哪一个数据进行排序,比如lambda x:x[1]表示按照rdd中的第二列元素进行排序

#ascending True升序 Flase降序

#numPartitions:用多少分区排序


from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
#1.读取文件
rdd=sc.textFile("C:/Users/GYH/Desktop/data/pyspark_heima/hello.txt")
#2.取出全部单词
word_rdd=rdd.flatMap(lambda x:x.split(" "))
#3.将所有单词都转换为二元元组,单词为Key,value设置为1
word_with_one_rdd=word_rdd.map(lambda word:(word,1))
#4.分组并求和
ressult_rdd=word_with_one_rdd.reduceByKey(lambda a,b:a+b)
print(ressult_rdd.collect())
#5.对结果进行排序
final_rdd=ressult_rdd.sortBy(lambda x:x[1],ascending=False,numPartitions=1)
print(final_rdd.collect())

在这里插入图片描述

3.8 数据计算-练习案例2

在这里插入图片描述

from pyspark import SparkConf,SparkContext
import os
import json
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
# TODO 需求1 城市销售额排名
# 1.1 读取文件到RDD
file_rdd=sc.textFile("C:/Users/GYH/Desktop/data/pyspark_heima/orders.txt")
# 1.2 取出一个JSON字符串
json_str_rdd=file_rdd.flatMap(lambda x:x.split("|"))
# print(json_str_rdd)
# 1.3 将一个个JSON字符串转换为字典
dict_rdd=json_str_rdd.map(lambda x:json.loads(x))
print(dict_rdd.collect())
# 1.4 取出城市和销售数据
# (城市,销售额)
city_with_money_rdd=dict_rdd.map(lambda x:(x['areaName'],int(x['money'])))
# 1.5 按城市分组按销售聚合
city_result_edd=city_with_money_rdd.reduceByKey(lambda a,b:a+b)
# 1.6 按销售额聚合结果进行排序
result1_rdd=city_result_edd.sortBy(lambda x:x[1],ascending=False,numPartitions=1)
print(f"需求1的结果是{result1_rdd.collect()}")
 
# TODO 需求2:取出城市有哪些商品类别在销售
# 2.1 取出全部的商品类别
category_rdd=dict_rdd.map(lambda x:x['category']).distinct()
print(f"需求2的结果{category_rdd.collect()}")
#2.2 对全部商品类别进行去重
# TODO 需求3
# 3.1过滤北京市的数据
beijing_data_rdd=dict_rdd.filter(lambda x:x['areaName']=='北京')
# 3.2 取出全部商品类别
result3_rdd=beijing_data_rdd.map(lambda x:x['category']).distinct()
print(f"需求3的结果:{result3_rdd.collect()}")
# 3.3 进行商品类别去重

在这里插入图片描述

在这里插入图片描述

四、数据输出输出为Python对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


数据输出的方法

collect 将RDD内容转换为list

reduce 对RDD内容进行自定义聚合

take 取出RDD的前N个元素组成list

count 统计RDD元素个数

from pyspark import SparkConf,SparkContext
import os
import json
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
sc=SparkContext(conf=conf)
 
#准备RDD
rdd=sc.parallelize([1,2,3,4,5])
# collect算子,输出RDD为list的对象
rdd_list:list=rdd.collect()
print(rdd_list)
print(type(rdd_list))
# reduce 算子,对RDD进行两两聚合
num=rdd.reduce(lambda a,b:a+b)
print(num)
# take算子,取出RDDN个元素,组成list返回
take_list=rdd.take(3)
print(take_list)
# count,统计rdd内有多少条数据,返回值为数字
number_count=rdd.count()
print(f"rdd内有{number_count}个元素")
sc.stop()

在这里插入图片描述

五、数据输出到文件中

1、下载hadoop3.3.0压缩包
百度网盘:链接:https://pan.baidu.com/s/1y4a2w4D8zCzYKEDY9aPWtw
提取码:1234
hadoop3.3.0解压到任意位置即可
2、将haoop3.3.0的bin文件夹下的 hadoop.dll 复制到C:\Windows\System32中

在这里插入图片描述

在这里插入图片描述
在pycharm中添加如下代码

os.environ['HADOOP_HOME']="E:/spark/hadoop-3.3.0"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、综合案例

在这里插入图片描述

读取文件转换成RDD,并完成:

打印输出:热门搜索时间段(小时精度)Top3

打印输出:统计黑马程序员关键字在哪个时段被搜索最多

将数据转换为JSON格式,写出文件
from pyspark import SparkConf,SparkContext
import os
import json
os.environ['PYSPARK_PYTHON']="C:/Users/GYH/AppData/Local/Programs/Python/Python310/python.exe" #python解释器的位置
os.environ['HADOOP_HOME']="E:/spark/hadoop-3.3.0"
conf=SparkConf().setMaster("local[*]").setAppName("test_spark")
conf.set("spark.default.parallelism","1")
sc=SparkContext(conf=conf)
 
# 读取文件转换成RDD
# TODO 需求1:热门城市时间段TOP3(小时精度)
file_rdd=sc.textFile("C:/Users/GYH/Desktop/data/pyspark_heima/SogouQ.txt")
#1.1取出全部时间并转换为小时
#1.2转换为(小时,1)的二元元组
#1.3Key分组聚合Value
#1.4排序(降序)
#1.5取前3
result1=file_rdd.map(lambda x:x.split("\t")).\
    map(lambda x:x[0][:2]).\
    map(lambda x:(x,1)).\
    reduceByKey(lambda a,b:a+b).\
    sortBy(lambda x:x[1],ascending=False,numPartitions=1).\
    take(3)
print(f"需求1的结果:{result1}")

在这里插入图片描述
TODO 需求2:热门搜索词TOP3

# TODO 需求2:热门搜索词TOP3
# 2.1 取出全部搜索词
# 2.2 (,1) 二元元组
# 2.3 分组聚合
# 2.4 排序
# 2.5 TOP3
file_rdd=sc.textFile("C:/Users/GYH/Desktop/data/pyspark_heima/SogouQ.txt")
result2=file_rdd.map(lambda x:x.split('\t')).\
    map(lambda x:x[2]).\
    map(lambda x:(x,1)).\
    reduceByKey(lambda a,b:a+b).\
    sortBy(lambda x:x[1],ascending=False,numPartitions=1).\
    take(3)
print(f"需求2的结果:{result2}")

在这里插入图片描述
TODO 需求3:统计黑马程序员关键字在什么时段被搜索的最多

# TODO 需求3:统计黑马程序员关键字在什么时段被搜索的最多
# 3.1 过滤内容 只能保留黑马程序员关键字
# 3.2 转换为(小时,1)的二元元组
# 3.3 Key分组聚合Value
# 3.4 排序(降序)
# 3.5 取前1
file_rdd=sc.textFile("C:/Users/GYH/Desktop/data/pyspark_heima/SogouQ.txt")
result3=file_rdd.map(lambda x:x.split("\t")).\
    filter(lambda x:x[2]=='黑马程序员').\
    map(lambda x:(x[0][:2],1)).\
    reduceByKey(lambda a,b:a+b).\
    sortBy(lambda x:x[1],ascending=False,numPartitions=1).\
    take(1)
print(f"需求3的结果{result3}")

TODO 需求4:将数据转换为JSON格式,写到文件中

# TODO 需求4:将数据转换为JSON格式,写到文件中
file_rdd=sc.textFile("C:/Users/GYH/Desktop/data/pyspark_heima/SogouQ.txt")
# 4.1 转换为JSON格式的RDD
# 4.2 写出为文件
file_rdd.map(lambda x:x.split("\t")).\
   map(lambda x:{"time":x[0],"user_id":x[1],"key_word":x[2],"rank1":x[3],"rank2":x[4],"url":x[5]}).\
   saveAsTextFile("C:/Users/GYH/Desktop/data/pyspark_heima/output1_JSON")

打开output1_JSON文件夹下的part_00000
在这里插入图片描述
成功写入:

在这里插入图片描述

七、分布式集群运行

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/470565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PCL 极大似然估计法拟合平面

目录 一、算法原理1、极大似然估计2、拟合过程3、参考文献二、代码实现三、结果展示一、算法原理 1、极大似然估计 在以最小二乘法为基础的估计算法中, 所有的参数都是确定值;而实际上,测量数据与未知参数都具有一定的随机性。这就导致了最小二乘法估计质量的缺陷以及对白噪…

整型数组按个位值排序 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素&#xf…

机器学习——编程实现从零构造训练集的决策树

自己搭建一棵决策树【长文预警】 忙了一个周末就写到了“构建决策树”这一步,还没有考虑划分测试集、验证集、“缺失值、连续值”,预剪枝、后剪枝的部分,后面再补吧(挖坑) 第二节内容:验证集划分\k折交叉…

线性代数基础概念和在AI中的应用

基本概念 线性代数是数学的一个分支,专注于向量、向量空间(也称为线性空间)、线性变换和矩阵的研究。这些概念在数据科学、人工智能、工程学和物理学等多个领域都有广泛应用。以下是这些基本概念的详细解释和它们在数据处理和AI中的应用。 …

Jackson 2.x 系列【2】生成器 JsonGenerator

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 前言2. 案例演示2.1 创建 JsonFactory2.2 创建 JsonGenerator2.3 写入操作2.4 查…

期权波动率是什么?怎么计算?

期权波动率 历史波动率:基于历史行情计算出来的历史波动率 我们现在站在现实时点B回顾过去,从A到B这段时间的历史行情我们是知道的,但是基于过去一段时间,标的价格的历史数据计算出来的波动率,就是历史波动率&#x…

分布式搜索引擎elasticsearch专栏二

上一篇的传送门: 分布式搜索引擎elasticsearch专栏一-CSDN博客 这一篇博文主要讲解elasticsearch的数据搜索功能。下面会分别使用DSL和RestClient实现搜索。 1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsea…

Mac nvm install failed python: not found

报错 $>./configure --prefix/Users/xxx/.nvm/versions/node/v12.22.12 < ./configure: line 3: exec: python: not found nvm: install v12.22.12 failed!解决方法 到 App 文件夹&#xff0c;并且打开 cd /System/Applications/Utilities/ open .记得改完 Rosetta 之…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果 一、简单介绍 二、简单卡通漫画风格效果实现原理 A、边缘蒙版的处理说明&#xff1…

FPGA控制AD7606_AD7606解读

目录 一、AD7606解读二、引脚说明三、时序图 一、AD7606解读 AD7606特点&#xff1a; 8通道同步采样模拟通道数为8分辨率&#xff1a;16bit&#xff0c;即最小采样的电压为5V/(2^16) 0,00007V&#xff0c;即数字量的1就代表模拟量的0,00007V&#xff0c;2代表0,00014V有效位数…

鸿蒙开发实战:【系统服务管理部件】

简介 samgr组件是OpenHarmony的核心组件&#xff0c;提供OpenHarmony系统服务启动、注册、查询等功能。 系统架构 图 1 系统服务管理系统架构图 目录 /foundation/systemabilitymgr ├── samgr │ ├── bundle.json # 部件描述及编译文件 │ ├── frameworks …

linux之centos7vmware虚拟机的安装

目录 一、下载合适的vmware和操作系统镜像安装文件 来自引用文章的软件下载本片文章使用的软件下载 二、根据教程进行安装 三、网络配置解说 四、配置网络 编辑虚拟机网络 对VMWARE虚拟机网络进行配置 设置虚拟机网络为NAT模式 设置自定义网络为 VMnet8(NAT模式) 编辑li…

[ C++ ] STL---list的使用指南

目录 list简介 list的常用接口 构造函数 赋值运算符重载 迭代器 容量相关接口 元素访问接口 修改相关接口 头插push_front() 头删pop_front() 尾插push_back() 尾删pop_back() insert() erase() list的迭代器失效 list简介 1. list是可以以O(1)的时间复杂度在任意…

机器人现有力控技术检索

文章目录 力控技术1 基本柔顺力控1.1 直接力控1.2 间接力控1.2.1 被动和主动柔顺控制1.2.2 混合力位控制1.2.3 阻抗&导纳力控1.2.3.1 原理1.2.3.2 区别和联系1.2.3.3 工程应用 1.2.4 阻抗力控1.2.5 导纳力控 2 先进力控2.1 自适应力控2.2 鲁棒力控2.3 学习力控 3 智能力控3…

【LabVIEW FPGA入门】使用FPGA实现串行同步接口(SSI)

SSI&#xff08;串行同步接口&#xff09;是连接绝对位置传感器和控制器的广泛应用的串行接口。SSI利用控制器发出一个时钟脉冲序列&#xff0c;初始化传感器的门限输出。 传感器不断更新位置数据&#xff0c;并传送到移位寄存器中。在每一个时钟脉冲序列之间&#xff…

HTML_CSS学习:超链接、列表、表格、表格常用属性

一、超链接_唤起指定应用 1.相关代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>超链接_唤起指定应用</title> </head> <body><a href"tel:10010">电话联…

JavaScript初学心得

JavaScript JavaScript原名是livescript&#xff0c;是由美国网景开发的一种用于对网页操作的脚本语言 网页操作&#xff08;图片切换&#xff09; 脚本语言&#xff08;不需要编译 sql,html,css,javascript,由某种解释器直接可以运行&#xff09; livescript也是面向对象的…

基于Go的开源全栈测试工具RunnerGo使用详解

前言 测试人员目前广泛使用的测试工具如Postman、JMeter等&#xff0c;如Postman缺少对API的性能测试部分、JMeter则缺少测试报告和测试脚本的统一管理系统及UI测试功能&#xff0c;而RunnerGo的出现填补了传统测试工具的空缺&#xff0c;为测试人员提供了一个可以满足测试全流…

计算机毕业设计-基于Python的“哔哩哔哩视频网”视频热度分析

概要 在21世纪的今天&#xff0c;网络发展越来越快&#xff0c;网上的娱乐方式也越来越多样化&#xff0c;而如今在网上观看视频消遣时间越来越受到大众的青睐。Bilibili视频网站是现当下年轻人最受欢迎的一个视频网站。有调查显示&#xff0c;直到2019年的10月份&#xff0c;B…

基于python车辆故障管理系统的设计与实现flask-django-nodejs-php

网络发展前景无限&#xff0c;及早与网络结合&#xff0c;与信息时代同步&#xff0c;与高科技汇合&#xff0c;定会给社会各行各业的发展注入新鲜的活力。站在网络时代的前夜&#xff0c;我们清晰地听到了网络时代的宣言&#xff1a;谁掌握了网络&#xff0c;谁就掌握了未来。…
最新文章