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

  • <nobr id="94ta1"><xmp id="94ta1">

    【操作系統(tǒng)】c語言--進程調(diào)度算法(FCFS和SPN)

    這篇具有很好參考價值的文章主要介紹了【操作系統(tǒng)】c語言--進程調(diào)度算法(FCFS和SPN)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

    創(chuàng)作不易,本篇文章如果幫助到了你,還請點贊 關(guān)注支持一下?>??<)!!
    主頁專欄有更多知識,如有疑問歡迎大家指正討論,共同進步!
    ??c++系列專欄:C/C++零基礎(chǔ)到精通 ??

    給大家跳段街舞感謝支持!? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    【操作系統(tǒng)】c語言--進程調(diào)度算法(FCFS和SPN),c語言,算法,開發(fā)語言,筆記,學(xué)習(xí)

    c語言內(nèi)容??:

    專欄:c語言之路重點知識整合

    【c語言】全部知識點總結(jié)


    一、先到先服務(wù)進程調(diào)度算法

    先來先服務(wù)進程調(diào)度算法(FCFS)是按照進程到達(dá)的先后順序進行調(diào)度的算法。

    當(dāng)一個進程到達(dá)時,它會被放到進程隊列的末尾,并在前面等待其他進程執(zhí)行完畢。

    一旦輪到該進程執(zhí)行,它會一直執(zhí)行直到完成,或者被阻塞,或者需要等待I/O操作完成。

    #include <stdlib.h>
    #include <stdio.h>
    
    typedef struct 
    {   // 定義一個結(jié)構(gòu)體,里面包含的有一個進程相關(guān)的信息
    	char name[10];        //進程名稱 (輸入)
    	float arrivetime;     //到達(dá)時間 (輸入)
    	float servicetime;    //服務(wù)時間 (輸入)
    	float starttime;      //開始時間
    	float finishtime;     //結(jié)束時間
    	float zztime;        //周轉(zhuǎn)時間=finishtime-arrivetime
    	float dqzztime;      //帶權(quán)周轉(zhuǎn)時間=zztime/servicetime
    }pcb;
    
    
    //輸入進程信息
    void input(pcb* p, int N)    //p為pdb數(shù)組名, N為pcb數(shù)組的元素個數(shù)
    {
    	int i;
    	printf("\n");
    	printf("請輸入進程的名字  到達(dá)時間  服務(wù)時間:  (例如: 進程1 0 100)\n");
    	for (i = 0; i <= N - 1; i++)
    	{
    		printf("請輸入進程%d的信息:", i + 1);  // i=0時,輸入第1個進程相關(guān)信息
    		scanf("%s", &p[i].name);
    		scanf("%f", &p[i].arrivetime);
    		scanf("%f", &p[i].servicetime);
    	}
    }
    
    
    //排序: 按照進程的arrivetime(從小到大)對pcb數(shù)組中的N個進程進行排序
    void sort(pcb* p, int N)
    {
    	for (int i = 0; i < N - 1; i++)
    	{
    		for (int j = i + 1; j < N; j++)
    		{
    			if (p[i].arrivetime > p[j].arrivetime)
    			{
    				pcb temp;
    				temp = p[i];
    				p[i] = p[j];
    				p[j] = temp;
    			}
    		}
    	}
    }
    
    
    //運行
    void run(pcb* p, int N)
    {
    	int k;
    	for (k = 0; k <= N - 1; k++)
    	{
    		if (k == 0) //第1個進程
    		{
    			p[k].starttime = p[k].arrivetime; //第1個進程到達(dá)之后即可執(zhí)行
    			p[k].finishtime = p[k].starttime + p[k].servicetime;
    		}
    		else
    		{
    			p[k].starttime = (p[k - 1].finishtime >= p[k].arrivetime) ? p[k - 1].finishtime : p[k].arrivetime;
    			p[k].finishtime = p[k].starttime + p[k].servicetime;
    
    		}
    	}
    
    	for (k = 0; k <= N - 1; k++)
    	{
    		p[k].zztime = p[k].finishtime - p[k].arrivetime;
    		p[k].dqzztime = p[k].zztime / p[k].servicetime;
    	}
    }
    
    
    //顯示
    void Print(pcb* p, int N)
    {
    	int k;
    	printf("調(diào)用先來先服務(wù)算法以后進程運行的順序是: ");
    	printf("%s", p[0].name); //首先運行第一個進程p[0]
    	for (k = 1; k < N; k++)
    	{
    		printf("-->");
    		printf("%s", p[k].name); //輸出 -->p[k].name
    	}
    
    	printf("\n");
    	printf("具體進程調(diào)度信息:\n");
    	printf("進程名  到達(dá)時間  服務(wù)時間  開始時間  結(jié)束時間  周轉(zhuǎn)時間  帶權(quán)周轉(zhuǎn)時間\n");
    	for (k = 0; k <= N - 1; k++)
    	{
    		printf("%4s", p[k].name);
    		printf("%10.3f", p[k].arrivetime);
    		printf("%10.3f", p[k].servicetime);
    		printf("%10.3f", p[k].starttime);
    		printf("%10.3f", p[k].finishtime);
    		printf("%10.3f", p[k].zztime);
    		printf("%10.3f\n", p[k].dqzztime);
    	}
    }
    
    
    //先來先服務(wù)算法FCFS
    void FCFS(pcb* p, int N)
    {
    	sort(p, N);
    	run(p, N);
    	Print(p, N);
    	int k;
    	float Attime = 0; //平均周轉(zhuǎn)時間
    	float AQttime = 0; //平均帶權(quán)周轉(zhuǎn)時間
    	for (k = 0; k <= N - 1; k++)
    	{
    		Attime += p[k].zztime;
    		AQttime += p[k].dqzztime;
    	}
    	Attime = Attime / N;
    	AQttime = AQttime / N;
    	printf("調(diào)用先來先服務(wù)算法的平均周轉(zhuǎn)時間為:");
    	printf("%.3f\n", Attime);
    	printf("調(diào)用先來先服務(wù)算法的平均帶權(quán)周轉(zhuǎn)時間為:");
    	printf("%.3f\n", AQttime);
    }
    
    int main()
    {
    	pcb a[100]; //a為pcb數(shù)組   a[0]~a[N-1]對象第1個進程到第N個進程的信息
    	int N;      //N為進程數(shù)目
    	printf("\n");
    	printf("\n");
    	printf("<<----------先到先服務(wù)調(diào)度算法---------->>");
    	printf("\n");
    	printf("請輸入進程數(shù)目:");
    	scanf("%d", &N);
    	input(a, N); //a是pcb數(shù)組名,N是實際使用數(shù)組元素個數(shù)
    	FCFS(a, N); //fcfs模擬調(diào)度
    	return 0;
    }
    

    【操作系統(tǒng)】c語言--進程調(diào)度算法(FCFS和SPN),c語言,算法,開發(fā)語言,筆記,學(xué)習(xí)

    二、短進程優(yōu)先調(diào)度算法

    短進程優(yōu)先調(diào)度算法(SPN)是根據(jù)進程執(zhí)行時間短的優(yōu)先級進行調(diào)度的算法。
    當(dāng)一個進程到達(dá)時,系統(tǒng)會估算其執(zhí)行時間,如果短于當(dāng)前正在執(zhí)行的進程,那么該進程就會優(yōu)先執(zhí)行。如果有多個進程具有相同的最短執(zhí)行時間,那么默認(rèn)使用FCFS算法。

    #include <stdlib.h>
    #include <stdio.h>
    
    //定義一個結(jié)構(gòu)體:PCB
    
    typedef struct{
    char name[10];
    float arrivetime;
    float servicetime;
    float starttime;
    float finishtime;
    float zztime;
    float dqzztime;
    }pcb;
    
     //***輸入進程信息,將N個進程的信息寫入pcb型數(shù)組***
    void input(pcb *p,int N)
    {
    	int i;
    	printf("\n");
    	printf("請輸入進程的名字  到達(dá)時間  服務(wù)時間:  (例如: a 0 100)\n");
    
    	for(i=0; i <= N-1; i++)
    	{
    		printf("請輸入進程%d的信息:", i+1);
    		scanf("%s", &p[i].name);
    		scanf("%f", &p[i].arrivetime);
    		scanf("%f", &p[i].servicetime);
    	}
    }
    
    
    
     //***優(yōu)先級排序***
    void sort(pcb *p, int N)
    {
    	/*
    	1、對pcb型數(shù)組中的元素進行一個簡單的排序
    	找到優(yōu)先級最高的進程
    	并把其他進程也進行簡單排序,方便后續(xù)工作
    	*/
    
    	//排序: N次循環(huán),每次找到從i到N-1中優(yōu)先級最高的進程,放到p[i]
    	for(int i=0;i<=N-1;i++)
    	{
    		//循環(huán)比較剩余的變量    //排序后:從0~N-1  arrivetime增加 , arrivetime相同時, servicetime短的優(yōu)先
    		for(int j=i+1;j<N;j++)
    		{
    			if(p[i].arrivetime>p[j].arrivetime || (p[i].arrivetime==p[j].arrivetime && p[i].servicetime>p[j].servicetime) )
    			{
    				//p[j]的優(yōu)先級高于p[i],因此把p[j]放到p[i]
    				pcb temp;
    				temp = p[i];
    				p[i] = p[j];
    				p[j] = temp;
                 }
    		}
    	}
    
    	/*
    	2、每個進程運行完成之后,找到當(dāng)前時刻已經(jīng)到達(dá)的最短進程
    	P[0]優(yōu)先級最高,p[0].finishtime=p[0].arrivetime+p[0].servicetime
    	m!=0時:p[m].finishtime=p[m-1].finishtime+p[m].servicetime
    	*/
    
    	for(int m=0; m<N-1; m++)
    	{
    		if(m == 0)
    			p[m].finishtime = p[m].arrivetime + p[m].servicetime;
    		else
    			p[m].finishtime = ((p[m-1].finishtime >= p[m].arrivetime)? p[m-1].finishtime: p[m].arrivetime) + p[m].servicetime;
    
    		//(1)找到p[m].finishtime時刻哪些進程已經(jīng)到達(dá)
    		int i=0;  //i統(tǒng)計 p[m].finishtime時刻有幾個進程已經(jīng)到達(dá)
    		//從下一個進程p[m+1]開始尋找
    		for(int n = m+1; n <= N-1; n++)
    		{
    			if(p[n].arrivetime <= p[m].finishtime)
    				i++;
    			else
    				break;
    
    			    /*由于在第1步已經(jīng)對進程按照到達(dá)時間進行了排序
    			      故:當(dāng)p[n].arrivetime > p[m].finishtime時,
    				      說明p[n]進程和其后面的其他進程都未到達(dá)。
    				i的值為p[m].finishtime時刻已經(jīng)到達(dá)的進程數(shù)目。
    			   */
    		}
    
    		//(2)找到p[m].finishtime時刻已經(jīng)到達(dá)的最短進程
    		float min = p[m+1].servicetime;   //next進程服務(wù)時間為p[m+1].servicetime (初值)
    		int next = m+1;                   //next進程為m+1 (初值)
    		//p[m+1]至p[m+i]這i個已到達(dá)進程中找到最短進程
    		for(int k = m+1; k < m+i; k++)       //k為m+1 ~ m+i-1
    		{
    			//min的初值是p[m+1].servicetime, k+1為m+2 ~m+i
    			if(p[k+1].servicetime < min)
    			{
    				min = p[k+1].servicetime;
    				next = k+1;
    			}
    		}
    
    		//(3)把最短進程放在p[m+1]進程處
    		pcb temp;
    		temp=p[m+1];
    		p[m+1]=p[next];
    		p[next]=temp;
    	}
    }
    
    
    
    
    
    
     //***運行***
    void run(pcb *p, int N)
    {
    	int k;
    	//計算各進程的開始時間和結(jié)束時間
    	for(k=0; k <= N-1; k++)
         {
    		if(k==0) //第1個進程
    		{
    			p[k].starttime = p[k].arrivetime; //第1個進程到達(dá)之后即可執(zhí)行
    			p[k].finishtime = p[k].starttime + p[k].servicetime;
    		}
    		else
    		{
    			p[k].starttime = (p[k-1].finishtime >= p[k].arrivetime)? p[k-1].finishtime: p[k].arrivetime;
    			p[k].finishtime = p[k].starttime + p[k].servicetime;
    		}
    	}
    
    	//計算各進程的周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間
    	for(k=0; k<=N-1; k++)
    	{
    		p[k].zztime = p[k].finishtime - p[k].arrivetime;
    		p[k].dqzztime = p[k].zztime / p[k].servicetime;
         }
    }
    
    
    
    
    //***顯示***
    void Print(pcb *p, int N)
    {
    	int k;
    	printf("調(diào)用最短進程優(yōu)先算法以后進程運行的順序是: ");
    	printf("%s",p[0].name);
    	for(k=1;k<N;k++)
    	{
    		printf("-->");
    		printf("%s", p[k].name);
    	}
    
    	printf("\n");
    	printf("具體進程調(diào)度信息:\n");
    	printf("進程名  到達(dá)時間  服務(wù)時間  開始時間  結(jié)束時間  周轉(zhuǎn)時間  帶權(quán)周轉(zhuǎn)時間\n");
    	for(k=0; k<=N-1; k++)
    	{
    		printf("%4s", p[k].name);
    		//%m.nf:輸出共占m列,其中有n位小數(shù),如數(shù)值寬度小于m左端補空格
    		printf("%10.3f", p[k].arrivetime);
    		printf("%10.3f", p[k].servicetime);
    		printf("%10.3f", p[k].starttime);
    		printf("%10.3f", p[k].finishtime);
    		printf("%10.3f", p[k].zztime);
    		printf("%10.3f\n", p[k].dqzztime);
    	}
    }
    
    
    
    
    
    
     //***短進程優(yōu)先***
    void sjff(pcb *p,int N)
    {
    	sort(p, N);
    	run(p, N);
    	Print(p, N);
    	int k;
    	float Attime = 0; // 平均周轉(zhuǎn)時間
    	float AQttime = 0; //平均帶權(quán)周轉(zhuǎn)時間
    	for(k=0; k<=N-1; k++)
         {
    		Attime += p[k].zztime;
    		AQttime += p[k].dqzztime;
         }
    	Attime = Attime/N;
    	AQttime = AQttime/N;
    	printf("調(diào)用短進程優(yōu)先算法的平均周轉(zhuǎn)時間為:");
    	printf("%.3f\n", Attime);
    	printf("調(diào)用短進程優(yōu)先算法的平均帶權(quán)周轉(zhuǎn)時間為:");
    	printf("%.3f\n", AQttime);
    }
    
    
    
    
    
    //***主函數(shù)***
    int main()
    {
    	//定義一個pcb型數(shù)組a
    	pcb a[100];
    	int N;  //進程數(shù)目
    	printf("\n");
    	printf("\n");
    	printf("<<----------******短進程優(yōu)先調(diào)度算法******---------->>");
    	printf("\n");
    	printf("輸入進程數(shù)目:");
    	scanf("%d", &N);
    	input(a, N);
    	sjff(a, N);
    	return 0;
    }
    
    

    【操作系統(tǒng)】c語言--進程調(diào)度算法(FCFS和SPN),c語言,算法,開發(fā)語言,筆記,學(xué)習(xí)


    【操作系統(tǒng)】c語言--進程調(diào)度算法(FCFS和SPN),c語言,算法,開發(fā)語言,筆記,學(xué)習(xí)文章來源地址http://www.zghlxwxcb.cn/news/detail-525845.html

    大家的點贊、收藏、關(guān)注將是我更新的最大動力! 歡迎留言或私信建議或問題。
    大家的支持和反饋對我來說意義重大,我會繼續(xù)不斷努力提供有價值的內(nèi)容!如果本文哪里有錯誤的地方還請大家多多指出(●'?'●)

    到了這里,關(guān)于【操作系統(tǒng)】c語言--進程調(diào)度算法(FCFS和SPN)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

    領(lǐng)支付寶紅包贊助服務(wù)器費用

    相關(guān)文章

    • 【操作系統(tǒng)】基于動態(tài)優(yōu)先級的進程調(diào)度算法-C語言實現(xiàn)(有代碼)

      【操作系統(tǒng)】基于動態(tài)優(yōu)先級的進程調(diào)度算法-C語言實現(xiàn)(有代碼)

      本文章將會介紹如何編寫動態(tài)優(yōu)先級的進程調(diào)度算法,并使用從語言實現(xiàn)。 一、什么是動態(tài)優(yōu)先級的調(diào)度算法 ? ? ? ?進程運行一個時間片后,如果進程已占用 CPU時間已達(dá)到所需要的運行時間,則撤消該進程;如果運行一個時間片后進程的已占用CPU時間還未達(dá)所需要的運行

      2024年02月06日
      瀏覽(29)
    • 「 操作系統(tǒng) 」聊聊進程調(diào)度算法

      「 操作系統(tǒng) 」聊聊進程調(diào)度算法

      圖文并茂!談?wù)勥M程調(diào)度那些算法 Cone 進程調(diào)度/頁面置換/磁盤調(diào)度算法 xiaolinCoding 圖解經(jīng)典的進程調(diào)度算法 飛天小牛肉 進程調(diào)度算法是操作系統(tǒng)中非常重要的一部分,它決定了操作系統(tǒng)中各個進程的執(zhí)行順序和時間片。在單核CPU下,任何時刻都只可能有一個程序在執(zhí)行,比

      2024年02月04日
      瀏覽(28)
    • 【操作系統(tǒng)之進程調(diào)度算法習(xí)題】

      【操作系統(tǒng)之進程調(diào)度算法習(xí)題】

      在一個具有三道作業(yè)的批處理系統(tǒng)中,作業(yè)調(diào)度采用先來先服務(wù)(FCFS) 調(diào)度算法,進程調(diào)度采用 短作業(yè)優(yōu)先調(diào)度算法。現(xiàn)有如下所示的作業(yè)序列, 注意 1.具有三道作業(yè)的批處理系統(tǒng)指的是內(nèi)存最多能有3個作業(yè); 2.表格樣式是考試時候的格式,練習(xí)時候也按這個格式練習(xí)各作業(yè)的周

      2024年02月11日
      瀏覽(21)
    • 操作系統(tǒng)實驗—進程調(diào)度算法(java)

      操作系統(tǒng)實驗—進程調(diào)度算法(java)

      目錄 文章目錄 前言 一、實驗原理 二、實驗步驟 1.創(chuàng)建PCB類 2.創(chuàng)建創(chuàng)建類 3.設(shè)計主窗口類 4.調(diào)度界面函數(shù) 5.算法類及其調(diào)度算法通用函數(shù) 6.進程調(diào)度算法函數(shù) 總結(jié) 操作系統(tǒng)實驗1:進程調(diào)度算法,步驟3、4在一個類中,步驟5、6在一個類中。 (1)先到先服務(wù)調(diào)度算法:按照進程提

      2024年02月04日
      瀏覽(16)
    • 操作系統(tǒng)進程調(diào)度算法——先來先服務(wù)、時間片輪轉(zhuǎn)、優(yōu)先級調(diào)度算法

      操作系統(tǒng)進程調(diào)度算法——先來先服務(wù)、時間片輪轉(zhuǎn)、優(yōu)先級調(diào)度算法

      (1)算法內(nèi)容: 先來先服務(wù)調(diào)度算法是一種最簡單的調(diào)度算法,可以應(yīng)用于高級調(diào)度也可以運用于低級調(diào)度。高級調(diào)度時,F(xiàn)CFS調(diào)度算法按照作業(yè)進入后備作業(yè)隊列的先后順序選擇作業(yè)進入內(nèi)存,即先進入后備作業(yè)隊列的作業(yè)被優(yōu)先選擇進入內(nèi)存,然后為選中的作業(yè)創(chuàng)建進程

      2023年04月21日
      瀏覽(23)
    • 【操作系統(tǒng)】期末速成之計算題:進程調(diào)度算法

      【操作系統(tǒng)】期末速成之計算題:進程調(diào)度算法

      先來先服務(wù)是非搶占式的算法 一個?? 例題:各進程到達(dá)就緒隊列的時間、需要的運行時間如下表所示。使用先來先服務(wù)調(diào)度算法,計算各進程的等待時間、平均等待時間、周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均帶權(quán)周轉(zhuǎn)時間。 進程 到達(dá)時間 運行時間 P1 0 7 P2 2 4

      2024年02月11日
      瀏覽(19)
    • 用代碼模擬操作系統(tǒng)進程調(diào)度算法(Python)

      用代碼模擬操作系統(tǒng)進程調(diào)度算法(Python)

      ?引言 近日,在學(xué)習(xí)完操作系統(tǒng)的進程調(diào)度部分后,我萌生了一個有趣的想法:通過編寫代碼來模擬進程調(diào)度算法,以加深自己對這一知識點的理解。于是,我花了一整天的時間投入到了這個突發(fā)奇想的實踐中。 ?背景 進程調(diào)度是操作系統(tǒng)中的重要概念,它決定了如何合理地

      2024年02月06日
      瀏覽(23)
    • 計算機操作系統(tǒng)實驗-進程調(diào)度模擬算法

      進程調(diào)度是處理機管理的核心內(nèi)容。本實驗要求用高級語言編寫模擬進程調(diào)度程序,以 便加深理解有關(guān)進程控制快、進程隊列等概念,并體會和了解優(yōu)先數(shù)算法和時間片輪轉(zhuǎn)算法 的具體實施辦法。 1.設(shè)計進程控制塊 PCB 的結(jié)構(gòu),通常應(yīng)包括如下信息: 進程名、進程優(yōu)先數(shù)(

      2024年02月05日
      瀏覽(89)
    • 操作系統(tǒng):實驗一:進程調(diào)度實驗——最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法以及先來先服務(wù)算法 源碼

      操作系統(tǒng):實驗一:進程調(diào)度實驗——最高優(yōu)先數(shù)優(yōu)先的調(diào)度算法以及先來先服務(wù)算法 源碼

      一、實驗?zāi)康?(1)了解進程實體PCB結(jié)構(gòu); (2)理解進程不同狀態(tài)和狀態(tài)之間的轉(zhuǎn)換過程; (3)掌握優(yōu)先數(shù)的調(diào)度算法和先來先服務(wù)算法; 二、實驗內(nèi)容與要求 設(shè)計一個有 N個進程共行的進程調(diào)度程序 四、實驗步驟 (1)實驗設(shè)計 進程調(diào)度算法: 采用最高優(yōu)先數(shù)優(yōu)先的調(diào)

      2024年02月06日
      瀏覽(20)
    • 操作系統(tǒng)有關(guān)進程調(diào)度算法(含先來先服務(wù),短作業(yè)優(yōu)先,優(yōu)先級調(diào)度算法和時間片輪轉(zhuǎn)調(diào)度算法)

      操作系統(tǒng)有關(guān)進程調(diào)度算法(含先來先服務(wù),短作業(yè)優(yōu)先,優(yōu)先級調(diào)度算法和時間片輪轉(zhuǎn)調(diào)度算法)

      本文采用的進程調(diào)度算法有:先來先服務(wù),短作業(yè)優(yōu)先,優(yōu)先級調(diào)度算法和時間片輪轉(zhuǎn)調(diào)度算法。 針對這四種算法,我采用的是建立數(shù)組結(jié)構(gòu)體,如: 先來先服務(wù)(FCFS)調(diào)度算法是一種最簡單的調(diào)度算法,該算法既可用于作業(yè)調(diào)度,也可用于進程調(diào)度。采用FCFS算法,每次從

      2024年02月03日
      瀏覽(25)

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

    支付寶掃一掃打賞

    博客贊助

    微信掃一掃打賞

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

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

    二維碼1

    領(lǐng)取紅包

    二維碼2

    領(lǐng)紅包