摘要:中的數(shù)據(jù)類型在中,包含種數(shù)據(jù)類型字符串?dāng)?shù)值布爾值以及對(duì)象。然而事實(shí)上,這個(gè)會(huì)彈出,究其原因,就是此處的,因?yàn)檎{(diào)用對(duì)象的存在,使得當(dāng)閉包被調(diào)用時(shí)當(dāng)這個(gè)的發(fā)生時(shí),引用的是這個(gè)對(duì)象。關(guān)于函數(shù)可以保持自己內(nèi)部的數(shù)據(jù)這一特性,成為閉包。
1.JavaScript中的數(shù)據(jù)類型
在Javascript中,包含6種數(shù)據(jù)類型:字符串(string)、數(shù)值(number)、布爾值(boolean)、undefined、null以及對(duì)象(object)。PS:第6種應(yīng)該是object還是symbo(ES6)?2.JavaScript中的對(duì)象
此處的對(duì)象包括:對(duì)象(屬性的集合,即鍵值的散列表)、數(shù)組(有序的列表)、函數(shù)(包含可執(zhí)行的代碼)3.相等與等同運(yùn)算符
相等運(yùn)算符:如果操作數(shù)具有相同的類型,則判斷其等同性,如果兩個(gè)操作數(shù)的值相等,則返回true,否則返回false。
如果操作數(shù)的類型不同,則按照這樣的情況來判斷:null和undefined相等;
其中一個(gè)是數(shù)字,另一個(gè)是字符串,則將字符串轉(zhuǎn)換為數(shù)字,再做比較;
其中一個(gè)是true,先轉(zhuǎn)換為1(false轉(zhuǎn)為0)再做比較;
如果一個(gè)值是對(duì)象,另一個(gè)是數(shù)字/字符串,則將對(duì)象轉(zhuǎn)換為原始值(通過toString()或者valueOf());
其他情況,直接返回false。
4.原型對(duì)象及原型鏈等同運(yùn)算符(===):如果操作數(shù)的類型不同,則不進(jìn)行值的判斷,直接返回false。
如果操作數(shù)的類型相同,分下列情況來判斷:都是數(shù)字的情況,如果值相同,則兩者等同(有一個(gè)例外,就是NaN,NaN與其本身也不相等),否則不等同;
都是字符串的情況,與其他程序設(shè)計(jì)語言一樣,如果串的值不相等,則不等同;
都是布爾值,且值均為true/false,則等同;
如果兩個(gè)操作數(shù)引用同一個(gè)對(duì)象(數(shù)組,函數(shù)),則兩者完全等同;
如果兩個(gè)操作數(shù)均為null/undefined,則等同。
javascript本身是基于原型的,每個(gè)對(duì)象都有一個(gè)prototype的屬性,這個(gè)prototype本身也是一個(gè)對(duì)象,因此它本身也可以有自己的原型,這樣就構(gòu)成了一個(gè)鏈結(jié)構(gòu)。5.數(shù)組對(duì)象的方法
訪問一個(gè)屬性的時(shí)候,解析器需要從下向上的遍歷這個(gè)鏈結(jié)構(gòu),直到遇到該屬性,則返回屬性對(duì)應(yīng)的值,或者遇到原型為null的對(duì)象(javascript的基對(duì)象Object的構(gòu)造器的默認(rèn)prototype有一個(gè)null原型),如果此對(duì)象仍沒有該屬性,則返回undefined。
方法 | 描述 |
---|---|
concat() | 連接兩個(gè)或更多的數(shù)組,并返回結(jié)果數(shù)組 |
join() | 把數(shù)組的所有元素放入一個(gè)字符串。元素通過指定的分隔符進(jìn)行分隔 |
pop() | 刪除并返回?cái)?shù)組的最后一個(gè)元素 |
push() | 向數(shù)組的末尾添加一個(gè)或更多元素,并返回新的長(zhǎng)度 |
reverse() | 顛倒數(shù)組中元素的順序 |
shift() | 刪除并返回?cái)?shù)組的第一個(gè)元素 |
slice() | 從某個(gè)已有的數(shù)組返回選定的元素 |
sort() | 對(duì)數(shù)組的元素進(jìn)行排序 |
splice() | 刪除元素,并向數(shù)組添加新元素 |
unshift() | 向數(shù)組的開頭添加一個(gè)或更多的元素,并返回新的長(zhǎng)度 |
valueOf() | 返回?cái)?shù)組對(duì)象的原始值 |
jQuery的設(shè)計(jì)者John Resig提供的方法
Array.prototype.remove = function (from, to) { var rest = this.slice((to || from) + 1 || this.length); this.length = from < 0 ? this.length + from : from; return this.push.apply(this.rest); }; array.remove(0);//刪除第一個(gè)元素 array.remove(-1);//刪除倒數(shù)第一個(gè)元素 array.remove(0,2);//刪除數(shù)組下標(biāo)為0-2的元素(3個(gè))7.正則表達(dá)式
元字符 | 含義 |
---|---|
^ | 串的開始 |
$ | 串的結(jié)束 |
* | 零到多次匹配 |
+ | 一到多次匹配 |
? | 零或一次匹配 |
b | 單詞邊界 |
字符 | 含義 |
---|---|
字符本身 | 匹配字符本身 |
r | 匹配回車 |
n | 匹配換行 |
t | 制表符 |
f | 換頁 |
x# | 匹配十六進(jìn)制數(shù) |
cX | 匹配控制字符 |
標(biāo)志符 | 含義 |
---|---|
[...] | 在集合中的任一個(gè)字符 |
1 | 不在集合中的任一個(gè)字符 |
. | 除n之外的任一個(gè)字符 |
w | 所有的單字,包括字母數(shù)字及下劃線 |
W | 不包括所有的單字,w的補(bǔ)集 |
s | 所有的空白字符,包括空格,制表符 |
S | 所有的非空白字符 |
d | 所有的數(shù)字 |
D | 所有的非數(shù)字 |
b | 退格字符 |
標(biāo)記 | 含義 |
---|---|
{n} | 重復(fù)n次 |
{n,} | 重復(fù)n或更多次 |
{n,m} | 重復(fù)至少n次,至多m次 |
var pid = /^(d{15}|d{18})&/;//身份證 var mphone = /d{11}/;//手機(jī)號(hào)碼 var phone = /d{3,4}-d{7,8};//電話號(hào)碼8.使用正則表達(dá)式
創(chuàng)建正則表達(dá)式:
使用字面量:var regex = /pattern/;
使用RegExp對(duì)象:var regex = new RegExp("pattern", switchs);
而正則表達(dá)式的一般形式描述為:var regex = /pattern/[switchs];
這里的開關(guān)(switchs)有以下三種:
修飾符 | 描述 |
---|---|
i | 忽略大小寫開關(guān) |
g | 全局搜索開關(guān) |
m | 多行搜索開關(guān)(重定義^與$的意義) |
正則表達(dá)式對(duì)象的方法:
方法名 | 描述 |
---|---|
test() | 測(cè)試串中是否有合乎模式的匹配 |
exec() | 對(duì)串進(jìn)行匹配 |
compile() | 編譯正則表達(dá)式 |
除了正則表達(dá)式對(duì)象及字面量外,String對(duì)象中也有多個(gè)方法支持正則表達(dá)式操作。
方法 | 作用 |
---|---|
match | 匹配正則表達(dá)式,返回匹配數(shù)組 |
replace | 替換 |
split | 分割 |
search | 查找,返回首次發(fā)現(xiàn)的位置 |
var str = "life is very much like a mirror."; var result = str.match(/is|a/g);//返回["is", "a"] var str = "Welcome, John"; var result = str.replace(/span/g, "div");//10.正則表達(dá)式中括號(hào)的作用Welcome, John如果想把Welcome和John兩個(gè)單詞調(diào)換順序: var result = str.replace(/(w+),s(w+)/g, "$2, $1"); //John,Welcome
括號(hào)用來將子表達(dá)式標(biāo)記起來,以區(qū)別于其他表達(dá)式,比如很多的命令行程序都提供幫助命令,鍵入h和鍵入help的意義是一樣的,那么就會(huì)有這樣的表達(dá)式:h(elp)?//字符h之后的elp可有可無
括號(hào)用來分組,當(dāng)正則表達(dá)式執(zhí)行完成之后,與之匹配的文本會(huì)按規(guī)則填入各個(gè)分組。
例如:
var pattern = /w{4}(d{4})(w{2})/; var result = pattern.exec("yunn0871cg"); console.log("city code = " + result[1] + ", county code = " + result[2]); //city code = 0871, county code = cg
正則表達(dá)式的exec方法會(huì)返回一個(gè)數(shù)組,數(shù)組的第一個(gè)元素(下標(biāo)為0)表示整個(gè)串,第一個(gè)元素為第一個(gè)分組,第二個(gè)元素為第二個(gè)分組;
第三種情況,括號(hào)用來對(duì)引用起輔助作用,即在同一個(gè)表達(dá)式中,后邊的式子可以引用前邊匹配的文本。
11.匿名自執(zhí)行函數(shù)有的函數(shù)只需要執(zhí)行一次,其內(nèi)部變量無需維護(hù),比如UI的初始化,那么我們可以使用閉包。例如:
var datamodel = { table: [], tree: {} }; (function (dm) { for (var i = 0; i < dm.table.rows; i++) { var row = dm.table.rows[i]; for (var j = 0; j < row.cells; i++) { drawCell(i, j); } } })(datamodel);
我們創(chuàng)建了一個(gè)匿名的函數(shù),并立即執(zhí)行它,由于外部無法引用它內(nèi)部的變量,因此在執(zhí)行完后很快就會(huì)被釋放,最主要的是這種機(jī)制不會(huì)污染全局對(duì)象。
12.緩存設(shè)想我們有一個(gè)處理過程很耗時(shí)的函數(shù)對(duì)象,每次調(diào)用都會(huì)花費(fèi)很長(zhǎng)時(shí)間,那么我們就需要將計(jì)算出來的值存儲(chǔ)起來,當(dāng)調(diào)用這個(gè)函數(shù)的時(shí)候,首先在緩存中查找,如果找不到,則進(jìn)行計(jì)算,然后更新緩存并返回值,如果找到了,直接返回查找到的值即可。閉包可以做到這一點(diǎn),因?yàn)樗粫?huì)釋放外部的引用,函數(shù)內(nèi)部的值可以得以保留。
var CachedSearchBox = (function () { var cache = {}, count = []; return { attachSearchBox: function (disd) { if (disd in cache) {//如果在緩存中 return cache[disd];//直接返回 } var fsb = new uikit.webctrl.SearchBox(disd);//創(chuàng)建 cache[disd] = fsb;//更新緩存 if (count.length > 100) {//保證緩存的大小小于100個(gè) delete cache[count.shift()];//刪除最前面那個(gè)緩存 } return fsb; }, clearSearchBox: function (disd) { if (disd in cache) { cache[disd].clearSelection(); } } } })(); CachedSearchBox.attachSearchBox("input1");13.閉包實(shí)現(xiàn)封裝
var person = function () { //變量作用域?yàn)楹瘮?shù)內(nèi)部,外部無法訪問 var name = "default"; return { getName: function () { return name; }, setName: function (newName) { name = newName; } } }(); person.name;//undefined person.getName();//default person.setName("aaa"); person.getName();//aaa14.閉包中的this
關(guān)于this我們之前已經(jīng)做過討論,它表示對(duì)調(diào)用對(duì)象的引用,而在閉包中,最容易出現(xiàn)錯(cuò)誤的地方是誤用了this。在js的開發(fā)中,一個(gè)常見的錯(cuò)誤就是將this類比為其他的外部局部變量。
$(function () { var con = $("#div#panel"); this.id = "content"; con.click(function () { alert(this.id);//panel }) });
此處的this.id到底引用著什么呢?很多開發(fā)者可能根據(jù)閉包的概念,做出錯(cuò)誤的判斷:content,理由是,this.id顯示的被賦值為content。然而事實(shí)上,這個(gè)alert會(huì)彈出panel,究其原因,就是此處的this,因?yàn)檎{(diào)用對(duì)象的存在,使得當(dāng)閉包被調(diào)用時(shí)(當(dāng)這個(gè)panel的click發(fā)生時(shí)),this引用的是con這個(gè)jQuery對(duì)象。而匿名函數(shù)中的this.id="content"是對(duì)匿名函數(shù)本身做的操作。兩個(gè)this引用的不是同一個(gè)對(duì)象。如果想要在事件處理函數(shù)中訪問這個(gè)值,我們必須做一些改變:
$(function () { var con = $("#div#panel"); this.id = "content"; var self = this; con.click(function () { alert(self.id);//content }) });15.new操作符
在JavaScript中,通過new操作符來作用于一個(gè)函數(shù),實(shí)質(zhì)上會(huì)發(fā)生這樣的動(dòng)作。
首先,創(chuàng)建一個(gè)空對(duì)象,然后用函數(shù)apply方法,將這個(gè)空對(duì)象傳入作為apply的第一個(gè)參數(shù)以及上下文參數(shù)。這樣函數(shù)內(nèi)部的this將會(huì)被這個(gè)空的對(duì)象所替代。
var triangle = new Shape("triangle"); //上一句相當(dāng)于下面的代碼 var triangle = {}; Shape.apply(triangle, ["triangle"]);16.用JavaScript函數(shù)實(shí)現(xiàn)封裝
function Person(name) { //私有變量 var address = "1"; //公共方法 this.getAddress = function () { return address; }; //公共變量 this.name = name; } //公共方法 Person.prototype.getName = function () { return this.name; }; //公共方法 Person.prototype.setName = function (name) { this.name = name; };
首先聲明一個(gè)函數(shù),作為模板,用面向?qū)ο蟮男g(shù)語來說,就是一個(gè)類。用var方式聲明的變量?jī)H在類內(nèi)部可見,所以address為一個(gè)私有成員,訪問address的唯一方法就是通過我們向外暴露的getAddress方法,而get/setName,均為原型鏈上的方法,因此為公開的。我們可以做個(gè)測(cè)試:
var jack = new Person("jack"); console.log(jack.name);//jack console.log(jack.getName());//jack console.log(jack.address);//undefined console.log(jack.getAddress());//1
添加靜態(tài)變量:
function Person(name) { //私有變量 var address = "1"; //公共方法 this.getAddress = function () { return address; }; //公共變量 this.name = name; } Person.TAG = "javascript-core";//在訪問該變量的時(shí)候,不需要實(shí)例化Person類17.函數(shù)式的JavaScript
函數(shù)可以保持自己內(nèi)部的數(shù)據(jù),函數(shù)的運(yùn)算對(duì)外部無副作用(修改了外部的全局變量的狀態(tài)等)。關(guān)于函數(shù)可以保持自己內(nèi)部的數(shù)據(jù)這一特性,成為閉包。示例:
var outter = function () { var x = 0; return function () { return x++; } }; var a = outter(); console.log(a());//0 console.log(a());//1 console.log(a());//2 var b = outter(); console.log(b());//0 console.log(b());//1
變量a通過閉包引用outter的一個(gè)內(nèi)部變量,每次調(diào)用a()就會(huì)改變此內(nèi)部變量,應(yīng)該注意的是,當(dāng)調(diào)用a時(shí),函數(shù)outter已經(jīng)返回了,但是內(nèi)部變量x的值仍然被保持。而變量b也引用了outter,但是這是一個(gè)不同的閉包,所以b開始引用的x值不會(huì)隨著a()被調(diào)用而改變,兩者有不同的實(shí)例,這就相當(dāng)于面向?qū)ο笾械牟煌瑢?shí)例擁有不同的私有屬性,互不干涉。
18.柯里化的概念柯里化就是預(yù)先將函數(shù)的某些參數(shù)傳入,得到一個(gè)簡(jiǎn)單的函數(shù),但是預(yù)先傳入的參數(shù)被保存在閉包中,因此會(huì)有一些奇特的特性。比如:
var adder = function (num) { return function (y) { return num + y; } }; var inc = adder(1); var dec = adder(-1); console.log(inc(99));//100 console.log(dec(101));//10019.函數(shù)式編程風(fēng)格
通常來講,函數(shù)式編程的謂詞(關(guān)系運(yùn)算符,如大于、小于、等于的判斷等),以及運(yùn)算(加減乘除等)都會(huì)以函數(shù)的形式出現(xiàn),比如:
a > b
通常表示為:
gt(a, b)
因此,可以首先對(duì)這些常見的操作進(jìn)行一些包裝,以便我們的代碼更具有“函數(shù)式”風(fēng)格。
如果我們之前的編碼風(fēng)格是這樣:
//階乘 function factorial(n) { if (n == 1) { return 1; } else { return n * factorial(n - 1); } }
在函數(shù)式風(fēng)格下,就應(yīng)該是這樣了:
function factorial(n) { if (equal(n, 1)) { return 1; } else { return mul(n, factorial(dec(n))); }` }20.活動(dòng)對(duì)象
在JavaScript中,當(dāng)一個(gè)函數(shù)被調(diào)用的時(shí)候,就會(huì)產(chǎn)生一個(gè)特殊的對(duì)象:活動(dòng)對(duì)象。這個(gè)對(duì)象中包含了參數(shù)列表和arguments對(duì)象等屬性。由于活動(dòng)對(duì)象是變量對(duì)象的特例,因此,它包含變量對(duì)象所有的屬性,如變量定義,函數(shù)定義等。
實(shí)例:
function func(handle, message) { var id = 0; function doNothing(x) { return x; } handle(message); } func(print, "hello");//執(zhí)行到這里的時(shí)候,活動(dòng)對(duì)象被創(chuàng)建21.作用域鏈
作用域鏈與原型鏈類似,也是一個(gè)對(duì)象組成的鏈,用以在上下文中查找標(biāo)識(shí)符(變量、函數(shù)等)。查找時(shí)也與原型鏈類似,如果激活對(duì)象本身具有該變量,則直接使用該變量的值,否則向上層搜索,依次類推,直到查找到或者返回undefined。作用域鏈的主要作用是用以查找自由變量。所謂自由變量是指,在函數(shù)中使用的,非函數(shù)內(nèi)部局部變量,也非函數(shù)內(nèi)部定義的函數(shù)名,也非形式參數(shù)變量。這些變量通常來自于函數(shù)的“外層”或者全局作用域,比如,我們?cè)诤瘮?shù)內(nèi)部使用的window對(duì)象及其屬性。
var topone = "top-level"; (function outter() { var middle = "mid-level"; (function inner() { var bottom = "bot-level"; console.log(topone + ">" + middle + ">" + bottom); })(); })(); //在函數(shù)Inner中,console.log語句出現(xiàn)的topone、middle變量就是自由變量22.詞法作用域
在javascript中,函數(shù)對(duì)象的創(chuàng)建和函數(shù)本身的執(zhí)行是完全不同的兩個(gè)過程。
function func() { var x = 0; console.log("func"); }//這是函數(shù)的創(chuàng)建 func();//函數(shù)的執(zhí)行
所謂詞法作用域(靜態(tài)作用域)是指,在函數(shù)對(duì)象的創(chuàng)建時(shí),作用域就已經(jīng)建立,而并非到執(zhí)行時(shí),因?yàn)楹瘮?shù)創(chuàng)建后可能永遠(yuǎn)不會(huì)被執(zhí)行,但是作用域是始終存在的。比如在上例中,如果在程序中沒有調(diào)用func(),那么,func對(duì)象仍舊是存在的,在內(nèi)存的結(jié)構(gòu)可能是這樣的:23.this的上下文
func.["[[scope]]"] = global.["variable object"];
而當(dāng)函數(shù)執(zhí)行時(shí),進(jìn)入函數(shù)執(zhí)行期上下文,函數(shù)的活動(dòng)對(duì)象被創(chuàng)建,此時(shí)的作用域鏈?zhǔn)腔顒?dòng)對(duì)象和"[[scope]]"屬性的合成。
this值是執(zhí)行期上下文對(duì)象的一個(gè)屬性(執(zhí)行期上下文對(duì)象包括變量對(duì)象、作用域鏈以及this)。執(zhí)行期上下文對(duì)象有三類,當(dāng)進(jìn)入不同的上下文時(shí),this的值會(huì)確定下來,并且this的值不能更改。在執(zhí)行全局代碼時(shí),控制流會(huì)進(jìn)入全局執(zhí)行期上下文,而在執(zhí)行函數(shù)時(shí),又會(huì)有函數(shù)執(zhí)行期上下文。例如:
var global = this; var tom = { name: "Tom", home: "desine", getInfo: function () { console.log(this.name + ", from " + this.home); } }; tom.getInfo(); var jerry = { name: "Jerry", getInfo: tom.getInfo }; jerry.getInfo(); global.getInfo = tom.getInfo; global.getInfo(); 輸出結(jié)果: Tom, from desine Jerry, from undefined , from undefined
tom對(duì)象本身具有name和home屬性,因此在執(zhí)行tom.getInfo時(shí),會(huì)打印tom對(duì)象上的這兩個(gè)屬性值。當(dāng)將global.getInfo屬性設(shè)置為tom.getInfo時(shí),getInfo中的this值,getInfo中的this值,在運(yùn)行時(shí),事實(shí)上是global對(duì)象,所以name和home均未定義。
24.window對(duì)象window對(duì)象是對(duì)瀏覽器當(dāng)前窗口的引用,因?yàn)闉g覽器會(huì)將window與自身繪制出來的窗口綁定起來,我們對(duì)window的操作事實(shí)上會(huì)映射到瀏覽器窗口上。正是瀏覽器本身提供了這種腳本化的能力,我們才有機(jī)會(huì)通過JavaScript代碼來完成很多操作。25.文檔對(duì)象模型(DOM)
DOM即文檔對(duì)象模型,它是一個(gè)平臺(tái),提供語言無關(guān)的API,允許程序訪問并更改文檔的內(nèi)容、結(jié)構(gòu)以及樣式。HTML文檔是一個(gè)樹形的結(jié)構(gòu),與瀏覽器中的頁面中的結(jié)構(gòu)一一對(duì)應(yīng)。26.事件驅(qū)動(dòng)模型
由于客戶端JavaScript的開發(fā)屬于用戶界面開發(fā)的范疇,因此使用事件驅(qū)動(dòng)模型就顯得非常自然了。事件驅(qū)動(dòng)的特點(diǎn)在于:代碼塊的運(yùn)行與否與程序流程無關(guān)。而傳統(tǒng)的流式代碼的特點(diǎn)是,從函數(shù)的入口進(jìn)入,依次調(diào)用各個(gè)子模塊的處理函數(shù),最后退出。這種編程模式主要適用于與UI關(guān)系不大的場(chǎng)合,很少有異步的過程,這些特點(diǎn)可能要追溯到計(jì)算機(jī)程序的最初模型——批處理。27.與服務(wù)器端交互(Ajax)
而事件驅(qū)動(dòng)模型主要是面向用戶的,你無法知道用戶會(huì)如何使用你的程序,因此就只能通過回調(diào)、事件監(jiān)聽等方式,當(dāng)用戶做出某個(gè)動(dòng)作時(shí)才會(huì)觸發(fā)之前已經(jīng)注冊(cè)好的監(jiān)聽器,從而執(zhí)行相關(guān)代碼,而不是順序地執(zhí)行。甚至在一次運(yùn)行中,部分代碼始終沒有被觸發(fā),也就根本不會(huì)被執(zhí)行到。
Ajax表示異步JavaScript與XML。事實(shí)上,Ajax與XML幾乎沒有任何關(guān)系,因?yàn)槭钱惒浇换?,所以用戶的頁面不用刷新,在同一個(gè)頁面中,客戶端請(qǐng)求服務(wù)數(shù)據(jù),當(dāng)服務(wù)數(shù)據(jù)返回時(shí),通過JavaScript將數(shù)據(jù)片段填充到頁面的某個(gè)部分,即實(shí)現(xiàn)了局部刷新。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/79984.html
摘要:上一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第九節(jié)防止跨站攻擊下一篇文章第三章概念及應(yīng)用第二節(jié)服務(wù)端編程的異步特性使得其非常適合服務(wù)器的高并發(fā)處理,客戶端與服務(wù)器的持久連接應(yīng)用框架就是高并發(fā)的典型應(yīng)用。因?yàn)槭堑臉?biāo)準(zhǔn)協(xié)議,所以不受企業(yè)防火墻的攔截。 上一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第九節(jié):防止跨站攻擊下一篇文章:Python:Tornado 第三章...
摘要:上一篇文章第三章概念及應(yīng)用第二節(jié)服務(wù)端編程下一篇文章第四章網(wǎng)站部署第一節(jié)調(diào)試模式由于是的標(biāo)準(zhǔn)之一,所以主流瀏覽器的客戶端編程語音已經(jīng)支持的客戶端編程。此事件發(fā)生在收到了來自服務(wù)器的消息時(shí)。此事件發(fā)生在通信過程中有任何錯(cuò)誤時(shí)。 上一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第二節(jié):服務(wù)端編程下一篇文章:Python:Tornado 第四章:T...
摘要:上一篇文章第三章概念及應(yīng)用第一節(jié)概念下一篇文章第三章概念及應(yīng)用第三節(jié)客戶端編程定義了類用于處理鏈接的請(qǐng)求,應(yīng)用開發(fā)者應(yīng)該繼承該類并實(shí)現(xiàn)其中的函數(shù)。通常,這是服務(wù)器端編程的核心函數(shù),通過解析收到的消息做出相應(yīng)的處理。 上一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第一節(jié):WebSocket概念下一篇文章: Python:Tornado 第三章...
摘要:作用默認(rèn)的,直接在當(dāng)前線程運(yùn)行總是開啟一個(gè)新線程用于密集型任務(wù),如異步阻塞操作,這個(gè)調(diào)度器的線程池會(huì)根據(jù)需要增長(zhǎng)對(duì)于普通的計(jì)算任務(wù),請(qǐng)使用默認(rèn)是一個(gè),很像一個(gè)有線程緩存的新線程調(diào)度器計(jì)算所使用的。這個(gè)使用的固定的線程池,大小為核數(shù)。 轉(zhuǎn)載請(qǐng)注明出處:https://zhuanlan.zhihu.com/p/20687307 RxJava系列1(簡(jiǎn)介) RxJava系列2(基本概念及使...
閱讀 1775·2023-04-26 03:04
閱讀 2713·2019-08-30 15:44
閱讀 3875·2019-08-30 14:15
閱讀 3742·2019-08-27 10:56
閱讀 3102·2019-08-26 13:53
閱讀 2743·2019-08-26 13:26
閱讀 3207·2019-08-26 12:11
閱讀 3775·2019-08-23 18:21