1. 處理器的緩存與線程各有什麼作用
樓上回答很對 這都是核心的兩個重要參數 緩存越大 越好 線程數越多越好 處理器的能力就越強 緩存是相當於內存的 功能 線程 就是能夠處理軟體的 每個通道 相當於馬路越寬就越能跑很多車 相當於車道 越多就能能同時執行多種軟體
2. 線程和緩存是什麼意思
線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以並發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。
緩存是指臨時文件交換區,電腦把最常用的文件從存儲器里提出來臨時放在緩存里,就像把工具和材料搬上工作台一樣,這樣會比用時現去倉庫取更方便。因為緩存往往使用的是RAM(斷電即掉的非永久儲存),所以在忙完後還是會把文件送到硬碟等存儲器里永久存儲。電腦里最大的緩存就是內存條,緩存的大小與速度是直接關繫到硬碟的傳輸速度的重要因素,能夠大幅度地提高硬碟整體性能。
3. 優酷看視頻為什麼會有很大的緩存
視頻分段的目的並非是為了讓用戶多線程下載,恰恰是為了不讓用戶過快地下載。HTTP協議畢竟不是流媒體協議,很難控制視頻傳輸的速度,設想一個用戶在看了整部視頻的1/3的時候,決定不看了,可是由於用戶的網速很可能快於視頻的碼流,這時整部視頻也許已經全部下載完畢了,那麼多下載的2/3流量就被浪費了,這對於目前帶寬是主要成本的視頻網站來講顯然是不可接受的。因此把視頻分段,並在一個視頻片段快看完的時候,再去下載下一段視頻,是一種簡便並且高效的流控手段。
另外一個作用是為了CDN緩存的需要。視頻文件普遍比較大,在緩存進內存的時候,會消耗大量的資源,如果緩存節點有多個不同視頻文件在被觀看,那麼把這些文件全部讀進內存有可能使系統資源耗盡。只把那些正在被觀看的片段緩存起來顯然效率更好。
視頻服務一般不允許多線程下載,他們的CDN節點遍布全國,帶寬和延遲都很有保障,所以沒有必要使用多線程下載。把大文件分成多段也不是分段下載的必要條件,保持一個大文件,同時分段請求不同的文件位置也是可以的,只是flash能不能實現就不知了
關於視頻分段提高CDN緩存效率,還可以設想這樣一個簡單的模型:一部熱播電影上線,視頻文件尺寸有1G,裝載到一個10台伺服器的CDN節點上,有數百個用戶同時線觀看,由於視頻網站大都採用了點播的模式,每個用戶觀看的進度都是不一樣的,如果不採用分段的模式,那麼你可能需要把視頻文件分發到10台伺服器上以均攤負載,每個文件都需要被全部緩存,總共消耗10G的內存。如果把視頻分成10段,分別放到10台伺服器上來均攤負載,總共就只需要1G內存,差別是9倍。考慮到視頻網站同時會有多部影片在被用戶觀看,不可能所有的視頻文件全都裝載到內存中,會有大部分視頻文件保存在磁碟上,在需要時才被load進內存,那麼內存的成倍節省就意味著Memory Hit Ratio的大幅提升,這是一個Cache Server的最重要指標,也是所有CDN系統運行效率的關鍵。上面只是模型,實際的視頻CDN系統未必是這樣,有些解決方案不再使用Cache Server,而改用Web Server+Page Cache的方式,效率可能更好,但是分段仍然是提高系統整體效率的有效辦法。
4. java如何實現線程安全的緩存
簡單來說就是多線程的時候,多線程同時修改同一個類的時候,由於訪問順序隨機導致類功能出錯,至於線程安全類設計方法很多的,Java可以用synchronize標識類,只允許一個線程在同一時間訪問它,選擇線程安全的數據類型例如ArrayList,數組是不安全的,你可以多去網路查!