中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站制作與網(wǎng)頁設(shè)計(jì)seo公司軟件

網(wǎng)站制作與網(wǎng)頁設(shè)計(jì),seo公司軟件,網(wǎng)站構(gòu)建的滾動(dòng)新聞怎么做,去除wordpress 廣告插件這篇文章談?wù)刲inux中的進(jìn)程管理。 一周爆肝,創(chuàng)作不易,望支持! 希望對(duì)大家有所幫助!記得收藏! 要理解進(jìn)程管理,重要的是周邊問題,一定要知其然,知其所以然??聪路侥夸浘椭蓝际歉韶洝?article class="baidu_pl">

這篇文章談?wù)?span style="background-color:#dad5e9;">linux中的進(jìn)程管理。

一周爆肝,創(chuàng)作不易,望支持!

希望對(duì)大家有所幫助!記得收藏

要理解進(jìn)程管理,重要的是周邊問題,一定要知其然,知其所以然???span style="background-color:#6eaad7;">下方目錄就知道都是干貨!

目錄

1.什么是進(jìn)程管理?

2.為什么要有進(jìn)程管理?

3.如何對(duì)進(jìn)程進(jìn)行管理?

(1)描述進(jìn)程

(2)組織進(jìn)程

4.查看系統(tǒng)中的進(jìn)程

(1)命令查看

(2)文件查看

5.創(chuàng)建進(jìn)程的兩種方式

(1)./運(yùn)行一個(gè)程序

(2)通過代碼創(chuàng)建

6.父子進(jìn)程與fork()

(1)父子關(guān)系

(2)系統(tǒng)調(diào)用fork()

(3)fork()原理

1.fork()干了什么事?

2.為什么fork()會(huì)有兩個(gè)返回值?

3.為什么fork()給父進(jìn)程返回子進(jìn)程pid,給子進(jìn)程返回0?

4.fork()之后,父子進(jìn)程誰先運(yùn)行?

5.如何理解同一個(gè)變量會(huì)有不同的值?

6.重新理解fork()

7.進(jìn)程狀態(tài)

(1)一般操作系統(tǒng)的進(jìn)程狀態(tài)

1.運(yùn)行狀態(tài)

2.阻塞狀態(tài)

3.阻塞掛起和swap分區(qū)

(2)linux的進(jìn)程狀態(tài)

linux進(jìn)程的休眠狀態(tài)

linux僵尸進(jìn)程和孤兒進(jìn)程

8.進(jìn)程狀態(tài)切換

CUP運(yùn)行隊(duì)列中的進(jìn)程如何調(diào)度?

9.進(jìn)程的性質(zhì)

1.進(jìn)程的競(jìng)爭(zhēng)性

2.進(jìn)程的獨(dú)立性

3.進(jìn)程的并行、并發(fā)

10.進(jìn)程的優(yōu)先級(jí)和時(shí)間片

11.進(jìn)程間切換

12.linux內(nèi)核2.61CPU運(yùn)行隊(duì)列窺視(綜合理解!)


1.什么是進(jìn)程管理?

OS內(nèi)核中有內(nèi)存管理,進(jìn)程管理,文件管理,驅(qū)動(dòng)管理,OS將這四樣管理起來才基本可以實(shí)現(xiàn)硬件和數(shù)據(jù)的自由調(diào)控,才可成為一個(gè)優(yōu)質(zhì)內(nèi)核。

2.為什么要有進(jìn)程管理?

要知道為什么要有進(jìn)程管理,首先要知道進(jìn)程是什么東西,這里給出進(jìn)程的定義

進(jìn)程的定義程序的一個(gè)執(zhí)行實(shí)例,加載到內(nèi)存中的程序,即正在執(zhí)行的程序。進(jìn)程是操作系統(tǒng)執(zhí)行任務(wù)的基本單元,也是分配資源、處理數(shù)據(jù)和被調(diào)度的基本單元。更加通俗的理解:操作系統(tǒng)要做事情,進(jìn)程就是一件又一件的"事情"。

3.如何對(duì)進(jìn)程進(jìn)行管理?

在哲學(xué)的范疇,管理的本質(zhì)對(duì)數(shù)據(jù)的管理,而非對(duì)具體對(duì)象的管理管理的策略是先描述,再組織。即先將被管理對(duì)象進(jìn)行建模描述為抽象類型,再想好如何將每個(gè)被管理對(duì)象組織起來。

操作系統(tǒng)對(duì)進(jìn)程的管理也是如此:

描述進(jìn)程、組織進(jìn)程

(1)描述進(jìn)程

在操作系統(tǒng)中,經(jīng)常將描述進(jìn)程的類稱為PCB(process?control block)。進(jìn)程的屬性有很多:比如pid,ppid(父進(jìn)程pid),stat(進(jìn)程狀態(tài)),進(jìn)程優(yōu)先級(jí)等等。后續(xù)慢慢學(xué)習(xí)······

struct PCB
{int pid;int ppid;int stat;......
};

(2)組織進(jìn)程

進(jìn)程的組織就是用高效的數(shù)據(jù)結(jié)構(gòu)將進(jìn)程對(duì)象組織起來,操作系統(tǒng)一般用雙向鏈表將進(jìn)程的PCB對(duì)象組織起來。

4.查看系統(tǒng)中的進(jìn)程

(1)命令查看

ps ajx //查看當(dāng)前所有進(jìn)程
ps ajx | head -1 && ps ajx | grep mybin//查看指定進(jìn)程mybin

(2)文件查看

根目錄下的proc目錄中有當(dāng)前存在的所有進(jìn)程,因此這個(gè)目錄是動(dòng)態(tài)的。

這個(gè)目錄里的各個(gè)數(shù)字目錄,就是以各個(gè)進(jìn)程的pid命名的。目錄里面放的就是進(jìn)程PCB對(duì)象的各種屬性。?

5.創(chuàng)建進(jìn)程的兩種方式

(1)./運(yùn)行一個(gè)程序

本質(zhì)將磁盤上的可執(zhí)行程序代碼和數(shù)據(jù)拷貝到內(nèi)存當(dāng)中,為這個(gè)進(jìn)程創(chuàng)建PCB對(duì)象,將PCB對(duì)象鏈入內(nèi)存中管理PCB對(duì)象的雙鏈表中。(重點(diǎn))

(2)通過代碼創(chuàng)建

使用fork()函數(shù)創(chuàng)建當(dāng)前進(jìn)程的子進(jìn)程。

6.父子進(jìn)程與fork()

(1)父子關(guān)系

進(jìn)程是有父子關(guān)系的,在一個(gè)進(jìn)程中創(chuàng)建出新的進(jìn)程,這個(gè)新的進(jìn)程就被叫做那個(gè)進(jìn)程的子進(jìn)程。那個(gè)進(jìn)程叫做新的進(jìn)程父進(jìn)程。

(2)系統(tǒng)調(diào)用fork()

fork()是一個(gè)進(jìn)程通過代碼創(chuàng)建子進(jìn)程的時(shí)候,所調(diào)用的系統(tǒng)接口。通過fork()函數(shù),在fork()下一行處會(huì)創(chuàng)建一個(gè)子進(jìn)程,這個(gè)子進(jìn)程和父進(jìn)程共同執(zhí)行接下來的代碼。

如圖:

./mybin運(yùn)行之后?

體現(xiàn)出了fork()之后,?子進(jìn)程和父進(jìn)程兩個(gè)執(zhí)行流分別執(zhí)行接下來的代碼。

fork()函數(shù)

頭文件#include<unistd.h>

返回值:父進(jìn)程返回子進(jìn)程pid,子進(jìn)程返回0。

(3)fork()原理

1.fork()干了什么事?

現(xiàn)象:fork()是系統(tǒng)接口,fork()之后會(huì)為父進(jìn)程創(chuàng)建子進(jìn)程,父子進(jìn)程兩個(gè)執(zhí)行流共同執(zhí)行fork()之后的代碼。

本質(zhì):進(jìn)程的創(chuàng)建,本質(zhì)是將可執(zhí)行程序代碼和數(shù)據(jù)加載到內(nèi)存中,創(chuàng)建PCB對(duì)象,再將PCB對(duì)象鏈接到管理PCB對(duì)象的雙向鏈表中。父進(jìn)程中使用fork()創(chuàng)建進(jìn)程本質(zhì)是以父進(jìn)程PCB為模板創(chuàng)建子進(jìn)程PCB,由于子進(jìn)程沒有從磁盤中加載代碼和數(shù)據(jù),子進(jìn)程的PCB只能指向父進(jìn)程的代碼和數(shù)據(jù),因此父子進(jìn)程共享代碼子進(jìn)程可以看到父進(jìn)程的全部代碼,由于進(jìn)程的獨(dú)立性,數(shù)據(jù)會(huì)以寫時(shí)拷貝的方式給到子進(jìn)程。

2.為什么fork()會(huì)有兩個(gè)返回值?

fork()函數(shù)在return x 之前,子進(jìn)程就被創(chuàng)建出來了,所以不要把fork()看成一個(gè)整體,return之后父子進(jìn)程兩個(gè)執(zhí)行流共同執(zhí)行接下來的代碼,return也被父子進(jìn)程以不同的值返回兩次。

3.為什么fork()給父進(jìn)程返回子進(jìn)程pid,給子進(jìn)程返回0?

給父進(jìn)程返回子進(jìn)程的pid,是為了讓父進(jìn)程較好的控制管理子進(jìn)程,所以返回子進(jìn)程的pid讓父進(jìn)程進(jìn)行控制。子進(jìn)程只需要確認(rèn)自己創(chuàng)建成功與否,所以返回0。

4.fork()之后,父子進(jìn)程誰先運(yùn)行?

fork()后,父子進(jìn)程都會(huì)進(jìn)入CPU的執(zhí)行隊(duì)列中被調(diào)度,需要依賴進(jìn)程PCB的調(diào)度優(yōu)先級(jí)和調(diào)度器算法。

5.如何理解同一個(gè)變量會(huì)有不同的值?

父子進(jìn)程共享代碼,但是要保證進(jìn)程的獨(dú)立性數(shù)據(jù)不能共享,所以數(shù)據(jù)會(huì)以寫時(shí)拷貝的方式拷貝給子進(jìn)程,return兩個(gè)值本質(zhì)是寫兩次數(shù)據(jù),子進(jìn)程的數(shù)據(jù)就要寫時(shí)拷貝。因此父子進(jìn)程都有自己存儲(chǔ)返回值的變量。

6.重新理解fork()

7.進(jìn)程狀態(tài)

(1)一般操作系統(tǒng)的進(jìn)程狀態(tài)

進(jìn)程的狀態(tài)指的是一個(gè)進(jìn)程處在內(nèi)存中某個(gè)PCB隊(duì)列中所體現(xiàn)出來的狀態(tài)。進(jìn)程的狀態(tài)是為了更好的讓操作系統(tǒng)得知每個(gè)進(jìn)程的實(shí)時(shí)情況所設(shè)定的。進(jìn)程可以在很多PCB隊(duì)列中進(jìn)行排隊(duì)。進(jìn)程狀態(tài)是PCB中的一個(gè)屬性,是一個(gè)int類型的值,來表示這個(gè)進(jìn)程目前的狀態(tài)。

1.運(yùn)行狀態(tài)

我們把進(jìn)程的PCB在CPU的運(yùn)行隊(duì)列中排隊(duì)的狀態(tài)認(rèn)定為運(yùn)行狀態(tài)。在CPU運(yùn)行隊(duì)列的進(jìn)程準(zhǔn)備被調(diào)度(取決于調(diào)度器算法)。

2.阻塞狀態(tài)

當(dāng)我們的進(jìn)程在CPU的運(yùn)行隊(duì)列中被調(diào)度的時(shí)候,這個(gè)進(jìn)程開始讓CPU來執(zhí)行它的可執(zhí)行程序,這個(gè)可執(zhí)行程序勢(shì)必或多或少會(huì)訪問到操作系統(tǒng)中的軟硬件資源,如果此時(shí)要訪問的軟硬件資源還沒有到位,那么這個(gè)進(jìn)程的PCB就會(huì)從CPU的運(yùn)行隊(duì)列上剝離,去到軟硬件資源的等待隊(duì)列中排隊(duì),此時(shí)這個(gè)進(jìn)程的狀態(tài)被設(shè)置為阻塞狀態(tài)

3.阻塞掛起和swap分區(qū)

硬件阻塞

當(dāng)我們的進(jìn)程處于阻塞狀態(tài),進(jìn)程的PCB在對(duì)應(yīng)軟硬件資源的等待隊(duì)列中排隊(duì),此時(shí)這個(gè)進(jìn)程的代碼數(shù)據(jù)和PCB都在內(nèi)存中占用著資源,但是這個(gè)進(jìn)程暫時(shí)不需要被調(diào)度,如果此時(shí)操作系統(tǒng)的內(nèi)存資源嚴(yán)重不足,就會(huì)把這個(gè)進(jìn)程的代碼和數(shù)據(jù)交換到磁盤中的swap分區(qū)中,為內(nèi)存騰出空間。此時(shí)進(jìn)程就處于阻塞掛起狀態(tài)。當(dāng)軟硬件資源就緒時(shí),操作系統(tǒng)再把這部分代碼和數(shù)據(jù)喚回內(nèi)存中,此時(shí)進(jìn)程再?gòu)能浻布Y源的等待隊(duì)列中剝離到CPU的運(yùn)行隊(duì)列中排隊(duì)。

軟件阻塞

用linux調(diào)試代碼工具gdb來解釋一下就是,gdb在調(diào)試程序的過程中要根據(jù)斷點(diǎn)來追蹤、暫停進(jìn)程,要想調(diào)試一個(gè)程序的代碼,gdb和這個(gè)程序必須都加載到內(nèi)存當(dāng)中成為進(jìn)程,CPU執(zhí)行代碼遇到斷點(diǎn)進(jìn)程就被阻塞了,需要等待gdb這個(gè)進(jìn)程的繼續(xù)操作,此時(shí)這個(gè)進(jìn)程就需要等待軟件資源gdb的響應(yīng),而gdb又要等待諸如鍵盤的響應(yīng),所以進(jìn)程的PCB到gdb這個(gè)進(jìn)程的PCB里的等待隊(duì)列里排隊(duì),gdb這個(gè)進(jìn)程PCB又到鍵盤的等待隊(duì)列里排隊(duì)。當(dāng)鍵盤響應(yīng)gdb,gdb的PCB又到CPU的運(yùn)行隊(duì)列里排隊(duì),待調(diào)試代碼的進(jìn)程也到CPU的運(yùn)行隊(duì)列里排隊(duì)。

(2)linux的進(jìn)程狀態(tài)

linux進(jìn)程狀態(tài)主要有一下幾種:

static const char * const task_state_array[] =
{"R (running)", /* 0 */  //運(yùn)行狀態(tài)"S (sleeping)", /* 1 */   //休眠狀態(tài)"D (disk sleep)", /* 2 */   //深度休眠狀態(tài)"T (stopped)", /* 4 */    //暫停狀態(tài)"t (tracing stop)", /* 8 */   //追蹤暫停狀態(tài)"X (dead)", /* 16 */    //死亡狀態(tài)"Z (zombie)", /* 32 */   //僵尸狀態(tài)
};
linux進(jìn)程的休眠狀態(tài)

本質(zhì)就是阻塞狀態(tài)(可以隨時(shí)被終止)。這里還有一個(gè)深度休眠狀態(tài)disk sleep(磁盤休眠)。當(dāng)一個(gè)進(jìn)程在向磁盤上寫入數(shù)據(jù)的時(shí)候,這個(gè)進(jìn)程需要等待磁盤寫入完畢,并把寫入結(jié)果返回給進(jìn)程PCB,由于這個(gè)過程中進(jìn)程不可被終止(防止數(shù)據(jù)丟失)此時(shí)這個(gè)進(jìn)程的狀態(tài)就是深度休眠狀態(tài)。

linux僵尸進(jìn)程和孤兒進(jìn)程

當(dāng)一個(gè)進(jìn)程的可執(zhí)行程序已經(jīng)在CPU上跑完了,這個(gè)進(jìn)程的生命周期就結(jié)束了,此時(shí)操作系統(tǒng)會(huì)先將這個(gè)進(jìn)程的代碼和數(shù)據(jù)進(jìn)行釋放,暫時(shí)不會(huì)釋放這個(gè)進(jìn)程的PCB。為什么?由于進(jìn)程退出時(shí)的退出信息會(huì)保存在進(jìn)程的PCB中,而操作性系統(tǒng)或者父進(jìn)程要得知進(jìn)程的退出原因(任務(wù)完成情況),所以要在父進(jìn)程或者操作系統(tǒng)讀取到退出信息之后,進(jìn)程才能完全銷毀,將進(jìn)程PCB也釋放。linux規(guī)定:進(jìn)程在退出后,進(jìn)程的PCB還沒有被父進(jìn)程或者操作系統(tǒng)讀取到,進(jìn)程還沒有完全退出的進(jìn)程狀態(tài)僵尸狀態(tài)。如果進(jìn)程一直處于僵尸狀態(tài),會(huì)導(dǎo)致內(nèi)存泄露的問題。

上面所說,進(jìn)程在退出時(shí),PCB是由父進(jìn)程來回收的。那么,如果進(jìn)程退出前,父進(jìn)程就已經(jīng)退出了,那這個(gè)進(jìn)程的PCB就沒有相應(yīng)的進(jìn)程來回收了,此時(shí)進(jìn)程的狀態(tài)成為孤兒狀態(tài)。

8.進(jìn)程狀態(tài)切換

切換本質(zhì) : 進(jìn)程的狀態(tài)切換,本質(zhì)就是進(jìn)程的PCB不同隊(duì)列中做不停的跳轉(zhuǎn)。

CUP運(yùn)行隊(duì)列中的進(jìn)程如何調(diào)度?

9.進(jìn)程的性質(zhì)

1.進(jìn)程的競(jìng)爭(zhēng)性

系統(tǒng)進(jìn)程眾多,而CPU資源只有少數(shù),甚至一個(gè),所以進(jìn)程之間是具有競(jìng)爭(zhēng)屬性的。為了高效完成任務(wù),合理競(jìng)爭(zhēng)相關(guān)資源,便有了進(jìn)程優(yōu)先級(jí)和時(shí)間片已經(jīng)調(diào)度器算法。

2.進(jìn)程的獨(dú)立性

各個(gè)進(jìn)程運(yùn)行期間互不干擾,各自獨(dú)立。

3.進(jìn)程的并行、并發(fā)

并行:多個(gè)進(jìn)程分別在多個(gè)CPU上同時(shí)運(yùn)行。

并發(fā):多個(gè)進(jìn)程在單個(gè)CPU上采取進(jìn)程切換的方式,在一段時(shí)間內(nèi)讓多個(gè)進(jìn)程都得以推進(jìn)。

不要用人的感知來感受CPU的處理速度,例如每個(gè)進(jìn)程的時(shí)間片是0.0001秒,CPU就執(zhí)行每個(gè)進(jìn)程0.0001秒,在一秒的時(shí)間內(nèi),上百個(gè)進(jìn)程,每個(gè)都被CPU推進(jìn)了100次!CPU的運(yùn)行速度之快,決定了進(jìn)程并發(fā)的可行性。

10.進(jìn)程的優(yōu)先級(jí)和時(shí)間片

linux進(jìn)程的優(yōu)先級(jí)范圍是60-99,默認(rèn)優(yōu)先級(jí)為80。優(yōu)先級(jí)由默認(rèn)優(yōu)先級(jí)和nice值共同決定,例如:創(chuàng)建一個(gè)進(jìn)程,這個(gè)進(jìn)程的默認(rèn)優(yōu)先級(jí)為80,同時(shí)把nice設(shè)置為10,進(jìn)程的最終優(yōu)先級(jí)為80+nice=90。

時(shí)間片決定了一個(gè)進(jìn)程每次使用CPU資源的最大時(shí)間限度。當(dāng)一個(gè)進(jìn)程使用CPU資源的時(shí)間超過時(shí)間片,進(jìn)程就會(huì)自動(dòng)剝離,等待下次被調(diào)度。

11.進(jìn)程間切換

進(jìn)程間切換指的是進(jìn)程PCB在CPU運(yùn)行隊(duì)列中,上、下的反復(fù)過程。下去的進(jìn)程要打包帶走自己的寄存器數(shù)據(jù),上來的進(jìn)程要將自己的寄存器數(shù)據(jù)拷貝給寄存器硬件。

12.linux內(nèi)核2.61CPU運(yùn)行隊(duì)列窺視(綜合理解!)

現(xiàn)在執(zhí)行一個(gè)可執(zhí)行程序mybin。

./mybin

?一個(gè)進(jìn)程的一生開始了!

1.此時(shí),操作系統(tǒng)在內(nèi)存中創(chuàng)建這個(gè)可執(zhí)行程序的PCB,并把磁盤上的代碼和數(shù)據(jù)拷貝到內(nèi)存中。

2.PCB放入CPU運(yùn)行隊(duì)列中的過期隊(duì)列中等待被調(diào)度。需要等待活躍隊(duì)列中的PCB全部剝離,PCB剝離需要同時(shí)帶走自己的寄存器數(shù)據(jù)保存在自己的PCB中。

3.活躍隊(duì)列中的PCB全部剝離,swap兩隊(duì)列的指針,開始按照優(yōu)先級(jí)執(zhí)行活躍隊(duì)列(原過期隊(duì)列)中的進(jìn)程。每個(gè)進(jìn)程讓CPU執(zhí)行,需要把PCB內(nèi)的寄存器數(shù)據(jù)拷貝給寄存器。

4.該你執(zhí)行了,CPU開始執(zhí)行代碼,代碼中要訪問軟硬件資源但沒有就緒,阻塞!PCB進(jìn)入對(duì)應(yīng)的等待隊(duì)列。(剝離時(shí)帶走自己的寄存器數(shù)據(jù))

5.軟硬件資源就緒,PCB被喚回CPU運(yùn)行隊(duì)列中的過期隊(duì)列中等待被調(diào)度。

6.又輪到你了,將寄存器數(shù)據(jù)交給寄存器,繼續(xù)從上次阻塞的地方開始執(zhí)行。

7.時(shí)間片到了,剝離到過期隊(duì)列中。

8.活躍隊(duì)列中的PCB全部剝離,再swap兩隊(duì)列的指針。CPU開始執(zhí)行過期隊(duì)列中的進(jìn)程。

9.又輪到你了,這次CPU在時(shí)間片結(jié)束時(shí)間內(nèi)把代碼執(zhí)行完了,進(jìn)程將要結(jié)束了。

10.父進(jìn)程把你的代碼和數(shù)據(jù)釋放,將PCB內(nèi)的退出數(shù)據(jù)讀取完畢,把PCB也釋放。進(jìn)程Z狀態(tài)。

本次分享就到這里,如果對(duì)大家有用的話,希望程序猿們可以三連支持一下,會(huì)繼續(xù)分享知識(shí),加油!

http://www.risenshineclean.com/news/38651.html

相關(guān)文章:

  • 一站式服務(wù)理念打廣告推廣怎么做
  • 網(wǎng)站開發(fā) 價(jià)格差異百度號(hào)碼認(rèn)證平臺(tái)官網(wǎng)首頁
  • 自己做soho需要做網(wǎng)站嗎長(zhǎng)春網(wǎng)站制作公司
  • 網(wǎng)站建設(shè)公司怎么免費(fèi)自己做推廣
  • 怎么做自己的網(wǎng)站自建一個(gè)頁面友情鏈接圖片
  • 貿(mào)易公司寮步網(wǎng)站建設(shè)哪家好怎么做好網(wǎng)站搜索引擎優(yōu)化
  • 廈門服裝商城網(wǎng)站建設(shè)優(yōu)化網(wǎng)站快速排名軟件
  • cpa單頁網(wǎng)站怎么做谷歌手機(jī)版瀏覽器官網(wǎng)
  • php網(wǎng)站開發(fā)是什么嗎廣州百度提升優(yōu)化
  • 鄧州網(wǎng)站制作seo1域名查詢
  • 推廣普通話喜迎二十手抄報(bào)seo鏈接優(yōu)化建議
  • 自己這么做網(wǎng)站semir是什么牌子
  • 麻涌公司網(wǎng)站建設(shè)公司百度云電腦網(wǎng)頁版入口
  • 電子商務(wù)網(wǎng)站建設(shè)合同范本外包公司排名
  • 自己在線制作logo免費(fèi)網(wǎng)站北京seo優(yōu)化廠家
  • 公司網(wǎng)站開發(fā)費(fèi)用計(jì)入什么科目營(yíng)銷公司
  • vs網(wǎng)站中的輪播怎么做軟文寫作技巧有哪些
  • 圖片1600px做網(wǎng)站武漢網(wǎng)優(yōu)化seo公司
  • 企業(yè)網(wǎng)站的建立主要用于企業(yè)內(nèi)部發(fā)布信息鄭州seo公司哪家好
  • 標(biāo)書制作教程視頻網(wǎng)站3322免費(fèi)域名注冊(cè)
  • 網(wǎng)站網(wǎng)址怎么找電商運(yùn)營(yíng)培訓(xùn)班多少錢
  • 彩票代購(gòu)網(wǎng)站建設(shè)電腦優(yōu)化軟件哪個(gè)好用
  • 以個(gè)人名義可以做網(wǎng)站嗎蘋果自研搜索引擎或?yàn)樘娲雀?/a>
  • 如果想看網(wǎng)站的收費(fèi)電影應(yīng)該怎么做惠州關(guān)鍵詞排名提升
  • 怎么把自己做的網(wǎng)站掛到外網(wǎng)上sem代運(yùn)營(yíng)
  • 2018年做返利網(wǎng)站網(wǎng)站功能優(yōu)化
  • 仿牌外貿(mào)網(wǎng)站百度搜索高級(jí)搜索
  • 做網(wǎng)站是干嘛廈門人才網(wǎng)最新招聘信息
  • 福州市住房和城鄉(xiāng)建設(shè)部網(wǎng)站seo是什么意思怎么解決
  • 建立英文網(wǎng)站搜索引擎優(yōu)化到底是優(yōu)化什么