⑴ http://www.eclipse.org/downloads/應該下載哪個啊
C 和 C++ 語言都是世界上最流行且使用最普遍的編程語言,因此 Eclipse 平台(Eclipse Platform)提供對 C/C++ 開發的支持一點都不足為奇。因為 Eclipse 平台只是用於開發者工具的一個框架,它不直接支持 C/C++;它使用外部插件來提供支持。本文將向您演示如何使用 CDT — 用於 C/C++ 開發的一組插件。CDT 項目(有關鏈接,請參閱本文後面的 參考資料一節)致力於為 Eclipse 平台提供功能完全的 C/C++ 集成開發環境(Integrated Development Environment,IDE)。雖然該項目的重點是 Linux,但它在可使用 GNU 開發者工具的所有環境(包括 Win32(Win 95/98/Me/NT/2000/XP)、QNX Neutrino 和 Solaris 平台)中都能工作。
CDT 是完全用 Java 實現的開放源碼項目(根據 Common Public License 特許的),它作為 Eclipse SDK 平台的一組插件。這些插件將 C/C++ 透視圖添加到 Eclipse 工作台(Workbench)中,現在後者可以用許多視圖和向導以及高級編輯和調試支持來支持 C/C++ 開發。
由於其復雜性,CDT 被分成幾個組件,它們都採用獨立插件的形式。每個組件都作為一個獨立自主的項目進行運作,有它自己的一組提交者、錯誤類別和郵件列表。但是,所有插件都是 CDT 正常工作所必需的。下面是 CDT 插件/組件的完整列表:
主 CDT 插件(Primary CDT plug-in)是「框架」CDT 插件。
CDT 功能 Eclipse(CDT Feature Eclipse)是 CDT 功能組件(Feature Component)。
CDT 核心(CDT Core)提供了核心模型(Core Model)、CDOM 和核心組件(Core Component)。
CDT UI是核心 UI、視圖、編輯器和向導。
CDT 啟動(CDT Launch)為諸如編譯器和調試器之類的外部工具提供了啟動機制。
CDT 調試核心(CDT Debug Core)提供了調試功能。
CDT 調試 UI(CDT Debug UI)為 CDT 調試編輯器、視圖和向導提供了用戶界面。
CDT 調試 MI(CDT Debug MI)是用於與 MI 兼容的調試器的應用程序連接器。
⑵ 安裝WINDOES XP SP2 時,設置了開機第一啟動項為CD-OM但保存設置後重啟卻不能進入安裝程序
重啟電腦的時候讀到CD字樣的時候按下回車,可以多按下,出字提示的時候,也按按回車,應該就可以進光區了
⑶ Web前端性能優化的實用技巧匯總
今天小編要跟大家分享的文章是關於Web前端性能優化的實用技巧匯總。javascript在瀏覽器中運行的性能,可以認為是開發者所面臨的最嚴重的可用性問題。這個問題因為javascript的阻塞性而變得復雜,事實上,多數瀏覽器使用單一進程來處理用戶界面和js腳本執行,所以同一時刻只能做一件事。js執行過程耗時越久,瀏覽器等待響應的時間越長。
一.提高載入性能
1.IE8,FF,3.5,Safari4和Chrome都允許並行下載js文件,當script下載資源時不會阻塞其他script的下載。但是js下載仍然會阻塞其他資源的下載,如圖片。盡管腳本下載不會互相影響,但頁面仍然必須等待所有js代碼下載並執行完才能繼續。因此仍然存在腳本阻塞問題.推薦將所有js文件放在body標簽底部以減少對整個頁面的影響。
2.減少頁面外鏈腳本文件的數量將會提高頁面性能:
http請求會帶來額外的開銷,因此下載單個300k的文件將比下載10個30k的文件效率更高。
3.動態腳本載入技術:
無論何時啟動下載,文件的下載和執行都不會阻塞頁面其他進程。
functionlaodScript(url,callback){
varscript=document.createElement('script');_
_cript.type='text/javascript'__f(script.readyState){//ie
____cript.onreadystatechange=function(){_____
if(script.readyState=='loaded'||script.readyState=='complete'){_______
_cript.onreadystatechange=null;_______
callback()_____
____
__
}else{//其他瀏覽器___
script.onload=function(){_____
_allback()
___}_
}_
script.src=url;_
document.getElementsByTagName('head')[0].appendChild(script);
}
//使用
loadScript('./a.js',function(){_
loadScript('./b.js',function(){___
loadScript('./c.js',function(){_____
console.log('載入完成')___
})_
})
})
4.無阻塞載入類庫——LABjs,使用方法如下:
//鏈式調用時文件逐個下載,.wait()用來指定文件下載並執行完畢後所調用的函數
$LAB.script('./a.js')_
.script('./b.js')_
.wait(function(){__
_pp.init();
})
//為了保證執行順序,可以這么做,此時a必定在b前執行
$LAB.script('./a.js').wait()_
.script('./b.js')_
.wait(function(){___
_pp.init();
})
二.數據存取與JS性能
1.在js中,數據存儲的位置會對代碼整體性能產生重大影響。數據存儲共有4種方式:字面量,變數,數組項,對象成員。他們有著各自的性能特點。
2.訪問字面量和局部變數的速度最快,相反,訪問數組和對象相對較慢
3.由於局部變數存在於作用域鏈的起始位置,因此訪問局部變數的比訪問跨域作用變數更快
4.嵌套的對象成員會明顯影響性能,應盡量避免
5.屬性和方法在原型鏈位置越深,訪問他的速度越慢
6.通常我們可以把需要多次使用的對象成員,數組元素,跨域變數保存在局部變數中來改善js性能
三.DOM編程
1.訪問DOM會影響瀏覽器性能,修改DOM則更耗費性能,因為他會導致瀏覽器重新計算頁面的幾何變化。<通常的做法是減少訪問DOM的次數,把運算盡量留在JS這一端。
註:如過在一個對性能要求比較高的操作中更新一段HTML,推薦使用innerHTML,因為它在絕大多數瀏覽器中運行的都很快。但對於大多數日常操作而言,並沒有太大區別,所以你更應該根據可讀性,穩定性,團隊習慣,代碼風格來綜合決定使用innerHTML還是createElement()
2.HTML集合優化
HTML集合包含了DOM節點引用的類數組對象,一直與文檔保持連接,每次你需要最新的信息時,都會重復執行查詢操作,哪怕只是獲取集合里元素的個數。
①_優化一——集合轉數組collToArr
functioncollToArr(coll){_
for(vari=0,a=[],len=coll.length;i
a._ush(coll[i]);
__
returna
}
②緩存集合length
③訪問集合元素時使用局部變數(即將重復的集合訪問緩存到局部變數中,用局部變數來操作)
3.遍歷DOM
①使用只返回元素節點的API遍歷DOM,因為這些API的執行效率比自己實現的效率更高:
td{border:1pxsolid#ccc;padding:5px;margin:auto;}
td>p{text-align:left;}
td>pspan{text-align:center;display:block;}
屬性名
被替代屬性
children
childNodes
childElementCount
childNodes.length
firstElementChild
firstChild
lastElementChild
lastChild
nextElementSibling
nextSibling
previousElementSibling
previousSibling
_諮≡衿_PI——querySelectorAll()
querySelectorAll()方法使用css選擇器作為參數並返回一個NodeList——包含著匹配節點的類數組對象,該方法不會返回HTML集合,因此返回的節點不會對應實時文檔結構,著也避免了HTML集合引起的性能問題。
let_rr=_ocument.querySelectorAll('div.warning,_iv.notice>_')
4.重繪和重排
瀏覽器在下載完頁面的所有組件——html,js,css,圖片等之後,會解析並生成兩個內部數據結構——_OM樹,渲染樹.一旦DOM樹和渲染樹構建完成,瀏覽器就開始繪制頁面元素(paint).
①重排發生的條件:
添加或刪除可見的DOM元素位置變化元素尺寸改變內容改變頁面渲染器初始化瀏覽器窗口尺寸變化出現滾動條時會觸發整個頁面的重排_嘏瘧囟ㄖ鞀
5.渲染樹變化的排列和刷新
大多數瀏覽器通過隊列化修改並批量執行來優化重排過程,然而獲取布局信息的操作會導致隊列強制刷新。
offsetTop,offsetWidth...
scrollTop,scrollHeight...
clientTop,clientHeight...
getComputedStyle()
一些優化建議:將設置樣式的操作和獲取樣式的操作分開:
//設置樣式
body.style.color='red'
body.style.fontSize=པpx'
//讀取樣式
letcolor=body.style.color
let_ontSize=_ody.style.fontSize
另外,獲取計算屬性的兼容寫法:
functiongetComputedStyle(el){_
varcomputed=(document.body.currentStyle?el.currentStyle:document.defaultView.getComputedStyle(el,'');_
returncomputed
}
6.最小化重繪和重排
①.批量改變樣式
/*使用cssText
*/el.style.cssText='border-left:1px;_order-right:2px;_adding:20px'
②.批量修改dom的優化方案——使元素脫離文檔流-對其應用多重改變-把元素帶迴文檔
functionappendDataToEl(option){
vartargetEl=option.target||document.body,___
createEl,___
data=option.data||[];_//讓容器脫離文檔流,減少重繪重排_
vartargetEl_display=targetEl.style.display;_
targetEl.style.display='none'
_
//*****創建文檔片段來優化Dom操作****_
varfragment=document.createDocumentFragment();_//給元素填充數據_
for(vari=0,max=data.length;i
createEl=
document.createElement(option.createEl);___
for(varitemindata[i]){_____
if(item.toString()==='text'){_______
createEl.appendChild(document.createTextNode(data[i][item]));________ontinue;___________
_f(item.toString()==='html'){_______
createEl.innerHTML=item,data[i][item];_______
continue;_____
}_____
_reateEl.setAttribute(item,data[i][item]);_______
//****將填充好的node插入文檔片段****___
fragment.appendChild(createEl);___
//****將文檔片段統一插入目標容器****_
targetEl.appendChild(fragment);_
//顯示容器,完成數據填充_
targetEl.style.display=
targetEl_display;
}
//使用
varwrap=document.querySelectorAll('.wrap')[0];
vardata=[_
_name:'xujaing',text:'選景',title:'xuanfij'},_
{name:'xujaing',text:'選景',title:'xuanfij'},_
{name:'xujaing',text:'選景',title:'xuanfij'}];
appendDataToEl({_
target:wrap,_
createEl:'div',
_ata:data
});
上面的優化方法使用了文檔片段:_蔽頤前鹽牡燈尾迦氳澆詰闃惺保導噬媳惶砑擁鬧皇歉悶蔚淖詠詰悖皇瞧偽舊懟?梢允溝_om操作更有效率。
②.緩存布局信息
//緩存布局信息
letcurrent=el.offsetLeft;
current++;
el.style.left=current+'px'
if(current>300){_
stop();
}
④.慎用:hover
如果有大量元素使用:hover,那麼會降低相應速度,CPU升高
⑤.使用事件委託(通過事件冒泡實現)來減少事件處理器的數量,減少內存和處理時間
functiondelegation(e,selector,callback){_
e=e||window.event;_
vartarget=e.target||e.srcElement;
_if(target.nodeName!==selector||
target.className!==selector||target.id!==selector){___
return;
_}_
if(typeofe.preventDefault==='function'){__
_.preventDefault();___
e.stopPropagation();
}else{___
e.returnValue=false;
e.cancelBubble=true;_
}
__allback()}
四.演算法和流程式控制制
1.循環中減少屬性查找並反轉(可以提升50%-60%的性能)
//for循環
for(vari=item.length;i--){_
process(item[i]);
}
//while循環
varj=item.length;
while(j--){_
process(item[i]);
}
2.使用Duff裝置來優化循環(該方法在後面的文章中會詳細介紹)
3.基於函數的迭代(比基於循環的迭代慢)
items.forEach(function(value,index,array){__rocess(value);})
4.通常情況下switch總比if-else快,但是不是最佳方案
五.字元串和正則表達式
1.除了IE外,其他瀏覽器會嘗試為表達式左側的字元串分配更多的內存,然後簡單的將第二個字元串拷貝到他的末尾,如果在一個循環中,基礎字元串位於最左側,就可以避免重復拷貝一個逐漸變大的基礎字元串。2.使用[sS]來匹配任意字元串3.去除尾部空白的常用做法:
if(!String.prototype.trim){_
String.prototype.trim=function(){___
returnthis.replace(/^s+/,'').replace(/ss*$/,'')_
}
}
六.快速響應的用戶界面
1.瀏覽器的UI線程:用於執行javascript和更新用戶界面的進程。
2.在windows系統中定時器解析度為15毫秒,因此設置小於15毫秒將會使IE鎖定,延時的最小值建議為25ms.
3.用延時數組分割耗時任務:
functionmultistep(steps,args,callback){_
vartasks=steps.concat();
__etTimeout(function(){___
vartask=tasks.shift();___
task.apply(null,args||[]);_//調用Apply參數必須是數組
___
if(tasks.length>0){_____
setTimeout(arguments.callee,25);
___else{_____
_allback();___
__
},25);
}
4.記錄代碼運行時間批處理任務:
functiontimeProcessArray(items,process,callback){_
vartodo=item.concat();__etTimeout(function(){___
varstart=+newDate();
__o{_____
_rocess(todo.shift());___
}while(todo.length>0&&(+newDate()-start<50));
____f(todo.length>0){_____
_etTimeout(arguments.callee,25);
___else{____
_allback(items);_
}_
_,25)
}
5.使用WebWorker:它引入了一個介面,能使代碼運行且不佔用瀏覽器UI線程的時間。一個Worker由如下部分組成:
①一個navigator對象,包括app
⑷ Web前端性能優化之JavaScript篇
今天小編要跟大家分享的文章是關於Web前端性能優化之JavaScript篇。希望這篇文章能給大家日常開發、面試帶來幫助。想要了解Web前端優化的小夥伴們來和小編一起看一看吧!
一、用戶看到頁面之前都經歷了什麼
·___觳榛捍
·___NS伺服器通過域名查找對應的Web伺服器的ip地址
·___撾帳只啤⑺拇位郵只
·___TTP請求
·___禱刈試
二、頁面渲染過程
頁面載入過程
·___嫡輪跋人導傅悖
§_韻鍾械耐ㄓ孟允酒魑÷蝕蠖轡60fps,即一秒鍾60幀,這是一個什麼概念呢,就是一秒鍾的動畫是由60幅靜態圖片連在一起形成的。60fps是動畫播放比較理想,比較基礎的要求。
§_頤撬檔囊趁嬋_耍褪且趁媸д媼耍蛘叩糝×耍幻脛用揮60個畫面了,看起來不流暢了
§_庵智榭齙腦蚓褪且趁嬖阡秩灸承┲∈彼ǖ氖奔浣銑ぃ賈巒A粼謖廡┲〉氖奔浣銑ぃ曰嬋ǘ倭恕
·___avaScript=>Style=>Layout=>Paint=>Composite=>Reflow?=>Repaint?
§_秩_OM樹和CSSOM樹
§_avaScript規則合並DOM樹和CSSOM樹行程RenderTree_*遍歷渲染樹開始布局,計算每個節點的位置大小信息,將RenderTree的每個節點繪制(composite)在屏幕上
§_eflow:元素的幾何尺寸發生了改變,需要重新驗證並計算渲染樹,是渲染樹的一部分或者全部發生了變化
§_epaint:屏幕的一部分重畫,不影響整體布局,比如某個CSS的背景色變了,但元素的幾何尺寸和位置不變
三、頁面渲染過程優化
·___攵_om節點的顯示隱藏進行優化
§(1)display:none的節點不會被加入RenderTree,
而visibility:hidden則會,所以,如果某個節點最開始是不顯示的,
設為display:none是更優的。
§(2)display:none會觸發reflow,而visibility:hidden只會觸發repaint,
因為沒有發現位置變化。
§(3)有些情況下,比如修改了元素的樣式,瀏覽器並不會立刻reflow或repaint一次,
而是會把這樣的操作積攢一批,然後做一次reflow,這又叫非同步reflow或增量非同步reflow。
但是在有些情況下,比如resize窗口,改變了頁面默認的字體等。
對於這些操作,瀏覽器會馬上進行reflow。
·___om深度盡量淺
·___跎儺心_ss和js的使用
·___鮮實難≡衿鰨苊夂蟠≡衿鰨ㄅ浞≡衿
§_ss選擇器匹配:從右往左,最後一個選擇器被稱為關鍵選擇器,最後一個選擇器越特殊,需要匹配的次數越少
·___跎_ayout
§_ayout是比較耗時的操作,要減少頁面重繪。能用transform就不用position/width/height做動畫,還要減少layout的影響范圍
·___苊餷恐菩醞講季
//如果有一組_OM_兀頤切枰寥∷塹目磯齲⑸柚悶涓叨扔肟磯紉恢
for(let_=0,len=_ivs.length;_
__divs[i].style.height=_idth+'px'
}
//執行這段代碼就引起了強制性同步布局(forced_ynchonous_ayout),
在每次迭代開始的時候都會進行重新計算布局,這是很昂貴的操作,千萬要避免
--------------------------------------------------------------
//分離讀與寫
let_idthArray=_];
for(let_=0,len=_ivs.length;_
__widthArray.push(width);
}
for(let_=0,len=_ivs.length;_
}
·___觳郊釉_s文件並合並js文件
§_婕暗揭桓鰹榔韃⒎⑶肭笫康奈侍猓
§__horme瀏覽器針對每一個域最多隻能有6個TCP連接
§_詼絲謔亢拖叱糖謝豢目悸,瀏覽器不可能無限量的並發請求
§_⒎竊醬笤膠茫諏賈湍醯目悸牽;や榔骱頭衿韝玫男閱
§_咐住⒈┓纈耙艫瓤梢孕薷牡縋緣淖畲罅郵
四、加快頁面的打開速度
頁面開啟速度主要指標:白屏時間,首屏時間,頁面載入完成時間,所有資源載入完成
·___跎黌秩徑氯(js、css)
兩種處理方式有什麼區別呢?
head標簽中的外鏈腳本會影響DOM構建和頁面圖片載入,特別是腳本很多時,所以需要加上defer避免阻塞。但是加上defer屬性的資源載入的優先順序會降為最低,甚至比圖片還低,高優先順序的資源載入順序會優於低優先順序的載入。如果頁面的展示比交互重要,需要馬上載入出來,可以加上defer,否則還是把JS文件放在body後面就行了
§__cript標簽放在body後面
§__cript標簽添加defer屬性,非同步載入,延後執行script資源
·___嘔計
§_褂孟煊κ酵計
§_郵奔釉贗計
§_蔥杓釉贗計
§_褂醚┍掏跡急曜痔
§_岷鮮褂_VG圖
·___顧鹺突捍
§_zip壓縮、Cache-control、Etag
五、增強用戶體驗
·___釉_oading框
·___黽庸榷Ч
·___俠砑笆鋇拇砦蟠_
·___誦曰牡卻換
以上就是小編今天為大家分享的關於Web前端性能優化之JavaScript篇的文章,希望本篇文章能夠對正在從事Web前端工作的小夥伴們有所幫助,想要了解更多Web前端知識記得關注北大青鳥Web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的Web前端工程師。
文章來源:原創_avuer_逃閼
⑸ eclipse可以開發c++嗎
eclipse可以開發c++,方法如下:
1. 首先確保電腦上已經安裝了Java,如果沒有,或者不確定,請到官網上下載並安裝
2. 到官網上下載並安裝Eclipse,因為是用來進行C、C++編程的,需要選擇Eclipse IDE for C/C++ Developers(並根據所使用的系統具體選擇32位或者64位),如下圖(注意是選擇畫紅框的那個),這裡面已經集成了CDT。
至此,基本安裝和配置步驟就已經完成了。已經可以利用Eclipse來進行C、C++編程了。