国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

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

如何讓人幫忙做網(wǎng)站網(wǎng)站檢測(cè)

如何讓人幫忙做網(wǎng)站,網(wǎng)站檢測(cè),接效果圖做網(wǎng)站,藍(lán)色清新phpcms企業(yè)網(wǎng)站模板文章目錄 網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)答客戶端和服務(wù)器端的交互編寫(xiě)客戶端編寫(xiě)服務(wù)端 文件上傳文件上傳客戶端以及服務(wù)器端實(shí)現(xiàn)文件上傳服務(wù)器端實(shí)現(xiàn)(多線程)文件上傳服務(wù)器端(連接池版本)關(guān)閉資源工具類 BS架構(gòu)服務(wù)器案例案例分析BS結(jié)構(gòu)服務(wù)器…

文章目錄

  • 網(wǎng)絡(luò)編程
    • 實(shí)現(xiàn)簡(jiǎn)答客戶端和服務(wù)器端的交互
      • 編寫(xiě)客戶端
      • 編寫(xiě)服務(wù)端
    • 文件上傳
      • 文件上傳客戶端以及服務(wù)器端實(shí)現(xiàn)
      • 文件上傳服務(wù)器端實(shí)現(xiàn)(多線程)
      • 文件上傳服務(wù)器端(連接池版本)
      • 關(guān)閉資源工具類
    • BS架構(gòu)服務(wù)器案例
      • 案例分析
      • BS結(jié)構(gòu)服務(wù)器代碼實(shí)現(xiàn)
  • Junit單元測(cè)試
    • Junit介紹
    • Junit的基本使用(重點(diǎn))
    • Junit的注意事項(xiàng)
    • Junit相關(guān)注解
    • @Test以后怎么使用
  • 類的加載時(shí)機(jī)
    • 類加載器(了解)_ClassLoader
  • 反射
    • class類的以及class對(duì)象的介紹以及反射介紹
    • 反射之獲取class對(duì)象
      • 三種獲取Class對(duì)象的方式最通用的一種
    • 獲取Class對(duì)象中的構(gòu)造方法
      • 獲取所有public的構(gòu)造對(duì)象
      • 獲取空參構(gòu)造_public
      • 利用空參構(gòu)創(chuàng)建對(duì)象的快捷方式_public
      • 利用反射獲取有參構(gòu)造并創(chuàng)建對(duì)象_public

網(wǎng)絡(luò)編程

實(shí)現(xiàn)簡(jiǎn)答客戶端和服務(wù)器端的交互

相關(guān)介紹
在這里插入圖片描述

編寫(xiě)客戶端

1.創(chuàng)建Socket對(duì)象,指明連接服務(wù)器端的IP以及端口號(hào)
2.調(diào)用Socket中的getOutputStream方法,發(fā)送請(qǐng)求
3.調(diào)用Socket中的getInputStream方法,接收響應(yīng)
4.關(guān)流

public class Client {public static void main(String[] args) throws IOException {
//        1.創(chuàng)建Socket對(duì)象,指明連接服務(wù)器端的IP以及端口號(hào)final Socket socket = new Socket("127.0.0.1",6666);
//        2.調(diào)用Socket中的getOutputStream方法,發(fā)送請(qǐng)求final OutputStream outputStream = socket.getOutputStream();outputStream.write("發(fā)送請(qǐng)求,請(qǐng)回應(yīng)".getBytes(StandardCharsets.UTF_8));
//        3.調(diào)用Socket中的getInputStream方法,接收響應(yīng)final InputStream inputStream = socket.getInputStream();final byte[] bytes = new byte[1024];int len = inputStream.read(bytes);System.out.println(new String(bytes,0,len));
//        4.關(guān)流inputStream.close();outputStream.close();}
}

編寫(xiě)服務(wù)端

1.創(chuàng)建ServerSocket。設(shè)置端口號(hào)
2.調(diào)用accept方法等待連接的客戶端對(duì)象
3.調(diào)用socket中的getInputStream用于讀取客戶端發(fā)過(guò)來(lái)的請(qǐng)求
4.調(diào)用socket中的getOutputStream,用于給客戶端響應(yīng)結(jié)果
5.關(guān)流

public class Server {public static void main(String[] args) throws IOException {//創(chuàng)建ServerSocket,設(shè)置端口號(hào)final ServerSocket serverSocket = new ServerSocket(6666);//調(diào)用accept方法等待連接的客戶端對(duì)象final Socket socket = serverSocket.accept();//調(diào)用socke中的getInputStream,用于讀取客戶端發(fā)過(guò)來(lái)的請(qǐng)求final InputStream inputStream = socket.getInputStream();final byte[] bytes = new byte[1024];final int read = inputStream.read(bytes);System.out.println(new String(bytes,0,read));//調(diào)用socket中的getOutputStream,用于給客戶端相應(yīng)結(jié)果final OutputStream outputStream = socket.getOutputStream();outputStream.write("給你資源,發(fā)送吧".getBytes(StandardCharsets.UTF_8));//關(guān)流inputStream.close();outputStream.close();socket.close();serverSocket.close();}
}

文件上傳

在這里插入圖片描述

文件上傳客戶端以及服務(wù)器端實(shí)現(xiàn)

客戶端

public class Client {public static void main(String[] args) throws IOException {//創(chuàng)建socket對(duì)象final Socket socket = new Socket("127.0.0.1", 6666);//創(chuàng)建FileInputStream,將讀取本地上的照片final FileInputStream fileInputStream = new FileInputStream("C:\\Users\\94863\\Pictures\\Saved Pictures\\hua.jpg");//調(diào)用getOutputStream,將讀取過(guò)來(lái)的照片寫(xiě)到服務(wù)端final OutputStream outputStream = socket.getOutputStream();final byte[] bytes = new byte[1024];int len;while ((len = fileInputStream.read(bytes))!=-1){outputStream.write(bytes,0,len);}//給服務(wù)端寫(xiě)一個(gè)結(jié)束標(biāo)志socket.shutdownOutput();System.out.println("==============以下是接收相應(yīng)的代碼=========================");//調(diào)用getInputStream,讀取服務(wù)器端相應(yīng)回來(lái)的數(shù)據(jù)final InputStream inputStream = socket.getInputStream();final byte[] bytes1 = new byte[1024];final int read = inputStream.read(bytes1);System.out.println(new String(bytes1,0,read));//關(guān)流inputStream.close();outputStream.close();fileInputStream.close();socket.close();}
}

服務(wù)器端

public class Server {public static void main(String[] args) throws IOException {//創(chuàng)建ServerSocket對(duì)象,設(shè)置端口號(hào)final ServerSocket serverSocket = new ServerSocket(6666);//調(diào)用accept方法,等待連接的客戶端final Socket socket = serverSocket.accept();//調(diào)用getInputStream讀取客戶端發(fā)過(guò)來(lái)額照片final InputStream inputStream = socket.getInputStream();//創(chuàng)建FileOutStream,將讀取過(guò)來(lái)的照片寫(xiě)到本地上final String name = System.currentTimeMillis() + "" + new Random().nextInt() + ".jpg";final FileOutputStream fileOutputStream = new FileOutputStream("D:\\Ajava\\"+name);final byte[] bytes = new byte[1024];int len;while ((len = inputStream.read(bytes))!=-1){fileOutputStream.write(bytes,0,len);}System.out.println("============以下代碼為相應(yīng)代碼===================");//響應(yīng)數(shù)據(jù)final OutputStream outputStream = socket.getOutputStream();outputStream.write("上傳成功".getBytes(StandardCharsets.UTF_8));//關(guān)流outputStream.close();fileOutputStream.close();inputStream.close();socket.close();serverSocket.close();}
}

文件上傳服務(wù)器端實(shí)現(xiàn)(多線程)

public class Server_muti {public static void main(String[] args) throws IOException {//創(chuàng)建ServerSocket對(duì)象,設(shè)置端口號(hào)final ServerSocket serverSocket = new ServerSocket(6666);while (true) {//調(diào)用accept方法,等待連接的客戶端final Socket socket = serverSocket.accept();new Thread(new Runnable() {@Overridepublic void run() {final InputStream inputStream;try {//調(diào)用getInputStream讀取客戶端發(fā)過(guò)來(lái)額照片inputStream = socket.getInputStream();//創(chuàng)建FileOutStream,將讀取過(guò)來(lái)的照片寫(xiě)到本地上final String name = System.currentTimeMillis() + "" + new Random().nextInt() + ".jpg";final FileOutputStream fileOutputStream = new FileOutputStream("D:\\Ajava\\" + name);final byte[] bytes = new byte[1024];int len;while ((len = inputStream.read(bytes)) != -1) {fileOutputStream.write(bytes, 0, len);}System.out.println("============以下代碼為相應(yīng)代碼===================");//響應(yīng)數(shù)據(jù)final OutputStream outputStream = socket.getOutputStream();outputStream.write("上傳成功".getBytes(StandardCharsets.UTF_8));//關(guān)流outputStream.close();fileOutputStream.close();inputStream.close();socket.close();serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}).start();}}}

文件上傳服務(wù)器端(連接池版本)

public class Server_pools {public static void main(String[] args) throws IOException {//創(chuàng)建ServerSocket對(duì)象,設(shè)置端口號(hào)final ServerSocket serverSocket = new ServerSocket(6666);final ExecutorService executorService = Executors.newFixedThreadPool(10);while (true){//調(diào)用accept方法,等待連接的客戶端final Socket socket = serverSocket.accept();executorService.submit(new Runnable() {@Overridepublic void run() {InputStream inputStream = null;FileOutputStream fileOutputStream = null;OutputStream outputStream = null;//調(diào)用getInputStream讀取客戶端發(fā)過(guò)來(lái)額照片try {inputStream = socket.getInputStream();//創(chuàng)建FileOutStream,將讀取過(guò)來(lái)的照片寫(xiě)到本地上final String name = System.currentTimeMillis() + "" + new Random().nextInt() + ".jpg";fileOutputStream = new FileOutputStream("D:\\Ajava\\" + name);final byte[] bytes = new byte[1024];int len;while ((len = inputStream.read(bytes)) != -1) {fileOutputStream.write(bytes, 0, len);}System.out.println("============以下代碼為相應(yīng)代碼===================");//響應(yīng)數(shù)據(jù)outputStream = socket.getOutputStream();outputStream.write("上傳成功".getBytes(StandardCharsets.UTF_8));//關(guān)流outputStream.close();fileOutputStream.close();inputStream.close();socket.close();} catch (IOException e) {e.printStackTrace();}}});}}
}

關(guān)閉資源工具類

我們創(chuàng)建一個(gè)工具類,以便快速關(guān)閉資源

public class CloseUtils {public  static void close(InputStream is, FileOutputStream fos, OutputStream os, Socket so){if (os != null){try {os.close();} catch (IOException e) {e.printStackTrace();}}if (fos != null){try {fos.close();} catch (IOException e) {e.printStackTrace();}}if (is != null){try {is.close();} catch (IOException e) {e.printStackTrace();}}if (so != null){try {so.close();} catch (IOException e) {e.printStackTrace();}}}
}

BS架構(gòu)服務(wù)器案例

在這里插入圖片描述

案例分析

在這里插入圖片描述

BS結(jié)構(gòu)服務(wù)器代碼實(shí)現(xiàn)

public class bstest {public static void main(String[] args) throws IOException {//創(chuàng)建ServerSocket對(duì)象final ServerSocket serverSocket = new ServerSocket(8888);while (true) {//調(diào)用accept方法接收客戶端final Socket socket = serverSocket.accept();//調(diào)用getInputStream用于讀取瀏覽器發(fā)過(guò)來(lái)的請(qǐng)求final InputStream inputStream = socket.getInputStream();/*1.描述:需要將is對(duì)象轉(zhuǎn)成BufferedReader對(duì)象然后調(diào)用BufferedReader中的readLine方法讀取請(qǐng)求信息第一行2.怎么將InputStream轉(zhuǎn)成BufferedReader?只需要將InputStream想辦法塞到BufferedReader的構(gòu)造中即可3.BufferedReader構(gòu)造:BufferedReader(Reader r)Reader是抽象類,需要傳遞子類,我們可以傳遞InputStreamReader而InputStreamReader的構(gòu)造正好可以傳遞InputStream4.如何轉(zhuǎn):new BufferedReader(new InputStreamReader(InputStream is))*/final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));String s = bufferedReader.readLine();String s2 = s.split(" ")[1];String path = s2.substring(1);//創(chuàng)建FileInputStream對(duì)象final FileInputStream fileInputStream = new FileInputStream(path);//調(diào)用getOutputStream 將讀取到的html寫(xiě)到瀏覽器final OutputStream outputStream = socket.getOutputStream();//寫(xiě)相應(yīng)信息給瀏覽器outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());outputStream.write("Content-Type:text/html\r\n".getBytes());outputStream.write("\r\n".getBytes());byte[] bytes = new byte[1024];int len;while ((len = fileInputStream.read(bytes)) != -1) {outputStream.write(bytes, 0, len);}//關(guān)流outputStream.close();fileInputStream.close();bufferedReader.close();inputStream.close();socket.close();}}}

Junit單元測(cè)試

Junit介紹

1.概述:單元測(cè)試 ,用于測(cè)試一個(gè)方法的,屬于第三方工具,所以使用需要導(dǎo)jar包,在一定程度上可以代替main方法
2.作用:單獨(dú)測(cè)試一個(gè)方法,看看此方法能不能跑通

Junit的基本使用(重點(diǎn))

1.導(dǎo)包
2.在方法時(shí)寫(xiě):@test
3.執(zhí)行:
a.雙擊方法名,右鍵,點(diǎn)run
b.在方法的左邊有一個(gè)綠色的小摁鈕,點(diǎn)擊它,點(diǎn)run

public class test01 {@Testpublic void add(){System.out.println("添加新功能");}@Testpublic void deltet(){System.out.println("刪除功能");}
}

Junit的注意事項(xiàng)

1.靜態(tài)方法不能使用@Test
2.帶參數(shù)的方法不能使用@Test
3.帶返回值的方法不能使用@Test

Junit相關(guān)注解

1.@Before:在@Test之前執(zhí)行,有多少個(gè)@Test一起執(zhí)行,@Before就執(zhí)行多少次
2.@After:在@Test之后執(zhí)行,有多少個(gè)@Test一起執(zhí)行,@After就執(zhí)行多少次
3.@Before:一般都用于初始化數(shù)據(jù)
@After:一般用于關(guān)閉資源

public class test01 {@Testpublic void add(){System.out.println("添加新功能");}@Testpublic void deltet(){System.out.println("刪除功能");}@Testpublic void update(){System.out.println("修改功能");}@Beforepublic void before(){System.out.println("我是before功能");}@Afterpublic void after(){System.out.println("我是After功能");}
}

@Test以后怎么使用

對(duì)商品進(jìn)行更刪改查

public class CategoryImpl {public void add(String s){System.out.println("添加商品分類"+s);}public void delete(int id){System.out.println("id為" + id + "被刪除");}public void update(int id){System.out.println("id為"+ id + "被修改");}
}
public class test02 {@Test//測(cè)試add功能public void add(){new CategoryImpl().add("服裝");}@Test//測(cè)試刪除功能public void delete(){new CategoryImpl().delete(0001);}
}

類的加載時(shí)機(jī)

1.new對(duì)象
2.new子類對(duì)象(new子類對(duì)象先初始化父類)
3.執(zhí)行main方法
4.調(diào)用靜態(tài)成員
5.利用反射反射這個(gè)類
在這里插入圖片描述

類加載器(了解)_ClassLoader

1.概述:在jvm中,負(fù)責(zé)將本地上的class文件加載到內(nèi)存的對(duì)象_ClassLoader
2.分類:
BootStrapClassLoader:根類加載器—》C語(yǔ)言寫(xiě)的,我們獲取不到的也稱之為引導(dǎo)類加載器,負(fù)載Java的核心類加載,比如
System,String等 jre/lib/rt.jar下的類都是核心類
ExtClassLoader:負(fù)責(zé)類加載器,負(fù)載jre的擴(kuò)展目錄中的jar包的加載,在jdk中jre的lib目錄下的ext目錄
AppClassLoader:系統(tǒng)類加載器,負(fù)責(zé)在居民啟動(dòng)時(shí),加載來(lái)自java命令的class文件(自定義類)
以及classPath環(huán)境變量所指定的jar包(第三方j(luò)ar包)
不同的類加載器負(fù)責(zé)加載不同的類
3.三者的關(guān)系:AppClassLoader的父類加載器時(shí)ExtClassLoader
ExtClassLoader的父類加載器時(shí)BootStrapClassLoader
但是:他們從代碼級(jí)別上來(lái)看,沒(méi)有子父類繼承關(guān)系 ---- 他們都有一個(gè)共同的父類---- ClassLoader
4.獲取類加載對(duì)象
類名.class.getClassLoader()
5.獲取類加載器對(duì)象對(duì)應(yīng)的父類加載器
ClassLoader類中的方法:ClassLoader
getParent() ----- 沒(méi)啥用
6.雙親委派(全盤負(fù)責(zé)委托機(jī)制)
a.Person類中有一個(gè)String
Person本身是AppClassLoader加載
String是BootStrapClassLoader加載
b.加載順序
Person本身是App加載,按道理來(lái)說(shuō)String也是App加載,但是app加載String的時(shí)候,先詢問(wèn)Ext是否加載,Ext負(fù)責(zé)加載的是拓展類, 再詢問(wèn)boot是否加載,boot負(fù)責(zé)加載核心類,所以String被加載
再比如
a.Test是app加載,person按理來(lái)說(shuō)也是app加載,但是app先問(wèn)ext要不要加載
ext說(shuō)不負(fù)責(zé)加載自定義類,我找boot去,boot一看,我不負(fù)責(zé)加載自定義類->perosn
app一看,兩個(gè)爹都不加載,我自己加
b.結(jié)論:兩個(gè)雙親都不加載,app才自己加載
比如:如果來(lái)了一個(gè)DNSNameService,我就想直接加載DNSNameService(擴(kuò)展類),
本身ext要加載,但是先問(wèn)boot,如果boot不加載,ext再加載
7.類加載器的cache(緩存)機(jī)制(拓展):一個(gè)類加載到內(nèi)存之后,緩存中也會(huì)保存一份,后面如果在使用此類,如果緩存中保存了這個(gè)類,就直接返回他,如果沒(méi)有才加載這個(gè)類,下一次如果有其他類在使用的時(shí)候就不會(huì)重新加載了,直接去緩存中拿,所以這就是為什么每個(gè)類只加載一次,內(nèi)存只有一份的原因
8.所以,類加載器的雙親委派和緩存機(jī)制共同早就了加載類的特點(diǎn),每個(gè)類只在內(nèi)存中加載一次

public class test03 {public static void main(String[] args) {boot();ext();app();}public static void boot(){final ClassLoader classLoader = Integer.class.getClassLoader();System.out.println(classLoader);}public static void ext(){final ClassLoader classLoader = DNSNameService.class.getClassLoader();System.out.println("classLoader = " + classLoader);}public static void app(){final ClassLoader classLoader = test01.class.getClassLoader();System.out.println("classLoader = " + classLoader);}
}

反射

class類的以及class對(duì)象的介紹以及反射介紹

1.class對(duì)象:jvm在堆內(nèi)存中為加載到內(nèi)存中的class文件創(chuàng)建出來(lái)的對(duì)象
2.class類:描述這個(gè)class對(duì)象額類叫做class類
在這里插入圖片描述

反射之獲取class對(duì)象

1.方法1:new對(duì)象,調(diào)用Object中的方法 Class getClass()
2.方法2:不管是基本類型還是引用類型,都有一個(gè)靜態(tài)成員class
3.方式3:class類中的方法 static Class<?> forName(String className)
className:類的全限定名 — 包名.類名

public class test04 {public static void main(String[] args) throws ClassNotFoundException {
//        1.方法1:new對(duì)象,調(diào)用Object中的方法  Class getClass()final Person person = new Person();Class class1 = person.getClass();System.out.println(class1);
//        2.方法2:不管是基本類型還是引用類型,都有一個(gè)靜態(tài)成員classfinal Class<Person> personClass = Person.class;System.out.println(personClass);
//        3.方式3:class類中的方法    static Class<?> forName(String className)
//        className:類的全限定名  --- 包名.類名final Class<?> aClass = Class.forName("Unitexc.Person");System.out.println(aClass);}
}

三種獲取Class對(duì)象的方式最通用的一種

1.Class.forName(“類的全限定名”)
2.原因:參數(shù)為String,可以配合配置文件使用

顯然最后一種是常用的,我們進(jìn)行代碼事項(xiàng),首先在相關(guān)包下,建立一個(gè)File名為pro.properties
內(nèi)容為: className=Unitexc.Person

public class test05 {public static void main(String[] args) throws IOException, ClassNotFoundException {final Properties properties = new Properties();final Person person = new Person();final FileInputStream in = new FileInputStream("D:\\untitled7\\day21\\src\\pro.properties");properties.load(in);String className = properties.getProperty("className");//System.out.println(className);final Class<?> aClass = Class.forName(className);System.out.println(aClass);}
}

獲取Class對(duì)象中的構(gòu)造方法

獲取所有public的構(gòu)造對(duì)象

class類中的方法
Constructor<?>[] getConstructors() ----- 獲取所有public的構(gòu)造方法

public class test06 {public static void main(String[] args) {final Class<Person> personClass = Person.class;final Constructor<?>[] constructors = personClass.getConstructors();for (Constructor<?> constructor : constructors) {System.out.println(constructor);}}
}

獲取空參構(gòu)造_public

Class類中的方法
Constructor getConstructor(Class<?>… parameterTypes)
parameterTypes:是一個(gè)可變參數(shù),可以傳遞0個(gè)或者多個(gè)參數(shù),傳遞的是參數(shù)類型的class對(duì)象
如果獲取空參構(gòu)造,paramTypes不寫(xiě)了
如果獲取有參構(gòu)造,parameterTypes寫(xiě)參數(shù)類型的class對(duì)象
Constructor類中的方法
T newInstance(Object…initargs)----- 創(chuàng)建對(duì)象
initargs:是一個(gè)可變參數(shù),可以傳遞0個(gè)或者多個(gè)參數(shù),傳遞的是實(shí)參
如果根據(jù)空參構(gòu)造創(chuàng)建對(duì)象,initargs不用寫(xiě)了
如果根據(jù)有參構(gòu)造創(chuàng)建對(duì)象,initargs需要寫(xiě)實(shí)參

public class test07 {public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {final Class<Person> ac = Person.class;final Constructor<Person> constructor = ac.getConstructor();final Person person = constructor.newInstance();System.out.println(person);}
}

利用空參構(gòu)創(chuàng)建對(duì)象的快捷方式_public

Class類中的方法
T newInstance() 根據(jù)空參構(gòu)造new對(duì)象
前提:
被反射的類中必須又public的空參構(gòu)造

final Person person1 = ac.newInstance();
System.out.println(person1);

利用反射獲取有參構(gòu)造并創(chuàng)建對(duì)象_public

Class類中的方法
Class類中的方法
Constructor getConstructor(Class<?>… parameterTypes)
parameterTypes:是一個(gè)可變參數(shù),可以傳遞0個(gè)或者多個(gè)參數(shù),傳遞的是參數(shù)類型的class對(duì)象
如果獲取空參構(gòu)造,paramTypes不寫(xiě)了
如果獲取有參構(gòu)造,parameterTypes寫(xiě)參數(shù)類型的class對(duì)象
Constructor類中的方法
T newInstance(Object…initargs)----- 創(chuàng)建對(duì)象
initargs:是一個(gè)可變參數(shù),可以傳遞0個(gè)或者多個(gè)參數(shù),傳遞的是實(shí)參
如果根據(jù)空參構(gòu)造創(chuàng)建對(duì)象,initargs不用寫(xiě)了
如果根據(jù)有參構(gòu)造創(chuàng)建對(duì)象,initargs需要寫(xiě)實(shí)參

final Class<Person> personClass = Person.class;final Constructor<Person> constructor = personClass.getConstructor(String.class,Integer.class);final Person li = constructor.newInstance("李云龍", 35);System.out.println(li);
http://aloenet.com.cn/news/43903.html

相關(guān)文章:

  • 怎么做跳轉(zhuǎn)流量網(wǎng)站搜索引擎調(diào)詞軟件
  • 怎樣做網(wǎng)頁(yè)游戲網(wǎng)站線上推廣是什么意思
  • 網(wǎng)站如何做導(dǎo)航軟文營(yíng)銷文章案例
  • 免費(fèi)做頭像網(wǎng)站色盲圖
  • 百度網(wǎng)站是怎么做的營(yíng)銷案例最新
  • 深圳建站公司專業(yè)公司最近熱點(diǎn)新聞事件2023
  • 焦作企業(yè)網(wǎng)站建設(shè)網(wǎng)站提交
  • 站長(zhǎng)工具綜合查詢ip怎樣在百度答題賺錢
  • 羅崗網(wǎng)站建設(shè)手機(jī)網(wǎng)絡(luò)優(yōu)化軟件
  • 做網(wǎng)站專家種子搜索引擎
  • 怎么做微信電影網(wǎng)站nba最新交易匯總
  • wordpress 安全 插件高級(jí)seo
  • 網(wǎng)站空間虛擬主機(jī)長(zhǎng)沙seo外包服務(wù)
  • 萊特幣做空 網(wǎng)站百度灰色關(guān)鍵詞代發(fā)
  • 上海外貿(mào)seo推廣百度快速seo優(yōu)化
  • 怎么做游戲推廣賺錢廊坊seo管理
  • 怎樣查詢網(wǎng)站備案號(hào)百度競(jìng)價(jià)可以自學(xué)嗎
  • mysql數(shù)據(jù)做彩票網(wǎng)站參考消息今天新聞
  • 企業(yè)宣傳網(wǎng)站在哪里做seo中國(guó)是什么
  • 用asp制作動(dòng)態(tài)網(wǎng)站比優(yōu)化更好的詞是
  • 百度資料怎么做網(wǎng)站東莞百度快速排名
  • 網(wǎng)站圖片優(yōu)化大小網(wǎng)絡(luò)營(yíng)銷策劃書(shū)步驟
  • dede網(wǎng)站日志個(gè)人網(wǎng)站怎么做
  • 網(wǎng)站優(yōu)化軟件免費(fèi)入駐的跨境電商平臺(tái)
  • 網(wǎng)站建設(shè)推廣的方法百度搜索量最大的關(guān)鍵詞
  • 做腳本從網(wǎng)站引流看網(wǎng)站時(shí)的關(guān)鍵詞
  • html網(wǎng)站發(fā)布高端網(wǎng)站建設(shè)
  • php網(wǎng)站建設(shè)帶數(shù)據(jù)庫(kù)模板網(wǎng)店關(guān)鍵詞怎么優(yōu)化
  • 企業(yè)網(wǎng)站上的二維碼怎么獲得手游推廣賺傭金的平臺(tái)
  • wordpress如何導(dǎo)出數(shù)據(jù)寧波優(yōu)化關(guān)鍵詞首頁(yè)排名