導航:首頁 > 程序命令 > 程序員閉包精講

程序員閉包精講

發布時間:2023-03-15 16:20:48

Ⅰ 千鋒旗下好程序員培訓怎麼樣

像這種一家民辦的it培訓班,旗下設立一個子品牌,主打某一個技術專業培訓的,並不是什麼新鮮事兒,一點兒都不稀奇。幾乎每一家it培訓班都這樣做。
想知道究竟怎麼樣,你在多方對比最起碼貨比三家呀,沒有對比就沒有判斷。而且這種培訓班的分校眾多,每個城市都有不同地方的水平也不一樣。
你可以參照我寫的如何挑選it培訓班的文章,把上面的方法學會了,就會判斷了。

Ⅱ 程序員有哪些黑話暗語

所以你正在學習如何編寫代碼,超越默認的Hello World例子,並把你的技能提高到一個新的水平。恭喜!

如果你一步步地進行編碼,編碼並不難,但是如果你開始新鮮的話,很難說開發者的語言。

我們要求我們頂尖的開發者作者就一些最重要的術語和概念向新的編碼人員提供他們的忠告。這是前18名。

變數

變數是與相關聯的值在整個應用程序或程序的執行而改變命名標識符。一旦在程序中定義了一個變數,在需要時可以改變該值以適應代碼的流程。

常量

常數是與相關聯的值,該值不整個應用程序或程序的執行改變命名標識符。與在整個應用程序的執行過程中變化和變化的變數相比,常量是固定的,不能被改變。

數據類型

一個特定類型的數據項,由它可以接受的值定義,所涉及的編程語言和/或可以在其上執行的操作。常見的數據類型包括整數(簡單數字),浮點數(基於十進制的數字),布爾值(TRUE或FALSE)和字元串(字母,數字或段落等字母數字字元串)好多其它的。

數據結構

數據結構是用於組織和在最適合的目的數據將被用於的方式存儲數據的專用格式。編程中的常見數據結構包括數組,表格,記錄,樹等等。

對象

在面向對象的編程語言中,對象是指可以共同訪問和管理的相關變數,常量,函數(也稱為方法)和數據結構的組合。

范圍

范圍是指程序的一部分中的功能,方法和變數在同一程序的另一部分中的可見性。大多數語言共享兩個通用作用域概念:局部作用域(其中可見性僅限於父函數或方法)和全局作用域(其中可見性不受限制)。

偽代碼

就像粗糙的草稿在最後的小說之前,並允許對故事的更廣泛的細節進行雕刻一樣,偽代碼是在編寫和調試實際代碼之前用於概述程序的意圖和流程的編程語言的簡化速記。

條件語句

當代碼必須選擇繼續的方式時,條件處理這些決定。條件評估為TRUE或FALSE,只要條件的最終值保持單個TRUE或FALSE值,則可以將多個條件組合為單個條件。表達式的一些例子是:

my_variable <5 =「」>

(如果my_variable小於5,則最終值為TRUE)

my_var1> 30 && my_var2 == 4(如果my_var1大於30,且my_var 2也等於4,則最終值為TRUE)

表達式

一個表達式是由ofvariables,數字和操作的數學表達式,並解析到一個特定的值。

循環

一連串的指令不斷重復(循環),直到達到一定的條件。

模塊化代碼

模塊化代碼是將你的程序功能分離成獨立的模塊的概念,隱藏了它們在公共介面或API後面的內部工作。這使得每個模塊的功能易於使用和重構,獨立於其他任何模塊使用。

API

短用於應用程序編程介面,一個API是用於訪問操作系統,軟體應用程序或實用程序的功能的程序指令集和標准。軟體開發人員向公眾發布其API,以便其他開發人員可以在自己的項目中利用其產品的功能和服務。

回電話

一個回調是一塊多數民眾贊成作為參數傳遞給其他代碼語句通過可執行代碼,並預計「回調」,並在特定的時間執行。同步(或阻止)回調是即時的,而非同步(或延遲)回調意味著稍後發生。

程序化思維

程序化思維是開發人員和編程人員的核心思想,意味著通過將大問題分解成更小的離散步驟,將特定對象描述為計算機可以理解的明確定義的值來解決這些大問題。

關閉

以最簡單的形式描述閉包是函數中的一個函數,作為變數存儲。與普通函數不同,閉包擁有一個持久的作用域,即使在你的程序移出它們定義的代碼塊之後,它仍然保留在局部變數中。

編譯和解釋語言

編譯語言(比如C,C ++和Swift)要求你編譯代碼並將其構建成獨立的二進制應用程序,然後才能分發和運行。

解釋語言(如Python,PHP和javaScript)是由主機上的語言解釋器直接讀取代碼運行的,並向計算機提供指令以執行程序。

重構

代碼重構是重構現有代碼而不改變其外部行為的過程。重構通常用於改進軟體的非功能區域,或者改善特定軟體領域的性能或效用。

IDE

集成開發環境的簡稱,IDE是一種用於為特定語言開發的開發工具(或工具集合),包括代碼編輯器,編譯器,調試器和其他實用程序。流行的IDE包括蘋果公司的Xcode,微軟的Visual Studio以及IntelliJ,NetBeans和Eclipse等Java IDE。無論你的語言如何,都有一個IDE。

雖然這18個術語實際上只是開發人員的技術術語的表面,但是在您的編碼之旅中,您會發現他們所代表的概念非常重要。

Ⅲ 最好的的程序員培訓機構是哪個

選擇培訓院校的時候,最主要的看的是它的辦學規模、專業程度、師資力量、品牌專業度、教學設施等等,可疑從這個方面綜合對比分析後,選擇一家適合自己的進行學習。

Ⅳ js閉包怎麼寫

varresult=[];
functionfoo(){
vari=0;
for(;i<3;i=i+1){
result[i]=function(){
alert(i)
}
}
};
foo();
result[0]();//3
result[1]();//3
result[2]();//3

這段代碼中,程序員希望foo函數中的變數i被內部循環的函數使用,並且能分別獲得他們的索引,而實際上,只能獲得該變數最後保留的值,也就是說.閉包中所記錄的自由變數,只是對這個變數的一個引用,而非變數的值,當這個變數被改變了,閉包里獲取到的變數值,也會被改變.


解決的方法之一,是讓內部函數在循環創建的時候立即執行,並且捕捉當前的索引值,然後記錄在自己的一個本地變數里.然後利用返回函數的方法,重寫內部函數,讓下一次調用的時候,返回本地變數的值,改進後的代碼:

varresult=[];
functionfoo(){
vari=0;
for(;i<3;i=i+1){
result[i]=(function(j){
returnfunction(){
alert(j);
};
})(i);
}
};
foo();
result[0]();//0
result[1]();//1
result[2]();//2

Ⅳ Javascript中的閉包是什麼意思

閉包的兩個特點:

1、作為一個函數變數的一個引用 - 當函數返回時,其處於激活狀態。

2、一個閉包就是當一個函數返回時,一個沒有釋放資源的棧區。

例1。

<scripttype="text/javascript">

functionsayHello2(name){

vartext='Hello'+name;//localvariable

varsayAlert=function(){alert(text);}

returnsayAlert;

}

varsy=sayHello2('never-online');

sy();

</script>

作為一個Javascript程序員,應該明白上面的代碼就是一個函數的引用。如果你還不明白或者不清楚的話,請先了解一些基本的知識,我這里不再敘述。

上面的代碼為什麼是一個閉包?

因為sayHello2函數里有一個內嵌匿名函數

sayAlert = function(){ alert(text); }

在Javascript里。如果你創建了一個內嵌函數(如上例),也就是創建了一個閉包。

在C或者其它的主流語言中,當一個函數返回後,所有的局部變數將不可訪問,因為它們所在的棧已經被消毀。但在Javascript里,如果你聲明了一個內嵌函數,局部變數將在函數返回後依然可訪問。比如上例中的變數sy,就是引用內嵌函數中的匿名函數function(){ alert(text); },可以把上例改成這樣:

<scripttype="text/javascript">

functionsayHello2(name){

vartext='Hello'+name;//localvariable

varsayAlert=function(){alert(text);}

returnsayAlert;

}

varsy=sayHello2('never-online');

alert(sy.toString());

</script>

這里也就與閉包的第二個特點相吻合。

例2。

<scripttype="text/javascript">

functionsay667(){

//

varnum=666;

varsayAlert=function(){alert(num);}

num++;

returnsayAlert;

}

varsy=say667();

sy();

alert(sy.toString());

</script>

上面的代碼中,匿名變數function() { alert(num); }中的num,並不是被拷貝,而是繼續引用外函數定義的局部變數——num中的值,直到外函數say667()返回。

例3。

<scripttype="text/javascript">

functionsetupSomeGlobals(){

//

varnum=666;

//

gAlertNumber=function(){alert(num);}

gIncreaseNumber=function(){num++;}

gSetNumber=function(x){num=x;}

}

</script>

<buttononclick="setupSomeGlobals()">生成-setupSomeGlobals()</button>

<buttononclick="gAlertNumber()">輸出值-gAlertNumber()</button>

<buttononclick="gIncreaseNumber()">增加-gIncreaseNumber()</button>

<buttononclick="gSetNumber(5)">賦值5-gSetNumber(5)</button>

上例中,gAlertNumber, gIncreaseNumber, gSetNumber都是同一個閉包的引用,setupSomeGlobals(),因為他們聲明都是通過同一個全局調用——setupSomeGlobals()。

你可以通過「生成」,「增加」,「賦值」,「輸出值」這三個按扭來查看輸出結果。如果你點擊「生成」按鈕,將創建一個新閉包。也就會重寫gAlertNumber(), gIncreaseNumber(), gSetNumber(5)這三個函數。

Ⅵ java程序員為什麼使用Groovy

正如Groovy對Java很多特性進行的包裝優化一樣,基於Groovy的HttpBuilder也包裹了HttpClient,使網路編程變得更加的方便易用,下面稍微來用一個例子看一下。
尋找各種依賴的jar包有時候會讓我們失去耐心,不過值得慶幸的是我們有Maven和Gradle這樣的工具,可以根據配置輕松的幫我們配置好我們需要的數據。下面我們來敘述一下整個過程。
1. 創建文件夾httpbuildertest
2. 創建gradle配置文件,build.gradle,內容如下:
apply plugin: "groovy"
apply plugin: "eclipse"

repositories {
mavenCentral()
}

dependencies {
compile "org.codehaus.groovy:http-builder:0.4.0"
compile "org.codehaus.groovy:groovy-all:2.3.3"
testCompile "org.spockframework:spock-core:0.7-groovy-2.0"
}

gradle我們將做另文介紹
3. 執行gralde eclipse(當然必須先安裝gradle),就可以生成eclipse所需要的.classpath和.project文件,這時候就可以使用eclipse導入功能來import->Existing Projects Into WorkSpace。
4. 創建我們的一個測試,試試看是不是可以使用httpbuilder了
import groovyx.net.http.HTTPBuilder
import spock.lang.Specification;
import static groovyx.net.http.Method.*
import static groovyx.net.http.ContentType.*

class HttpbuildLabSpec extends Specification{
HTTPBuilder http = new HTTPBuilder( 'http://m.weather.com.cn' )
public void testRequestWeather(){
when:
def info =""
http.request( GET, JSON ) {
url.path = '/data/101290401.html'
headers.'User-Agent' = 'Mozilla/5.0 Ubuntu/8.10 Firefox/3.0.4'
response.success = { resp, json ->
info = json.weatherinfo.city
}
response.failure = { resp -> println "Unexpected error: ${resp.statusLine.statusCode} : ${resp.statusLine.reasonPhrase}" }
}
then: "曲靖"==info
}
}

打完收工,通過這個小例子我們可以了解到這么一些內容:
(1)HTTPBuilder 是這個框架的核心類(要不然怎麼和框架一個名字),構建這個類的對象的時候,指定要請求的baseUrl。
(2)request方法可以指定請求的method和返回的數據格式,method對應的是GET/PUT/POST/DELETE/HEAD幾個常量,而數據格式目前有JSON/XML/HTML/BINARY/URLENC/ANY幾種。
(3)一個比較有意思的地方是,在http的request方法裡面,彷彿是無根之水一樣突然冒出來了幾個沒有聲明過的變數,看起來連編譯也不會通過的方法,那麼是如何能正常運作的呢?這個我們就要研究到Groovy的Closure(閉包)。Groovy的閉包里包含有一個delegate屬性,一般來說,這個delegate里保存的是閉包使用上下文的對象引用,比如a調用了一個閉包b,則b的delegate就是a的this對象。而在HTTPBuilder對象調用request方法的時候,它把傳入閉包的delegate改成了一個叫做SendDelegate的類對象(這是HTTPBuilder的內部類,他們都是用Java寫的,在新版的HttpBuilder里,已經改名為RequestConfigDelegate),這個類裡面,分別包含了一個叫做getHeaders()的方法,一個叫做getUrL()的方法,一個叫做getResponse()的方法。稍微思索一下我們就可以想到,Groovy里有這樣的特性,如果直接使用一個識別不出來的變數,Groovy會假設它是getter的一種簡寫形式,自動進行補全(當然這也是DSL的常用伎倆,把方法偽裝成短語),而getter並沒有參數,所以其括弧是可以簡寫的,實際上上面的代碼可以寫作getUrl().path = '/data/101290401.html',這樣就非常符合程序員的視覺體驗了。
(4)主要是為了喜歡追根問題的同學釋疑,實際上整個調用還是非常的簡單明快的,在request閉包里,我們通過response(記得嗎,實際上就是GetResponse()),獲得了一個Map結構,這個Map的內部結構實際上是Map<String,Closure>,對「success」和「failure」這兩個key我們分別設置了對應的閉包,這樣就完成了回調的設置,一旦方法成功或者失敗,就可以調用到對應的閉包。
(5)使用了JSON作為返回格式,閉包的第二個參數就是解析好的返回body,就是一個Json對象,是可以直接用點號來訪問的。當然最好不要在失敗的閉包里放這個參數,一般失敗的情況比較多,也許就是一個html返回,格式錯誤那麼測試也就無法按照預期進行了。

Ⅶ 北大青鳥java培訓:js解析機制與閉包分析

隨著互聯網的不斷發展,程序員在學習JavaScript編程開發上也有了更多的了解,今天我們歷陵就簡單分析一下關於JavaScript編程解析機制以及閉包的一些常見問題。
js解析機制:js代碼解析之前會創建一個如下的詞法環境對象(倉庫):LexicalEnvironment{}在掃描js代碼時會把:1、用聲明的方式創建的函數的名字;2、用var定義的變數的名字存到這個詞法環境中;3、同名的時候:函數聲明會覆蓋變數,下面的函數聲明會覆蓋上面的同名函數;4、函數的值為:對函數的一個引用;變數的值為undefined;5、如果用函數表達式的方式創建一個函數:varfn=function(){}這樣詞法環境中存的是一個變數名fn,並賦值為undefined;在調用函數的時候如果在函數上面調用就會出現和變數一樣的情況報錯undefined;這也是以兩種不同方式創建函數的區別;閉包:定義:(有多種定義)1、(比較通俗的定義):函數嵌套函數,內部函數可以引用外部函數的參數和變數,這些參數和變數不會被垃圾回收機族純制所回收;2、在計算機科學中,閉包是詞法閉包的簡稱,是引用了自由變數的函數,這個被引用的自由變數將和這個函數一同存在,即使已經離開了創造它的環境也不例外(意思就是不會被銷毀)。
3、閉包是由函數和其相關的引用環境組合而成的實體。
(潛台詞就是這個函數將和引用環境同時存在,必須有引用)綜合來說,不管怎麼定義都是在圍繞著兩個本質:函數在引用變數,這個變數將不會被銷毀。
閉包的一個作用就是:我們能夠通過閉包的方法來在外部訪問到一個內部函數的變數;很多人在解釋閉包的時候都會肢穗戚把子函數return出去以後在外部調用,其實無論在哪裡調用,閉包都已經形成了,只要是函數嵌套函數,並且子函數引用了父函數的變數,(不論子函數有沒有被調用,電腦培訓http://www.kmbdqn.cn/認為這個用一種方法證明:在子函數內部打斷點,在f12中觀察閉包里的內容,已經出現了引用函數,這時候調用還沒有被執行)這個時候閉包已經形成了。

Ⅷ 如何通俗易懂的解釋javascript裡面的『閉包』

其實很好理解, 先弄清楚閉包實現的核心是什麼 => 作用域.

如果是瀏覽器端寫一個js, 包含一些內容 , 這js就構成一個作用域

如:

<script>
varz="hi";
functiona(){
varz="question";
alert(this.z);
alert(z);
//dosomethinghere
}
functionb(){
varz="answer";
alert(this.z);
alert(z);
//dosomethinghere
}
alert(z);
</script>

這裡面的最大的作用域是什麼? 是window對象 因為在瀏覽器端一切東西都會附加到window對象上

也就是說 你看到的是 window.z window.a window.b

這時候問題來了:

function a 裡面的內容也是一個小作用域, 同理 function b也是

這時候你會發現一個問題, function b想訪問一下 function a裡面定義的z的值 訪問不到, 為什麼? 因為function a裡面的z在自己的小作用域里, 就好像java, c#裡面的private變數, 你外面根本訪問不了

【這就是閉知世包的產生】

1.程序員們利用這作用域開始做文章了, 利用作用域可以讓其他程序員寫的function b訪問不到自己寫的function a里的變數, 不會讓別人寫代碼的時候因為命名的問題「誤傷」了你的變數 導致你的function a出現了bug。

2.但經常情況下你還會寫一個function c實現一個什麼小功能 , 有可能你自己要用到function a里的z值 怎麼辦? 這時候你會不會想用全局變數 在函數最外面定義一個global_z;

這下麻煩了, 你想定義一個global_z, 張三和李四也想定義一個global_z, 這下就有3個global_z 你們就得互相打一架才能定誰用這global_z

為了避免打架,也為了避免後面的王五 趙六來搞事情,你們做了如下約定。

你: 我的global_z 現在叫 z , 我不放在外面了, 放在function a的作用域里, 我給你們提供一個getZ的方法, 可以讓你們自由訪問,我自己也可以訪問

functiona(){
varz="mysecret";
搭指肢return{
getZ:function(){
returnz;
}
}
}

張三說 好的 那我這樣用

functionb(){
varyourFunctionA=a();
varz=yourFunctionA.getZ();//"mysecret"
}

這樣最外面什麼都沒有很乾凈 js文件中就只有兩個函數 function a 和 function b

但是function b 通過這種方式 可以通信,即get到function a的值。


這就是閉包。

一句話來概括就是

通過把return出來一個介面,使得作用域間可以互相訪問私有變數等私有內容, 這就是閉包。

以上 我的看法。

Ⅸ Python中什麼是閉包

閉包就是能夠讀取其他函數內部變數的函數。例如在javascript中,只有函數內部的子函數才能讀取局部變數,所以閉包可以理解成「定義在一個函數內部的函數「。在本質上,閉包是將函數內部和函數外部連接起來的橋梁。
閉包包含自由(未綁定到特定對象)變數,這些變數不是在這個代碼塊內或者任何全局上下文中定義的,而是在定義代碼塊的環境中定義(局部變數)。「閉包」 一詞來源於以下兩者的結合:要執行的代碼塊(由於自由變數被包含在代碼塊中,這些自由變數以及它們引用的對象沒有被釋放)和為自由變數提供綁定的計算環境(作用域)。在PHP、Scala、Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby、 Python、Go、Lua、objective c、swift 以及Java(Java8及以上)等語言中都能找到對閉包不同程度的支持。

Ⅹ Java程序員為什麼學習Groovy

正如Groovy對Java很多特性進行的包裝優化一樣,基於Groovy的HttpBuilder也包裹了HttpClient,使網路編程變得更加的方便易用,下面稍微來用一個例子看一下。
尋找各種依賴的jar包有時候會讓我們失去耐心,不過值得慶幸的是我們有Maven和Gradle這樣的工具,可以根據配置輕松的幫我們配置好我們需要的數據。下面我們來敘述一下整個過程。
1. 創建文件夾httpbuildertest
2. 創建gradle配置文件,build.gradle,內容如下:
apply plugin: "groovy"
apply plugin: "eclipse"

repositories {
mavenCentral()
}

dependencies {
compile "org.codehaus.groovy:http-builder:0.4.0"
compile "org.codehaus.groovy:groovy-all:2.3.3"
testCompile "org.spockframework:spock-core:0.7-groovy-2.0"
}

gradle我們將做另文介紹
3. 執行gralde eclipse(當然必須先安裝gradle),就可以生成eclipse所需要的.classpath和.project文件,這時候就可以使用eclipse導入功能來import->Existing Projects Into WorkSpace。
4. 創建我們的一個測試,試試看是不是可以使用httpbuilder了
import groovyx.net.http.HTTPBuilder
import spock.lang.Specification;
import static groovyx.net.http.Method.*
import static groovyx.net.http.ContentType.*

class HttpbuildLabSpec extends Specification{
HTTPBuilder http = new HTTPBuilder( 'http://m.weather.com.cn' )
public void testRequestWeather(){
when:
def info =""
http.request( GET, JSON ) {
url.path = '/data/101290401.html'
headers.'User-Agent' = 'Mozilla/5.0 Ubuntu/8.10 Firefox/3.0.4'
response.success = { resp, json ->
info = json.weatherinfo.city
}
response.failure = { resp -> println "Unexpected error: ${resp.statusLine.statusCode} : ${resp.statusLine.reasonPhrase}" }
}
then: "曲靖"==info
}
}

打完收工,通過這個小例子我們可以了解到這么一些碼知內容:
(1)HTTPBuilder 是這個框架的核心類(要不然怎麼和框架一個名字),構建這個類的對象的時候,指定要請求的baseUrl。
(2)request方法可以指定請求的method和返回的數據格式,method對應的是GET/PUT/POST/DELETE/HEAD幾個常量,而數據格式目前有JSON/XML/HTML/BINARY/URLENC/ANY幾種。
(3)一個比較有意思的地方是,在http的request方法裡面,彷彿是無根之水一樣突然冒出來了幾個沒有聲明過的變數,看起來連編譯也不會通過的方遲梁消法,那麼是如何能正常運作的呢?這個我們就要研究到Groovy的渣橡Closure(閉包)。Groovy的閉包里包含有一個delegate屬性,一般來說,這個delegate里保存的是閉包使用上下文的對象引用,比如a調用了一個閉包b,則b的delegate就是a的this對象。而在HTTPBuilder對象調用request方法的時候,它把傳入閉包的delegate改成了一個叫做SendDelegate的類對象(這是HTTPBuilder的內部類,他們都是用Java寫的,在新版的HttpBuilder里,已經改名為RequestConfigDelegate),這個類裡面,分別包含了一個叫做getHeaders()的方法,一個叫做getUrL()的方法,一個叫做getResponse()的方法。稍微思索一下我們就可以想到,Groovy里有這樣的特性,如果直接使用一個識別不出來的變數,Groovy會假設它是getter的一種簡寫形式,自動進行補全(當然這也是DSL的常用伎倆,把方法偽裝成短語),而getter並沒有參數,所以其括弧是可以簡寫的,實際上上面的代碼可以寫作getUrl().path = '/data/101290401.html',這樣就非常符合程序員的視覺體驗了。
(4)第四點羅嗦了不少,主要是為了喜歡追根問題的同學釋疑,實際上整個調用還是非常的簡單明快的,在request閉包里,我們通過response(記得嗎,實際上就是GetResponse()),獲得了一個Map結構,這個Map的內部結構實際上是Map<String,Closure>,對「success」和「failure」這兩個key我們分別設置了對應的閉包,這樣就完成了回調的設置,一旦方法成功或者失敗,就可以調用到對應的閉包。
(5)使用了JSON作為返回格式,閉包的第二個參數就是解析好的返回body,就是一個Json對象,是可以直接用點號來訪問的。當然最好不要在失敗的閉包里放這個參數,一般失敗的情況比較多,也許就是一個html返回,格式錯誤那麼測試也就無法按照預期進行了。

閱讀全文

與程序員閉包精講相關的資料

熱點內容
android錄音開源 瀏覽:453
弗洛伊德演算法c 瀏覽:6
udp命令字 瀏覽:659
app服務端java源碼 瀏覽:798
電腦用文件夾玩大型游戲 瀏覽:254
安卓耳塞失靈怎麼辦 瀏覽:765
華三交換機保存命令 瀏覽:605
命令方塊怎麼調鍵盤 瀏覽:841
不把密碼存在伺服器上怎麼辦 瀏覽:398
怎麼讓指令方塊的命令消失 瀏覽:543
用單片機做plc 瀏覽:404
雲伺服器進入子目錄命令 瀏覽:795
伺服器機櫃如何配電 瀏覽:578
怎麼刪除iphone資源庫里的app 瀏覽:940
pdf魚 瀏覽:648
單片機pcf8591什麼作用 瀏覽:805
sql命令學院 瀏覽:283
加密軟體在電腦那個盤 瀏覽:988
android獲取外部存儲 瀏覽:573
怎麼查自己家的伺服器地址 瀏覽:858