第一組:劉聰 w3wp.exe進程消失問題
在前后臺分離的情況下我們利用vs調(diào)試需要在IIS(因特網(wǎng)信息服務(wù)器)與應(yīng)用程序池相關(guān)聯(lián)的一個進程w3wp.exe附加到進程。然而經(jīng)常會出現(xiàn)附加進程時找不到配置網(wǎng)站相關(guān)的w3wp.exe進程。其實原因是IIS把進程干掉了。Iis默認設(shè)置是20分鐘沒有request進來就會自動回收進程。當我們再次發(fā)送新的request時就又會啟動該進程。操作方法是在IIS中瀏覽該網(wǎng)站:



我們也可以在iis應(yīng)用程序池中設(shè)置應(yīng)用程序池的默認設(shè)置中的閑置時間進行控制:

第二組:趙彩鳳 鍵盤控制
之前做計算器時,實現(xiàn)了鍵盤控制。通過鍵值,確定按下的鍵。



使用鍵盤輸入會產(chǎn)生輸入抖動,加一個休眠就可以避免。
function sleep(n) {
var start = new Date().getTime();
while (true) if (new Date().getTime() - start > n) break;
}
第三組: JS與DOM編程藝術(shù)——JavaScript語法
最近在看《JavaScript與DOM編程藝術(shù)》,然后對書中還不是很熟練的地方進行了記錄,下面是整理記錄。
最好的做法是把<script>標簽放在HTML文檔最后,</body>標簽之前。
JS中,變量與其他語法元素的名字都是區(qū)分大小寫的,變量名允許包含字母、數(shù)字和下劃線,但第一個字符不能為數(shù)字。
通常用駝峰命名法命名函數(shù)名,方法名和對象屬性名
可以隨意選用引號,但最好是根據(jù)字符串所包含的字符來選擇。如果字符串包含雙引號,就把整個字符串放在單引號里,如果字符串包含單引號,就把整個字符串放在雙引號里
如果在某個函數(shù)中使用了var,那個變量就將被視為一個局部變量,它只存在于這個函數(shù)的上下文中;反之,如果沒有使用var,那個變量就將被視為一個全局變量,如果腳本里已經(jīng)存在一個與之同名的全局變量,這個函數(shù)就會改變那個全局變量。
在定義一個函數(shù)時,我們一定要把它內(nèi)部的變量全都明確地聲明為局部變量。如果你總是在函數(shù)里使用var關(guān)鍵字來定義變量,就能避免任何形式的二義性隱患。
第四組:李俊 JavaScript小技巧
1、使用 === 代替 ==
==(或者!=)做對比的時候會將進行對比的兩者轉(zhuǎn)換到同一類型再比較。===(或者!==)則不會,他會將進行對比的兩者做類型對比和值對比,相對于 == ,=== 的對比會更加嚴謹。
[10] == 10 // true
[10] === 10 // false
"10" == 10 // true
"10" === 10 // false
[] == 0 // true
[] === 0 // false
"" == false // true 但是 true == "a" 是false
"" === false // false
2、轉(zhuǎn)換數(shù)值的更加的方法
將字符串轉(zhuǎn)換為數(shù)字是非常常見的。最簡單和最快的(jspref)的方式來實現(xiàn),將使用+(加)算法。
var one = '1';
var numberOne = +one; // Number 1
你也可以使用-(減號)算法的轉(zhuǎn)換類型并且變成負數(shù)值。
var one = '1';
var negativeNumberOne = -one; // Number -1
3、清空一個數(shù)組
你定義一個數(shù)組,并希望清空它的內(nèi)容。通常,你會這樣做:
var list = [1, 2, 3, 4];
function empty() {
//清空數(shù)組
list = [];
}
empty();
但是還有一種更高性能的方法。
你可以使用這些代碼:
var list = [1, 2, 3, 4];
function empty() {
//清空數(shù)組
list.length = 0;
}
empty();
list =[] 將一個變量指定個引用到那個數(shù)組,而其他引用都不受影響。這意味著,對于先前數(shù)組的內(nèi)容的引用仍然保留在內(nèi)存中,從而導致內(nèi)存泄漏。
list.length = 0 刪除數(shù)組內(nèi)的所有東西,這不需要引用任何其他的東西
然而,如果你有一個copy的數(shù)組(A和copy-A),如果你使用list.length = 0 刪除其內(nèi)容,副本也會失去它的內(nèi)容。
var foo = [1,2,3];
var bar = [1,2,3];
var foo2 = foo;
var bar2 = bar;
foo = [];
bar.length = 0;
console.log(foo, bar, foo2, bar2);
//[] [] [1, 2, 3] []
StackOverflow上的更多詳情:difference-between-array-length-0-and-array
4、對數(shù)組排序進行"洗牌"(隨機排序)
這段代碼在這里使用Fisher Yates洗牌算法給一個指定的數(shù)組進行洗牌(隨機排序)。
function shuffle(arr) {
var i,
j,
temp;
for (i = arr.length - 1; i > 0; i--) {
j = Math.floor(Math.random() * (i + 1));
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
};
案例:
var a = [1, 2, 3, 4, 5, 6, 7, 8];
var b = shuffle(a);
console.log(b);
// [2, 7, 8, 6, 5, 3, 1, 4]
5、返回對象的函數(shù)能夠用于鏈式操作
當創(chuàng)建面向?qū)ο蟮腏avaScript對象的function時,函數(shù)返回一個對象將能夠讓函數(shù)可鏈式的寫在一起來執(zhí)行。
function Person(name) {
this.name = name;
this.sayName = function() {
console.log("Hello my name is: ", this.name);
return this;
};
this.changeName = function(name) {
this.name = name;
return this;
};
}
var person = new Person("John");
person.sayName().changeName("Timmy").sayName();
//Hello my name is: John
//Hello my name is: Timmy
6、字符串安全連接
假設(shè)你有一些類型未知的變量,你想將它們連接起來。可以肯定的是,算法操作不會在級聯(lián)時應(yīng)用:
var one = 1;
var two = 2;
var three = '3';
var result = ''.concat(one, two, three); //"123"
這樣的連接不正是你所期望的。相反,一些串聯(lián)和相加可能會導致意想不到的結(jié)果:
var one = 1;
var two = 2;
var three = '3';
var result = one + two + three; //"33" 而不是 "123"
談到性能,對join和concat進行比較,他們的執(zhí)行速度是幾乎一樣的。你可以在MDN了解更多與concat相關(guān)的知識
7、更快的四舍五入
今天的技巧是關(guān)于性能。見到過雙波浪線"~~"操作符嗎?它有時也被稱為double NOT運算符。你可以更快的使用它來作為Math.floor()替代品。為什么呢?
單位移~將32位轉(zhuǎn)換輸入-(輸入+1),因此雙位移將輸入轉(zhuǎn)換為-(-(輸入+1)),這是個趨于0的偉大的工具。對于輸入的數(shù)字,它將模仿Math.ceil()取負值和Math.floor()取正值。如果執(zhí)行失敗,則返回0,這可能在用來代替Math.floor()失敗時返回一個NaN的時候發(fā)揮作用。
// 單位移
console.log(~1337) // -1338
// 雙位移
console.log(~~47.11) // -> 47
console.log(~~-12.88) // -> -12
console.log(~~1.9999) // -> 1
console.log(~~3) // -> 3
//失敗的情況
console.log(~~[]) // -> 0
console.log(~~NaN) // -> 0
console.log(~~null) // -> 0
//大于32位整數(shù)則失敗
console.log(~~(2147483647 + 1) === (2147483647 + 1)) // -> 0
雖然~~可能有更好的表現(xiàn),為了可讀性,請使用Math.floor()。
8、Node.js:讓module在沒被require的時候運行
在node里,你可以根據(jù)代是運行了require('./something.js')還是node something.js,來告訴你的程序去做兩件不同的事情。如果你想與你的一個獨立的模塊進行交互,這是很有用的。
if (!module.parent) {
// 運行 `node something.js`
app.listen(8088, function() {
console.log('app listening on port 8088');
})
} else {
// 使用 `require('/.something.js')`
module.exports = app;
}
更多信息,請看the documentation for modules
第五組:周倩宇 5個優(yōu)質(zhì)jquery分頁插件推薦
來源:https://www.w3cschool.cn/jquery/jquery-paging.html
1、Pagination.js
Pagination.js是一款簡單實用且功能齊全的jQuery分頁插件。該jQuery分頁插件提供多種數(shù)據(jù)源方式,眾多的配置參數(shù),回調(diào)函數(shù),顯示控制等。

2、類似媒體播放器的分頁插件
類似媒體播放器的分頁插件:一款類似媒體播放器的jQuery分頁插件,有點類似于媒體播放器的效果.帶有數(shù)碼翻頁,可前后翻頁,首頁到最后一頁。

3、結(jié)合CSS3實現(xiàn)的jQuery分頁插件
結(jié)合CSS3實現(xiàn)的jQuery分頁插件:一款結(jié)合CSS3實現(xiàn)的非常簡潔漂亮的jQuery分頁插件,附件里提供了三個效果,代碼簡潔。

4、jquery列表分頁并帶左右滾動的效果
jquery列表分頁并帶左右滾動的效果:當每一頁文章條數(shù)超過3條就會分一頁,并帶有索引按鈕,點擊按鈕能左右切換,效果不錯而且好用。

5、簡單實用的分頁插件
簡單實用的分頁插件:這是一款兼容IE8及以上瀏覽器,配置簡單實用。
