Jmeter與壓測相關概念

相關概念

RT(response time)

什麼是RT? RT就是指系統在接收到請求和做出相應這段時間跨度

但是值得一提的是RT的值越高,並不真的就能說明我們的系統的吞吐量就很高, 比如說,如果存在數據在網絡中傳輸時出現了丟包的現象,傳輸的數據少了,速度就會增加, 但是這是事故,不是說我們的系統吞吐量高

此外,對不同的系統來說衡量的標準也不一樣,對一個遊戲軟件來說,響應時間也就是常說的延遲. 在100ms以內,遊戲體驗感會很好,飆升到幾秒鐘,乾脆就不要玩了, 但是對一個編譯系統來說,編譯一套源代碼可能好幾十分鐘,人們也願意等

java應用程序中的GC也會導致系統的總體RT飆升

Throughput 吞吐量

什麼是吐吞量呢? 百度百科: 廣義的吞吐量是: 單位時間內成功的傳輸數據的數量, 在我們進行壓力測試得出的結果中, 可以將吞吐量理解成系統在單位時間內成功處理的請求的數量

一個系統的吞吐量和request對CPU的消耗,外部的接口以及IO等因素緊密相關,

比如一個web應用代碼寫的再漂亮,但是每次請求都會去查詢數據庫,併發數上來后,數據庫就會佔用大量的CPU負載,系統的IO飆升,甚至可能導致其他軟件不得不等待mysql先執行完才能搶到CPU的時間分片. 系統的瓶頸積壓到mysql這裏,這個web應用的吞吐量一定不會很高

此外,一般我們都是這樣描述吞吐量: 在併發數為xxx時,系統的吐吞量為yyy

併發用戶數

它指的是系統可以承載的, 可以同時正常使用網站的用戶數量, 這個指標似乎看起來可以比吞吐量更加直觀反應系統的性能, 但是往往系統中的用戶又有不同的行為, 比如未註冊的, 在線的, 同時發送請求的等等, 簡而言之, 可以考慮用在線的用戶和同時發送請求的用戶數作為性能指標, 把在線的用戶當成性能指標更直觀, 把同時發送請求的用戶數量當成性能指標更準確

QPS (query per seconds)

每秒的查詢率, 用來權衡服務器在規定的時間內處理的流量數

計算公式: QPS = req / sec , 即平均每秒的請求量

TPS (transition per seconds)

TPS (transaction per second)代表每秒執行的事務數量,可基於測試周期內完成的事務數量計算得出。例如,用戶每分鐘執行6個事務,TPS為6 / 60s = 0.10 TPS。同時我們會知道事務的響應時間(或節拍),以此例,60秒完成6個事務也同時代表每個事務的響應時間或節拍為10秒。

PV和UV

PV訪問量 (Page View) 每打開一次頁面或者刷新一次頁面 pv+1, 它反應的的網站的頁面被訪問的次數

UV訪問數(Unique Visitor) 即, 獨立訪客的訪問數, 換句話就是一台電腦算一個訪客,

  • 通過QPS估算PV

公式1 : pv = QPS*3600*6

公式2: pv = QPS*3600*8

  • 根據QPS,PV估算服務器的數量

服務器的數量= 每天的總PV / 單台服務器的PV

原理: 每天80%的訪問集中在了當前的20%的時間段, 這20%的時間就叫做峰值時間

峰值時間段 QPS = 總pv數*0.8 / 每天的秒數*0.2

Jmeter

jmeter能做什麼?

Jmeter也是apache的頂級項目, 通過jmeter我們可以測試靜態和動態資源,web動態應用程序的性能, 還可以用來模擬服務器,服務器中,網絡或者對象上的高負載, 測試他們的強度,以及不同負載下的總體性能

使用環境: Windows

使用的思路: 在jmeter提供的可視化頁面中,添加一個一個的指定的模塊. 對我們的web項目中指定的接口進行壓力測試,當然它不僅僅使用於發送http請求測試web項目的資源接口

添加什麼模塊呢?

  • 線程組: 也就是啟動多少條線程對系統壓測, 線程是否併發的啟動
  • http的默認參數: 比如protocol host port 等等
  • 添加請求的參數/請求體/cookie等信息
  • 添加監聽器來显示壓測結果

實例:

添加線程組,每輪同時啟動1000條線程對系統進行壓測,重複1輪

添加默認使用的請求參數, 這個默認的請求參數並不要求強制添加,只是為了以後在具體的某個http請求壓測模塊不寫請求參數時,使用這裏面的默認參數

配置信息如下:

添加一個sample, 這個sample其實就是http請求, 一個具體的http請求, 用大白話說 ,我們想壓測系統中的登錄方法,就添加一個登錄sample, 想壓測系統中拉取個人信息的方法, 就添加一個 個人信息sample

sample詳細配置

可以看到上圖中我們可以添加request Param request body, 上傳文件, 甚至可以添加一個模塊添加請求的cookie模塊

添加Listenner, 選擇聚合報告 ,開始壓測得到下面的結果,我們關注圖中的吞吐量

支持使用配置文件中的數據當成壓測的參數, 使用場景: 通過這個配置文件的配置,我們可以模擬出多用戶併發訪問系統的場景,下面配置中的每一行都是一個用戶的信息,jmeter會自動讀取這個配置文件中的每一行,使用這裏面的信息進行壓力測試,直到達到了用戶指定的請求量才結束

編寫配置文件

導入配置文件

使用配置文件,詳細的配置細節我都標在了圖片中

發送請求

使用環境: linux

第一步: 在window上錄好 XXX.jmx 文件

第二步: 啟動

sh jmeter.sh -n -t XXX.jmx -l result.jtl

第三步:將result.jtl導回到window上的jmeter中在可視化頁面中查看結果

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

電腦組裝之硬件選擇,電腦組裝知識

作者:凌逆戰

地址:

電腦主要配件:主板、CPU、顯卡、显示器、電源、機箱、內存條、硬盤。CPU、顯卡、內存條、硬盤是插在主板上的,電源用來給主板上的部件進行供電,CPU,主板,顯卡,內存條、硬盤、電源這幾個放在機箱中就構成了我們通常所說的主機。摩爾定律,硬件的性能每隔18~20個月就會提升一倍。

主板

主板主要接口:CPU插槽;內存條插槽;SATA硬盤接口;M.2接口(用於M.2接口的固態硬盤);背板I/O接口;PCLE-X16插槽(用來接顯卡);PCLE-X1插槽(用來接聲卡、網卡等);供電插槽

主板性能指標:芯片組、供電項數目(供電項越多,平分下來每一路的電流就會減小了,減少主板發熱 超頻時更加穩定)、做工、擴展能力(是否支持USB3.0或者USB3.1,是否支持超頻)。

對於主板最重要的就是其穩定能力,其次才是芯片組

因為芯片組有Intel和AMD,所以主板可以根據芯片組分類,英特爾和AMD這兩家公司每次發布新的CPU的時候,都會先各大主板廠家發布適配自己CPU的芯片組,意思就是說:“我這邊CPU已經做出來了,你們主板廠得按照我的這個標準,做出來的主板才能用我的這個CPU”

如何區分intel主板和AMD主板:

  • intel主板會有亮閃閃的金屬扣,且主板的安裝位置是一個一個針腳,均勻分佈,因為intel處理器是觸點式接口
  • AMD主板沒有金屬扣,且主板的安裝位置是一個一個小凹槽,因為AMD處理器是針腳式接口

Intel芯片組主板

芯片組是主板的核心芯片,選對芯片組,主板和CPU才能兼容。

型號字母

目前英特爾的芯片組有4個等級,H、B、Z、X分別適配不同的用戶,下面只是一個大概的規律,不能以偏概全,比如:H370>B360

H:中低端、入門,不支持超頻。價格在300元左右。

B:中低端、主流,這類主板幾乎不能超頻(有特殊幾個主板能通過人工破解來進行超頻),而且僅支持最高DDR4 2666GHz的內存條頻率,所以如果你買的CPU是不帶K的如 i3-8100;i5-8500這類不支持超頻的CPU,或者本身沒有超頻需求,B系主板是非常划算和有性價比的選擇。價格在500元左右。

Z:高端,這類主板天生支持超頻功能(需要CPU支持,英特爾CPU後面帶K的都支持超頻,如i3-8350K;I5-8600K;I7-8700K),同時芯片組支持更多原生的擴展卡槽的接口,而且這類主板通常也支持非常高的內存頻率,價格也會貴一些,一般在1000元以上。

X:特殊、頂級,這類主板有2066個針腳,也就是只能用英特爾後面帶X的CPU。如i9-7960X、i7-7800X。當然這類主板和CPU價格都高的嚇人,市場很小眾。

H、B、Z芯片組的主板/CPU接口都是 LGA 1151的,X系列的主板/CPU接口是 LGA 2066

字母後面的数字

100系列支持英特爾6代CPU,如B150芯片組支持i3-6100、i5-6500、i7 6700等。(intel的100系列主板刷新bios是可以上7代cpu的)

200系列支持英特爾6、7代CPU,如:B250芯片組支持i3-7100、i5-7500、i7-7700k等。

300系列支持英特爾8、9代CPU,如:B360芯片組支持i3-8100、i5-8500、i7-8700k、i7-9700k、i9-9900k等。

至於後面個位和十位數上的数字,越高代表主板在同等級中越高端。

AMD芯片組主板

芯片組是主板的核心芯片,選對芯片組,主板和CPU才能兼容。

型號字母

AMD平台的主板芯片組,有A、B、X三個檔次

A:低端,這類芯片組的主板不能超頻,普通用戶使用也足夠了。價格大多在500元以下。

B:中端,這類芯片組的主板也能超頻,高性能的接口數量要少一些,價格在500元左右,是普通裝機用戶的性價比選擇。

X:高端,芯片組支持更多可以擴展的接口,可以超頻。

AMD芯片組的主板CPU接口大都是AM4的,像高端的X399CPU接口是TR4的。

字母後面的数字

300系列支持 一代銳龍,需要更新BIOS才能支持二代銳龍

400系列支持 一代、二代銳龍

銳龍二代或一代的用戶買300 400系列芯片組的主板都可以

主板尺寸

常見的主板板型分為:E-ATX(加強型)、ATX(標準型)、M-ATX(緊湊型)、MINI-ITX(迷你型)。

 

常見的主板板型對比

E-ATX型主板:高性能主板,一般會有8跟內存插槽,芯片組也多為X等級的,也就是說適用於英特爾以X結尾的CPU,如i9-7960X。價格非常高

ATX型主板:用的最多的主板,俗稱“大板”。這類主板由於體型稍大,需要搭配中塔以上大機箱,做工用料較好,擴展接口比較豐富,不過價位略貴

M-ATX型主板:比ATX要短了一些,俗稱“小板”,也叫緊湊型主板,其結構為方形。M-ATX主板主要用於小機箱電腦中,如今裝機非常主流的主板板型。

MINI-ITX型主板:俗稱迷你型主板,結構是方形,主板尺寸小,適合一些迷你小機箱電腦,這種主板通常作為小巧的HTPC電腦,因此這類主板大部分都內置了Wifi模塊。

主板小板和大板的區別是什麼?主板小板和大板優缺點分析:

1、同芯片的主板大板和小板性能沒有任何提升,主板尺寸並不會影響到電腦的整體性能;

2、大板相比小板的擴展接口也許會更加豐富,比如大板標配4個內存插槽,而小板有可能是2個或則4個,大板的PCI-E顯卡插槽擁有兩個,而小板只有一個。此外,PCI插槽方面,大板也更豐富一些,USB方面,大板通常也多出兩個;

3、大主板做工用料相對充足,不過價位上也會更加貴一些;

4、大板需要中塔以上大機箱支持,而小主板既能夠兼容大機箱,還能夠兼容一些迷你機箱,價位上也相對可能實惠一些;

  對於買主板是選擇小板還是大板,關於這個問題,關鍵看個人需求。通常來說,組裝入門級電腦,選用小巧的M-ATX機箱,那麼肯定需要選用M-ATX主板或者迷你主板,對於注重散熱並定位中高端或者高端,選用大機箱的裝機用戶,建議搭配ATX大主板,其擴展、做工更加有優勢,一般用戶,建議選擇M-ATX小主板,價格相對實惠一些,擴展接口也基本足夠使用了,屬於大眾型主板。

關於品牌

華碩:三大板廠之一,主板的BIOS界面做的超一流,簡單易懂,好用,而且功能很多。高端主板非常強,中低端主板與其他牌子拉不開差距。ROG玩家國度系列主板用料豪華,超頻能力非常強,是最高端主板的象徵。

技嘉:三大板廠之一,技嘉的主板一般比較耐用。AROUS系列主板定位高端,類ROG玩家國度。

微星:三大板廠之一,微星的板子跟華碩技嘉都差不多,BIOS比華碩稍差一些,價格也低一點點。

華擎:華擎是華碩的子公司,是華碩面對中低端市場與二三線品牌競爭的品牌,在低價位中用料算是不錯的,性價比高,價格比三大廠要低一兩百塊,被稱為價格屠夫。

映泰:映泰也是台灣的主板大廠,主板相對來說稍微低端一些,穩定性可以,價格也很低。

七彩虹:七彩虹的品牌宣傳做的好,線下電腦城賣的好,但線上銷量有點凄慘,不建議購買。

高端板子最好選擇華碩的,低中端主板最好選擇技嘉、華擎的。

CPU

CPU有幾個重要的參數:架構、主頻(頻率)、核心數、線程數、緩存、最大睿頻。

關鍵參數

主頻:CPU的工作頻率,我們可以直接理解為運算速度,主頻越高,計算能力越強,現在CPU主頻都以GHz為單位。

最大睿頻:睿頻是指當啟動一個運行程序后,處理器會自動加速到合適的頻率,而原來的運行速度會提升 10%~20% 以保證程序流暢運行的一種技術。

核心數與線程數:核心數就相當於有多少只手,線程數就相當於你能同時干幾樣活,核心數*線程數=馬路寬度,頻率等於車速

架構:架構對性能的影響最大。一般來說,每一代CPU的架構都是一樣的,

緩存:位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。有一級緩存和二級緩存,一級緩存的容量基本在4KB~64KB,二級緩存的容量則分為128KB/256KB/512KB/1MB/2MB等,一級緩衝容量相差不大,二級緩存容量則是提高CPU內存的關鍵。

如果玩遊戲,就需要選主頻高的,簡單粗暴的進行計算。如果做圖形渲染,建議多核心多線程的

CPU有兩家廠商在做Intel和AMD,處理器有兩種接口接口類型,AMD的CPU是針腳式,Intel的CPU是觸點式,由於intelCPU採用了觸點式所以intel主板就必須有針腳,而AMD則是與之相反,CPU使用針腳,主板採用觸點式。雖然方式不同,但是從性能上完全沒有區別,主要AMD的處理器針腳特別怕彎,彎了或者斷了處理器基本就要涼涼了。而intel處理器就不會這樣,不過intel主板的針腳也極易容易彎折。現在AMD也推出了自己的觸點式處理器——線程撕裂者,以後AMD處理器也會朝着觸點式發展。

Intel CPU:穩定性強,功耗低(發熱量少,常規散熱系統),兼容性強

AMD CPU:爆發力強,多線程(適合畫圖)、功耗高(發熱量大,散熱系統需要規劃)

Intel CPU和AMD CPU在相同性能下,價格往往AMD會更加實惠,換句話說相同價位的CPU,AMD的性能普遍更強,說雖然這麼說,但是還是要看個人需求,畢竟這兩款CPU的針對性不同,當然對於AMD的高端CPU散熱量和Intel差不多,不用很擔心AMD處理器散熱問題。

Intel CPU後面的数字

  以i5 3450U為例

第一位数字 是i 後面的数字代表的是家族名稱。

第二位数字 “3”代表它是第幾代架構的產品,後面的三位数字是CPU型號,一般越高越好,

第三位数字 “4”代表的是處理器等級。

第四位和第五位数字 “50”代表處理器的頻率。如果後面還有@ 3.0GHz  @ 3.0GHz,前一個是主頻后一個是睿頻

Intel CPU後面的字母

K代表不鎖倍頻的處理器;也就是可以超頻;

M代表標準電壓cpu,可以拆卸的;

U代表低電壓節能的,可以拆卸的;

X代表高性能,可拆卸的;

Q代表至高性能級別;

H是高電壓的,是焊接的,不能拆卸;

Y代表超低電壓的,除了省電,沒別的優點的了,是不能拆卸的;

F代表不帶內置顯卡(核顯)

兩個字母的,屬於上面這些特性的組合

相同性能的CPU,Intel的CPU價格要比AMD貴,且Intel的CPU功耗比AMD處理器功耗低。如果手頭預算不多,建議選擇AMD的CPU,而手頭寬裕的話,建議選擇Intel的CPU。相比而言AMD 的CPU性價比較高。

AMD CPU後面的数字

  以R5 1500X為例

第一位数字 是R 後面的数字代表的是家族名稱。

第二位数字 “1”代表它是第幾代架構的產品,

後面的三位数字是CPU型號,一般越高越好,

X代表支持完整的XFR技術(帶X的超頻能力更強,而且超頻是全自動智能的)。

CPU天梯圖

想要看更詳細的CPU性能天梯圖請移步:

中關村CPU性能天梯圖:

注意事項:選購CPU、主板的時候要特別注意接口時候匹配

CPU的主要廠商

  • Intel:主要有賽揚(Celeron)、奔騰(Pentinum)、酷睿2(Core2)、酷睿i(Core i)這三個系列,賽揚系列以低端產品為主,奔騰系列以低端和低中端產品為主,Core2以低端和中低端產品為主,Core i系列以中端和高端產品為主,酷睿i3 i5 i7 是英特爾主流的處理器家族。總的來說,性能強弱為賽揚<奔騰<酷睿2<酷睿 i。但是不是絕對的,還要看該系列的產品是第幾代的,比如酷睿2系列的CPU不一定就絕對地比奔騰系列的CPU性能強,從天梯排行中就可以看出來,Pentinum E5700>Core2 duo E4300.
  • AMD:主要有銳龍(Ryzen,性價比)、AMD FX(推土機,高端)、APU(以四核為主)、速龍(Athlon,性價比)、閃龍(Sempron),這幾個系列,閃龍系列主要以低端產品為主,速龍以低端和低中端產品為主,弈龍主要以中端和高端產品為主,A系列(A系列集成了顯卡芯片)主要以低中端和中低端產品為主,FX系列以中高端和高端產品為主。總的來說,性能強弱為:閃龍<速龍<A系列<弈龍<FX。但是這個也不是絕對的。比如弈龍1代的很多產品性能就比不上速龍2代的產品。AMD現在只有銳龍系列的CPU值得買

顯卡 

顯卡的性能指標:架構、流處理器個數、GPU頻率、核心頻率、顯存帶寬、顯存大小(按重要程度排序)

架構:越新越好

流處理器:簡稱SP,也叫渲染管,是顯卡最重要的參數,流處理器的數量直接影響顯卡的性能,流處理器越多,顯卡畫圖能力越強,速度越快(同一代的顯卡比較流處理器才有意義)。

GPU頻率:GPU頻率越高,性能越強,發熱也越大,功耗越高;頻率低,性能弱,發熱也越小。

顯存帶寬:顯存帶寬=顯存位寬×顯存頻率,顯存位寬就相當於公路路寬,顯存頻率就像汽車的速度,所以,顯卡位寬和顯存頻率對顯卡的性能影響很大。

顯存容量:顯存能提供臨時的存儲功能。很多奸商會把顯存當做顯卡的賣點來忽悠小白,這裏要說的是,大顯存有用,但不是那麼的重要。舉個例子:顯存是停車場,如果停車場的馬路不夠寬(位寬 bit),汽車的速度也不夠快(顯存頻率MHz),那麼這個停車場的吞吐量就很小,修一個超大的停車場純屬浪費資源。

顯卡品牌:N卡和A卡

Nvida Geforce——N卡

N卡有GT、GTS、GTX這幾個系列。

GT是普通系列,而GTS和GTX是中高端系列的,如果後面跟了 Ti 表示是該型號的的加強版。

在選擇N卡來說,一般看第一位数字和第二位数字,

第一位数字 第幾代顯卡

第二位数字 表示是該系列的低端、中端還是高端。1,2,3的話表示是該系列的低端產品;4,5,6表示是中端產品,7,8,9表示是高端產品,比如GT610就是第六代的低端顯卡,還有一點就是產品低一代的話,而第二個数字高一點的話,兩個顯卡的性能基本很接近的,比如GT640和GT550,GT640是第六代的顯卡,GT550是第五代的顯卡,而GT550第二位数字是5,GT640第二位数字是4,通常來說,像這樣的情況下,兩個顯卡的性能是很接近的。

第三位数字 “0”表示常規顯卡,“5”表示升級版

N卡優缺點

  • 設計側重點:3D性能和速度,
  • 性能運算:執行效率高,但運行能力較低
  • 視頻處理:色彩稍淡,需要手動調節分辨率

ATI——A卡

ATI(已經被AMD收購),A卡;N卡有鐳、HD、R、X系列。

第一位数字 表示是第幾代,

第二位数字 表示該系列的低端、中端還是高端。4,5的話表示是低端;6,7表示是中端;8,9表示是高端。

第三位数字 “0”表示常規顯卡,“5”表示升級版

A卡優缺點

  • 設計側重點:2D平面畫質
  • 性能運算:運算能力強大,但執行效率不高,對於複雜的任務適應性不強,需要軟件的支持
  • 視頻處理:自動調節分辨率,色彩還原度高

娛樂一下

  相同性能情況下N卡價格比A卡貴,A卡的性價比相對來說要高一點。現在來說,N卡和A卡區別不大,普通用戶根本用不出來區別。但是A卡較N卡性價比高是真的。有時候我們看到一個顯卡相同的型號,但是卻買不同的價格,其主要原因是因為顯卡的核心頻率、散熱設計等不同。

關於品牌

目前較大的顯卡品牌有:華碩、技嘉、微星、藍寶石、索泰、映眾、七彩虹、影馳等。

華碩:三大顯卡廠之一,顯卡用料好、散熱猛、售後好、價格高。ROG玩家國度系列在性能、散熱、外觀等各個方面都幾乎完美,但是就是貴。

技嘉:三大顯卡廠之一,顯卡做工用料都很好。旗下有AORUS系列,定位類似ROG玩家國度,價格和玩家國度也差不多。

微星:三大顯卡廠之一,是三大廠中性價比最高的。微星紅龍系列顯卡性能和用料還是很強的,而且價格要便宜一些。

藍寶石:是AMD最忠實的合作夥伴,A卡最強廠家。

索泰:索泰和映眾都是香港柏能旗下的品牌,索泰被稱為“堆料狂魔”,顯卡性能極強,核心頻率調的很高,性能甚至超越三大廠,價格還便宜,但是高頻帶來的散熱問題較大,可能會比較吵。

映眾:映眾跟索泰的做法剛好相反,映眾在顯卡的核心頻率上沒索泰那麼激進,為了散熱和靜音將顯卡頻率調低了一點點,犧牲了小部分性能。映眾冰龍系列散熱極佳,風扇非常靜音,價格也較低。

影馳:影馳的顯卡其實也是非常不錯的,名人堂系列顯卡用料足,外觀也很好看,但是價格非常非常高,性價比很低,感覺不如買三大廠的旗艦型號。

七彩虹:七彩虹也被稱為“凄慘紅”,七彩虹在十年前的名聲並不好,但是現在七彩虹的igame系列顯卡做的還可以,價格和性能都中規中矩。如果遇上打折力度較大,也是可以選擇的。

核心顯卡、主板集成顯卡和獨立顯卡的區別

核心顯卡:處理器集成顯卡就是指集成在cpu內部的顯卡

集成顯卡:集成在主板北橋中的顯卡,目前處理器核心顯卡性能已經領先於主板集成的顯卡,並且將顯卡集成在CPU中比集成在主板中更有優勢。新的主板廠商已經不會在主板上集成顯卡了。

獨立顯卡:我們自己加的獨立的显示芯片,採用PCI接口插槽。

注意:下圖左邊NVIDIA卡的支持光追改成RTX了,不支持光追的還是GTX

想要看更詳細的顯卡性能天梯圖請移步:

中關村顯卡性能天梯圖:

內存條

  DDR內存,目前分為4代。每到新一代的內存的開發,都是為了解決上一代內存速度極限的問題,DDR2到了1066就不能再高了,而DDR3是從1066起步的,DDR3內存條基本上到了2400的頻率,就上不去了。而DDR4代,從2400起步,同之前的內存是一樣的。所以,這個其實是根本區別。再高的頻率,意味着更大的帶寬,就可以更好的適應新的CPU的要求。

DDR3 支持頻率有6種:800Mhz(DDR2和DDR3換代時候的產品)、1066Mhz(DDR2和DDR3換代時候的產品)、1333Mhz(常見)、1600Mhz(常見)、1866Mhz(高端電腦配備)、2400Mhz(高端電腦配備)

DDR4 支持頻率有6種:2133MHZ(常見)、2400MHz(常見)、2666MHz、2800MHz、3000MHz、3200MHZ、3300MHZ,

內存最高頻率 < 主板最大支持頻率

  內存是CPU與硬盤之間的傳輸的中間設備,以DDR4為例,內存條的讀寫速度相比於硬盤快很多很多很多。

內存的主要參數:頻率、時延、顆粒、容量、下行速度(按重要程度排序)

頻率和時序:我們經常看到的2133MHz、2400MHz、3200MHz就是內存條的頻率,它可以看成是內存條數據的傳輸速度,超高頻率的內存條固然能給遊戲帶來一點性能提升,但是需要更高端的主板和CPU的支持,普通用戶選擇2400MHz的也已經足夠用了,頻率是內存條最重要的參數。

  還有一個重要參數就是時延,一般用CL表示,時延就是尋址所需的時鐘周期。同一頻率的內存條時延越低越好。

現在普通的DDR4代內存條一般為頻率2400MHz,時序CL15-17左右。但是一些使用極品顆粒的超頻內存條如三星的B-die顆粒就可以輕鬆做到頻率3200MHz,而且時序只有CL12。這類極品內存條可以做到保證時序不超標的情況下,超頻上4000MHz以上。

幾乎所有的DDR4代的內存條默認的頻率只有2133MHz,所以即使你買的是高頻內存條,也需要在主板BIOS設置中打開XMP(自動超頻)或手動設置超頻后才能達到商家所給出的頻率,而且,很多主板並不支持超過2666MHz以上的頻率,所以即使你的內存條是4000MHz的神條,也會自動降頻到2666MHz使用,這個需要用戶去看主板上的說明。

內存條顆粒:顆粒就是內存條的存儲數據的東西,現在主流的顆粒生產商就是 三星、海力士、鎂光這三家。由於顆粒在生產時候會有質量參差不齊的情況,所以一些成色極品的顆粒會被挑選出來做成高端超頻內存條,而一些成色普通但合格的顆粒會被拿去做成普通內存條。至於怎麼看顆粒的好壞,我們可以從內存條的頻率和時序來做一個購買前的初步判斷。

內存條容量:容量越大,存儲的數據越多。每打開一個軟件,這些軟件的數據都會被保存到內存條中,如果內存條被塞滿,我們繼續打開其他軟件的時候,CPU就只能從速度超慢的硬盤調取數據了

單通道與雙通道

CPU與內存條之間需要交換數據,就有上行數據(內存條數據傳入CPU)和下行數據(CPU數據傳入內存條)  ,如果只有一根內存條,那麼上行數據和下行數據的傳輸就需要佔用一條通道,爭搶通道的使用權限和帶寬。如果有兩根內存條組雙通道,那麼上行數據和下行數據的傳輸就可以分別在兩根內存條之間分別傳輸,互不影響。

  一般來說,兩根相同規格的內存條插在主板對應的位置上就可以組成雙通道了(看B站UP主說的)。

雙通道能夠給計算機帶來5%左右的性能提升,雙通道最大受益者是集顯/核顯,因為CPU要同時負責程序數據和显示數據的處理,需要的數據流量更大,所以雙通道帶來的雙倍帶寬才能滿足這麼大的數據流量的需求。英特核顯可以提高20%性能,amd核顯可以提升30%-50%。

內存條選擇注意事項:

  1. 對於普通用戶,選擇內存條的時候,一般來說4g就可以了,最多8g,16g的內存條看需求,如果自己也不知道自己需要多少容量的,可以先買一根8GB的使用,發現不夠可以再買一根8GB組雙通道。
  2. 如果有兩根或多根不同頻率的內存條同時使用,會以頻率最低的來統一頻率。比如有一根2133MHz、一根2400MHz、一根3200MHz的內存條同時使用的話,所有內存條都是按照2133MHz來使用。所以一般組雙通道建議購買兩根相同規格的內存條插在主板對應的位置上。所以如果是升級內存條的用戶,一定要看看已有的是多少頻率的,不要盲目購買高頻內存條。
  3. 有4根內存插槽的主板,你把內存條插滿它依然是雙通道的
  4. 關於內存條PCB板的層數,層數越多,電路板內部的電路走線層數增加,每一層的電路走線就不會那麼擁擠了,這樣會有更好的電氣性能,使得超頻更加穩定。
  5. AMD銳龍平台用戶可以選擇芝奇、英睿達等牌子的內存條,可以兼容。
  6. 關於品牌:各個主流品牌之間內存條價格差距不大,普通用戶建議在 芝奇、英睿達、海盜船、影馳、金士頓、威剛、阿斯加特、十銓、宇瞻等這幾個品牌中對比挑選一款頻率、時序、價格都不錯的內存條,然後認準官方自營旗艦店、官方旗艦店,因為內存條官方都會終身質保。

硬盤

  我們都知道木桶的短板效應,就電腦的速度來說,CPU緩存、顯卡緩存、甚至是內存條都是以至少十倍百倍以上的速度差距遠遠的超過了所有的机械硬盤的,這就一定會給電腦的性能帶來一些瓶頸。固態硬盤的存儲速度是机械硬盤的5-10倍左右,多少能彌補一些硬盤在速度上的短板,所以如果你覺得你的舊電腦有些卡,反應慢,換一塊固態硬盤絕對能給你的舊電腦帶來新的生命。

机械硬盤

  机械硬盤是利用磁性來記錄信息數據,原理類似與小時候聽歌用的磁帶,如果我們需要找到某個數據,磁盤就會轉動到記錄這個信息的部位,然後由磁頭感應磁性來讀取數據。

注意事項:硬盤建議選擇西部數據和希捷的,我個人傾向於西部數據,相比而言穩定一點,硬盤的轉速有7200轉和5400轉的,最好選擇7200轉的,西部數據硬盤有三種:黑盤,藍盤和綠盤,在買硬盤的時候注意千萬不要買綠盤,最好選擇藍盤或者黑盤(價格有點貴)。好像現在又出了紅盤,具體不是很清楚。

固態硬盤

  固態硬盤(SSD)是利用電流來記錄信息數據,原理類似與MP3,如果我們要找到某個數據,直接去找到存放數據的區域,就可以直接讀取了。

  

 

固態硬盤的性能參數:固態硬盤的顆粒、主控、緩存、3D NAND堆棧技術、接口\總線\協議、(按重要程度排序)

顆粒

閃存顆粒是固態硬盤用來存儲數據的東西,分為SLC、MLC、TLC三種,是挑選固態最重要的參數。

SLC:每個存儲單元存儲1bit的數據。這種存儲方式穩定性最強,讀寫速度很快,而且不會出錯,壽命長,但是成本高。

MLC:每個存儲單元存儲2bit的數據,速度會比SLC慢一點,穩定性較強,壽命還好,但是價格貴。

TLC:每個存儲單元存儲3bit的數據,效率低、速度慢、還容易出錯、壽命相對於上面兩種短一些,,說雖這麼說,但是現在使用最多的還是TLC,重度使用5年是沒有問題的,且價格相對便宜。

現在世界上能自主生產顆粒的廠家有:intel、三星、閃迪、東芝、鎂光(英睿達)、海力士。所有正規的固態硬盤使用的都是這幾家的檢驗合格的原廠顆粒。如使用自家顆粒的intel、三星、閃迪、鎂光(英睿達)、東芝等;還有雖然自己不會生產顆粒,但是使用從原廠購買顆粒的浦科特、海盜船、建興等。

主控

  主控很重要,就相當於顆粒的管理員。比較好的主控品牌有:馬牌(Marvell)、SandForce、三星、intel、東芝等

緩存

  和前面一樣,緩存就是CPU和固態硬盤之間的緩衝區,方便傳輸,緩存越大越好

總線

  總線有SATA總線、PCI-E總線(PCIE×1、PCIE×2、PCIE×4、PCIE×8、PCIE×16 数字越大,速度越快)目前固態硬盤用的都是PCIEx2和PCIEx4的總線,顯卡是PCIEx16總線

傳輸協議

  傳輸協議有:IDE(老的机械硬盤)、AHCI(机械硬盤)、SATA(目前主流硬盤協議)和NVMe(高速度低延遲)。越後面傳輸速度越快,擁有NVME協議的固態硬盤速度比無NVME協議的固態硬盤快很多。

接口

目前固態硬盤接口有:SATA、mSATA、M.2、PCI-E

SATA接口:屬於老式的接口,分SATA 3GB和SATA6 GB,我們的机械硬盤使用的也是這種接口。這種接口速度稍慢,延遲稍高,最大速度不會超過600MB/s,

mSATA接口:這種接口不多,一般用在筆記本上

M.2接口有兩種:B key和M key。

B key M.2接口:又稱“SOCKET 2”,豁口在左邊,比較老,支持PCI-Ex2總線和SATA總線,速度比較慢

M key M.2接口:又稱“SOCKET 3”,豁口在右邊,目前主流,支持PCI-Ex4總線,速度比較快

B&M型接口的固態硬盤兼容性好,兩種M.2的插槽都能用,性能和B key差不多。

PCI-E接口:一般這個插槽是給顯卡用的,但也可以用它來插固態硬盤,這個長得跟顯卡一樣的固態硬盤也是 PCI-E ×4的接口,支持PCI-E ×4的總線。但是現在的主板大多數是沒有PCIE-4的插槽的。所以一般都是接在顯卡的插槽里使用的。

4KB隨機讀寫:固態硬盤雖然順序讀寫速度超快,但是那是只有在讀寫一整個大文件(如一部電影)時才能體會到它的優勢,而影響我們日常使用的是硬盤的4KB 隨機讀寫速度

排名

固態硬盤推薦:

  • 120GB裝個系統,裝幾個日常軟件、裝一個大型遊戲就差不多滿了,建議首選240GB容量。
  • 新配電腦的用戶建議選擇M.2接口的硬盤,因為這是未來的主流。老電腦升級的用戶要檢查主板是否有M.2插槽。
  • 4k讀寫性能才是影響日常體驗的重中之重,購買前需要重點關注。 

電源

  電源的選擇是最容易被我們忽略,又非常重要的一項,我們的核心部件如:CPU、固態硬盤、內存條都是由額定電壓的。如果如果供電不穩定忽高忽低,很容易造成元器件的損壞與老化。理想情況下,供電12V就是12V,但是市面上幾乎沒有一款真正能做到0偏差,intel CPU對電壓的要求是偏差不超過$\pm5%$,電源的好壞和品牌沒有絕對的關係,即便是品牌好的牌子如海盜船,也依然有差的電源,如:VS系列。

功率的選擇

直流輸出中+12V的,是給CPU和顯卡供電的電壓和電流。最好買單路12V的,因為雙路12V的會限制CPU和顯卡的使用功率,單路的直接給他們,誰需求多誰就取得多。買電源的時候,+12V的直流電源功率大於顯卡和CPU的額定功率就不會出問題。

80Plus認證

80Plus認證是一個電源轉換率標準,轉化率越高,也就越省電。就是說,如果你的電源額定功率是500W的白牌電源(滿載轉化率為80%),那麼當你的電源滿載時,你家電錶實際用電為:500÷80%=625W

注意:80plus認證僅僅是轉化率標準,不能直接反應電源的好壞,所以這個指標在購買時僅作為參考就行了。

電源用料:日系電容>台系電容>國產電容(大概排名,不絕對)

模組選擇

非模組:非模組電源價格便宜,但是全部線材固定,多餘線頭不能拆卸,理線稍微麻煩一些。

半模組:比非模組貴一點,重要線材固定,部分線材可拆卸,可以去除多餘線材。

全模組:價格最貴,全部線材可拆卸,美觀,方便理線。

電源尺寸

一般來說選擇ATX的電源就夠了,SFX尺寸的電源一般用在MINI型機箱上面。

關於品牌

振華(super flower):台企,振華電源有戰碟、金蝶、金蝶GX、Leadex這幾個系列,建議從金蝶開始買起,

海韻:台企,海韻的電源清一色日系電容,用料很不錯。

酷冷至尊:台企,全日系電容,全模組,性價比高,穩定性很好。

美商海盜船:美企,海盜船的電源一定要買高端的,也就是800元起步,低端的VS系列價格高,配置低,臭名在外;

EVGA:美企,EVGA的電源500元以下的都不建議買,性價比太低了。高端的如G、P、T系列都是全日系電容,主流的LLC半橋+ DC-DC 結構。質保7-10年,性價比稍低。

訊景(XFX):訊景低端的XT2電源(價格在300左右)不建議買,因為雖然價格不低,但是電源方案很落後,高端點的XTR、XTS系列價格在500元以上,方案主流,可以購買,但性價比稍低。

台達:台企,台達是世界最大的電源生產商,主要是做服務器電源和高端專業的電源解決方案,在零售商做的不是很多。有幾款在售的電源如NX系列和VX靜音王系列價格便宜,全日系電容用料很不錯,很耐用。

航嘉:深圳企業,國內老牌電源廠商,型號多,價格從100-1000都有。航嘉的電源是國內做工非常好的,低端電源也比國內雜牌好的很多,安全有保障,300元以內還是推薦買的,超過300的還是建議去買酷媽和振華。

鑫谷:東莞企業,國內老牌電源廠商,比較推薦的是GP 白金版,使用日系和台系電容,而且是白金牌認證,電壓波形很穩,價格也很便宜,性價比很高。

注意事項:

  1. 不要不捨得為電源花錢,多花100塊錢有時就能拯救你好幾塊兒机械硬盤。
  2. 功率選擇不要看廠家標多少瓦,主要看+12V,把顯卡和CPU滿載功耗加起來還有幾十瓦余量就夠了。
  3. 80PLUS金銀銅牌認證僅代表電源轉化效率,高轉化率更加省電,但是不能完全評判電源的好壞。
  4. 建議購買使用 LLC半橋+ DC-DC方案,使用日系、台系電容的電源。
  5. 盡量購買大品牌的電源,雖然貴一點點,安全有保障,不至於翻車燒壞主板。

:航嘉電源功率計算器 輸入你要買的主板、CPU、顯卡型號 它就會自動計算出你電源的待機功率和最大功耗,然後推薦出適合你的電源型號

散熱器

  如果電腦散熱不良,CPU的溫度過高,CPU為了保護自己不被燒壞,首先會自動降低頻率來減少發熱,這會導致電腦性能下降,其次降頻之後如果溫度還是過高,CPU就會自動觸發電腦死機來保護自己。所以保證良好的散熱還是很有必要的。

散熱器的工作原理

傳熱底座與CPU緊密接觸,通過導熱裝置,將CPU產生的熱量傳導至散熱鰭片,然後由風扇吹走鰭片上的熱量。

導熱裝置有三種

①純銅(純鋁)導熱:這種方式導熱效率比較低,但是結構簡單,價格便宜,很多原裝散熱器都是這種方式。

②導熱銅管:這是現在最常用的方式,它的銅管是中空的,裏面注有一種導熱液,溫度升高時銅管底部的液體蒸發吸收熱量,將熱量傳遞給散熱鰭片后溫度降低凝結成液體,流回銅管底部,如此循環,導熱效率很高。所以現在的大部分散熱器都是這種方式。

③水冷散熱:嚴格來說它並不是水,是一種導熱率很高的液體。它是通過水將CPU的熱量帶走,然後高溫的水在通過曲曲折折的冷排(結構跟家裡的暖氣片差不多)的時候被風扇吹走熱量,變為涼水再次循環。

影響散熱效果的因素(風冷)

熱量傳遞的效率

熱量的傳遞效率是散熱的關鍵,影響熱量傳遞效率的因素有以下4點。

熱管的數量以及粗細

熱管根數越多越好,一般2根湊合,4根夠用,6根及以上就是高端散熱器了;熱管越粗越好(大部分為6mm,也有8mm的)。

傳熱底座的工藝:

①熱管直觸:這種方案的底座非常普遍,一般的百元及以下散熱器都是這種的。這種方案為了保證與CPU接觸面的平整,會把銅管拍扁、打磨,這使得本來就很薄的銅管更薄了,時間久了就會出現凹凸不平的現象,影響導熱效率。正規大廠都會把銅管打磨的非常平整,這樣就與CPU的接觸面積更大,導熱效率高。一些山寨廠家的銅管凹凸不平,導致有些銅管工作時根本接觸不到CPU,所以再多銅管也只是花架子。

②銅底焊接(鏡面打磨):這種方案的底座價格稍微貴一些,因為把傳熱底座直接做成鏡面,接觸面積更高,導熱效果也更好。所以中高端的風冷散熱器都是用這種方案。

③均熱板:這是一種很少很少見到的方案,原理類似於熱管,也是通過液體遇熱蒸發,然後遇冷液化來傳遞熱量,這種方案導熱均勻效率高,但是成本很高,所以很少見。

導熱硅脂

  由於製造工藝問題,散熱器底座與CPU之間不可能有完全平整的接觸面(即使你看上去很平整,但是在放大鏡下是能看到凹凸不平的),所以就需要塗一層導熱係數較高的硅脂來填補這些凹凸不平的地方幫助導熱。硅脂的導熱係數比銅低很多,所以只要均勻的塗上薄薄的一層就好了,如果塗太厚,反倒影響散熱了。一般好的硅脂的導熱係數在5-8之間,也有非常昂貴的導熱係數在10-15。

散熱鰭片與熱管交接處的工藝

熱管是穿插在鰭片之間的,要把熱量傳遞到鰭片上,所以他們交接地方的處理工藝也會影響導熱性,目前的處理工藝有兩種

①迴流焊:顧名思義就是將兩者焊接到一起。這種方案成本較高,但是導熱性能好,而且很牢固,不容易出現鰭片鬆動的現象。

②穿fin:也叫“穿片”工藝。顧名思義就是在鰭片上開孔,然後藉助外力將導熱銅管插進鰭片里。這種工藝成本較低,雖然簡單,但是要想做好卻並不容易,因為要考慮接觸不良、鰭片鬆動等問題(如果你隨手一撥,鰭片就在熱管上滑動,導熱效果可想而知了)。

鰭片與空氣的接觸面積大小

鰭片承擔著散熱的重任,它的任務是將熱管送來的熱量散發到空氣中,所以鰭片必須盡可能多的與空氣進行接觸,有些廠家會細心的設計一些凸點來盡可能大的增加鰭片的表面積。

風量

風量表示每分鐘風扇能送出風的總體積,一般用CFM表示。風量越大,散熱也就越好。關於風扇的參數還有:轉速、風壓、扇恭弘=叶 恭弘尺寸、噪音等。現在大多數風扇都支持PWM智能調速,我們需要關注的也就是風量、噪音等。

風冷散熱器的類型

風冷散熱器有三種類型:被動式散熱(無風扇設計)、塔式、下壓式。

1、被動式散熱:它其實就是一個無風扇版的散熱器,全靠空氣流通帶走鰭片上的熱量。

  • 優點:完全沒有噪音。
  • 缺點:散熱性能差,適合發熱量特別小的平台(我們的手機幾乎都是被動式散熱,甚至不如被動式散熱)。

2、下壓式散熱:這種散熱器風扇是朝下吹的,所以在兼顧CPU散熱的同時也可以惠顧到主板和內存條散熱。但是散熱效果稍差,而且會擾亂機箱風道,所以適合發熱小的平台,同時由於體積小不佔空間,所以是小機箱的福音。

3、塔式散熱:這種散熱器高高聳立如高塔一般,故名塔式散熱。這種散熱器單向吹風,不會擾亂風道,而且鰭片和風扇可以做的比較大,因此散熱性能最好。但是不能兼顧主板和內存散熱,因此需要機箱上的風扇輔助才行。

關於品牌

貓頭鷹:來自奧地利的品牌,貓頭鷹主要以靜音風扇久負盛名。貓頭鷹的散熱器最主要的特點是靜音,而且設計絕對沒有光污染,堅持使用迴流焊工藝,但是價格昂貴。如果只是追求靜音,可以買稍微便宜的型號,但如果還想要一個不錯的散熱效果,那就只能放血了。

大鐮刀:日本品牌,鐮刀的散熱器做工優秀,設計很人性化,扭曲式銅管設計可以避開內存條,所以不擋內存條。

利民:中國台灣品牌,利民的散熱器主要還是面對高端的超頻用戶,

九州風神:國內品牌,九州風神最出名的就是玄冰400和大塔霜了。但是99元的玄冰400不推薦,因為特別難安裝。229元的6熱管的大塔霜性價比非常高,但是可能會出現擋一根內存的情況。

酷冷至尊:台灣品牌,129元的T400,4熱管,安裝方便,比玄冰400要好,適合絕大多數人的裝機需求。

ID-COOLING:深圳品牌,產品設計很棒,而且性價比高。主力產品是下壓式散熱器,ITX機箱用戶可以選擇199元的IS-VC45,採用均熱板設計,厚度僅為45mm;159元的is-60,採用6熱管設計,也是一款性價比很高的產品。

超頻三:深圳品牌,超頻三的散熱器性價比很高,最出名的就是紅海mini了,不到40元的售價,2熱管設計,不玩遊戲的話足夠了。東海X5和東海X6也都是很有性價比的選擇。

總結:

  1. 雖然熱管數量很重要,但是吸熱底座做工必須要足夠好才行,如果做工不平整,再多的熱管都沒用,因此散熱器拼的更多是做工。
  2. 普通的i3、i5後面不帶K的CPU和銳龍不帶X的CPU,如i3 8100、i5 8500、銳龍1500 1600等選擇4熱管的散熱器就足夠了,比如99元的大鐮刀STB120或雙風扇的STB120 plus都能輕鬆應對。
  3. i3 i5 i7後面帶K的CPU和銳龍帶X的CPU,如i3-8350k、i5 8600k、i7 8700K、銳龍1600X等選擇6熱管就可以了,如大鐮刀的千石船、九州風神的大塔霜、利民的TS140P等。
  4. 選擇散熱器的時候一定要注意:①機箱限高和散熱器的大小;②擋不擋內存條;③支不支持你的主板平台(大部分散熱器都支持英特爾和AMD多平台)。
  5. 硅脂也很重要,盡量選擇導熱係數在5以上的硅脂。這東西很便宜,確是散熱很重要的一環,均勻的塗上薄薄的一層就可以了。
  6. 不要迷信水冷。風冷才是最安全,最具性價比的選擇。

显示器

不要以為显示器不重要,显示器總結影響用戶體驗呀,

主要參數:色域(能显示的色彩範圍)、色深(bit)(色彩的精細程度)、色差(色彩還原的準確性)、對比度(對比度越高,越清晰)、分辨率(表示圖像的清晰程度)、刷新率Hz(表示显示器1秒能刷新多少幀)、灰階響應時間(畫面延遲)

显示器接口

DVI:只支持視頻

DVI接口有兩個標準,25針和29針,如下圖所示。直觀來說,這兩種接口沒有區別。DVI接口傳輸的是数字信號,可以傳輸大分辨率的視頻信號。DVI連接計算機顯卡和显示器時不用發生轉換,所以信號沒有損失。

VGA:只支持視頻

針數為15的視頻接口,主要用於老式的電腦輸出。VGA輸出和傳遞的是模擬信號。大家都知道計算機顯卡產生的是数字信號,显示器使用的也是数字信號。所以使用VGA的視頻接口相當於是經歷了一個數模轉換和一次模數轉換。信號損失,显示較為模糊

HDMI接口 支持音視頻

HDMI既能傳輸高清圖形畫面信號,也能夠傳輸音頻信號,一般來說家裡會接電視,而且抗干擾強。如數碼相機的體積小,需要小的接口,可以使用micro HDMI。

 

DP接口 支持音視頻

DP即DisplayPort,是一種高清数字显示接口標準,可以連接電腦和显示器,也可以連接連接電腦和家庭影院。DP接口可以理解是HDMI的加強版,在音頻和視頻傳輸方面更加強悍。目前情況下,DP與HDMI在性能上沒有多大區別。如果你使用3840*2160分辨率(4K),HDMI由於帶寬不足,最大隻能傳送30幀,DP就沒有問題。

 

VGA和DVI互轉:模擬信號和数字信號的轉換,視頻信號損失,造成失真。最好不要這樣轉換。

DVI和HDMI互轉:都是数字信號,轉換不會發生是真。可以轉換。但是從HDMI轉換成DVI時會自動捨去音頻信號。

液晶面板

TN面板

TN面板的優點是:液晶分子偏轉速度非常快,所以灰階響應時間很短。缺點是:色域窄,色彩差,畫面色彩蒼白,可視角度很小,有條件的可以用手機屏幕對比一下老式的便宜的筆記本電腦屏幕。這種屏幕本來快被市場淘汰了,但是隨着電競的火熱,TN面板藉著刷新率高,灰階響應時間短的優點又重新回到市場,散發第二春。

IPS面板

IPS面板的優點:色彩显示效果好,可視角度大,色彩准。缺點是:容易漏光,黑色不夠純正。這類显示器由於色彩好,可視角度大,所以也是現在應用最廣的显示器面板。

VA面板

VA面板有兩種:MVA面板和PVA面板,PVA是三星改良的MVA面板。這類面板算是TN面板和IPS的折中方案,優點是色彩準確,對比度高,可視角度較大,漏光少,黑色純正。缺點是響應時間比IPS還要長。

PLS面板

PLS面板是三星獨家研製的面板,類似IPS面板。

帶魚屏

帶魚屏指屏幕比列為21:9或以上的显示器,特點是非常的長,跟帶魚一樣,所以被調侃為“帶魚屏”。這種屏幕由於較長,所以一屏能显示更多的內容。

優點:

1.多開網頁或者軟件、遊戲時,同屏能显示更多的內容,因此很適合用來工作。

2.如果能找到21:9的電影片源,看電影會非常爽。(這種片源很少)

3.支持市面主流網絡和單機遊戲。LOL和絕地求生、cs go等都能有效擴寬左右視野。

缺點:

1.由於直播、電視劇、綜藝節目等片源大多是傳統的16:9的,所以看這些內容,屏幕兩邊會有很寬的黑邊。

2.由於分辨率高,所以玩遊戲時對顯卡要求更高。

3.雖然視野變寬了,但是左右看時需要左右扭頭,累脖子,適合單機遊戲娛樂,不適合電競。

所以,對於有多開需求的用戶來說,帶魚屏或許是個能提高效率的選擇。

總結:

  1. 144hz/1ms的電競显示器對CF、CS GO、絕地求生、守望先鋒等PFS射擊遊戲來說,效果區別非常大,是那種用了之後眼睛就再也受不了60hz显示器的那種,當然前提是你的顯卡得支持這麼高的幀數。
  2. 一兩千塊錢的144hz/1ms電競显示器都是TN面板的屏幕,色彩會很差,四五千的會好一些,但色彩依然比不過2千塊的IPS。
  3. IPS屏幕色彩很好,可視角度也很大,但漏光是IPS的通病,你買到的显示器漏光嚴重與否,很大程度看運氣。而且輕微漏光日常使用看不出區別,所以不用太糾結。
  4. 普通玩家選擇IPS或者三星VA面板的显示器就夠了,不是PFS射擊類遊戲玩家不用盲目追求144hz/1ms,效果不明顯。
  5. 帶魚屏細長,能同時显示多個窗口,對於多開多任務需求的用戶來說幫助很大。遊戲時雖然能提供更寬的視野,但是需要左右扭頭,累脖子,適合單機遊戲娛樂,不適合電競。

機箱

散熱器的選擇也應該挑有品牌保障的產品,切勿貪圖便宜,品牌產品不僅有售後保障,而且在設計時為了品牌發展也會下較大的成本,而非品牌產品則更加註重於散熱器的外觀,實際的散熱性能會因為壓縮成本而大打折扣。

搭配選擇

家用:對配置要求不高,看電影、上上網之類的,選擇入門級CPU和顯卡即可

打遊戲:看遊戲此配置情況選擇顯卡,遊戲對顯卡要求特別高,同時對CPU也有一定的要求。

辦公:辦公時常需要多線程切換,因此選擇一款多線程處理能力好的CPU,

特殊領域:比如工程繪圖或者圖形渲染,深度學習等等,建議CPU和顯卡都買比較好的

參考來自中關村:

推薦兩個個自助裝機的網站和,用戶可以根據自己需要選擇配置,而且會標出價格,配完之後可以在線諮詢客服,更方面用戶進行選擇。

 

 

如果因為資金原因,那麼哪些電腦配件可以選擇二手的,哪些不能呢?

可以買二手的電腦硬件部分

處理器(CPU):處理器做工非常精細,一般都是在機箱內部,多層維護,輕易是不會損壞的,除非是人為把針腳搞壞或者是其它損壞,如果CPU正常點亮的話,買二手的話,是可以的。

內存條:內存條也是如此,做工都是非常精細的,也是在機箱內部,不是人為損壞的話,除非你用力掰扯損壞或者是其它損壞。一般情況下正常用,買二手的都是沒有問題的。

機箱:機箱對電腦的整體性能不大,只要能保證完整,可以用,那麼機箱可以考慮買二手的。

显示器:显示器新的和舊的差別不太大,显示器保證正常,買二手的對於使用者來說完全沒有問題。

不可以買二手的電腦硬件部分

顯卡(GPU):顯卡的性能和使用的程度是密切相關的,尤其是別人挖礦的顯卡,長時間負載,元器件極易容易老化,影響較大,所以顯卡最好買新的。

主板:主板上的電容 ,接口,線路較多,很容易損壞,舊的很容易老化有問題,建議買新的。

硬盤:無論是机械硬盤還是固態硬盤,它們都有一定的使用壽命與做擦寫次數的問題,建議大家硬盤要買新的。

電源:電源是維持電腦穩定工作的必備之一,二手電源會有一定的老化損耗,電壓容易不穩定,建議買新的而且要買額定功率大的電源,用來保證電腦正常工作。

散熱器:二手的很多都是沒有經過保養的,二手散熱器經過長時間的使用會有磨損,使用時有明顯的噪音,散熱對電腦散熱方面也是一個不可忽視的部分,所以建議大家散熱,也要買新的。散熱器的選擇也應該挑有品牌保障的產品,切勿貪圖便宜,品牌產品不僅有售後保障,而且在設計時為了品牌發展也會下較大的成本,而非品牌產品則更加註重於散熱器的外觀,實際的散熱性能會因為壓縮成本而大打折扣。

參考

硬件知識

嗶哩嗶哩 古宇胡:

嗶哩嗶哩 顯卡吧DIY電腦團:

B站UP主“”的專欄(強烈建議大家可以關注他,很多內容轉載他的文章,對本文幫助很大)

J.Feng 博客園博客——

組裝電腦

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

從 DevOps 到 Serverless:通過“不用做”的方式解決“如何更高效做”的問題

作者 | 徐進茂(羅離) JAVA 開發工程師 

導讀:近年來,Serverless 一詞越來越熱,它已經逐漸成為了一種新型的軟件設計架構。和 DevOps 概念提倡的是通過一系列工具和自動化的技術來降低運維的難度,促進研發運維一體化不同, Serverless 更像是一種 NoOps,即通過“不用做”的方式來解決“如何更高效做”的問題。

DevOps 概述

DevOps 是一組用於促進開發和運維人員之間協作的過程、方法和系統的統稱。

DevOps 提倡通過一系列的技術和工具降低開發和運維人員之間的隔閡,實現從開發到最終部署的全流程自動化,從而達到開發運維一體化。通過將 DevOps 的理念引入到整個系統的開發過程中,能夠顯著提升軟件的開發效率,縮短軟件交付的周期,更加適應當今快速發展的互聯網時代。

說到 DevOps ,就必然會提到持續集成。持續集成指的是在軟件開發過程中,軟件開發人員持續不斷地將開發出來的代碼和其他的開發人員的代碼進行合併,每次合併后自動地進行編譯、構建,並運行自動化測試進行驗證,而不是等到最後各自開發完成后才合併在一起。

持續集成能從根本上提高一個團隊的軟件開發效率。在軟件開發過程中引入持續集成,可以幫助團隊及時的發現系統中的問題,並快速做出修復,不僅可以縮短軟件開發的時間,而且可以交付更具質量的系統。

基於 Docker 實現一個 DevOps 開發環境

一個 DevOps 開發環境需要滿足以下 8 點需求。

  • 環境一致性:在本地開發出來的功能,無論在什麼環境下部署都應該能得到一致的結果;

  • 代碼自動檢查:為了儘早發現問題,每一次代碼提交后,系統都應該自動對代碼進行檢查,及早發現潛在的問題,並運行自動化測試;

  • 持續集成:每次代碼提交后系統可以自動進行代碼的編譯和打包,無需運維人員手動進行;

  • 持續部署:代碼集成完畢后,系統可以自動將運行環境中的舊版本應用更新成新版本的應用並且整個過程中不會讓系統不可用;

  • 持續反饋:在代碼自動檢查、持續集成、持續部署的過程中,一旦出現問題,要能及時將問題反饋給開發人員以及運維人員。開發和運維人員收到反饋后對問題及時進行修復;

  • 快速回滾:當發現本次部署的版本出現問題時,系統應能快速回退到上一個可用版本;

  • 彈性伸縮:當某個服務訪問量增大時,系統應可以對這個服務快速進行擴容,保證用戶的訪問。當訪問量回歸正常時,系統能將擴容的資源釋放回去,實現根據訪問情況對系統進行彈性伸縮;

  • 可視化運維:提供可視化的頁面,可實時監控應用、集群、硬件的各種狀態。

為了滿足以上 8 點要求,設計出的 DevOps 開發環境如下圖所示。

整個環境主要由 6 部分組成:

  • 代碼倉庫 Gitlab
  • 容器技術 Docker
  • 持續集成工具 Jenkins
  • 代碼質量檢測平台 SonarQube
  • 鏡像倉庫 Harbor
  • 容器集群管理系統 Kubernetes

整個環境的運行流程主要分為以下 6 步:

  • 開發人員在本地開發並驗證好功能后,將代碼提交到代碼倉庫;

  • 通過事先配置好的 Webhook 通知方式,當開發人員提交完代碼后,部署在雲端的持續集成工具 Jenkins 會實時感知,並從代碼倉庫中獲取最新的代碼;

  • 獲取到最新代碼后,Jenkins 會啟動測試平台 SonarQube 對最新的代碼進行代碼檢查以及執行單元測試,執行完成后在 SonarQube 平台上生成測試報告。如果測試沒通過,則以郵件的方式通知研發人員進行修改,終止整個流程。若測試通過,將結果反饋給 Jenkins 並進行下一步;

  • 代碼檢查以及單元測試通過後, Jenkins 會將代碼發送到持續集成服務器中,在服務器上對代碼進行編譯、構建然後打包成能在容器環境上運行的鏡像文件。如果中間有步驟出現問題,則通過郵件的方式通知開發人員和運維人員進行處理,並終止整個流程;

  • 將鏡像文件上傳到私有鏡像倉庫 Harbor 中保存;

  • 鏡像上傳完成后, Jenkins 會啟動持續交付服務器,對雲環境中運行的應用進行版本更新,整個更新過程會確保服務的訪問不中斷。持續交付服務器會將最新的鏡像文件拉取到 Kubernetes 集群中,並採用逐步替換容器的方式進行對應用進行更新,在服務不中斷的前提下完成更新。

通過上述幾步,我們就可以簡單實現一個 DevOps 開發環境,實現代碼從提交到最終部署的全流程自動化。

但是自從 2014 年 AWS 發布 ASW Lambda 以來, Serverless 的概念開始逐漸火熱起來。各大雲廠商開始紛紛開始推出各自的 Serverless 產品,如 Google 的 Cloud Functions ,阿里雲的函數計算、Serverless應用引擎(SAE)等等。究竟什麼是Serverless 無服務計算呢?

什麼是 Serverless?

根據 CNCF (雲原生計算基金會)發布的 白皮書里的定義:

Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.

首先需要強調一點的是無服務器計算並不意味着我們不再需要使用服務器來運行代碼,代碼仍需要運行在服務器上對外提供服務。

在無服務計算時代,研發人員無需對服務器進行監控、配置、更新、擴容等運維操作。只需要將代碼上傳到雲廠商提供的無服務器計算平台上即可,雲廠商會保證代碼能正常運行,當流量突增時,自動對服務器進行擴容,流量減少時,對服務器進行縮容。

這些運維操作對研發人員來說都是黑盒的,會將開發人員從繁瑣的運維工作中解放出來,只需要按運行時長對資源進行付費即可。

和 DevOps 概念提倡的是通過一系列工具和自動化的技術來降低運維的難度,促進研發運維一體化不同, Serverless 更像是一種 NoOps,即通過“不用做”的方式來解決“如何更高效做”的問題。

阿里雲在 Serverless 上的實踐

當前阿里雲上實現 Serverless 技術的產品有 Serverless 應用引擎和函數計算 FaaS。

Serverless 應用引擎

Serverless 應用引擎是面嚮應用的 Serverless PaaS 平台,它向上抽象了應用的概念,支持 Spring Cloud、Apache Dubbo、HSF 等流行的開發框架,並通過 WAR 包、JAR 包和鏡像等多種方式部署應用。它的使用可以通過下面這張圖來了解。

函數計算

FaaS 是 Serverless 所提供的服務的另一種形態。以阿里雲函數計算為例,阿里雲函數計算的流程大致如下圖所示。

  • 開發者在本地編寫代碼;

  • 代碼開發完成后通過命令行工具 fcli、fun 或者可視化界面控制台上傳到阿里雲函數計算平台;

  • 開發者上傳完代碼后,平台會自動啟動基於 Docker 的 DevOps 流程,對代碼進行編譯、打包成鏡像文件。並上傳到鏡像倉庫;

  • 開發者在平台是配置事件觸發器,當前阿里雲已經支持 OSS、HTTP、CDN、SLS、定時任務等多種形式的觸發器形式;

  • 當觸發器被觸發后,會到達事件調度器。平台會將鏡像快速啟動成容器並執行代碼,根據流量自動對服務進行彈性伸縮。保證代碼能正常並執行完成。

伯克利對 Serverless 未來的預測

儘管 Serverless 仍存在諸多的挑戰,但是我們相信隨着市場規模的不斷擴大,這些挑戰會逐漸被解決。UC 伯克利對 Serverless 未來十年的發展趨勢做了以下幾點預測。

  • 新型的 BaSS 存儲服務會被創造出來,這樣更多類型的應用可以遷移到 Serverless 平台上。這種存儲服務的性能會和本地存儲的性能相當,並提供長期和短期的存儲。更多適用於 Serverless 平台的硬件會被使用;

  • 由於更高級別的編程抽象以及更加細粒度的資源隔離,在無服務器計算平台上運行的代碼將會比傳統的方式更加安全可靠;

  • 隨着無服務器計算收費模式的不斷髮展,幾乎任何應用遷移到無服務器計算平台都會比原先的有服務器計算的方式的成本更低;

  • 有服務器計算在未來會促進 BaaS 的發展;

  • 雖然現有的有服務器計算不會消失,但是隨着 Serverless r技術的不斷髮展,有服務器計算在雲上所佔的比例會逐年下降;

  • 無服務器計算將會成為雲時代默認的編程方式,它將大規模取代傳統的基於服務器的編程方式,並終結傳統的 C/S 架構。

總結

當前數據中心的資源利用率仍處於一個較低水平,特別是對於在線業務而言,日均資源使用率僅在 10% 左右,主要是由於當今資源都是屬於獨享型的,不管你用不用,這些資源都需要保留。

一旦大規模使用 Serverless 之後,資源的使用由平台統一調度,按需使用,整體的資源利用率會大幅提升,整個雲計算資源的使用成本無疑也會大幅降低。

隨着 Serverless 的不斷髮展,未來編程方式將會有很大的不同。無論是從成本的角度還是使用的角度,我們有理由相信下一個時代是 Serverless 的時代,並應該朝着這個方向不斷探索。

作者簡介:徐進茂(羅離) Java 開發工程師。現就職於阿里雲智能基礎設施事業部,主要負責阿里巴巴數據中心運營平台的研發工作。

“ 阿里巴巴雲原生微信公眾號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術公眾號。”

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

美西岸漁場重新開放 拖網漁船罕見獲環團肯定

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※南投搬家前需注意的眉眉角角,別等搬了再說!

繼 YouBike 之後 台北市擬推電動機車租借

台北市政府擬比照 YouBike 模式,推動智慧電動車 U CAR,台北市長柯文哲昨拋出推行電動機車(U Moto)政策,預計在信義計畫區試辦。北市交通局長鍾慧諭說,目前已在全市規劃 20 多個公有停車場空間,作為電動機車充電站,且不侷限信義區,而是各區全面拓點,最快明年上路。   柯文哲說,前天跟產業界討論後得出結論,YouBike 實施之後,可進一步推動電動摩托車,至於 U CAR 則需有足夠經濟規模,將等幾千戶公共住宅成立時再處理。 鍾慧諭表示,共享運具是交通局的重要政策方向,由政府帶頭推動 U Moto,一來改善停車位供給不足問題,二來扶植產業,創造新的服務形態。   鍾慧諭說,U Moto 營運模式與 YouBike 類似,以悠遊卡登記租借,但 YouBike 是政府帶頭做,U Moto 電動摩托車則由民間企業驅動,市府角色為扶植、監理者,目前已與GOGORO、台灣城市動力公司接洽合作,由市府提供公有停車場、路邊停車格作為電池充電站,已規劃出廿多個據點,分布北市各區。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

導入高通無線快充技術!BMW i8 充滿電僅需一小時

  隨著新一季電動方程式 (Formula E) 賽車比賽 10 月將在北京開跑,身為主要贊助廠商之一的 Qualcomm 高通也在賽前活動中發表了將應用在賽季中的新無線充電技術,透過 Halo DD 技術的強化,讓原本需要 2 小時才能完全充滿電的 BMW i8 SafetyCar 安全車,充電時間減少至 1 小時內即可完全充飽!   Qualcomm 所推出的這款 Halo DD 進階版車用無線充電系統,利用鋪設在地面上的磁感應線圈對電動車進行無線充電,不過新版的 Halo DD 透過磁感應線圈的最佳化,將原本 3.6 kW 的規格提升到 7.2 kW,雖然仍比不上汽車加油般在數分鐘內就可加滿,但在技術上已經是相當大的進步,倘若這項技術普及到一般環境中,只要在停車場、路邊停車格都鋪設了此種磁感應充電線圈,相信對電動車的普及將會更有幫助。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

 受惠特斯拉新車交車 F-貿聯本季營運可展現新車效益

美國電動車大廠特斯拉(Tesla)宣布新款 SUV 車將於 29 日交車,F-貿聯在電動車大客戶 Tesla 新車帶動下,預料本季營運可望展現新車效益,公司表示,今年車用與資訊類應用均正面發展,公司布局電動車獲得大客戶認同後今年產品品項增加,包含儲能系統設備線組將由 F-貿聯供應,而儲能應用中家用與企業用需求逐漸增長,能源基礎建設需求將隨著電動車與新能源電廠已見到雛形。   除了一般電動車外,F-貿聯表示,目前已送樣電動車線組給商用電動車廠,由於美國政府要求公家單位使用電動車比例須增加,政府要求下看好商用電動車市場銷量增加,公司可望持續擴展電動車業績。   F-貿聯強調,電動車線組技術門檻高且汽車應用重視品質與安全穩定度,不怕同業競爭。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

java基礎階段幾個必會面試題

1.說出你對面向對象的理解

       在我理解,面向對象是向現實世界模型的自然延伸,這是一種“萬物皆對象”的編程思想。在現實生活中的任何物體都可以歸為一類事物,而每一個個體都是一類事物的實例。面向對象的編程是以對象為中心,以消息為驅動,所以程序=對象+消息。
       面向對象有三大特性,封裝、繼承和多態。
       封裝就是將一類事物的屬性和行為抽象成一個類,使其屬性私有化,行為公開化,提高了數據的隱秘性的同時,使代碼模塊化。這樣做使得代碼的復用性更高。
       繼承則是進一步將一類事物共有的屬性和行為抽象成一個父類,而每一個子類是一個特殊的父類–有父類的行為和屬性,也有自己特有的行為和屬性。這樣做擴展了已存在的代碼塊,進一步提高了代碼的復用性。
       如果說封裝和繼承是為了使代碼重用,那麼多態則是為了實現接口重用。多態的一大作用就是為了解耦–為了解除父子類繼承的耦合度。如果說繼承中父子類的關係式IS-A的關係,那麼接口和實現類之之間的關係式HAS-A。簡單來說,多態就是允許父類引用(或接口)指向子類(或實現類)對象。很多的設計模式都是基於面向對象的多態性設計的。

2.JVM的內存區及其GC算法

參考:

元空間:jdk1.8取消了持久代新增了元空間,並將方法區放在元空間中

3.集合框架下的各種接口和實現類有哪些,分別有啥特點

參考:

4.string類有啥特點,有哪些常用的API

1.String類對象的相等判斷使用equals()方法完成,“==”實現的是地址數值的比較
2.字符串內容一旦聲明則不可改變,String類對象內容的改變是依靠引用關係的變更實現的。
3.String類有兩種實例化方式,使用直接賦值可以不產生垃圾空間,並且可以自動入池,不要使用構造方法賦值。

一些常見API:

 indexOf():檢索字符串中某個字符或某段字符的下標。

lastIndexOf():和indexOf類似,不過是查找最後一個出現的位置。

str.lastIndexOf(str,index):從下標index往前查找最後一個出現的位置

substring():返回一個字符串的子字符串

charAt(index):返回下標對應的字符

trim():去掉字符串前後的空格

startsWith()/endsWith():檢測字符串是否已制定字符串開頭或結尾,返回值是boolean

split()/根據括號內的字符串分離字符串,返回值是一個字符串數組

….

5.stringBuilder和stringBuffer的區別?

運行速度:StringBuilder >StringBuffer >String
線程安全:StringBuilder是線程不安全的,而StringBuffer是線程安全的
String:適用於少量的字符串操作的情況
StringBuilder:適用於單線程下在字符緩衝區進行大量操作的情況
StringBuffer:適用多線程下在字符緩衝區進行大量操作的情況

為什麼StringBuilder是不安全的?

下面是StringBuilder 的append方法源碼

char[] value;
int count;
public AbstractStringBuilder append(String str) {
if (str == null)
return appendNull();
int len = str.length();
ensureCapacityInternal(count + len);
str.getChars(0, len, value, count);
count += len;
return this;
}

對於count + =len;不是一個原子操作 兩個線程同時執行假設都是 計數器為 10 執行完后 就會變成11 而不是12

什麼是原子操作:

 簡單的例子:
       轉賬,A轉給B100,因為停電,導致A轉出了100,B卻沒收到100,所以要把100回滾給A。
原子操作就是多線程下各線程同時執行失敗且同時成功,在兩個線程下,由於count繼承於父類AbstractStringBuilder,當
其中一個線程對coun執行+len后,另一線程取到的count值仍為原來的count值,故+len后和上一個線程得到的結果一樣,
故線程不安全
而stringBuffer中源碼:

@Override
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}

當一個線程訪問append後會立即上鎖,從而另一個線程無法訪問append方法,故是線程安全的
在多線程下,stringBuffer下各線程需要頻繁的加鎖解鎖操作,從而需要運行更長的時間,雖然stringBuilder不需要加鎖解鎖,
但由於線程不安全性,更適用於單線程。

6.線程創建的3種方式,線程阻塞的API有哪些及其之間的區別?

Runnable,Thread,通過 Callable 和 Future 創建線程三種方式。

1. 繼承Thread類來創建一個線程, 並實現run方法(線程需要完成的功能); 構建子類對象,start()啟動線程
2. 實現Runnable接口來創建一個線程, 實現Runnable,實現run()方法; 將Runnable接口類的對象作為參數傳遞給Thread類對象, 並調用start()方法;
3. 實現Callable接口來創建一個線程, 先定義一個Callable的實現類, 重寫call()方法, call()有返回值; 兩種執行方式:
1). 藉助FutureTask執行, 創建Callable實現類的對象, 並作為參數傳遞給FutureTask, FutureTask作為參數傳遞給Thread類的對象, 並執行start()方法;
2). 藉助線程池來執行, 先創建線程池, 然後調用線程池的submit方法, 並將Callable實現列作為參數傳入

方法二的好處:
1. 可以將一個Runnable實現類傳遞給多個線程對象, 適合用多個相同程序代碼的編程處理同一個資源
2. Thread類創建線程是採用繼承的方式, 而Java中只能單繼承, 如果某個子類的需要創建線程只能採用實現Runnable接口或者實現Callable接口的方式.

方法三的好處:
1. 有返回值
2. call()可以拋出異常
3. 運行Callable任務可以得到一個Future兌現,表示異步計算的結果. 它提供了檢測計算是否完成的方法(isDone())以等待計算的完成,並檢索計算的結果.

線程阻塞api:

sleep()方法;:該方法允許指定以ms為單位的一段時間作為參數, 它使得線程在指定的時間內進入阻塞狀態,不能得到CPU時間, 指定時間已過,線程重新進入可執行狀態.
suspend()和resume()方法:配套使用, suspend()使得線程進入阻塞狀態,且不會自動恢復, 必須將其對應的resume()調用, 才可以使線程進入可執行狀態.
yield();:使得線程放棄當前分得的CPU時間, 但是不使線程阻塞, 即線程仍然處於可執行狀態;
wait()和notify()方法:配套使用,若wait()有參數,相當於sleep(但可以通過notify強行喚醒), wait()沒有參數,相當於suspend(), 需要通過notify喚醒

sleep(0)和sleep(1)和不要sleep的區別:

sleep(0),如果線程調度器的可運行隊列中有大於或等於當前線程優先級的就緒線程存在,操作系統會將當前線程從處理器上移除,調度其他優先級高的就緒線程運行;如果可運行隊列中的沒有就緒線程或所有就緒線程的優先級均低於當前線程優先級,那麼當前線程會繼續執行,就像沒有調用 Sleep(0)一樣。
Sleep(1),會引發線程上下文切換:調用線程會從線程調度器的可運行隊列中被移除一段時間,這個時間段約等於 timeout 所指定的時間長度。為什麼說約等於呢?是因為睡眠時間單位為毫秒,這與系統的時間精度有關。通常情況下,系統的時間精度為 10 ms,那麼指定任意少於 10 ms但大於 0 ms 的睡眠時間,均會向上求值為 10 ms。

7.抽象類和接口的區別?有了抽象類為啥還要接口?

1.一類可以實現多個接口但只能繼承自一個抽象類,從抽象類派生出的子類同樣可以實現接口,從而,我們能得出一個結論:接口是為Java實現多繼承而存在的
2.抽象類中可以存在非抽象的方法,可接口不能存在非抽象的方法,並且接口裡面的方法只是一個聲明,必須用 public abstract來修飾,沒有具體的實現
3.抽象方法中的成員變量可以被不同的修飾符修飾,而接口中的成員變量默認都是靜態常量
4.抽象類是對對象進行的抽象,而接口是一種行為規範,這一點是比較重要的.
(所以為什麼有了接口還要有抽象類)

8.冒泡排序,選擇排序,快速排序(了解)

冒泡排序:什麼是冒泡?比如說水底隨機產生一些氣泡,一起往上冒泡,越輕的氣泡往上冒的越快
具體:12 34 10 78 67
如果從小到大排序:先將67和78比較,67比78小,依次往前比較,小的放前面,打的放後面,以此為一輪排序,然後再將新的數組重複上述過程,共需要n輪排序(n為元素個數);

選擇排序:從一個數組裡選出最小的元素放在數組第一位並交換位置,然後再將去掉第一位的數組找出最小元素並放在這個新數組第一位,
重複此操作。
12 34 10 78 67
第一輪:10| 34 12 78 67
第二輪:10 12| 34 78 67
第三輪:10 12 34| 78 67
第四輪:10 12 34 67| 78
排序結束

快速排序:基於基數排序。先取任意一基數,一般為數組第一個元素(由於當第一個元素為最小值(最大值)時會使排序出現錯誤,故有時候也取中間的元素),然後將比基數小的數作為一個數組,比基數大的數作為一個數組,再將新的兩個數組分別遞歸排序。
通過基數分成兩個數組的過程:12 34 10 78 67 8 假設數組為arr
取一基數temp=12 取low=0(數組第一位),high=5(數組最後一位)
第一輪:第一步:先從后往前比較:arr[high]=8<12=temp,結束這一步操作,high與low不變。如果這裏arr[high]>12,則令high-1得到新的high將arr[high]與temp比較,依此下去直到arr[high]<temp,這種情況high發生改變,low不變。
第二步:再從前往後將arr[low]與temp比較,原理與第一步相同,因為arr[1]>temp,此時low=1,結束這一步操作。
第三步:交換arr[low]與arr[high]的值
第一輪結果:12 8 10 78 67 34(low=1,high=5)
第二輪:與第一輪一樣,第一步,從arr[high]往前,直到arr[2]=10<12,此時high=2,結束這一步
第二步,從arr[low]往後,12,8,10都不大於12,到這裏的時候,因為low=2=high,故比較,得到索引index=low=high=2
第二輪結果:12 8 10 78 67 34
因為index得到了值3,將arr[index]作為分界點將最後一輪結果數組[12 8 10 78 67 34]分為兩個數組[12 8 10]和[78 67 34]
將新的到的兩個數組重複進行上述操作
[12 8 10]->因為12為最大值,故取中間值8->[8]和[10 12]->[8]、[10]、[12]
[78 67 34]->取67,->[34]、[67 78]->[34]、[67]、[78]->[8]、[10]、[12]、[34]、[67]、[78]
(拓展:希爾排序、插入排序)

9.什麼是死鎖?如何避免死鎖

死鎖的定義:所謂死鎖是指多個線程因競爭資源而造成的一種僵局(互相等待),若無外力作用,這些進程都將無法向前推進。

產生原因:
1) 系統資源的競爭
通常系統中擁有的不可剝奪資源,其數量不足以滿足多個進程運行的需要,使得進程在 運行過程中,會因爭奪資源而陷入僵局,如磁帶機、打印機等。只有對不可剝奪資源的競爭 才可能產生死鎖,對可剝奪資源的競爭是不會引起死鎖的。
2) 進程推進順序非法
進程在運行過程中,請求和釋放資源的順序不當,也同樣會導致死鎖。例如,併發進程 P1、P2分別保持了資源R1、R2,而進程P1申請資源R2,進程P2申請資源R1時,兩者都 會因為所需資源被佔用而阻塞。

四個產生死鎖的條件:
互斥條件:進程要求對所分配的資源(如打印機)進行排他性控制,即在一段時間內某 資源僅為一個進程所佔有。此時若有其他進程請求該資源,則請求進程只能等待。
不剝奪條件:進程所獲得的資源在未使用完畢之前,不能被其他進程強行奪走,即只能 由獲得該資源的進程自己來釋放(只能是主動釋放)。
請求和保持條件:進程已經保持了至少一個資源,但又提出了新的資源請求,而該資源 已被其他進程佔有,此時請求進程被阻塞,但對自己已獲得的資源保持不放。
循環等待條件:存在一種進程資源的循環等待鏈,鏈中每一個進程已獲得的資源同時被 鏈中下一個進程所請求。即存在一個處於等待狀態的進程集合{Pl, P2, …, pn},其中Pi等 待的資源被P(i+1)佔有(i=0, 1, …, n-1),Pn等待的資源被P0佔有。

避免死鎖:
1.加鎖順序(線程按照一定的順序加鎖)
2.加鎖時限(線程嘗試獲取鎖的時候加上一定的時限,超過時限則放棄對該鎖的請求,並釋放自己佔有的鎖)
3.死鎖檢測
參考:

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

什麼是回調,回調在編程中的含義

回調函數的最初需求背景

回調函數我能想到的最古老的場景就是系統編程會用到。

編程分為兩類:

  • 系統編程(system programming)
  • 應用編程(application programming)

什麼是系統編程:
  所謂系統編程,簡單來說,就是編寫各種各樣的功能庫。比如Windows裏面的win32、gdi32庫,win32就能調用主機硬件和系統層的功能,gdi32能用來繪製圖形相關。這些庫就等着那些做應用的人來調用就行。

什麼是應用編程:
  而應用編程就是利用已經寫好的各種系統功能庫、語言功能庫來編寫具某種業務功能用的程序,就是應用。比如一個基礎的爬蟲程序,可以利用python語言和requests庫來完成,一個基礎的Web站點可以利用Java語言和Java Servlet庫來完成。

系統編程和回調的關係

  系統程序員會給自己寫的庫留下一些接口,即API,以供應用程序員使用。所以在抽象層的圖示里,庫位於應用的底下。當程序跑起來時,一般情況下,應用程序會時常通過API調用庫里所預先備好的函數。但是有些庫函數卻要求應用先傳給它一個函數,好在合適的時候調用,以完成目標任務。這個被傳入的、后又被調用的函數就稱為回調函數。

如果你看文字看得比較懵,那麼你看我畫的圖(下面是圖1):

(圖1)

理解回調前,先理解同步調用

同步調用是以一種阻塞式調用,簡單來說就是從上往下,按照順序去執行。 而回調就是一種非同步調用式順序。

  同步式調用的具體案例,可以聯想到古代的烽火台。古代長城的烽火傳遞的機制就和同步調用差不多,現在我們假設每個烽火只能看到相鄰的烽火狀態,每個烽火的狀態只有亮(點火狀態)和暗(不點火狀態)。

  現在有A、B、C、D四個烽火台,A首先點亮,B看到A的烽火亮了,立馬去點火,花了2秒點亮。但是這時候負責C烽火的人在睡覺,可是這時候所有人都在等待C點亮,終於C睡了2個小時候看到了B點亮,然後去點亮。D由於長期沒有點亮,導致烽火出現問題,因此整個過程都在等待D的完成。(由此也引發一些思考,同步調用有時也容易掉鏈子,如果上一步掉鏈子了,下一步之後的操作都完蛋了。)

同步調用的案例代碼:

print("start.")
print(123)
print(456)

a = 7
if a > 6:
    print(789)

print(91011)
print("end.")

回調需要解決的問題

  常見的系統都會開發出很多庫,庫裏面有很多函數。而有些函數,需要調用者根據自己的需求來寫入要調用的函數。因為這個在編寫庫的時候沒法預測,只能由調用者輸入,所以就需要回調機制。

  回調機制是用來完善同步調用機制的一種方式,用來完善同步調用機制的還有異步調用機制。(後面會寫文章介紹這種更重要的異步)

回調函數怎麼解決實際問題的案例

回調就是通過如下方式來解決上面說的問題。

  • 函數能變成參數
  • 靈活、自定義的方式調用

函數變參數案例

def doubel(x):
    return 2*x

def quadruple(x):
    return 4*x

# mind function
def getAddNumber(k, getEventNumber):
    return 1 + getEventNumber(k)

def main():
    k=1
    i=getAddNumber(k,double)
    print(i)
    i=getAddNumber(k,quadruple)
    print(i)

# call main
main()

輸出結果:

3
5

靈活、自定義的方式調用(酒店叫醒旅客)案例

這個案例真是回調的靈魂所在了,假設你是酒店的前台小姐姐,你不可能知道今晚入住的旅客需不需要明天要不要叫醒服務、需要什麼樣的叫醒服務。

def call_you_phone(times):
    """
    叫醒方式: 給你打電話
    :param times: 打幾次電話
    :return: None
    """
    print('已經給旅客撥打了電話的次數:', str(times))

def knock_you_door(times):
    """
    叫醒方式: 去敲你房間門
    :param times: 敲幾次門
    :return: None
    """
    print('已經給旅客敲門的次數:', str(times))

def no_service(times):
    """
    叫醒方式: 無叫醒服務. (默認旅客是選無叫醒服務)
    :param times: 敲幾次門
    :return: None
    """
    print('顧客選擇無服務.不要打擾他的好夢。')

def front_desk(times, function_name=no_service()):
    """
    這個相當於酒店的前台,你去酒店之後,你要啥叫醒方式都得在前台說
    這裡是實現回調函數的核心,相當於一个中轉中心。
    :param times:次數
    :param function_name:回調函數名
    :return:調用的函數結果
    """
    return function_name(times)

if __name__ == '__main__':
    front_desk(100, call_you_phone)  # 意味着給你打100次電話,把你叫醒

輸出:

已經給旅客撥打了電話的次數:100

實際應用(Python的requests庫自帶的事件鈎子)

這個案例就很好解決原本程序是同步機制執行的,但是通過鈎子事件,就可以優先去執行一些先行步驟。而這個鈎子事件的原理就是函數回調。

import requests

def env_hooks(response, *args, **kwargs):
    print(response.headers['Content-Type'])

def main():
    result = requests.get("https://api.github.com", hooks=dict(response=env_hooks))
    print(result.text)

if __name__ == '__main__':
    main()

輸出:

application/json; charset=utf-8
{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"...省略"}

課後思考題

看完了上面的案例,請你回答如下幾個問題

1.回調在那些場景下使用?
2.回調必須以函數為參數嗎?
3.回調和異步的差異在哪裡?

把你的思考評論在評論區裏面,我會抽空給你回復的。

參考文獻

參考:
參考:

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!

Forsaken Mail創建臨時郵箱系統| 手把手教程

場景需求

  • 不需要長時間使用的郵箱
  • 需要大量創建臨時郵箱
  • 使用匿名郵箱

環境說明

  • **` Forsaken Mail是一個臨時郵箱系統,可以供任何人接受郵件,即收即毀,支持自定義郵箱地址前綴,這裏就說下Docker和NPM兩種安裝教程,任選一種即可,有興趣或者有需求的可以玩玩。

  • Github地址:https://github.com/denghongcai/forsaken-mail

開啟25 跟3000端口

  • 發工單開 25 跟 3000端口
  • 寶塔面板放行25 跟 3000端口
  • 運營商(xx雲等)到安全組開啟機可
  • 國外VSP(如xx工等) 一般不用開

安裝Docker環境

Docker 官網

#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on

#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker

Docker 運行 Forsaken Mail 鏡像

​`````` docker run --name forsaken-mail -d -p 25:25 -p 3000:3000 denghongcai/forsaken-mail 

注意:可能會出現端口25被佔用

##找出佔用端口程序PID
$ netstat -anp |grep 25
##關閉該程序
$ kill -9 PID
## 重新運行Docker 鏡像
docker start ID/name

使用 域名 代替 IP

做到前面這一步已經可以通過 VSP_IP :3000 來訪問,但是不能通過 域名:3000 進行訪問

此時就應該進行域名解析——登錄你的域名管理。

  • 一級域名解析

需要添加以下2條解析記錄。 了解MX記錄 , A 記錄可參考上一篇

#MX記錄, xx.com 是你買的域名 mx 不要更改
xx.com    MX   10     mx.xx.com
#A記錄 
mx.xx.com   A   服務器IP
  • 其實如果xx.com 被你用了的話,就需要使用 二級域名解析(比如 mail.xx.com)
#CNAME記錄
mail         CNAME     @ 
#A記錄 
mail.xx.com   A   服務器IP

配置Https訪問

如果還不滿足使用http://mx.xx.com:3000,或者想使用Https域名訪問主界面,那我們可以使用Caddy反代。這裏所使用的域名只能是上面設置MX記錄的xx.com,並提前將域名A記錄解析到服務器IP。

1、安裝Caddy
使用命令:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#備用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
2、配置Caddy

2、配置Caddy

#以下全部內容是一個整體,請修改2個域名后一起複制到SSH運行!
echo "xx.com {
 gzip
 tls admin@moerats.com
 proxy / mx.xx.com:3000
}" > /usr/local/caddy/Caddyfile

3、啟動Caddy

/etc/init.d/caddy start

最後可以打開https://xx.com訪問,使用Docker應用還是容易的。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師”嚨底家”!!