瀏覽器訪問優(yōu)化
1娜膘、減少http請求逊脯,合理設(shè)置 HTTP緩存
2、使用瀏覽器緩存
3竣贪、啟用壓縮
4军洼、CSS Sprites
5巩螃、LazyLoad Images
6、CSS放在頁面最上部匕争,javascript放在頁面最下面
7避乏、異步請求Callback(就是將一些行為樣式提取出來,慢慢的加載信息的內(nèi)容)
8甘桑、減少cookie傳輸
Javascript代碼優(yōu)化
(1). DOM
(2). 慎用 with
(3). 避免使用 eval和 Function
(4). 減少作用域鏈查找
(5). 數(shù)據(jù)訪問
(6). 字符串拼接
什么是User-Agent
User-Agent是Http協(xié)議中的一部分拍皮,屬于頭域的組成部分,User Agent也簡稱UA扇住。用較為普通的一點來說春缕,是一種向訪問網(wǎng)站提供你所使用的瀏覽器類型、操作系統(tǒng)及版本艘蹋、CPU 類型锄贼、瀏覽器渲染引擎、瀏覽器語言女阀、瀏覽器插件等信息的標識宅荤。UA字符串在每次瀏覽器 HTTP 請求時發(fā)送到服務(wù)器!
瀏覽器UA 字串的標準格式為: 瀏覽器標識 (操作系統(tǒng)標識; 加密等級標識; 瀏覽器語言) 渲染引擎標識 版本信息
什么是線程浸策?什么是進程冯键?
什么是進程?
當一個程序開始的時候他就是一個進程庸汗,進程包括運行中的從程序和程序所使用到的內(nèi)存和系統(tǒng)資源惫确。
而一個進程又是由多個線程組成的。
什么是線程
線程是程序中的一個 執(zhí)行流蚯舱,每個線程都有自己的專有寄存器(棧指針改化,程序計數(shù)器等),但代碼區(qū)是共享的枉昏,既不同的線程可以執(zhí)行同樣的函數(shù)陈肛。
什么是單線程?什么是多線程?
什么是多線程
多線程是指程序中包含多個執(zhí)行流兄裂,即在一個程序中同時運行多個不同的線程來執(zhí)行不同的任務(wù)句旱。也就是說允許單個程序創(chuàng)建多個并行執(zhí)行的線程來完成各自的任務(wù)。
多線程的好處
可以提高CPU的利用率晰奖。在多線程程序中谈撒,一個線程必須等待的時候,CPU可以運行其它的線程而不是等待匾南,這樣就大大提高了程序的效率啃匿。
多線程與單線程的區(qū)別
【生活舉例】
你早上上班,正要打卡的時候午衰,手機響了立宜。。你如果先接了電話臊岸,等接完了橙数,在打卡,就是單線程帅戒。
如果你一手接電話灯帮,一手打卡。就是多線程逻住。
兩件事的結(jié)果是一樣的钟哥。。你接了電話且打了卡瞎访。
Javascript是單線程的
因為JS運行在瀏覽器中腻贰,是單線程的,每個window一個JS線程扒秸,既然是單線程的播演,在某個特定的時刻只有特定的代碼能夠被執(zhí)行,并阻塞其它的代碼伴奥。而瀏覽器是事件驅(qū)動的(Event driven)写烤,瀏覽器中很多行為是異步(Asynchronized)的,會創(chuàng)建事件并放入執(zhí)行隊列中拾徙。javascript引擎是單線程處理它的任務(wù)隊列洲炊,你可以理解成就是普通函數(shù)和回調(diào)函數(shù)構(gòu)成的隊列。當異步事件發(fā)生時尼啡,如mouse click, a timer firing, or an XMLHttpRequest completing(鼠標點擊事件發(fā)生暂衡、定時器觸發(fā)事件發(fā)生、XMLHttpRequest完成回調(diào)觸發(fā)等)玄叠,將他們放入執(zhí)行隊列古徒,等待當前代碼執(zhí)行完成。
瀏覽器不是單線程的
雖然JS運行在瀏覽器中读恃,是單線程的隧膘,每個window一個JS線程,但瀏覽器不是單線程的寺惫,例如Webkit或是Gecko引擎疹吃,都可能有如下線程:
- javascript引擎線程
- 界面渲染線程
- 瀏覽器事件觸發(fā)線程
- Http請求線程
前端開發(fā)之面向?qū)ο?/h2>
** 面向?qū)ο蟮幕靖拍?*
面向?qū)ο蟮挠⑽娜Q叫做Object Oriented,簡稱OO西雀。OO其實包括OOA(Object Oriented Analysis萨驶,面向?qū)ο蠓治?、OOD(Object Oriented Design艇肴,面向?qū)ο笤O(shè)計)和OOP(Object Oriented Programming腔呜,面向?qū)ο蟮某绦蛟O(shè)計)叁温。
通常所說的面向?qū)ο笫侵窸OP, OOP是一種圍繞真實世界的概念來組織模型的程序設(shè)計方法,它采用對象來描述問題空間的實體核畴。在使用計算機解決問題時膝但,對象是作為計算機模擬真實世界的一個抽象,一個對象就是一個物理實體或邏輯實體谤草,它反映了系統(tǒng)為之保存信息和(或)與它交互的能力跟束。使其具有自己的屬性和行為, 從而簡化對復(fù)雜事物的描述丑孩,更有利于工程的可維護性和擴展性冀宴。
OOP同結(jié)構(gòu)化程序設(shè)計相比最大的區(qū)別就在于: 前者首先關(guān)心的是所要處理的數(shù)據(jù),而后者首先關(guān)心的是功能温学。
面向?qū)ο笕齻€基本特征
封裝 (Encapsulation) 將數(shù)據(jù)以及相關(guān)的操作組織在一起略贮,成為獨立的構(gòu)件。外部無法直接訪問這些封裝了的數(shù)據(jù)枫浙,從而保證了這些數(shù)據(jù)的正確性刨肃。封裝的目的是為了內(nèi)部數(shù)據(jù)表現(xiàn)形式和實現(xiàn)細節(jié)的隱藏,信息隱藏是為了減少系統(tǒng)各部分間的依賴性箩帚,各部分間必須通過明確的通道傳送信息真友,也就是對象間的接口.這樣一來,隱藏了部分內(nèi)部的細節(jié)紧帕,極大方便系統(tǒng)的開發(fā)盔然,維護和擴展。
繼承 (Inheritance) 繼承是一種聯(lián)結(jié)類的層次模型是嗜,并且允許和鼓勵類的重用愈案,它提供了一種明確表述共性的方法。一個新類可以從現(xiàn)有的類中派生鹅搪,這個過程稱為類的繼承站绪。新類繼承了原始類的特性,新類稱為原始類的派生類(子類)丽柿,而原始類稱為新類的基類(父類)恢准。派生類可以從它的基類那里繼承方法和實例變量,并且派生類可以修改或增加新的方法使之更適合特殊的需求甫题。繼承性很好地解決了軟件的可重用性問題馁筐。
多態(tài) (Polymorphism) 多態(tài)是允許你將父對象設(shè)置成為和一個或更多的他的子對象相等的技術(shù),賦值之后坠非,父對象就可以根據(jù)當前賦值給它的子對象的特性以不同的方式運作敏沉。簡單的說,就是允許類與類之間相同方法名的指針得以調(diào)用, 這樣很好地解決了應(yīng)用程序函數(shù)同名問題盟迟。實現(xiàn)多態(tài)秋泳,有二種方式,覆蓋攒菠,重載轮锥。
持續(xù)集成是什么
持續(xù)集成指的是,頻繁地(一天多次)將代碼集成到主干要尔。
它的好處主要有兩個:
1、快速發(fā)現(xiàn)錯誤新娜。每完成一點更新赵辕,就集成到主干,可以快速發(fā)現(xiàn)錯誤概龄,定位錯誤也比較容易还惠。
2、防止分支大幅偏離主干私杜。如果不是經(jīng)常集成蚕键,主干又在不斷更新,會導(dǎo)致以后集成的難度變大衰粹,甚至難以集成锣光。
持續(xù)集成的目的,就是讓產(chǎn)品可以快速迭代铝耻,同時還能保持高質(zhì)量誊爹。它的核心措施是,代碼集成到主干之前瓢捉,必須通過自動化測試频丘。只要有一個測試用例失敗,就不能集成泡态。