網上看到的相關知識

一.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,什麼時候被執行,在return前還是後?

1.finally {}一定會執行,只有一種情況下不會執行,即調用了system.exit(),終止了虛擬機進程。

2. finally始終是在跳出方法之前被執行,常用來做一些資源清理工作,所以在return(跳出方法)前執行。

3.比較複雜點的情況是,如果return 後面有一個表達式,那麼會先執行表達式的內容,但並不會馬上跳出方法,而是執行finally塊,若finally也有return語句,整個方法會從finallyreturn跳出,若finally中沒有return,則會再從try{}中的return跳出。

二.數據庫索引:索引問題就是一個查找問題

一般來說,應該在這些列上創建索引:在經常需要搜索的列上,可以加快搜索的速度;在作爲主鍵的列上,強制該列的唯一性和組織表中數據的排列結構;在經常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;在經常需要根據範圍進行搜索的列上創建索引,因爲索引已經排序,其指定的範圍是連續的;在經常需要排序的列上創建索引,因爲索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間;在經常使用在WHERE子句中的列上面創建索引,加快條件的判斷速度。

一般來說,不應該創建索引的的這些列具有下列特點:

第一,對於那些在查詢中很少使用或者參考的列不應該創建索引。這是因爲,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。

第二,對於那些只有很少數據值的列也不應該增加索引。這是因爲,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的數據行佔了表中數據行的很大比例,即需要在表中搜索的數據行的比例很大。增加索引,並不能明顯加快檢索速度。

第三,對於那些定義爲text, image和bit數據類型的列不應該增加索引。這是因爲,這些列的數據量要麼相當大,要麼取值很少。

第四,當修改性能遠遠大於檢索性能時,不應該創建索引。這是因爲,修改性能和檢索性能是互相矛盾的。當增加索引時,會提高檢索性能,但是會降低修改性能。當減少索引時,會提高修改性能,降低檢索性能。因此,當修改性能遠遠大於檢索性能時,不應該創建索引。

三. 導數據:

1、CREATE TABLE XXX_20130910 AS SELECT * FROM XXX;

利用原表建立一箇中間表。

2、TRUNCATE XXX;

Truncate原表。

3、INSERT INTO XXX SELECT * FROM XXX_20130910 WHERE 7天;

將7天的數據插入原表。

四.javac: .java --- > .class

所以javac工作原理就是:

1首先通過詞法分析器java源文件的字符流變成對應的token流。

2.通過語法分析器將token流組成更結構化的語法樹。

3.通過語義分析器將粗糙的語法樹變得更優化。

4.最後通過代碼生成器遍歷語法樹生成java字節碼

五.Ajax:

1.所謂異步,即通過 AJAX,JavaScript 無需等待服務器的響應,而是在等待服務器響應時執行其他腳本,當響應就緒後對響應進行處理

2.AJAX應用可以僅向服務器發送並取回必需的數據,通過在後臺與服務器進行少量數據交換,實現網頁的異步更新。避免了在網絡上發送那些沒有改變過的信息。就是能在不更新整個頁面的前提下維護數據,就是允許瀏覽器與服務器進行通信而無需刷新頁面,這使得Web應用程序能夠更爲迅捷地迴應用戶動作。

3.而Ajax用XHR對象做出的請求不會記錄在瀏覽器的歷史中。如果你的用戶習慣使用瀏覽器的“後退”按鈕在Web應用中進行導航,就可能會產生問題。

六.編程模式: 回調

1. 函數可以作爲參數傳入子函數,可以由子函數進行調用和返回。

2.調用者 A 想要調用函數 B, 但並不知道具體的 B 應該是哪一個,由 A 的調用者將 函數B 作爲參數傳入給調用者 A。 函數B 稱爲回調函數,  B 函數的調用稱爲回調。

3.回調最著名的例子是靈活的對象排序。 排序函數對指定的同類型的多個對象進行排序, 但它並不知道如何去比較對象的大小,因此, 必須傳入一個比較對象的函數給它。 

4.讓客戶寫希望調用的方法

5.注意異步

6. Javascript: 

                 定義: 

                 function A(callback) {

                            // other code

                            var params = obtain();

                            callback(params);

                  }  

                 var  callback = function(params) {

                        // codes to process

                 }

                 客戶端調用: 

                 A(callback);   

七.併發:

1. 爲了更好的用戶體驗。有的事情處理起來太慢,比如數據庫讀寫、遠程通信、複雜計算等等,如果在一個線程一個進程裏面來做,往往會影響用戶感受,因此需要另開一個線程或進程轉到後臺進行處理。它之所以能夠生效,仰仗的是單CPU的分時機制,或者是多CPU協同工作。在單CPU的條件下,兩個任務分成兩撥完成的總時間,是大於兩個任務輪流完成的,但是由於彼此交錯,給人的感覺更自然一些。

2.爲了加速完成某項工作。大名鼎鼎的Map/Reduce,做的就是這樣的事情,它將一個大的任務,拆分成若干個小的任務,分配個若干個進程去完成,各自收工後,再彙集在一起,更快地得到最後的結果。爲了達到這個目的,只有在多CPU的情形下才有可能,在單CPU的場合(單機單CPU…),是無法實現的。

八. final 修飾的成員變量無默認值

九.網絡連接服務故障排查技巧

1.先用ping或wget命令測試網絡連接性。[ping命令是網絡層協議,不涉及端口的狀態;wget是應用層協議,要涉及端口]
2.檢測端口是否衝突。[兩種思路,一種在本機上測試,主要是netstat命令;另一種利用傳輸層或以上的通信協議遠程測試,這種思路不太可靠,主要有telnet]

十.瞭解一個東西:什麼時候該用,什麼時候不該用

十一.絕對路徑和相對路徑:

1." ./ " 是同級, " ../ "是上一級, "/"  是相對於根目錄的

例如, C:\site\index.html.   G:\siet\web\datas\a.html    

        1 如果index.html鏈接a.html       href地址爲: C:\site是一樣的, \web\datas\a.html

        2 如果a.html中鏈接index.html  href地址爲:   ../../index.html.  因爲index.html相當於a.html的上一級的上一級.

十二. Java參數傳值:基本類型傳的是值,複雜類型傳的是引用的值(方法內引用變的時候源引用參數不變,修改對象時原對象修改)



N.jQuery的基本設計思想和主要用法,就是"選擇某個網頁元素,然後對其進行某種操作"

1.涵蓋:

1).各種選擇器:

2).Dom樹移動

3).對元素增刪改查

4).元素賦值

5).工具方法

6).事件操作

7).特殊效果

8)允許使用鏈式寫法

2.選擇器速度:
id選擇器和元素標籤選擇器最快,class選擇器較慢,屬性選擇器最慢

使用鏈式寫法:採用鏈式寫法時,jQuery自動緩存每一步的結果,因此比非鏈式寫法要快。根據測試,鏈式寫法比(不使用緩存的)非鏈式寫法,大約快了25%

3.事件的委託處理(Event Delegation)

javascript的事件模型,採用"冒泡"模式,也就是說,子元素的事件會逐級向上"冒泡",成爲父元素的事件。利用這一點,可以大大簡化事件的綁定。比如,有一個表格(table元素),裏面有100個格子(td元素),現在要求在每個格子上面綁定一個點擊事件(click),是否需要將命令執行100次?因此,這個事件只需要在父元素綁定1次即可,而不需要在子元素上綁定100次,從而大大提高性能。

4.少改動DOM結構

改動DOM結構開銷很大,因此不要頻繁使用.append()、.insertBefore()和.insetAfter()這樣的方法。如果要插入多個元素,就先把它們合併,然後再一次性插入。根據測試,合併插入比不合並插入,快了將近10倍。

5.選擇作用域鏈最短的方法

Javascript的變量採用鏈式作用域。讀取變量的時候,先在當前作用域尋找該變量,如果找不到,就前往上一層的作用域尋找該變量。這樣的設計,使得讀取局部變量比讀取全局變量快得多。

http://www.ruanyifeng.com/blog/2011/08/jquery_best_practices.html

發佈了9 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章