国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用eclipse實現MapReduce實踐編程---統(tǒng)計不同手機號的用戶使用的總流量

這篇具有很好參考價值的文章主要介紹了使用eclipse實現MapReduce實踐編程---統(tǒng)計不同手機號的用戶使用的總流量。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

MapReduce實踐編程

實驗一

問題描述

根據用戶手機上網的行為記錄,基于 MapReduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。其中,數據記錄的字段描述如下。

序號 字段 字段類型 描述
0 reportTime long 記錄報告時間戳
1 msisdn String 手機號碼
2 apmac String AP mac
3 acmac String AC mac
4 host String 訪問的網址
5 siteType String 網址種類
6 upPackNum long 上行數據包數,單位:個
7 downPackNum long 下行數據包數,單位:個
8 upPayLoad long 上行總流量,要注意單位的轉換:byte
9 downPayLoad long 下行總流量。要注意單位的轉換:byte
10 httpStatus String HTTP Response

數據文件具體內容如下:

1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 iface.qiyi.co 視頻網站 24 27 2481 24681 200

1363157995052 13826544101 5C-0E-8B-C7-F1-E0:CMCC 120.197.40.4 s19.# 站點統(tǒng)計 4 0 264 0 200

1363157991076 13926435656 20-10-7A-28-CC-0A:CMCC 120.196.100.99 rank.ie.sogou.com 搜索引擎 2 4 132 1512 200

1363154400022 13926251106 5C-0E-8B-8B-B1-50:CMCC 120.197.40.4 2052.flash2-http.qq.com 綜合門戶 4 0 240 0 200

1363157993044 18211575961 94-71-AC-CD-E6-18:CMCC-EASY 120.196.100.99 iface.qiyi.com 視頻網站 15 12 1527 2106 200

1363157993055 13560439658 C4-17-FE-BA-DE-D9:CMCC 120.196.100.99 sug.so.# 信息安全 18 15 1116 954 200

1363157995033 15920133257 5C-0E-8B-C7-BA-20:CMCC 120.197.40.4 sug.so.# 信息安全 20 20 3156 2936 200

1363157983019 13719199419 68-A1-B7-03-07-B1:CMCC-EASY 120.196.100.82 input.shouji.sogou.com 搜索引擎 4 0 240 0 200

1363157984041 13660577991 5C-0E-8B-92-5C-20:CMCC-EASY 120.197.40.4 s19.# 站點統(tǒng)計 24 9 6960 690 200

1363157973098 15013685858 5C-0E-8B-C7-F7-90:CMCC 120.197.40.4 rank.ie.sogou.com 搜索引擎 28 27 3659 3538 200

1363157986029 15989002119 E8-99-C4-4E-93-E0:CMCC-EASY 120.196.100.99 www.umeng.com 站點統(tǒng)計 3 3 1938 180 200

1363157992093 13560439658 C4-17-FE-BA-DE-D9:CMCC 120.196.100.99 rank.ie.sogou.com 搜索引擎 15 9 918 4938 200

1363157986041 13480253104 5C-0E-8B-C7-FC-80:CMCC-EASY 120.197.40.4 sug.so.# 信息安全 3 3 180 180 200

1363157984040 13602846565 5C-0E-8B-8B-B6-00:CMCC 120.197.40.4 2052.flash2-http.qq.com 綜合門戶 15 12 1938 2910 200

1363157995093 13922314466 00-FD-07-A2-EC-BA:CMCC 120.196.100.82 img.qfc.cn 站點統(tǒng)計 12 12 3008 3720 200

1363157982040 13502468823 5C-0A-5B-6A-0B-D4:CMCC-EASY 120.196.100.99 y0.ifengimg.com 綜合門戶 57 102 7335 110349 200

1363157986072 18320173382 84-25-DB-4F-10-1A:CMCC-EASY 120.196.100.99 input.shouji.sogou.com 搜索引擎 21 18 9531 2412 200

1363157990043 13925057413 00-1F-64-E1-E6-9A:CMCC 120.196.100.55 t3.baidu.com 搜索引擎 69 63 11058 48243 200

1363157988072 13760778710 00-FD-07-A4-7B-08:CMCC 120.196.100.82 t3.baidu.com 搜索引擎 2 2 120 120 200

1363157985079 13823070001 20-7C-8F-70-68-1F:CMCC 120.196.100.99 t3.baidu.com 搜索引擎 6 3 360 180 200

1363157985069 13600217502 00-1F-64-E2-E8-B1:CMCC 120.196.100.55 t3.baidu.com 搜索引擎 18 138 1080 186852 200

實驗過程

我們需要從數據中統(tǒng)計出每個用戶的所有請求的使用的總流量,即統(tǒng)計用戶所有請求的上行流量(索引為8)、下行流量(索引為9)之和。得到結果后輸出到單獨的文件中。

一、MapReduce程序編寫

1、創(chuàng)建maven項目

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

2、導入hadoop依賴包

在pom.xml中添加以下依賴:

   <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.30</version>
    </dependency>

如圖所示:
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
導入后記得ctrl+s保存一下。

3、創(chuàng)建類
3.1 Flow類

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

在Flow類中寫入如下代碼:

package com.njupt.flowsum;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.Writable;
public class Flow implements Writable{

    private String phone;     //手機號
    private long  up;       //上行流量
    private long down;     //下線流量

    private long sum;     //總流量

    //無參構造函數
    public Flow() {
    }

    //有參構造函數
    public Flow(String phone, long up, long down) {
        super();
        this.phone = phone;
        this.up = up;
        this.down = down;
        this.sum=this.up+this.down;
    }

    @Override
    public void write(DataOutput out) throws IOException {

        out.writeUTF(this.phone);
        out.writeLong(this.up);
        out.writeLong(this.down);
        out.writeLong(this.sum);
    }

    @Override
    public void readFields(DataInput in) throws IOException {


        this.phone=in.readUTF();
        this.up=in.readLong();
        this.down=in.readLong();
        this.sum=in.readLong();

    }

    @Override
    public String toString() {

        return   this.up+"\t"+this.down+"\t"+this.sum;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public long getUp() {
        return up;
    }

    public void setUp(long up) {
        this.up = up;
    }

    public long getDown() {
        return down;
    }

    public void setDown(long down) {
        this.down = down;
    }
    public long getSum() {
        return sum;
    }
}

如圖所示:
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
在FlowSumMapper類中輸入以下代碼:

package com.njupt.flowsum;

import java.io.IOException;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.commons.lang3.StringUtils;

public class FlowSumMapper extends Mapper<LongWritable, Text, Text, Flow>{

    @Override
    protected void map(LongWritable key, Text value,
                       Context context)
            throws IOException, InterruptedException {
        //拿一行數據
        String line = value.toString();
        //切分成各個字段
        String[] fields = StringUtils.split(line, "\t");

        //拿到我們需要的字段
        String phone = fields[1];
        long  up= Long.parseLong(fields[8]);
        long  down = Long.parseLong(fields[9]);
        //封裝數據為kv并輸出        <phone:flow>
        context.write(new Text(phone), new Flow(phone,up,down));
    }
}

如圖所示:
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

3.3 FlowSumReducer類

創(chuàng)建FlowSumReducer類

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
在FlowSumReducer中輸入以下代碼:

package com.njupt.flowsum;

import java.io.IOException;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class FlowSumReducer extends Reducer<Text, Flow, Text, Flow> {

    @Override
    protected void reduce(Text key, Iterable<Flow> values,
                          Context context)
            throws IOException, InterruptedException {
        //  <phone:{flow,flow,flow,flow}>
        // reduce中的業(yè)務邏輯就是遍歷values,然后進行累加求和再輸出
        long up = 0;//
        long down = 0;
        for (Flow flow : values) {
            up += flow.getUp();
            down += flow.getDown();
        }
        context.write(key, new Flow(key.toString(), up, down));

    }

}


如圖所示:
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

3.4 FlowSumRunner類

創(chuàng)建FlowSumRunner類

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
在FlowSumRunner類中輸入以下代碼:

package com.njupt.flowsum;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class FlowSumRunner extends Configured implements Tool{


    @Override
    public int run(String[] args) throws Exception {

        Configuration conf = new Configuration();

        Job job = Job.getInstance(conf);

        job.setJarByClass(FlowSumRunner.class);

        job.setMapperClass(FlowSumMapper.class);
        job.setReducerClass(FlowSumReducer.class);

        //設置map程序的輸出key、value
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(Flow.class);

        //設置   輸出 key、value
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Flow.class);

        FileInputFormat.setInputPaths(job, new Path(args[0]));//輸入數據路徑     /flow/input

        //檢查一下參數所指定的輸出路徑是否存在,如果已存在,先刪除
        Path output = new Path(args[1]);
        FileSystem fs = FileSystem.get(conf);
        if(fs.exists(output)){
            fs.delete(output, true);
        }

        FileOutputFormat.setOutputPath(job, new Path(args[1]));//輸出數據路徑   /flow/output

        return job.waitForCompletion(true)?0:1;
    }


    public static void main(String[] args) throws Exception {
        int  status = ToolRunner.run(new Configuration(), new FlowSumRunner(), args);
        System.exit(status);
    }
}

如圖所示:
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

4、將項目打包成jar包

查看porn.xml中是否包含這行代碼:

<packaging>jar</packaging>

如圖所示:
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
將flowsum項目打包:
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
在終端出現build success即可,如圖所示:
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
對flowsum進行刷新
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
此時target文件夾中就會出現打包好的jar包。
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
將該jar包改名成fs.jar,放入一個你可以找到的文件夾中。
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

二、提交到hadoop集群測試

1、 創(chuàng)建數據

創(chuàng)建一個記事本文件,命名為“data.txt”。

將數據復制到該文件中并保存,如圖所示:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

2、啟動hadoop集群
2.1 啟動虛擬機node1、node2、node3

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

2.2 啟動hadoop

輸入以下命令:

start-dfs.sh
start-yarn.sh

如圖所示:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

2.3 在瀏覽器打開hadoop界面

http://192.168.198.130:9870 (其中192.168.198.130換成自己的node1的IP地址)

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

查看文件夾:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

3、測試MapReduce
3.1 用Xftp上傳數據文件和jar包

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

3.2 node1上cd到/export/server/hadoop-3.3.0/share/hadoop/mapreduce目錄
cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce
3.3 輸入以下命令在hdfs上創(chuàng)建/flow/input文件夾
hdfs dfs -mkdir -p /flow/input

如圖所示:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

可以在瀏覽器查看創(chuàng)建情況

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

3.4 輸入以下命令,將data.txt上傳到input文件夾中
hdfs dfs -put data.txt /flow/input

如圖所示:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

可以在瀏覽器查看上傳情況:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

3.5 輸入以下命令運行fs.jar統(tǒng)計不同手機號的用戶使用的總流量
hadoop jar fs.jar com.njupt.flowsum.FlowSumRunner /flow/input /flow/output

如圖所示:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java

3.6 可以輸入以下命令查看輸出結果
hdfs dfs -text /flow/output/part-r-00000

如圖所示:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
image-20231020202354304.png&pos_id=img-ha3JxHz7-1698633023279)

也可以在瀏覽器下載結果文件:

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
20231020202416090.png&pos_id=img-2pQkSVHA-1698633023279)

,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java
,基于 mapreduce編程模型設計程序統(tǒng)計不同手機號的用戶使用的總流量。,eclipse,mapreduce,java文章來源地址http://www.zghlxwxcb.cn/news/detail-860592.html

到了這里,關于使用eclipse實現MapReduce實踐編程---統(tǒng)計不同手機號的用戶使用的總流量的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 實驗5 MapReduce初級編程實踐(2)——編寫程序實現對輸入文件的排序

    通過實驗掌握基本的MapReduce編程方法; 掌握用MapReduce解決一些常見的數據處理問題,包括數據去重、數據排序和數據挖掘等。 操作系統(tǒng):Linux(建議Ubuntu16.04或Ubuntu18.04) Hadoop版本:3.1.3 現在有多個輸入文件,每個文件中的每行內容均為一個整數。要求讀取所有文件中的整數

    2024年02月09日
    瀏覽(20)
  • MapReduce 編程實例:詞頻統(tǒng)計

    MapReduce 編程實例:詞頻統(tǒng)計

    啟動hadoop服務,輸入命令: start-all.sh (1)在虛擬機上創(chuàng)建文本文件 在export目錄下,創(chuàng)建wordcount目錄,在里面創(chuàng)建words.txt文件,向words.txt輸入下面內容。 輸入內容: (2)上傳文件到HDFS指定目錄 創(chuàng)建 /wordcount/input 目錄,執(zhí)行命令: hdfs dfs -mkdir -p /wordcount/input 在Hadoop WebUI界面

    2024年02月03日
    瀏覽(23)
  • 使用Eclipse創(chuàng)建MapReduce工程

    使用Eclipse創(chuàng)建MapReduce工程

    (1)掌握以Exlipse創(chuàng)建MapReduce工程 (1)使用CentOS的Linux操作系統(tǒng)搭建的3個節(jié)點 (2)使用Eclipse軟件作為編程軟件 (3)使用插件hadoop-eclipse-plugin-2.x.x.jar (1)配置MapReduce環(huán)境 (2)新建MapReduce工程 4.1配置MapReduce環(huán)境 (1)添加Hadoop插件 找到eclipse的安裝路徑,然后將插件移動到

    2024年02月10日
    瀏覽(15)
  • MapReduce初級編程實踐

    MapReduce初級編程實踐

    ubuntu18.04虛擬機和一個win10物理主機 編程環(huán)境 IDEA 虛擬機ip:192.168.1.108 JDK:1.8 使用Java編程一個WordCount程序,并將該程序打包成Jar包在虛擬機內執(zhí)行 首先使用IDEA創(chuàng)建一個Maven項目 在pom.xml文件內引入依賴和打包為Jar包的插件: 編寫對應的程序: MyProgramDriver類用于執(zhí)行程序入口

    2023年04月26日
    瀏覽(22)
  • 實驗5:MapReduce 初級編程實踐

    由于CSDN上傳md文件總是會使圖片失效 完整的實驗文檔地址如下: https://download.csdn.net/download/qq_36428822/85709497 實驗內容與完成情況: (一)編程實現文件合并和去重操作 對于兩個輸入文件,即文件 A 和文件 B,請編寫 MapReduce 程序,對兩個文件進行合并, 并剔除其中重復的內

    2024年02月07日
    瀏覽(23)
  • 【大數據實驗五】 MapReduce初級編程實踐

    【大數據實驗五】 MapReduce初級編程實踐

    1實驗目的 1.通過實驗掌握基本的MapReduce編程方法; 2.掌握用MapReduce解決一些常見的數據處理問題,包括數據去重、數據排序和數據挖掘等。 2實驗平臺 已經配置完成的Hadoop偽分布式環(huán)境。 (1)操作系統(tǒng):Linux(Ubuntu18.04) (2)Hadoop版本:3.1.3 3實驗內容和要求 1.編程實現文件

    2024年02月03日
    瀏覽(156)
  • MapReduce實現詞頻統(tǒng)計

    MapReduce實現詞頻統(tǒng)計

    1.詞頻統(tǒng)計任務要求 準備兩個txt文件分別為wordfile1.txt和wordfile2.txt,內容如下: 2.在Eclipse中創(chuàng)建項目 我的eclipse在usr/local/eclipse目錄下,使用如下命令啟動eclipse 創(chuàng)建一個java工程命名為WordCount,點擊next加載jar包 選中Libraries點擊Add External JARS加載jar包 為了編寫一個MapReduce程序,

    2023年04月21日
    瀏覽(26)
  • 大數據技術原理與應用實驗4——MapReduce初級編程實踐

    大數據技術原理與應用實驗4——MapReduce初級編程實踐

    鏈接: 大數據技術原理與應用實驗1——熟悉常用的HDFS操作 鏈接: 大數據技術原理與應用實驗2——熟悉常用的Hbase操作 鏈接: 大數據技術原理與應用實驗3——NoSQL和關系數據庫的操作比較 (1)通過實驗掌握基本的MapReduce編程方法; (2)掌握用MapReduce解決一些常見的數據處理

    2024年02月06日
    瀏覽(32)
  • 大數據技術原理及應用課實驗5 :MapReduce初級編程實踐

    大數據技術原理及應用課實驗5 :MapReduce初級編程實踐

    目錄 一、實驗目的 二、實驗平臺 三、實驗步驟(每個步驟下均需有運行截圖) (一)編程實現文件合并和去重操作 (二)編寫程序實現對輸入文件的排序 (三)對給定的表格進行信息挖掘 四、實驗總結 五、優(yōu)化及改進(選做) 實驗5 ?MapReduce初級編程實踐 1. 通過實驗掌

    2024年01月21日
    瀏覽(29)
  • 云計算與大數據入門實驗四 —— MapReduce 初級編程實踐

    云計算與大數據入門實驗四 —— MapReduce 初級編程實踐

    通過實驗掌握基本的 MapReduce 編程方法 掌握用 MapReduce 解決一些常見的數據處理問題,包括數據去重、數據排序和數據挖掘等 (一)編程實現文件合并和去重操作 對于兩個輸入文件,即文件A和文件B,請編寫MapReduce程序,對兩個文件進行合并,并剔除其中重復的內容,得到一個

    2024年02月05日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包