大数据题目测试(一)

news2024/12/24 8:35:12

目录

一、环境要求

二、提交结果要求

三、数据描述

四、功能要求

1.数据准备

2.使用 Spark,加载 HDFS 文件系统 meituan_waimai_meishi.csv 文件,并分别使用 RDD和 Spark SQL 完成以下分析(不用考虑数据去重)。

(1)配置环境

(2)RDD加载文件

①统计每个店铺分别有多少商品(SPU)。

②统计每个店铺的总销售额。

③统计每个店铺销售额最高的前三个商品,输出内容包括店铺名,商品名和销售额,其中销售额为 0 的商品不进行统计计算,例如:如果某个店铺销售为 0,则不进行统计。

(3) SparkSQL解析上面的需求

3.创建 HBase 数据表

4. 请 在 Hive 中 创 建 数 据 库 spu_db ,在 该 数 据 库 中 创 建 外 部 表 ex_spu 指 向/app/data/exam 下的测试数据 ;创建外部表 ex_spu_hbase 映射至 HBase 中的 exam:spu表的 result 列族

5. 统计查询


一、环境要求

Hadoop+Hive+Spark+HBase 开发环境。

二、提交结果要求

1.必须提交源码或对应分析语句,如不提交则不得分。

2.带有分析结果的功能,请分析结果的截图与代码一同提交。

三、数据描述

        meituan_waimai_meishi.csv 是美团外卖平台的部分外卖 SPU(Standard Product Unit ,标准产品单元)数据,包含了外卖平台某地区一时间的外卖信息。具体字段说明如下:

四、功能要求

1.数据准备

        请在 HDFS 中创建目录/app/data/exam,并将 meituan_waimai_meishi.csv 文件传到该目录。并通过 HDFS 命令查询出文档有多少行数据。

# 开启hadoop集群
start-all.sh

# 递归创建目录
hdfs dfs -mkdir -p /app/data/exam

# 上传文件到目录
hdfs dfs -put ./meituan_waimai_meishi.csv /app/data/exam

# 查看文件总行数
hdfs dfs -cat /app/data/exam/meituan_waimai_meishi.csv | wc -l
983

# 查看头文件
hdfs dfs -head  /app/data/exam/meituan_waimai_meishi.csv 
spu_id,shop_id,shop_name,category_name,spu_name,spu_price,spu_originprice,month_sales,praise_num,spu_unit,spu_desc,spu_image

2.使用 Spark,加载 HDFS 文件系统 meituan_waimai_meishi.csv 文件,并分别使用 RDD和 Spark SQL 完成以下分析(不用考虑数据去重)。

(1)配置环境

   //创建上下文环境配置对象
    val conf: SparkConf = new SparkConf().setMaster("local[1]").setAppName("SparkSQL01_Demo")
    //创建 SparkSession 对象
    val spark: SparkSession = SparkSession.builder().config(conf).getOrCreate()
    val sc: SparkContext = spark.sparkContext

    import spark.implicits._
    import org.apache.spark.sql.functions._
    import org.apache.spark.sql.types._

(2)RDD加载文件

val fileRDD: RDD[String] = sc.textFile("hdfs://lxm147:9000/app/data/exam/meituan_waimai_meishi.csv")
    println(fileRDD.count())// 983

①统计每个店铺分别有多少商品(SPU)。

split(",")与split(",",-1)的区别:

   val a: RDD[String] = sc.parallelize(List("a,b,c", "a,b,c,d", "a,b,,,"))
    a.map(x => x.split(",")).foreach(x => println(x.toList))
    /*
    List(a, b, c, d)
    List(a, b, c)
    List(a, b)*/

    a.map(x => x.split(",", -1)).foreach(x => println(x.toList))
    /*
     List(a, b, c, d)
     List(a, b, c)
     List(a, b,,,)*/

    val b: RDD[String] = sc.parallelize(List("a,b,c", "a,b,c,d", "a,b,,,g"))
    b.map(x => x.split(",", -1)).foreach(x => println(x.toList))
    /*
     List(a, b, c, d)
     List(a, b, c)
     List(a, b,,, g)*/

 过滤数据:

// TODO 过滤数据
val spuRDD: RDD[Array[String]] = fileRDD
    .filter(x => !x.startsWith("spu_id")) // 过滤首行
    .map(x => x.split(",", -1)) // 拆分csv文件
    .filter(x => x.length == 12)

// 第一行已经过滤掉了
println(spuRDD.count())// 982

spuRDD.foreach(x => println(x.toList))

/*List(1400227781, 966888510343524, 蒙阁轩羊肉焖面, 凉菜, 酸辣鱼皮, 22.0, 22.0, 0, 0, , , http://p0.meituan.net/xianfudwm/1debda2746fe8cca6e786b110c70e86b210255.jpg)
  List(1400267216, 966888510343524, 蒙阁轩羊肉焖面, 凉菜, 蒜片乳瓜, 12.0, 12.0, 0, 0, , , http://p0.meituan.net/xianfudwm/0f3de1f3e412d65210ce725b80dfaa76141214.jpg)
  List(1400227743, 966888510343524, 蒙阁轩羊肉焖面, 凉菜, 椒圈花生米, 20.0, 20.0, 0, 0, , , http://p1.meituan.net/xianfudwm/a16f929f8a121d36a7daa5a9e835afe7180379.jpg)
*/

计算店铺SPU:

spuRDD.map(x => (x(2), 1))
      .reduceByKey(_ + _) // 相同的店铺名为key,后面的1累加
      .foreach(println)
    /*
    (万和祥羊肉馆户县店,29)
    (青木土豆粉,17)
    (老城红油米线(丰润美食城店),23)
    (蒙阁轩羊肉焖面,71)
    (冰火虾神小龙虾(西影路店),102)
    (喜辣屋泡泡鱼(小寨店),48)
    (鄠邑印象小厨,85)
    (老台门(百脑汇店),72)
    (悦香驴蹄子面(曲江大悦城店),18)
    (尚品米洛克,36)
    (一菜一味,40)
    (人人家美食城,113)
    (中国兰州拉面(乐居场店),136)
    (云锦港式烧腊饭,42)
    (煲状元煲仔饭,32)
    (三顾冒菜(曼城国际店),92)
    (强社包子铺,26)*/

②统计每个店铺的总销售额。

  import scala.util._
  spuRDD.map(x => (x(2), Try(x(5).toDouble).toOption.getOrElse(0.0) * Try(x(7).toInt).toOption.getOrElse(0)))
//    如果转换出错就toOption,如果没有值,就返回0.0;如果x(7)转换异常就返回0
      .reduceByKey(_ + _) // 相同店铺的销售额累加
      .filter(x => x._2 > 0) // 过滤掉没有销售额的店铺
      .foreach(println)
/*
(万和祥羊肉馆户县店,633.0)
(蒙阁轩羊肉焖面,972.0)
(冰火虾神小龙虾(西影路店),4919.099999999999)
(喜辣屋泡泡鱼(小寨店),3901.0)
(鄠邑印象小厨,3676.0)
(老台门(百脑汇店),6250.199999999999)
(悦香驴蹄子面(曲江大悦城店),222.0)
(一菜一味,2297.0)
(中国兰州拉面(乐居场店),842.0)
(云锦港式烧腊饭,144.0)
(煲状元煲仔饭,3728.0)
(三顾冒菜(曼城国际店),9497.7)
(强社包子铺,3389.08)
*/

③统计每个店铺销售额最高的前三个商品,输出内容包括店铺名,商品名和销售额,其中销售额为 0 的商品不进行统计计算,例如:如果某个店铺销售为 0,则不进行统计。

方法一:

  // todo 方法一:
    spuRDD.map(x => (x(2), x(3), Try(x(5).toDouble).toOption.getOrElse(0.0) * Try(x(7).toInt).toOption.getOrElse(0)))
      .filter(_._3 > 0)
      .groupBy(x => x._1) // 相同的店铺分组,遍历出一个二元组
      .flatMapValues(_.toList.sortBy(-_._3).take(3)) // 二元组中第二个元素的第三个值进行排序
      .map(_._2) // 只遍历二元组中第二个元素
      .foreach(println)

方法二:

// TODO 方法三:
spuRDD.map(x => (x(2), x(4), Try(x(5).toDouble).toOption.getOrElse(0.0) * Try(x(7).toInt).toOption.getOrElse(0)))
      .filter(x => x._3 > 0)
      /*
    店铺名        商品名  销售额
    (蒙阁轩羊肉焖面,排骨焖面,90.0)
    (蒙阁轩羊肉焖面,羊肉焖面,286.0)
    (蒙阁轩羊肉焖面,酸菜炒土豆粉,16.0)
    (蒙阁轩羊肉焖面,姜汁皮蛋,13.0)
    (蒙阁轩羊肉焖面,西红柿鸡蛋拌面,14.0)*/
      .groupBy(x => x._1)
      // 分组后就是一个二元组
      // (强社包子铺,
      // CompactBuffer((强社包子铺,芹菜酸菜包,253.00000000000003),
      // (强社包子铺,胡萝卜丝,64.0),
      // (强社包子铺,蒸红薯,30.0),
      // (强社包子铺,菜疙瘩,77.0)))
      .map(x => {
        val shop_name: String = x._1;
        val topThree: List[(String, String, Double)] = x._2.toList.sortBy(-_._3).take(3)
        val shopNameAndSumMoney: List[String] = topThree.map(it => it._2 + "\t" + it._3)
        shopNameAndSumMoney.flatMap(x => x.split(","))
        (shop_name, shopNameAndSumMoney)
      })

方法三:

spuRDD.map(x => (x(2), x(4), Try(x(5).toDouble).toOption.getOrElse(0.0) * Try(x(7).toInt).toOption.getOrElse(0)))
      .filter(_._3 > 0)
      .groupBy(_._1)      
    // TODO 这里使用flatMap和mapValues都可以
    // todo flatMap中进来的是key和value的二元组
    // todo flatMapValues中进来的是二元组中的value

     .flatMap(x => x._2.toList.sortBy(-_._3).take(3))
    /*(强社包子铺,香葱大肉包,329.6)
    (强社包子铺,香葱大肉包,329.6)
    (强社包子铺,芹菜酸菜包,253.00000000000003)*/

    // .mapValues(value => value.toList.sortBy(x => 0 - (x._3)).take(3))
    /*
    (万和祥羊肉馆户县店,List(
(万和祥羊肉馆户县店,水盆羊杂,240.0),
(万和祥羊肉馆户县店,辣子炒羊血,120.0), 
(万和祥羊肉馆户县店,优质水盆羊肉,96.0), 
(万和祥羊肉馆户县店,特色炒肉片(牛肉),78.0), 
(万和祥羊肉馆户县店,月牙烤饼,46.0), 
(万和祥羊肉馆户县店,烩羊肉,38.0), 
(万和祥羊肉馆户县店,素拼凉菜,15.0)))*/

    // TODO 这里使用flatMap和flatMap都可以
    // .flatMapValues(x=>x)
    /*
    (强社包子铺,(强社包子铺,香葱大肉包,329.6))
    (强社包子铺,(强社包子铺,香葱大肉包,329.6))
    (强社包子铺,(强社包子铺,芹菜酸菜包,253.00000000000003))*/

    // .flatMap(x => x._2)
    /*(强社包子铺,香葱大肉包,329.6)
    (强社包子铺,香葱大肉包,329.6)
    (强社包子铺,芹菜酸菜包,253.00000000000003)*/

    // .map(_._2)
    /*
    (强社包子铺,香葱大肉包,329.6)
    (强社包子铺,香葱大肉包,329.6)
    (强社包子铺,芹菜酸菜包,253.00000000000003)*/
    .foreach(println)

(3) SparkSQL解析上面的需求

// TODO SparkSQL操作
    val spuDF: DataFrame = spark.read.format("csv").option("header", value = true).option("inferSchema", value = true).load("hdfs://lxm147:9000/app/data/exam/meituan_waimai_meishi.csv")
    spuDF.printSchema()
    /*root
    |-- spu_id: integer (nullable = true)
    |-- shop_id: long (nullable = true)
    |-- shop_name: string (nullable = true)
    |-- category_name: string (nullable = true)
    |-- spu_name: string (nullable = true)
    |-- spu_price: double (nullable = true)
    |-- spu_originprice: double (nullable = true)
    |-- month_sales: integer (nullable = true)
    |-- praise_num: integer (nullable = true)
    |-- spu_unit: string (nullable = true)
    |-- spu_desc: string (nullable = true)
    |-- spu_image: string (nullable = true)*/

    spuDF.show(5,truncate = false)
    /*
    +----------+----------------+--------------------------+-------------+------------------------+---------+---------------+-----------+----------+--------+-----------------------------------------------+---------------------------------------------------------------------------+
    |spu_id    |shop_id         |shop_name                 |category_name|spu_name                |spu_price|spu_originprice|month_sales|praise_num|spu_unit|spu_desc                                       |spu_image                                                                  |
    +----------+----------------+--------------------------+-------------+------------------------+---------+---------------+-----------+----------+--------+-----------------------------------------------+---------------------------------------------------------------------------+
    |907742996 |1036149152976425|冰火虾神小龙虾(西影路店)|折扣         |爆款麻辣小龙虾 ±20g/只 1|55.06    |88.8           |3          |0         |斤      |克重:±20g/只,不吃龙虾辜负胃,狂撸三斤不嫌累!|http://p1.meituan.net/wmproduct/022b0eec55c894ee64b6faa4382163a91424176.jpg|
    |1355635876|1036149152976425|冰火虾神小龙虾(西影路店)|折扣         |爆款蒜香小龙虾          |59.5     |88.8           |1          |0         |null    |克重:±20g只,不吃龙虾辜负胃,狂撸三斤不嫌累。  |http://p0.meituan.net/wmproduct/d2528c410dc183eeb61299803611dcca169083.jpg |
    |844976891 |1036149152976425|冰火虾神小龙虾(西影路店)|折扣         |麻辣小龙虾 ±20g/只 1斤  |59.5     |88.8           |4          |0         |斤      |克重:±20g/只,不吃龙虾辜负胃,狂撸三斤不嫌累!|http://p0.meituan.net/wmproduct/af63ec8d3af74546331c868f978956c21628800.jpg|
    |844977553 |1036149152976425|冰火虾神小龙虾(西影路店)|折扣         |麻辣小龙虾 ±25g/只 1斤  |70.15    |98.8           |4          |0         |斤      |克重:±25g/只,不吃龙虾辜负胃,狂撸三斤不嫌累!|http://p0.meituan.net/wmproduct/af63ec8d3af74546331c868f978956c21628800.jpg|
    |898263414 |1036149152976425|冰火虾神小龙虾(西影路店)|折扣         |卤辣小龙虾 ±25g/只 1斤  |70.15    |98.8           |3          |0         |斤      |克重:±25g/只,不吃龙虾辜负胃,狂撸三斤不嫌累!|http://p1.meituan.net/wmproduct/989af3988e547e5448887f006ce2c85a1358387.jpg|
    +----------+----------------+--------------------------+-------------+------------------------+---------+---------------+-----------+----------+--------+-----------------------------------------------+---------------------------------------------------------------------------+
    */
    //   TODO  ①统计每个店铺分别有多少商品(SPU)。
    spuDF.createOrReplaceTempView("sputb")
       spark.sql("select shop_name,count(spu_name) as num from sputb group by shop_name").show(false)
    /*
     +----------------------------+---+
     |shop_name                   |num|
     +----------------------------+---+
     |冰火虾神小龙虾(西影路店)        |102|
     |悦香驴蹄子面(曲江大悦城店)      |18 |
     |蒙阁轩羊肉焖面                 |71 |
     |万和祥羊肉馆户县店              |29 |
     |一菜一味                      |40 |
     |尚品米洛克                     |36 |
     |鄠邑印象小厨                   |85 |
     |云锦港式烧腊饭                  |42 |
     |老城红油米线(丰润美食城店)       |23 |
     |人人家美食城                     |113|
     |喜辣屋泡泡鱼(小寨店)            |48 |
     |青木土豆粉                      |17 |
     |老台门(百脑汇店)                |72 |
     |三顾冒菜(曼城国际店)              |92 |
     |中国兰州拉面(乐居场店)          |136|
     |煲状元煲仔饭                    |32 |
     |强社包子铺                  |26 |
     +----------------------------+---+*/

    //   TODO  ②统计每个店铺的总销售额。
    spark.sql(
      """
        |select
        | shop_name,
        | sum(spu_price*month_sales) as sumMoney
        | from sputb
        | group by
        | shop_name
        |""".stripMargin)
         .show(false)
    /* +----------------------------+-----------------+
     |shop_name                   |sumMoney         |
     +----------------------------+-----------------+
     |冰火虾神小龙虾(西影路店)  |4919.099999999999|
       |悦香驴蹄子面(曲江大悦城店)|222.0            |
       |蒙阁轩羊肉焖面              |972.0            |
       |万和祥羊肉馆户县店          |633.0            |
       |一菜一味                    |2297.0           |
       |尚品米洛克                  |0.0              |
       |鄠邑印象小厨                |3676.0           |
       |云锦港式烧腊饭              |144.0            |
       |老城红油米线(丰润美食城店)|0.0              |
       |人人家美食城                |0.0              |
       |喜辣屋泡泡鱼(小寨店)      |3901.0           |
       |青木土豆粉                  |0.0              |
       |老台门(百脑汇店)          |6250.199999999999|
       |三顾冒菜(曼城国际店)      |9497.7           |
       |中国兰州拉面(乐居场店)    |842.0            |
       |煲状元煲仔饭                |3728.0           |
       |强社包子铺                  |3389.08          |
       +----------------------------+-----------------+*/

    //    TODO ③统计每个店铺销售额最高的前三个商品,输出内容包括店铺名,商品名和销售额中销售额为 0 的商品不进行统计计算,例如:如果某个店铺销售为 0,则不进行统计。
    // todo 开窗函数
    spark.sql(
      """
        |select
        | t.shop_name,
        | t.spu_name,
        | t.money
        |from (
        |select
        | shop_name,
        | spu_name,
        | spu_price*month_sales as money,
        | row_number() over(partition by shop_name order by spu_price*month_sales desc) rn
        |from sputb
        |where month_sales <> 0 ) t
        |where t.rn <=3
        |""".stripMargin)
         .show(false)
    /*
    +----------------------------+----------------------------+-----+
    |shop_name                   |spu_name                    |money|
    +----------------------------+----------------------------+-----+
    |冰火虾神小龙虾(西影路店)  |冰火虾神套餐A                       |396.0|
    |冰火虾神小龙虾(西影路店)  |冰火虾神套餐A                       |396.0|
    |冰火虾神小龙虾(西影路店)  |麻辣小龙虾 ±25g/只 1斤              |280.6|
    |悦香驴蹄子面(曲江大悦城店)|经典全套                            |60.0 |
    |悦香驴蹄子面(曲江大悦城店)|经典全套                            |60.0 |
    |悦香驴蹄子面(曲江大悦城店)|油泼四合一                          |36.0 |
    |蒙阁轩羊肉焖面              |瘦肉焖面                         |352.0|
    |蒙阁轩羊肉焖面              |羊肉焖面                         |286.0|
    |蒙阁轩羊肉焖面              |鸡块焖面                         |176.0|
    |万和祥羊肉馆户县店          |水盆羊杂                          |240.0|
    |万和祥羊肉馆户县店          |辣子炒羊血                          |120.0|
    |万和祥羊肉馆户县店          |优质水盆羊肉                        |96.0 |
    |一菜一味                    |肉沫粉条                            |273.0|
    |一菜一味                    |鱼香肉丝                            |190.0|
    |一菜一味                    |米饭                                |182.0|
    |鄠邑印象小厨                |红烧肉                      |384.0|
    |鄠邑印象小厨                |老碗鱼                      |348.0|
    |鄠邑印象小厨                |茶树菇爆牛柳                |234.0|
    |云锦港式烧腊饭              |叉烧拼玫瑰豉油鸡+烤鸭蛋+例汤|72.0 |
    |云锦港式烧腊饭              |叉烧拼玫瑰豉油鸡+烤鸭蛋+例汤|72.0 |
    +----------------------------+----------------------------+-----+*/

3.创建 HBase 数据表

        在 HBase 中创建命名空间(namespace)exam,在该命名空间下创建 spu 表,该表下有1个列族 result。

开启服务:

[root@lxm147 data]# zkServer.sh start
JMX enabled by default
Using config: /opt/soft/zookeeper345/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

[root@lxm147 data]# start-hbase.sh
running master, logging to /opt/soft/hbase235/logs/hbase-root-master-lxm147.out
: running regionserver, logging to /opt/soft/hbase235/logs/hbase-root-regionserver-lxm147.out

[root@lxm147 data]# nohup hive --service metastore &
[root@lxm147 data]# nohup hive --service hiveserver2 &

[root@lxm147 data]# jps
3362 SparkSubmit
6338 Jps
6068 RunJar
1589 DataNode
1814 SecondaryNameNode
5110 QuorumPeerMain
2248 NodeManager
1449 NameNode
2111 ResourceManager
5359 HMaster
5567 HRegionServer

[root@lxm147 data]# hbase shell

创建命名空间、表和列簇:

hbase(main):003:0> create_namespace 'exam'
Took 0.2503 seconds                                                                                                                                                                 
hbase(main):004:0> list_namespace
NAMESPACE                                                                                                                                                                           
bigdata                                                                                                                                                                             
default                                                                                                                                                                             
exam                                                                                                                                                                                
hbase                                                                                                                                                                               
kb21                                                                                                                                                                                
5 row(s)
Took 0.0303 seconds

hbase(main):005:0> create 'exam:spu','result'
Created table exam:spu
Took 2.3437 seconds                                                                                                                                                                 
=> Hbase::Table - exam:spu

4. 请 在 Hive 中 创 建 数 据 库 spu_db ,在 该 数 据 库 中 创 建 外 部 表 ex_spu 指 向/app/data/exam 下的测试数据 ;创建外部表 ex_spu_hbase 映射至 HBase 中的 exam:spu表的 result 列族

show databases;
create database if not exists spu_db;
use spu_db;
-- 创建外部表
create external table if not exists ex_spu
(
    spu_id          string,
    shop_id         string,
    shop_name       string,
    category_name   string,
    spu_name        string,
    spu_price       double,
    spu_originprice double,
    month_sales     int,
    praise_num      int,
    spu_unit        string,
    spu_desc        string,
    spu_image       string
) row format delimited fields terminated by ","
    stored as textfile location "/app/data/exam"
    tblproperties ("skip.header.line.count" = "1");

set mapreduce.framework.name=local;
select count(*)
from ex_spu; -- 982

create external table if not exists ex_spu_hbase
(
    key    string,
    sales  double,
    praise int
) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    with serdeproperties ("hbase.columns.mapping" = ":key,result:sales,result:praise")
    tblproperties ("hbase.table.name" = "exam:spu");

5. 统计查询

① 统计每个店铺的总销售额 sales, 店铺的商品总点赞数 praise,并将 shop_id 和shop_name 的组合作为 RowKey,并将结果映射到 HBase。

insert into ex_spu_hbase
select concat(tb.shop_id, tb.shop_name) as key,
       tb.sales,
       tb.praise
from (
         select shop_id,
                shop_name,
                sum(spu_price * month_sales) as sales,
                sum(praise_num)              as praise
         from ex_spu
         group by shop_id, shop_name) tb;

select * from ex_spu_hbase;

② 完成统计后,分别在 hive 和 HBase 中查询结果数据。

hbase(main):002:0> scan 'exam:spu'

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计模式-day01

1&#xff0c;设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中&#xff0c;而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大&#xff08;Christopher Alexand…

React Native iOS打包详细步骤

一、在自己项目的iOS文件夹下新建一个文件夹取名bundle 二、将打包命令写到项目package.json文件里&#xff0c;终端执行 npm run bundle-ios 先添加如下&#xff08;注意&#xff1a;这里写的路径"./ios/bundle"就是上面bundle创建的文件夹&#xff09;&#xff1a…

C51单片机介绍

本文为学习51单片机的学习的基础&#xff0c;先介绍单片机是什么。所使用的单片机有什么资源。每一个功能的作用是什么。本文使用的是STC89C52RC 40I-PDIO40&#xff0c;故以此为基础研究学习。 C51单片机介绍 单片机的概述单片机的组成部分中央处理器程序存储器数据存储器定时…

图神经网络能做什么?

从概念上讲&#xff0c;我们可以将图神经网络的基本学习任务分为 5 个不同的方向&#xff1a; &#xff08;1&#xff09;图神 经网络方法&#xff1b; &#xff08;2&#xff09;图神经网络的理论理解&#xff1b; &#xff08;3&#xff09;图神经网络的可扩展性&#xff1b…

Git的进阶使用(二)

本篇文章旨在分享本人在学习Git时的随笔记&#x1f929; 文章目录 概述1、Git 分支1.1 主干分支1.2 其他分支1.2.1 创建分支1.2.2 查看分支1.2.3 切换分支1.2.4 删除分支 2、Git 合并2.1 主干分支2.2 其他分支2.3 合并分支 3、Git 冲突3.1 主干分支3.2 其他分支3.3 切换分支 -B…

Replika:AI智能聊天机器人

【产品介绍】 Replika&#xff0c;这个名字可能有点拗口&#xff0c;但如果你知道这是复制品Replica的同音变体&#xff0c;你即刻能明白这个产品的定位了。官方Luka公司定义它是你的AI朋友&#xff0c;默默学习你&#xff0c;最终成为你的复制品。它不像现在市面上各大厂的AI助…

《ChatGPT开发应用指南》,Datawhale开源了!

Datawhale发布 开源教程&#xff1a;HuggingLLM&#xff0c;Datawhale团队 随着ChatGPT的爆火&#xff0c;我们相信未来会有越来越多的大模型及类似OpenAI提供的服务出现&#xff0c;AI 正在逐渐平民化&#xff0c;将来每个人都可以利用大模型轻松地做出自己的AI产品。 Huggin…

【历史上的今天】3 月 23 日:网景创始人出生;FORMAC 语言的开发者诞生;PRMan 非商业版发布

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 3 月 23 日&#xff0c;在 141 年前的今天&#xff0c;1882 年 3 月 23 日&#xff0c;抽象代数之母艾米诺特&#xff08;Emmy Noether&#xff09;诞生。她的…

JUC-多线程(12. AQS-周阳)学习笔记

文章目录 1. 可重入锁1.1. 概述1.2. 可重入锁类型1.3. Synchronized 可重入实现机理 2. LockSupport2.1. LockSupport 是什么2.2. 3种线程等待唤醒的方法2.2.1 Object 的等待与唤醒2.2.2. Condition接口中的等待与唤醒2.2.3. 传统的 synchronized 和 Lock 实现等待唤醒通知的约…

本地搭建属于自己的ChatGPT:基于PyTorch+ChatGLM-6b+Streamlit+QDrant+DuckDuckGo

本地部署chatglm及缓解时效性问题的思路&#xff1a; 模型使用chatglm-6b 4bit&#xff0c;推理使用hugging face&#xff0c;前端应用使用streamlit或者gradio。 微调对显存要求较高&#xff0c;还没试验。可以结合LoRA进行微调。 缓解时效性问题&#xff1a;通过本地数据库…

YOLOv7如何提高目标检测的速度和精度,基于模型结构提高目标检测速度

目录 一、目标检测二、目标检测的速度和精度的权衡1、速度和精度的概念和定义2、如何评估目标检测算法的速度和精度3、速度和精度之间的权衡 三、基于模型结构提高目标检测速度1、Backbone网络的选择2、特征金字塔网络的设计3、通道注意力机制4、混合精度训练 一、目标检测 目…

光纤网卡传输速率和它的应用领域有哪些呢?通常会用到哪些型号网络变压器呢?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;常有客户问起光纤网卡该如何选用到合适的产品&#xff0c;选用时要注意到哪些事项&#xff0c;这节将结合配合到的网络变压器和大家一起探讨&#xff0c;希望对大家有些帮助。 1&#xff0e;光纤网卡传输速率与网络…

【教程】一文读懂 ChatGPT API 接入指南

ChatGPT 是一个基于自然语言处理技术的 API&#xff0c;它能够根据用户的输入&#xff0c;生成智能回复。结合当前最先进的AI技术&#xff0c;AP智能续写&承接上下文&#xff1b;可以回答各种问题&#xff0c;例如&#xff1a;历史&#xff0c;科学&#xff0c;文化&#x…

【越早知道越好】的道理——能够提高效率的【快捷键】

文章目录 1️⃣虚拟桌面⚜️第一步&#xff1a;打开任务视图⚜️第二步&#xff1a;创建桌面⚜️第三步&#xff1a;桌面切换⚜️第四步&#xff1a;桌面删除 2️⃣窗口切换3️⃣桌面分屏⚜️如何分屏 前言&#x1f9d1;‍&#x1f3a4;&#xff1a;作为程序员&#x1f468;‍&…

15天学习MySQL计划-多表联查(基础篇)第四天

15天学习MySQL计划&#xff08;多表联查&#xff09;第四天 1.多表查询 1.1概述 ​ 指从多张表中查询数据 ​ 在项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互…

大数据实战 --- 美团外卖平台数据分析

目录 开发环境 数据描述 功能需求 数据准备 数据分析 RDD操作 Spark SQL操作 创建Hbase数据表 创建外部表 统计查询 开发环境 HadoopHiveSparkHBase 启动Hadoop&#xff1a;start-all.sh 启动zookeeper&#xff1a;zkServer.sh start 启动Hive&#xff1a; nohup …

人工智能会影响测试工程师吗

并不是危言耸听 当下最火的是什么&#xff0c;那非ChatGPT莫属了&#xff0c;以ChatGPT为代表的各类AIGC工具&#xff0c;在不断颠覆我们的认知&#xff0c;不仅能完成律师&#xff0c;医学考试&#xff1b;还能画出一张精美的设计图&#xff0c;拿下艺术大赛一等奖。 以之对…

C#基础学习--反射和特性

元数据和反射 要使用反射&#xff0c;必须使用System.Reflection 命名空间 Type类 Type是一个抽象类&#xff0c;用来包含类型的特性&#xff0c;使用这个类的对象可以让我们获取程序使用的类型的信息 我们可以从Type对象中获取需要了解的有关类型的几乎所有信息 获取Type对象…

Node.js下载安装及环境配置教程

一、进入官网地址下载安装包 https://nodejs.org/zh-cn/download/ 选择对应你系统的Node.js版本&#xff0c;这里我选择的是Windows系统、64位 Tips&#xff1a;如果想下载指定版本&#xff0c;点击【以往的版本】&#xff0c;即可选择自己想要的版本下载 二、安装程序 &…

在 VSCode 中让 TypeScript 错误更漂亮且易于阅读

简介 TypeScript 是一种流行的编程语言&#xff0c;为 JavaScript 提供了静态类型和改进的错误检测。然而&#xff0c;随着类型的复杂性增加&#xff0c;错误的复杂性也增加了。这就是 Pretty TypeScript Errors VSCode 插件的用途&#xff0c;它可以在 Visual Studio Code 中…