亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript核心概念及實(shí)踐

wangxinarhat / 1978人閱讀

摘要:中的數(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。


等同運(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,則等同。

4.原型對(duì)象及原型鏈
javascript本身是基于原型的,每個(gè)對(duì)象都有一個(gè)prototype的屬性,這個(gè)prototype本身也是一個(gè)對(duì)象,因此它本身也可以有自己的原型,這樣就構(gòu)成了一個(gè)鏈結(jié)構(gòu)。


訪問一個(gè)屬性的時(shí)候,解析器需要從下向上的遍歷這個(gè)鏈結(jié)構(gòu),直到遇到該屬性,則返回屬性對(duì)應(yīng)的值,或者遇到原型為null的對(duì)象(javascript的基對(duì)象Object的構(gòu)造器的默認(rèn)prototype有一個(gè)null原型),如果此對(duì)象仍沒有該屬性,則返回undefined。
5.數(shù)組對(duì)象的方法
方法 描述
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ì)象的原始值
6.借助數(shù)組對(duì)象自身的slice方法刪除數(shù)組某個(gè)數(shù)據(jù)
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á)式
9.String中的正則表達(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");//
Welcome, John
如果想把Welcome和John兩個(gè)單詞調(diào)換順序: var result = str.replace(/(w+),s(w+)/g, "$2, $1"); //John,Welcome
10.正則表達(dá)式中括號(hào)的作用

括號(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();//aaa
14.閉包中的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));//100
19.函數(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)可能是這樣的:
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]]"屬性的合成。
23.this的上下文
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ī)程序的最初模型——批處理。
而事件驅(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í)行到。
27.與服務(wù)器端交互(Ajax)
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

    相關(guān)文章

    • Python:Tornado 第三章:HTML5 WebSocket念及應(yīng)用:第一節(jié):WebSoc

      摘要:上一篇文章第二章實(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 第三章...

      mo0n1andin 評(píng)論0 收藏0
    • Python:Tornado 第三章:HTML5 WebSocket念及應(yīng)用:第三節(jié):客戶端編程

      摘要:上一篇文章第三章概念及應(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...

      miguel.jiang 評(píng)論0 收藏0
    • Python:Tornado 第三章:HTML5 WebSocket念及應(yīng)用:第二節(jié):服務(wù)端編程

      摘要:上一篇文章第三章概念及應(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 第三章...

      xfee 評(píng)論0 收藏0
    • RxJava系列二(基本念及使用介紹)

      摘要:作用默認(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(基本概念及使...

      Profeel 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    最新活動(dòng)
    閱讀需要支付1元查看
    <