『壹』 GPU編程常識求助:cg、opencv、opengl、cuda、glsl等
你好,
首先,cg,opengl,glsl都是跟計算機圖形有關的。cg基本是做渲染的,opengl是一個開源圖形庫,和微軟的direct3D是一樣的。glsl是shading language ,專門用來寫shader的,在GPGPU( general purpose GPU)概念出來之前,好多人用glsl來做並行計算。
其次,CUDA和OpenCL是兩個專門做GPU運算的庫。CUDA非常好用,它有自己的NVCC編譯器,和各個系統都兼容很好,但是僅限於用於NVIDIA自己的顯卡。OpenCL雖然任何顯卡都可以使用,但是它的GPU的代碼要放到單獨的一個文本文件中編譯,操作上要比CUDA要復雜。
最後,其實CUDA和OpenCL學那個多一樣,因為並行運算的思想是一樣的。推薦你兩本書:
Programming Massively Parallel Processors 2nd(入門)
CUDA Programming A Developer-'s Guide to Parallel Computing with GPUs (高級一點)
謝謝,望採納
『貳』 linux系統怎樣查看能不能安裝tensorflow的gpu版本
可以用whereis命令來查看, 命令主要存在的目錄: /bin 源中安裝 /sbin 源中安裝 /usr/bin 源中安裝 /usr/sbin 源中安裝 /usr/local/bin 用戶自行編譯的程序,和系統無關連,可直接刪除(即卸載) /usr/local/sbin /opt/someProg/bin 有時候編譯安裝的linux系統怎樣查看能不能安裝tensorflow的gpu版本
『叄』 為什麼cpu用頻率gpu用算力
CPU的浮點運算能力比GPU差了
CPU單個核心浮點運算能力比GPU強多了
在不考慮 指令集 緩存 優化的情況下 你光看主頻就知道了
GPU核心最高也就1Ghz左右
CPU核心卻要3-4Ghz
區別是CPU最多也就十幾個核心
GPU動輒幾百上千個核心
更別說CPU核心指令集更全面 GPU核心基本只有SIMD指令(因為GPU主要是用於圖形處理 向量運算遠比標量運算多 並且對CPU來說多一套指令運算單元 就是幾個核心的成本 對GPU來說就是多幾百上千個核心的成本)
CPU處理一次標量乘法只要一次標量乘法指令
GPU卻把標量先轉換成向量 然後用一條SIMD指令
CPU每個核心有獨立的緩存 GPU基本是所有核心共享一個緩存(GPU主要做圖形渲染 所有核心都執行同一份指令 獲取同樣的數據 CPU主要是執行多個串列任務 每個核心可以處理不同的任務 從不同地方獲取不同的數據)
所以CPU單核性能秒GPU單核十條街
CPU每個核心都有獨立的優化 分支預測 亂序執行之類的
GPU亂序執行可以有 因為所有核心都干一樣的事情 可以共享一份指令 不需要獨立的亂序執行 (不過一般不會有 因為這個功能可以直接放到編譯器中實現 因為GPU的開發語言少 基本只有GLSL和HLSL 編譯器是廠商自己開發的 不像CPU那樣 開發語言多如牛毛 各種編譯器五花八門 指令集大相徑庭 所以才迫切需求這種動態的亂序執行優化)
分支預測肯定不會有 成本上來說分支預測不能共享 每個核心都多一個分支預測的邏輯單元成本太大
關鍵是根本就不需要 GPU程序一般都很短 本來就可以全部裝載到高速緩存中 其次是對於GPU處理的任務而言 分支預測也無意義
『肆』 GPU演算法工程師是做什麼的
一、演算法工程師簡介(通常是月薪15k以上,年薪18萬以上,只是一個概數,具體薪資可以到招聘網站如拉鉤,獵聘網上看看)演算法工程師目前是一個高端也是相對緊缺的職位;演算法工程師包括音/視頻演算法工程師(通常統稱為語音/視頻/圖形開發工程師)、圖像處理演算法工程師、計算機視覺演算法工程師、通信基帶演算法工程師、信號演算法工程師、射頻/通信演算法工程師、自然語言演算法工程師、數據挖掘演算法工程師、搜索演算法工程師、控制演算法工程師(雲台演算法工程師,飛控演算法工程師,機器人控制演算法)、導航演算法工程師(@之介感謝補充)、其他【其他一切需要復雜演算法的行業】專業要求:計算機、電子、通信、數學等相關專業;學歷要求:本科及其以上的學歷,大多數是碩士學歷及其以上;語言要求:英語要求是熟練,基本上能閱讀國外專業書刊,做這一行經常要讀論文;必須掌握計算機相關知識,熟練使用模擬工具MATLAB等,必須會一門編程語言。演算法工程師的技能樹(不同方向差異較大,此處僅供參考)1 機器學習2 大數據處理:熟悉至少一個分布式計算框架Hadoop/Spark/Storm/ map-rece/MPI3 數據挖掘4 扎實的數學功底5 至少熟悉C/C++或者java,熟悉至少一門編程語言例如java/python/R加分項:具有較為豐富的項目實踐經驗(不是水論文的哪種)二、演算法工程師大致分類與技術要求(一)圖像演算法/計算機視覺工程師類包括圖像演算法工程師,圖像處理工程師,音/視頻處理演算法工程師,計算機視覺工程師要求l 專業:計算機、數學、統計學相關專業;l 技術領域:機器學習,模式識別l 技術要求:(1) 精通DirectX HLSL和OpenGL GLSL等shader語言,熟悉常見圖像處理演算法GPU實現及優化;(2) 語言:精通C/C++;(3) 工具:Matlab數學軟體,CUDA運算平台,VTK圖像圖形開源軟體【醫學領域:ITK,醫學圖像處理軟體包】(4) 熟悉OpenCV/OpenGL/Caffe等常用開源庫;(5) 有人臉識別,行人檢測,視頻分析,三維建模,動態跟蹤,車識別,目標檢測跟蹤識別經歷的人優先考慮;(6) 熟悉基於GPU的演算法設計與優化和並行優化經驗者優先;(7) 【音/視頻領域】熟悉H.264等視頻編解碼標准和FFMPEG,熟悉rtmp等流媒體傳輸協議,熟悉視頻和音頻解碼演算法,研究各種多媒體文件格式,GPU加速;應用領域:(1) 互聯網:如美顏app(2) 醫學領域:如臨床醫學圖像(3) 汽車領域(4) 人工智慧相關術語:(1) OCR:OCR (Optical Character Recognition,光學字元識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上列印的字元,通過檢測暗、亮的模式確定其形狀,然後用字元識別方法將形狀翻譯成計算機文字的過程(2) Matlab:商業數學軟體;(3) CUDA: (Compute Unified Device Architecture),是顯卡廠商NVIDIA推出的運算平台(由ISA和GPU構成)。 CUDA™是一種由NVIDIA推出的通用並行計算架構,該架構使GPU能夠解決復雜的計算問題(4) OpenCL: OpenCL是一個為異構平台編寫程序的框架,此異構平台可由CPU,GPU或其他類型的處理器組成。(5) OpenCV:開源計算機視覺庫;OpenGL:開源圖形庫;Caffe:是一個清晰,可讀性高,快速的深度學習框架。(6) CNN:(深度學習)卷積神經網路(Convolutional Neural Network)CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。(7) 開源庫:指的是計算機行業中對所有人開發的代碼庫,所有人均可以使用並改進代碼演算法。(二)機器學習工程師包括機器學習工程師要求l 專業:計算機、數學、統計學相關專業;l 技術領域:人工智慧,機器學習l 技術要求:(1) 熟悉Hadoop/Hive以及Map-Rece計算模式,熟悉Spark、Shark等尤佳;(2) 大數據挖掘;(3) 高性能、高並發的機器學習、數據挖掘方法及架構的研發;應用領域:(1)人工智慧,比如各類模擬、擬人應用,如機器人(2)醫療用於各類擬合預測(3)金融高頻交易(4)互聯網數據挖掘、關聯推薦(5)無人汽車,無人機相關術語:(1) Map-Rece:MapRece是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Rece(歸約)",是它們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。(三)自然語言處理工程師包括自然語言處理工程師要求l 專業:計算機相關專業;l 技術領域:文本資料庫l 技術要求:(1) 熟悉中文分詞標注、文本分類、語言模型、實體識別、知識圖譜抽取和推理、問答系統設計、深度問答等NLP 相關演算法;(2) 應用NLP、機器學習等技術解決海量UGC的文本相關性;(3) 分詞、詞性分析、實體識別、新詞發現、語義關聯等NLP基礎性研究與開發;(4) 人工智慧,分布式處理Hadoop;(5) 數據結構和演算法;應用領域:口語輸入、書面語輸入、語言分析和理解、語言生成、口語輸出技術、話語分析與對話、文獻自動處理、多語問題的計算機處理、多模態的計算機處理、信息傳輸與信息存儲 、自然語言處理中的數學方法、語言資源、自然語言處理系統的評測。相關術語:(2) NLP:人工智慧的自然語言處理,NLP (Natural Language Processing) 是人工智慧(AI)的一個子領域。NLP涉及領域很多,最令我感興趣的是「中文自動分詞」(Chinese word segmentation):結婚的和尚未結婚的【計算機中卻有可能理解為結婚的「和尚「】(四)射頻/通信/信號演算法工程師類包括3G/4G無線通信演算法工程師, 通信基帶演算法工程師,DSP開發工程師(數字信號處理),射頻通信工程師,信號演算法工程師要求l 專業:計算機、通信相關專業;l 技術領域:2G、3G、4G,BlueTooth(藍牙),WLAN,無線移動通信, 網路通信基帶信號處理l 技術要求:(1) 了解2G,3G,4G,BlueTooth,WLAN等無線通信相關知識,熟悉現有的通信系統和標准協議,熟悉常用的無線測試設備;(2) 信號處理技術,通信演算法;(3) 熟悉同步、均衡、信道解碼等演算法的基本原理;(4) 【射頻部分】熟悉射頻前端晶元,扎實的射頻微波理論和測試經驗,熟練使用射頻電路模擬工具(如ADS或MW或Ansoft);熟練使用cadence、altium designer PCB電路設計軟體;(5) 有扎實的數學基礎,如復變函數、隨機過程、數值計算、矩陣論、離散數學應用領域:通信VR【用於快速傳輸視頻圖像,例如樂客靈境VR公司招募的通信工程師(數據編碼、流數據)】物聯網,車聯網導航,軍事,衛星,雷達相關術語:(1) 基帶信號:指的是沒有經過調制(進行頻譜搬移和變換)的原始電信號。(2) 基帶通信(又稱基帶傳輸):指傳輸基帶信號。進行基帶傳輸的系統稱為基帶傳輸系統。傳輸介質的整個信道被一個基帶信號佔用.基帶傳輸不需要數據機,設備化費小,具有速率高和誤碼率低等優點,.適合短距離的數據傳輸,傳輸距離在100米內,在音頻市話、計算機網路通信中被廣泛採用。如從計算機到監視器、列印機等外設的信號就是基帶傳輸的。大多數的區域網使用基帶傳輸,如乙太網、令牌環網。(3) 射頻:射頻(RF)是Radio Frequency的縮寫,表示可以輻射到空間的電磁頻率(電磁波),頻率范圍從300KHz~300GHz之間(因為其較高的頻率使其具有遠距離傳輸能力)。射頻簡稱RF射頻就是射頻電流,它是一種高頻交流變化電磁波的簡稱。每秒變化小於1000次的交流電稱為低頻電流,大於10000次的稱為高頻電流,而射頻就是這樣一種高頻電流。高頻(大於10K);射頻(300K-300G)是高頻的較高頻段;微波頻段(300M-300G)又是射頻的較高頻段。【有線電視就是用射頻傳輸方式】(4) DSP:數字信號處理,也指數字信號處理晶元(五)數據挖掘演算法工程師類包括推薦演算法工程師,數據挖掘演算法工程師要求l 專業:計算機、通信、應用數學、金融數學、模式識別、人工智慧;l 技術領域:機器學習,數據挖掘l 技術要求:(1) 熟悉常用機器學習和數據挖掘演算法,包括但不限於決策樹、Kmeans、SVM、線性回歸、邏輯回歸以及神經網路等演算法;(2) 熟練使用SQL、Matlab、Python等工具優先;(3) 對Hadoop、Spark、Storm等大規模數據存儲與運算平台有實踐經驗【均為分布式計算框架】(4) 數學基礎要好,如高數,統計學,數據結構l 加分項:數據挖掘建模大賽;應用領域(1) 個性化推薦(2) 廣告投放(3) 大數據分析相關術語Map-Rece:MapRece是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Rece(歸約)",是它們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。(六)搜索演算法工程師要求l 技術領域:自然語言l 技術要求:(1) 數據結構,海量數據處理、高性能計算、大規模分布式系統開發(2) hadoop、lucene(3) 精通Lucene/Solr/Elastic Search等技術,並有二次開發經驗(4) 精通Lucene/Solr/Elastic Search等技術,並有二次開發經驗;(5) 精通倒排索引、全文檢索、分詞、排序等相關技術;(6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架;(7) 優秀的資料庫設計和優化能力,精通MySQL資料庫應用 ;(8) 了解推薦引擎和數據挖掘和機器學習的理論知識,有大型搜索應用的開發經驗者優先。(七)控制演算法工程師類包括了雲台控制演算法,飛控控制演算法,機器人控制演算法要求l 專業:計算機,電子信息工程,航天航空,自動化l 技術要求:(1) 精通自動控制原理(如PID)、現代控制理論,精通組合導航原理,姿態融合演算法,電機驅動,電機驅動(2) 卡爾曼濾波,熟悉狀態空間分析法對控制系統進行數學模型建模、分析調試;l 加分項:有電子設計大賽,機器人比賽,robocon等比賽經驗,有硬體設計的基礎;應用領域(1)醫療/工業機械設備(2)工業機器人(3)機器人(4)無人機飛控、雲台控制等(八)導航演算法工程師要求l 專業:計算機,電子信息工程,航天航空,自動化l 技術要求(以公司職位JD為例)公司一(1)精通慣性導航、激光導航、雷達導航等工作原理;(2)精通組合導航演算法設計、精通卡爾曼濾波演算法、精通路徑規劃演算法;(3)具備導航方案設計和實現的工程經驗;(4)熟悉C/C++語言、熟悉至少一種嵌入式系統開發、熟悉Matlab工具;公司二(1)熟悉基於視覺信息的SLAM、定位、導航演算法,有1年以上相關的科研或項目經歷;(2)熟悉慣性導航演算法,熟悉IMU與視覺信息的融合;應用領域無人機、機器人等。
『伍』 請問java程序員用什麼配置的筆記本電腦(實慣用)
在購買編程筆記本電腦時,一套智能的基準規格包括至少 8GB 的內存、像樣的 SSD、強大的集成 GPU 和一個 i5 或 i7 處理器。雖然這些基準配置很好,但它們不足以幫助您找到最好的筆記本電腦。
編程不只是關於代碼、流程圖和演算法,您還必須了解硬體。編寫代碼並為問題提供解決方案的能力非常重要,這需要使用一台優秀的膝上型電腦,它具有為此目的設計的硬體和處理能力。作為一名開發人員,擁有最好的筆記本電腦進行編程是保持游戲領先地位並輕松將想法轉化為現實的正確方式。
你是否知道,不管你是一家老牌公司的軟體工程師,還是一個初級程序員,或者是想通過編碼來構建一些革命性的東西,你都需要合適的筆記本電腦?
筆記本電腦應該能夠充分而有效地運行所有的編程解釋器、代碼編輯器、本地伺服器和語言編譯器。
對於程序員而言,一台好的電腦是必不可少的。很多程序員都有自己組裝台式機的愛好,按照自己需要的性能進行配置。但是,作為一個隨時隨地可能都需要改代碼的農名,台式機顯然不方便攜帶,還是有很多碼農會選擇買一款筆記本電腦。
在看電腦之前,我們可能需要先考慮使用什麼操作系統。
(雖說可以裝虛擬機,但性能畢竟不一樣)
根據今年某網站進行的調查顯示:98%的程序員會選擇三大主流操作系統,也就是windows、macOS、Unix/Linux,其中27%的程序員會同時使用Unix/Linux和Windows。
處理器
當你在編程的時候,你需要一個最好的處理器,因為當你在編譯代碼的時候,這種能力會發揮很大的作用。當然,大多數現代筆記本電腦都有很多核心、線程和高時鍾速度,但你仍然應該瞄準你能負擔得起的最快處理器。
就像人類和其他生物一樣,計算機也有大腦,它是處理器。計算機大腦的能力是變化的。一個可能比另一個更強大,毫無疑問,強大的處理器是您作為程序員所需要的。用於編程的膝上型電腦應該配備能夠運行用於編碼和運行代碼的程序的處理器。那麼哪個處理器是最好的呢?
如果你是一個預算買家或編程新手,英特爾酷睿 i3處理器筆記本電腦將完成這項工作。然而,如果你能負擔得起更多或更高一點的花費,一台配備了最低限度的英特爾酷睿 i5處理器的電腦可以更好地完成這項工作。如果你是一個圖形程序員,游戲開發人員或更密集的東西,提高你的預算,並爭取一個六核(英特爾酷睿 i7)處理器可以是最好的選擇和堅實的選擇。
內存
如果你想同時運行更多的程序,並在所有運行的應用程序之間輕松切換,你需要一台 RAM 容量大的筆記本電腦。不要讓它扭曲;我們不是說你應該花你的血汗錢的最高 RAM 可用。但是,要同時高效地運行代碼編輯器、編譯器、web 瀏覽器和本地伺服器,最好擁有一台 RAM 更大的筆記本電腦。對於程序員的筆記本電腦來說,需要多大的內存是最理想的,我們建議至少要有 8GB 的內存。請記住,更密集的編程需要更大的空間,比如 12 或 16GB。
硬碟
您可能知道計算機通常有兩種類型的驅動器。一台筆記本電腦要麼配有固態硬碟(SSD),也就是固態硬碟(HDD),也就是硬碟。在這兩款產品中,SSD 的速度更快,而且主要用於高端筆記本電腦,而 HDD 的速度較慢,而且大多數情況下適用於預算緊張的筆記本電腦。這意味著,如果您是一名程序員,正在尋找一款能夠快速載入您之前保存的項目、同時顯著減少啟動時間的筆記本電腦,那麼固態硬碟是最佳選擇。
請注意,每種驅動器類型的存儲空間各不相同——hdd 的存儲空間更大,比如 1TB,而 ssd 的存儲空間更小,可能只有 256GB。為你選擇一個正確的是簡單的。如果您想要一台存儲空間更大、速度更好但有時可能更慢的筆記本電腦,那麼 HDD 是一個不錯的選擇。但是,如果您不太關心更多的存儲空間,可以用更少的存儲空間工作,並且需要一個工作速度更快的驅動器,SSD 是可靠的選擇。
盡管 kaby lake 和 coffee lake Intel cpu 上的集成圖形可以輕松運行大多數程序,但您可能需要使用更好的圖形,特別是偶爾在筆記本電腦上玩游戲時。游戲和編程推薦使用 2GB 的專用圖形。正如我們前面提到的,更密集的編程和開發將需要更多的圖形功能。
其他
作為一名程序員,在購買筆記本電腦進行編程時,還有一些其他重要的事情需要考慮。
它們是:
顯示-長時間的編碼會使眼睛疲勞,所以使用像 IPS 這樣的好顯示器將有助於減輕這種疲勞。15.6寸的筆記本電腦是最受歡迎的,這並不奇怪。它們用於編程是非常合適的,完美的屏幕尺寸。調查中有30.3%的程序員選擇了15.6寸,似乎12英寸和13英寸筆記本電腦的採用率也在上升。
鍵盤-它必須是舒適的使用。如果可能的話,它應該配有背光鍵盤和合適的旅行鍵。
設計-筆記本電腦應該是一個輕量級和緊湊的設計,更容易移動和使用。
電池壽命-電池應該是好的和持續時間更長-平均 6 小時。
根據以上信息,您關於購買筆記本電腦編程的問題和疑問已經得到了解答和澄清。現在您已經了解了最佳的處理器、圖形、RAM、驅動器和操作系統。選擇其中最好的特性將意味著您正在為開發人員和程序員選擇最好的筆記本電腦。
一台功能強大的筆記本電腦可以加快你的編程任務和進程,而不會延遲或停滯,從而提高你的工作效率。
程序員需要一種特殊的筆記本電腦——這種電腦配備了足夠的電池、硬體和處理能力,這在普通的工作機器中是不常見的。
通常情況下,程序員使用至少 256GB SSD 存儲、8GB RAM、6 小時電池續航時間和配備像樣 GPU 的酷睿 i5 處理器的筆記本電腦。然而,這些只是基本的要求,所以建議使用更有魅力的筆記本電腦(如果它不會超出你的預算的話)來幫助你更快地完成編程任務,為未來的挑戰做准備,讓你在游戲中保持領先。
速度是編程的關鍵。
這就是為什麼帶有 i5 或 i7 甚至 i9 CPU 的筆記本電腦被認為是編程的最佳選擇,因為它們可以幫助您更快地工作,並減少編譯時間,尤其是在處理大型任務時。
是的,特別是對於編寫 macOS 和 iOS 應用程序。由於 MacBooks 具備所有基本的編程要求,可以通過 Bootcamp 或類似 Parallels 的虛擬機運行 Windows,因此你可以使用 MacBook 開發應用程序或為任何平台編寫程序。
『陸』 沒有gpu可以用nvcc嗎
可以。
你可以在沒有GPU的情況下進行構建。但這並不是很有用。 nvcc編譯器生成GPU代碼,因此無論如何都無法運行生成的代碼。
NVCCNashoba 谷商會 NVCC北安普頓谷鄉村俱樂部 NVCC北弗吉尼亞社區學院 NVCC北溫哥華商會 NVCC新的視覺社區教堂 NVCC納帕谷鄉村俱樂部 NVCC諾格塔克谷社區學院。
『柒』 關於GPU的問題!
目錄:
第一章:第二代及以後的GPU工作流程簡介
第二章:DirectX8和DirectX9 GPU的傳統流水線
第三章:頂點和像素操作指令
第四章:傳統GPU指令的執行
第五章:統一渲染架構
第六章:G80和R600的統一渲染架構實現
第七章:G80與R600效能對比
第八章:尷尬的中端--Geforce8600簡析
前面4章 我將先簡要介紹下DirectX8/9顯卡的核心----圖形處理單元GPU的工作流程和指令處理情況
從第5章開始討論統一渲染架構、新一代DirectX10 GPU的特性,G80/Geforce8800與R600/RadeonHD2900XT的架構具體實現及其區別。最後將會對中端最受關注的Geforce8600進行相應的簡單分析。
第一章:第二代及以後的GPU工作流程簡介
簡單(而不一定絕對科學)的說:GPU主要完成對3D圖形的處理--圖形的生成渲染。
GPU的圖形(處理)流水線完成如下的工作:(並不一定是按照如下順序)
頂點處理:這階段GPU讀取描述3D圖形外觀的頂點數據並根據頂點數據確定3D圖形的形狀及位置關系,建立起3D圖形的骨架。在支持DX8和DX9規格的GPU中,這些工作由硬體實現的Vertex Shader(定點著色器)完成。
光柵化計算:顯示器實際顯示的圖像是由像素組成的,我們需要將上面生成的圖形上的點和線通過一定的演算法轉換到相應的像素點。把一個矢量圖形轉換為一系列像素點的過程就稱為光柵化。例如,一條數學表示的斜線段,最終被轉化成階梯狀的連續像素點。
紋理帖圖:頂點單元生成的多邊形只構成了3D物體的輪廓,而紋理映射(texture mapping)工作完成對多變形表面的帖圖,通俗的說,就是將多邊形的表面貼上相應的圖片,從而生成「真實」的圖形。TMU(Texture mapping unit)即是用來完成此項工作。
像素處理:這階段(在對每個像素進行光柵化處理期間)GPU完成對像素的計算和處理,從而確定每個像素的最終屬性。在支持DX8和DX9規格的GPU中,這些工作由硬體實現的Pixel Shader(像素著色器)完成。
最終輸出:由ROP(光柵化引擎)最終完成像素的輸出,1幀渲染完畢後,被送到顯存幀緩沖區。
總結:GPU的工作通俗的來說就是完成3D圖形的生成,將圖形映射到相應的像素點上,對每個像素進行計算確定最終顏色並完成輸出。
第二章:DirectX8和DirectX9 GPU的傳統流水線
前面的工作流程其實已經說明了問題。本章來總結一下,承前啟後。
傳統的GPU功能部件我們不妨將其分為頂點單元和像素流水線兩部分。
頂點單元由數個硬體實現的Vertex Shader組成。
傳統的像素流水線由幾組PSU(Pixel Shader Unit)+TMU+ROP組成。
於是,傳統的GPU由頂點單元生成多邊形,並由像素流水線負責像素渲染和輸出。
對於像素流水線需要做的說明是:雖然傳統的流水線被認為=1PSU+1TMU+1ROP,但這個比例不是恆定的,例如在RadeonX1000(不包括X1800)系列中被廣為稱道的3:1黃金架構,PSU:TMU:ROP的數量為3:1:1。一塊典型的X1900顯卡具有48個PSU,16個TMU和16個ROP。之所以採用這種設計方法,主要考慮到在當今的游戲中,像素指令數要遠遠大於紋理指令的數量。ATI憑借這個優秀的架構,成功擊敗了Geforce7,在DX9後期取得了3D效能上的領先。
總結:傳統的GPU由頂點單元生成多邊形,像素流水線渲染像素並輸出,一條像素流水線包含PSU,TMU,和ROP(有的資料中不包含ROP),比例通常為1:1:1,但不固定。
第三章:頂點和像素操作指令
GPU通過執行相應的指令來完成對頂點和像素的操作。
熟悉OpenGL或Direct3D編程的人應該知道,像素通常使用RGB三原色和alpha值共4個通道(屬性)來描述。而對於頂點,也通常使用XYZ和W 4個通道(屬性)來描述。因而,通常執行一條頂點和像素指令需要完成4次計算,我們這里成這種指令為4D矢量指令(4維)。當然,並不是所有的指令都是4D指令,在實際處理中,還會出現大量的1D標量指令以及2D,3D指令。
總結:由於定點和像素通常用4元組表示屬性,因而頂點和像素操作通常是4D矢量操作,但也存在標量操作。
第四章:傳統GPU指令的執行
傳統的GPU基於SIMD的架構。SIMD即Single Instruction Multiple Data,單指令多數據。
其實這很好理解,傳統的VS和PS中的ALU(算術邏輯單元,通常每個VS或PS中都會有一個ALU,但這不是一定的,例如G70和R5XX有兩個)都能夠在一個周期內(即同時)完成對矢量4個通道的運算。比如執行一條4D指令,PS或VS中的ALU對指令對應定點和像素的4個屬性數據都進行了相應的計算。這便是SIMD的由來。這種ALU我們暫且稱它為4D ALU。
需要注意的是,4D SIMD架構雖然很適合處理4D指令,但遇到1D指令的時候效率便會降為原來的1/4。此時ALU 3/4的資源都被閑置。為了提高PS VS執行1D 2D 3D指令時的資源利用率,DirectX9時代的GPU通常採用1D+3D或2D+2D ALU。這便是Co-issue技術。這種ALU對4D指令的計算時仍然效能與傳統的ALU相同,但當遇到1D 2D 3D指令時效率則會高不少,例如如下指令:
ADD R0.xyz , R0,R1 //此指令是將R0,R1矢量的x,y,z值相加 結果賦值給R0
ADD R3.x , R2,R3 //此指令是將R2 R3矢量的w值相加 結果賦值給R3
對於傳統的4D ALU,顯然需要兩個周期才能完成,第一個周期ALU利用率75% ,第二個周期利用率25%。而對於1D+3D的ALU,這兩條指令可以融合為一條4D指令,因而只需要一個周期便可以完成,ALU利用率100%。
但當然,即使採用co-issue,ALU利用率也不可能總達到100%,這涉及到指令並行的相關性等問題,而且,更直觀的,上述兩條指令顯然不能被2D+2D ALU一周期完成,而且同樣,兩條2D指令也不能被1D+3D ALU一周期完成。傳統GPU在對非4D指令的處理顯然不是很靈活。
總結:傳統的GPU中定點和像素處理分別由VS和PS來完成,每個VS PS單元中通常有一個4D ALU,可以在一個周期完成4D矢量操作,但這種ALU對1D 2D 3D操作效率低下,為了彌補,DX9顯卡中ALU常被設置為1D+3D 2D+2D等形式。
第五章:統一渲染架構
相對於DirectX 9來說,最新的DirectX 10最大的改進在於提出了統一渲染架構,即Unified Shader。
傳統的顯卡GPU一直採用分離式架構,頂點處理和像素處理分別由Vertex Shader和Pixel Shader來完成,於是,當GPU核心設計完成時,PS和VS的數量便確定下來了。但是不同的游戲對於兩者處理量需求是不同的,這種固定比例的PS VS設計顯然不夠靈活,為了解決這個問題,DirectX10規范中提出了了統一渲染架構。
不論是頂點數據還是像素數據,他們在計算上都有很多共同點,例如通常情況下,他們都是4D矢量,而且在ALU中的計算都是沒有分別的浮點運算。這些為統一渲染的實現提供了可能。
在統一渲染架構中,PS單元和VS單元都被通用的US單元所取代,nVidia的實現中稱其為streaming processer,即流處理器,這種US單元既可以處理頂點數據,又可以處理像素數據,因而GPU可以根據實際處理需求進行靈活的分配,這樣便有效避免了傳統分離式架構中VS和PS工作量不均的情況。
總結:統一渲染架構使用US(通常為SP)單元取代了傳統的固定數目的VS和PS單元,US既可以完成頂點操作,又可以完成像素操作,因而可以根據游戲需要靈活分配,從而提高了資源利用率。
第六章:G80和R600的統一渲染架構實現
以下我們著重討論G80和R600的統一著色單元而不考慮紋理單元,ROP等因素。
G80 GPU中安排了16組共128個統一標量著色器,被叫做stream processors,後面我們將其簡稱為SP。每個SP都包含有一個全功能的1D ALU。該ALU可以在一周期內完成乘加操作(MADD)。
也許有人已經注意到了,在前面傳統GPU中VS和PS的ALU都是4D的,但在這里,每個SP中的ALU都是1D標量ALU。沒錯,這就是很多資料中提及的MIMD(多指令多數據)架構,G80走的是徹底的標量化路線,將ALU拆分為了最基本的1D 標量ALU,並實現了128個1D標量SP,於是,傳統GPU中一個周期完成的4D矢量操作,在這種標量SP中需4個周期才能完成,或者說,1個4D操作需要4個SP並行處理完成。
這種實現的最大好處是靈活,不論是1D,2D,3D,4D指令,G80得便宜其全部將其拆成1D指令來處理。指令其實與矢量運算拆分一樣。
例如一個4D矢量指令 ADD R0.xyzw , R0,R1 R0與R1矢量相加,結果賦R0
G80的編譯器會將其拆分為4個1D標量運算指令並將其分派給4個SP:
ADD R0.x , R0,R1
ADD R0.y , R0,R1
ADD R0.z , R0,R1
ADD R0.w, R0,R1
綜上:G80的架構可以用128X1D來描述。
R600的實現方式則與G80有很大的不同,它仍然採用SIMD架構。
在R600的核心裡,共設計了4組共64個流處理器,但每個處理器中擁有1個5D ALU,其實更加准確地說,應該是5個1D ALU。因為每個流處理器中的ALU可以任意以1+1+1+1+1或1+4或2+3等方式搭配(以往的GPU往往只能是1D+3D或2D+2D)。ATI將這些ALU稱作streaming processing unit,因而,ATI宣稱R600擁有320個SPU。
我們考慮R600的每個流處理器,它每個周期只能執行一條指令,但是流處理器中卻擁有5個1D ALU。ATI為了提高ALU利用率,採用了VLIW體系(Very Large Instruction Word)設計。將多個短指令合並成為一組長的指令交給流處理器去執行。例如,R600可以5條1D指令合並為一組5DVLIW指令。
對於下述指令:
ADD R0.xyz , R0,R1 //3D
ADD R4.x , R4,R5 //1D
ADD R2.x , R2,R3 //1D
R600也可以將其集成為一條VLIW指令在一個周期完成。
綜上:R600的架構可以用64X5D的方式來描述。
總結:G80將操作徹底標量化,內置128個1D標量SP,每個SP中有一個1D ALU,每周期處理一個1D操作,對於4D矢量操作,則將其拆分為4個1D標量操作。
R600仍採用SIMD架構,擁有64個SP,每個SP中有5個1D ALU,因而通常聲稱R600有320個PSU,
每個SP只能處理一條指令,ATI採用VLIW體系將短指令集成為長的VLIW指令來提高資源利用率,例如5條1D標量指令可以被集成為一條VLIW指令送入SP中在一個周期完成。
第七章:G80與R600效能對比
從前一章的討論可以看出,R600的ALU規模64X5D=320明顯比G80的128X1D=128要大,但是為何在實際的測試中,基於R600的RadeonHD2900XT並沒有取得對G80/Geforce8800GTX的性能優勢?本章將試圖從兩者流處理器設計差別上來尋找答案,對於紋理單元,ROP,顯存帶寬則不做重點討論。事實上,R600的顯存帶寬也要大於G80。
我們將從頻率和執行效能兩個方面來說明問題:
1、頻率:G80隻擁有128個1D流處理器,在規模上處於絕對劣勢,於是nVidia採用了shader頻率與核心頻率非同步的方式來提高性能。Geforce8800GTX雖然核心頻率只有575MHZ,但shader頻率卻高達1375MHZ,即SP工作頻率為核心頻率的兩倍以上,而R600則相對保守地採用了shader和核心同步的方式,在RadeonHD2900XT中,兩者均為740MHZ。這樣一來,G80的shader頻率幾乎是R600的兩倍,於是就相當於同頻率下G80的SP數加倍達到256個,與R600的320個接近了很多。在處理乘加(MADD)指令的時候,740MHZ的R600的理論峰值浮點運算速度為:740MHZ*64*5*2=473.6GFLOPS 而shader頻率為1350MHZ的G80的浮點運算速度為:1350MHZ*128*1*2=345.6GFLOPS,兩者的差距並不像SP規模差距那麼大。
2、執行效能:G80雖說shader頻率很高,但由於數量差距懸殊,即使非同步也無法補回理論運算速率的差距。於是,要尋找答案,還要從兩者流處理器的具體設計著手。
在G80中,每個矢量操作都會被拆分為1D標量操作來分配給不同的SP來處理,如果不考慮指令並行性等問題,G80在任何時刻,所有SP都是充分利用的。而R600則沒這么幸運,因為每個流處理器只能同時處理一條指令,因而R600要將短指令合並為能充分利用SP內5DALU運算資源的VLIW指令,但是這種合並並不是總能成功。目前沒有資料表明R600可以將指令拆開重組,也就是說,R600不能每時每刻都找到合適的指令拼接為5D指令來滿載他的5D SP,這樣的話我們假設處理純4D指令的情況,不能拆分重組的話,R600每個SP只能處理一條4D指令,利用率80%,而對於G80,將指令拆開成1D操作,無論何時都能100%利用。而且,R600的結構對編譯器的要求很高,編譯器必須盡可能尋找Shader指令中的並行性,並將其拼接為合適的長指令,而G80則只需簡單拆分即可。
另外還需要說明的一點是,R600中每個SP的5個1D ALU並不是全功能的,據相關資料,每組5個ALU中,只有一個能執行函數運算,浮點運算和Multipy運算,但不能進行ADD運算,其餘的4各職能執行MADD運算。而G80的每個1D ALU是全功能的,這一點也在一定程度上影響了R600的效能。
總結:雖然R600的ALU規模遠大於G80,但G80的SP運行頻率幾乎是R600的兩倍,而且G80的體系架構採用完全標量化的計算,資源利用率更高,執行效能也更高,因而總體性能不落後於R600。
第八章:尷尬的中端--Geforce8600簡析
在新一代中端顯卡中,最早發布也是最受關注的莫過於nVidia的G84---Geforce8600系列。
但是相比其高高在上的價格,它的性能表現實在不盡如人意,很多測試中均落後於價格低於它的老一代高端顯卡Geforce7900GS。本章將利用前面討論的結論對G84核心的SP處理能力作簡要地分析。
G84是G80核心的高度精簡版本,SP數量從G80的128個銳減為32個,顯存位寬也降為1/3--128bit。
拋開顯存位寬和TMU ROP,我們著重看SP,G84的SP頻率與核心頻率也不相同,例如8600GT,核心頻率只有540MHZ,shader頻率卻高達1242MHZ,即核心頻率的兩倍多,我們粗略按兩倍記,則G84核心相當於核心shader同步的64(個1D標量) SP,而傳統的VS和PS中ALU是4D的,於是可以說G84的計算能力相當於傳統VS和PS總數為64/4=16的顯卡,粗略比較,它與Geforce7600(PS+VS=17)的計算能力相近。但當然,事實這樣比較是有問題的,因為在G7X中,每個PS中有兩個4D ALU,因而7600的運算能力高於傳統PS+VS=17的顯卡。下面的計算就說明了問題:(MADD操作)
對於7600GT ,VS為4D+1D PS為4D+4D 核心頻率560MHZ 理論峰值浮點運算速度:
560MHZ*(12*(4+4)+5*(1+4))*2=135.52GFLOPS
而對於8600GT:1242MHZ*32*1*2=79.4GFLOPS
由此可見,8600GT的峰值運算速度甚至遠低於上代的7600GT,更不用跟7900GS相比了。但是,實際情況下,迫於傳統架構所限,G7X滿載的情況基本不可能出現,G7X的實際運算速率要遠低於理論值,而對於G8X架構,執行效率則高很多,實際運算速率會更加接近理論極限。而且支持SM4.0的G8X寄存器數目也要遠多於G7X,眾多效率優勢,使得Geforce8600GT僅憑借少量的SP就足以擊敗上代中端7600GT。
但是作為DX10顯卡,僅僅擊敗7600GT顯然不是最終目標,僅32SP的它在計算量要求空前之高的DX10游戲中表現極差,根本不能滿足玩家要求。
總結:8600GT性能上取代7600GT的目標憑借著高效的統一渲染架構總算勉強完成,但過少的SP數量使得其顯然難以擊敗上代高端,更不用說流暢運行DX10游戲了,而高高在上的價位更使其處境不利,歸根到底,nVidia對G84 SP數量的吝嗇以及過高的價格定位造就了Geforce8600的尷尬,因此,就目前的情況來看,選用8600系列顯然不如Geforce7900和RadeonX1950GT來的劃算。
『捌』 我想深入硬體要學習哪些知識
我很喜歡這個問題。因為幾年前開始我就在思考這個問題並且選擇了相關專業,現在已經是一名工程師。
(以下回答基於:你說的是計算機硬體)
硬體里也分為很多部分:(從最底層到硬體頂層大致可以分為)半導體(包括物理和材料層面、器件層面如三極體、場效應管等)、電路(普通模擬電路和數字電路、集成電路等)、計算機組織和架構(如果是網路方向就包括計算機網路),再往上就是操作系統了。你將來的工作不會要求你全部方面都有深入了解,不過作為學習建議你每方面都學,這樣才能找到真正感興趣和合適自己的方向,並且對計算機硬體有個整體的認識。
(1) 如果是半導體層面,建議你讀大學的時候選擇相關專業(微電子、電子工程等),否則自學基本不可能學好,因為需要扎實的物理知識和大量物理實驗來掌握,會包括一些如半導體物理、半導體器件、半導體材料等課,還有些微加工等半導體製造工藝等。
就業:CPU的主要材料就是半導體(Intel),另外如果想做平板顯示器、顯示材料(如三星等公司)也是這個方向。
(2) 如果是電路層面,基礎課包括數字電路、模擬電路等,然後會有些集成電路(如VLSI, ASIC, FPGA, SoC)的課、電路設計(IC Design)的課以及需要掌握一些硬體描述語言(如Verilog, VHDL)。這些東西其實也都需要做大量實驗和項目來幫助理解掌握。
就業:電路方向的應用比較廣,不僅僅是計算機方面(Intel, Nvidia),很多其他電子產品也都需要電路相關的工程師(華為、三星、LG等公司)。
(3) 如果是架構層面,課程包括計算機架構(computer architecture)、計算機網路等,計算機架構主要幫助你了解計算機是如何通過利用電路來實現「計算」的功能以及如何跟操作系統溝通等,當然包括一些內存、緩存(cache)、線程、流水線、CPU等東西。深入了解的話也需要下功夫。還會包括一些並行計算(parallel computing)、高性能計算(High Performance Computing)或者GPU、編譯器(compiler)、嵌入式系統等內容,另外學習操作系統(operating system)會更好地幫助理解計算機架構。當然,學會C語言也是必要的。
就業:架構方面的工作主要集中於幾個能做CPU,GPU的公司如Intel, Nvidia, 德州儀器(Texas Instruments), AMD, IBM等。
其它,還有些方向的硬體比如通信,需要學習的課程除了上述電路方面的課,還有:信號與系統、數字信號處理、通信系統、電磁場與微波、無線通信等。
就業:主要的通信公司如華為、中興、高通等。
總的來說,這些知識都主要集中在類似於電子信息科學、微電子、電子工程等專業的課程里,或者是計算機科學的硬體類課程里。如果要學好,至少需要三四年甚至更長時間。
『玖』 你遇到的前端面試題都有什麼
大家好,我是王我。
隨著春節的結束,各個行業也普遍開始了上班的節奏, 不過本人17號才上班。為什麼?因為長得帥的都上班比較晚。 當然,每到新年結束,又迎來了一批招聘者與面試者,我來說說作為一年工作經驗應該知道的面試題。
HTML篇
1.doctype是什麼?有哪些類型?
2.input有哪些新類型?簡要說明其8用法。
3.HTML5有哪些新特性,移除了哪些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分HTML和HTML5?
4.bootstrap響應式的原理是什麼?
5.多移動終端頁面適配是如何實現的?
CSS篇
1.如何實現兩列布局,左邊自適應,右邊固定寬度?
2.用CSS畫一個三角形
3.CSS實現字體大寫
4.display有哪些常用的屬性值?分別是什麼意思?
5.position為absolute,relative,fixed的定點位置
6.用三種方法清除浮動
7.請介紹一下margin塌陷問題
js篇
1.什麼是事件冒泡和捕獲?如何阻止事件冒泡?(分別用原生和jquery實現)
2.js創建對象,至少使用三種方法
3.簡述一下事件穿透以及解決辦法
4.用三種方式判斷變數類型是否是數組
5.如何實現對象的拷貝?
6.什麼是閉包?閉包的優缺點。
7.簡述一下ajax請求的過程。
8.簡述一下new一個人構造函數的人過程。
9.為什麼會有跨域?是怎麼解決跨域問題的?簡述一下原理。
10.js原始數據類型有哪些?
11.學一個函數,判斷一個變數是否是字元串
12.typeof有哪些結果?
13.剪頭函數和普通函數有什麼區別?
14.請用三種方法實現數組去重
15.href和src有什麼區別?
jquery篇
1.attr()和prop()有什麼區別?
2.on和bind有什麼區別?js動態添加的dom元素是通過on還是bind?
3.touch和click有什麼區別?
4.window.onload和jquery的ready有什麼區別?
vue篇
1.簡述一下vue的生命周期及其特點
2.vue雙向綁定的原理是什麼?
3.vue的特點有哪些?和jquery有什麼區別?
4.父子組件之間傳遞數據的方法
5.子組件如何共享數據?
6.一般有什麼工具進行數據交互?
7.webpack的原理是什麼?
8.簡述一下$nextTick的用法
瀏覽器篇
1.cookie、sessionStorage、localStorage的區別是什麼?
2.有用過瀏覽器緩存嗎?簡述一下基本的緩存機制
網路篇
1.http和https之間的區別
2.從伺服器的安全考慮,是使用get請求還是post請求?
3.URL請求的過程有哪些?
項目經驗篇
1.項目中遇到的最大挑戰以及解決辦法
2.常見的網頁優化有哪些?
作為一個面試一年以內工作經驗的前端程序員來說,以上的問題能夠倒答如流月薪6k應該不成問題啦。這些面試題也是我在很多面試中感覺經常被問到的題目。
希望大家年後找工作能夠順順利利, 千萬不要跟我一樣哦,只有帥氣就一無所有了。
大家好,我是王我,中國最帥的前端程序員。
前幾次都是各種培訓公司,各種忽悠就不提了,說說後面4次面試的經歷。
第一次是面一個小公司,不過他們好像沒有厲害的前端,來面我的是個後端,一來沒有問我關於js的知識,直接問我以前做過什麼,有沒有經驗,我本人不會吹牛,簡歷也沒怎麼包裝,就是自己把自學的知識和做的幾個小demo弄在上面,也用github掛在頁面上了,不過他根本不點開看,也不問,問我會不會vue,我當時對框架還不了解,他就說他們需要能直接上手開始寫的,所以我第一個就直接掛了。
第二次面試是一個國企,這個問了很多問題,都很基礎,js數據類型,數組操作,事件,大概就是高程的前面幾章看看就差不多都能答到,然後因為他們主要用jq,所以問了很多jq的操作,關於節點的,動畫的,我看鋒利的jq大概看了3遍,也練過多次,所以我答的很熟。然後問了些布局方面的,bootstrap我了解過,又看過css3,所以這方面也沒啥問題,最後在現場做了個題目,主要就是布局然後通過ajax呈現數據。後面聽介紹我面試的說面試官比較滿意,說我jq很熟,一面就過了。可惜後面電話面試不知怎麼回事可能表現的不夠自信,雖然沒問技術,但是我沒啥自信,把沒項目經驗什麼的也不知怎麼就一五一十交代了,估計因為這個掛掉了。
第三次沒問問題,直接就是一套題開做,我在那做了一個多小時。題目就是按照要求一步一步做一個頁面出來,我也搞忘了我當時卡在哪個地方了,坐在那得時候就是做不出來,沒有設計圖,要根據他的描述自己找個設計圖然後做,我第一次遇到這個有點懵,雖然當時沒做出來,不過回來我自己花了幾個小時把它做了。所以這個也是涼了。
第四個問的比較多,數據類型,數組操作,跨域,ajax,閉包,原型鏈,繼承,深拷貝,淺拷貝,模塊amd cmd,基本都是問的js。然後問了html5的新特性 css3 的新特性,遇到過什麼瀏覽器的兼容性問題,怎麼解決的,以後想往什麼方面發展。這個時候我已經會點vue了,照著做了個小demo,不過後來知道公司用的angularjs,面試官也沒看我做的,問也沒問。。以前聽網上說要帶上自己的項目去面試感覺沒起多大效果。
最後總結下如果面的比較初級的崗位,應該主要問js,原型鏈,繼承,閉包,深淺拷貝,ajax,跨域,然後js的基礎知識,對了還有apply和call也問了,html5的新特性了解下就行。主要就是看你js掌握的程度,如果稍微要求高一點的,暫時還沒面過,等以後面過在來回答
1. cookie session 的用途和區別,以及有效期
1、cookie數據存放在客戶的瀏覽器上,session數據放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內保存在伺服器上。當訪問增多,會比較佔用你伺服器的性能
考慮到減輕伺服器性能方面,應當使用COOKIE。
4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
2. vue的數據綁定原理,mvvm與mvc的區別
MVVM:
m:model數據模型層 v:view視圖層 vm:ViewModel
vue中採用的是mvvm模式,這是從mvc衍生過來的
MVVM讓視圖與viewmodel直接的關系特別的緊密,就是為了解決mvc反饋不及時的問題
圖片說明一下:
說到MVVM就要說一下雙向綁定和數據劫持的原理,
MVC:
m:model數據模型層 v:view視圖層 c:controller控制器
原理: c層需要控制model層的數據在view層進行顯示
MVC兩種方式,圖片說明:
總結:
mvvm與mvc最大的區別:
MVVM實現了view與model的自動同步,也就是model屬性改變的時候, 我們不需要再自己手動操作dom元素去改變view的顯示,而是改變屬性後該屬性對應的view層會自動改變。
不懂得可以復制鏈接查看:
https://www.pianshen.com/article/3716256399/
3. storage 的區別 sessionStorage localStorage
localStorage 的生命周期是永久性的。假若使用localStorage存儲數據,即使關閉瀏覽器,也不會讓數據消失,除非主動的去刪除數據,使用的方法如上所示。localStorage有length屬性
sessionStorage 的生命周期是在瀏覽器關閉前。也就是說,在整個瀏覽器未關閉前,其數據一直都是存在的。sessionStorage也有length屬性,其基本的判斷和使用方法和localStorage的使用是一致的
有一個文本框 通過v-bind綁定了value屬性 值為myname 是我們在vue實例中定義的屬性
傳統我們獲取文本框值方法 可能通過getElementById找到文本框 然後獲取其value屬性
但是vue中直接通過v-bind綁定了value屬性 所以不需要像之前那樣獲取值
所以在後面的按鈕中獲取name值 直接獲取vue實例對象data裡面的myname屬性即可
【數據為尊 ----數據映射到瀏覽器 如果數據v-model後修改(肯定input)然後到數據在有數據映射到瀏覽器頁面 ----映射關系統稱】
緩存路由組件
使用的是vue的一個組件,參考vue的官方文檔
使用這個東西可以保證我們在切換組件的時候,原來顯示的組件不被銷毀
-----【保障組件的數據不會被切換路由而銷毀數據】
Home是對應的組件對象的名字,不是路由的名字
6.多維數組拍平
數組拍平也稱數組扁平化,就是將數組裡面的數組打開,最後合並為一個數組
一紅六種方法吧……
了解的請看: https://www.cnblogs.com/guan-shan/p/10165737.html
7.跨域的原因 解決方案
跨域是指一個域下的文檔或腳本試圖去請求另一個域下的資源,這里跨域是廣義的。
這樣就可以說同源策略----協議---埠---域名
原生的src和href可以解決跨域
代理可以解決
請求頭也可以攜帶瀏覽器提示的也可以解決
一般都是後端解決跨域問題
【別的需要了解看下方鏈接】
https://blog.csdn.net/qq_41604383/article/details/100770100
8.uniApp兼容問題§ 如果你使用cli創建項目(即項目根目錄是package.json),不管用什麼ide,即便是用HBuilderX,切記cli項目的編譯器是在項目下的,HBuilderX不管怎麼升級都不會影響編譯器版本。你需要手動npm update來升級編譯器。以及如果你想要安裝less、scss等預編譯器,也需要自己npm安裝在項目下,而不是在HBuilderX的插件管理里安裝。
§ 如果你使用離線打包,請注意HBuilderX升級後,真機運行基座和雲打包對應引擎跟隨HBuilderX升級,而你的sdk需要手動升級。sdk的版本升級一般滯後HBuilderX正式版升級一兩天。
§ 如果你使用自定義基座,之前製作的自定義基座是不會跟隨HBuilderX升級的,升級HBuilderX後你應該重新製作新版自定義基座。
§ 如果你使用wgt升級,新版HBuilderX編譯的wgt,運行到之前的runtime上,一定要先測試好,看有沒有兼容性問題。如果有問題,就不要wgt升級,整包升級。
§ 考慮到向下兼容,uni-app編譯器在升級為新的自定義組件模式後,同時保留了對老編譯模式的向下兼容。
在HBuilderX alpha版中,App端一定會使用新編譯器,不理會manifest配置。
在HBuilderX 正式版中,新創建的項目會使用新編譯器,老項目不會強制使用,而是開發者自己在manifest里配置開啟。
§ 如果你使用其他ide開發uni-app,會經常因為拼錯單詞而運行失敗,因為經過webpack編譯一道,很多錯誤反應的不夠直觀,排錯時間很長,不如從開始就依賴有良好提示的HBuilderX,避免敲錯單詞。
§ 雲打包的引擎版本說明
HBuilderX Alpha,只有1套雲打包機,不管你的HBuilderX alpha版本多少,對應的打包機一定是最新的alpha版的客戶端引擎。
HBuilderX正式版,有2套打包機,一個是最新正式版,一個是次新正式版。
中間的緊急更新版本沒有獨立打包機。
舉個例子:
HBuilderX 有1.8.0、1.8.1、1.8.2、1.9.0、1.9.1這幾個正式版。
那麼當前可用的打包機有1.9.1和1.8.2這2台。(即每個大版本的最後一個版本)
除了這2個HBuilderX版本外,其他版本的雲打包都指向最新的1.9.1版對應的打包機。(即只保留2個大版本的雲打包機)
【詳情請看】
https://ask.dcloud.net.cn/article/35845
一、HTML
HTML書寫規范
H5新增標簽
HTML渲染過程
二、CSS
css盒子模型概念
css彈性布局概念
三、JavaScript
事件模型
DOM2級事件模型
閉包
原型鏈
四、移動Web開發
常見的布局方案
移動端前端常見的觸摸相關事件touch、tap、swipe等整理
移動端前端手勢事件
移動端頁面渲染優化
GPU渲染
GPU核心渲染過程
五、調試
常用的調試工具
Chrome控制台調試js使用
移動端測試
六、HTTP網路知識
常見的HTTP狀態碼
不同請求類型的區別
WEB緩存方案
——————————
牛客網(www.nowcoder.com)
- 專業IT筆試面試備考平台
- 最全C++JAVA前端等互聯網技術求職題庫
- 全面提升IT編程能力
- 程序員交友聖地
分享了一些Web前端的面試題,限時一小時,你看看自己能夠答出多少道!
放心,這些面試題都是一些非常基礎的知識,只要你在平時認真聽課、學習了,那麼這些面試題肯定不會難道你。
建議:雖然沒有人監督你,但還是希望你不要去尋找答案,脫離網路,拿起紙筆,你試一下自己究竟能夠答出個什麼水平!有沒有真本領?答案盡在這些面試題里!那麼,你准備好了嗎?OK!計時開始!
一、HTML常見題目01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?
02、HTML5為什麼只需要寫?
03、行內元素有哪些?塊級元素有哪些?空(void)元素有那些?
04、頁面導入樣式時,使用link和@import有什麼區別?
05、介紹一下你對瀏覽器內核的理解?
06、常見的瀏覽器內核有哪些?
07、html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?
08、如何區分HTML和HTML5?
09、簡述一下你對HTML語義化的理解?
10、HTML5的離線儲存怎麼使用,工作原理能不能解釋一下?
二、CSS類的題目01、介紹一下標準的CSS的盒子模型?與低版本IE的盒子模型有什麼不同的?
02、CSS選擇符有哪些?哪些屬性可以繼承?
03、CSS優先順序演算法如何計算?
04、CSS3新增偽類有那些?
05、如何居中p?如何居中一個浮動元素?如何讓絕對定位的p居中?
06、display有哪些值?說明他們的作用。
07、position的值relative和absolute定位原點是?
08、CSS3有哪些新特性?
09、請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?
10、用純CSS創建一個三角形的原理是什麼?
三、Java類的題目
01、介紹Java的基本數據類型。
02、說說寫Java的基本規范?
03、Java原型,原型鏈?有什麼特點?
04、Java有幾種類型的值?(堆:原始數據類型和棧:引用數據類型),你能畫一下他們的內存圖嗎?
05、Java如何實現繼承?
06、Java創建對象的幾種方式?
07、Java作用鏈域?
08、談談This對象的理解。
09、eval是做什麼的?
10、什麼是window對象?什麼是document對象?
OK,一小時到了,這個時間可不算短了,那麼這些面試題你答出了幾道呢?你寫的答案正確了嗎?現在你可以去翻看答案了。
如果你答出了絕大多數的或者是全部的題,並且答案也正確了,那麼恭喜你……
你這時心裡是不是有點小竊喜,認為自己有能力拿高薪了?雖然我也很想這么告訴你,但事實上這只能表明你的基礎扎實,畢竟這只是一些非常基礎的面試題。騷年~繼續努力吧!
如果你只答出了小部分或者答出了大部分題但答案不正確,那麼我只想說:「騷年,你的水平還差的遠呢。」連這么基礎的題你都打不出來,還想拿高薪?回去再練一段時間吧!
扎實的基礎是你拿高薪的重要武器,如果你連基礎都不扎實,那麼想要攻克「高薪」這個厚實的堡壘,那隻是痴人說夢罷了。
1.前端框架類問題,問你會不會用vue react啊
2.語言類,問你一些JavaScript語言的問題
3.項目經驗,讓你講講做過的項目,遇到的問題和解決之道