avaScript是單線程語言,但它允許通過設置超時值和間歇時間值來調度代碼在特定的時刻執行。前者是在制定的時間過后執行代碼,而后者則是每隔指定的時間就執行一次代碼。
超時調用:setTimeout()方法
超時調用需要使用window對象的setTimeout()方法,它接收兩個參數:要執行的代碼和以毫秒表示的時間(即在執行代碼前需要等待多少毫秒)。其中,第一個參數可以是一個包含JavaScript代碼的字符串(就和在eval()函數中使用的字符串一樣),也可以是一個函數。但由于傳遞字符串可能導致性能損失,因此不建議以字符串作為第一個參數,如下:
// 不建議傳遞字符串 setTimeout("console.log('hello world!')", 1000); // 推薦的調用方式 setTimeout(function(){ console.log("hello world!"); }, 1000);
第二個參數是一個表示等待多長時間的毫秒數,但經過該時間后,指定的代碼不一定會執行。JavaScript是一個單線程序的解釋器,因此一定時間內只能執行一段代碼。為了控制要執行的代碼,就有一個JavaScript任務隊列。這些任務會按照它們添加到隊列的順序執行。setTimeout()的第二個參數告訴JavaScript再過多長時間把當前任務添加到隊列中。如果隊列是空的,那么添加的代碼會立即執行;如果隊列不是空的,那么它就要等前面的代碼執行完了以后再執行。
超時調用ID
調用setTimeout()之后,該方法會返回一個數值ID,表示超時調用。這個超時調用ID是計劃執行代碼的唯一標識符,可以通過它來取消超時調用。要取消尚未執行的超時調用計劃,可以調用clearTimeout()方法并將相應的超時調用ID作為參數傳遞給它,如下:
// 設置超時調用 var timeoutId=setTimeout(function(){ console.log('hello world!'); }, 1000); // 把超時調用取消 clearTimeout(timeoutId);
取消超時調用clearTimeout()
只要在指定的時間尚未過去之前調用clearTimeout(),就可以完全取消超時調用。前面的代碼在設置超時調用之后馬上又調用了cleatTimeout(),結果就跟什么也沒有發生一樣。
超時調用的代碼都是在全局作用域中執行的,因此函數中this的值在非嚴格模式下指向window對象,在嚴格模式下是undefined。
間歇調用setInterval()
間歇調用與超時調用類似,只不過它會按照指定的時間間隔重復執行代碼,直至間歇調用被取消或者頁面被卸載。設置間歇調用的方法是setInterval(),它接受的參數與setTimeout()相同。如下:
// 不建議傳遞字符串 setInterval("console.log('Hello World!')", 1000); // 推薦的調用方式 setInterval(function(){ console.log('hello world!') }, 1000);
間歇調用ID和取消間歇調用clearInterval()方法
調用setInterval()方法同樣也會返回一個間歇調用ID,該ID可用于在將來某個時刻取消間歇調用。要取消尚未執行的間歇調用,可以使用clearInterval()方法并傳入相應的間歇調用ID。如下:
var num=0; var max=10; var intervalId=null; function incrementNumber(){ num++; console.log(num); if (num==max) { clearTimeout(intervalId); console.log("Done"); } } intervalId=setInterval(incrementNumber, 500);
使用超時調用來模擬間歇調用
這個模式也可以使用超時調用來實現,如下:
var num=0; var max=10; function incrementNumber(){ num++; console.log(num); if (num < max) { setTimeout(incrementNumber, 500); } else { console.log("Done"); } } setTimeout(incrementNumber, 500);
可見,在使用超時調用時,沒有必要跟蹤超時調用ID,因為每次執行代碼之后,如果不再設置另一次超時調用,調用就會自行停止。
一般認為,使用超時調用來模擬間歇調用是一種最佳模式。在開發環境下,很少使用真正的間歇調用,原因是后一個間歇調用可能會在前一個間歇調用結束之前啟動。而像前面示例中那樣使用超時調用,則完全可以避免這一點。所以,最好不要使用間歇調用。
PS:
1、在setTimeout中的業務會被阻塞到空閑時執行,而setInterval不會受其他業務的阻塞。
2、 js是單線程,但是js底層的引擎層是native代碼,可以使用多線程。js的異步任務就是在引擎中通過線程池執行完成,然后通知js層。
習HTML時有時候我們需要用代碼設置邊框或虛線邊框的樣式,那該怎么設置呢?下面上海非凡進修學院HTML5開發培訓機構大咖分享下html虛線邊框設置教程,會對幾個不同標簽加虛線邊框效果樣式,同學們可以根據示例靈活掌握與應用到自己DIV+CSS布局中。
為了對html不同標簽加邊框虛線,我們選擇幾個常用標簽對齊設置邊框虛線效果。
1、html常用標簽
div標簽
span
ul li
table tr td
2、實例用到CSS屬性單詞
border
width
height
3、實現虛線的CSS重點介紹
border為邊框屬性,如果要實現對象邊框效果,要設置邊框寬度、邊框顏色、邊框樣式(實線還是虛線)
border:1px dashed #F00 這個就是設置邊框樣式寬度為1px,虛線,虛線為紅色。
4、實例描述
我們對以上幾個標簽設置相同寬度、相同高度、邊框效果。
5、HTML代碼示例:
以上示例對html中不同標簽設置相同的樣式,包括相同邊框虛線。
上海HTML5開發培訓機構大咖提示邊框三個樣式
通常我們可以對邊框設置寬度(厚度)、邊框樣式、邊框顏色這三個屬性與參數。
1)、邊框顏色:border-color:#000
2)、邊框厚度(寬度):border-width:1px
使用數字+單位設置邊框厚度寬度,如1px(邊框厚度寬度為1像素),邊框必須為正數字,大于0的數值。否則設置邊框border樣式無效。
3)、border邊框樣式:border-style:solid
上海HTML5開發培訓機構大咖提示:邊框border樣式值如下:
none :無邊框。與任何指定的border-width值無關
hidden : 隱藏邊框。IE不支持
dotted : 在MAC平臺上IE4+與WINDOWS和UNIX平臺上IE5.5+為點線。否則為實線(常用)
dashed : 在MAC平臺上IE4+與WINDOWS和UNIX平臺上IE5.5+為虛線。否則為實線(常用)
solid :實線邊框(常用)
double : 雙線邊框。兩條單線與其間隔的和等于指定的border-width值
groove : 根據border-color的值畫3D凹槽
ridge :根據border-color的值畫菱形邊框
inset : 根據border-color的值畫3D凹邊
outset : 根據border-color的值畫3D凸邊
內容來源于@什么值得買APP,觀點僅代表作者本人 |作者:yj8490666
作為一名極客輕癥,對家庭網絡的想象圍繞的是: 爽和快!
“爽”是建立在“快”的基礎上,要想實現需要回答如下問題(答案):
“要快”:
1.運營商怎么選?
(小學生才做選擇題,聯通、電信雙線接入)
2.運營商送的光貓性能如何?
(橋接模式小于1G可以用,大于等于1G要更換)
3.路由性能如何?
(在帶機量不多的情況下大部分路由性能都可以,我換了軟路由)
4.無線WIFI信號覆蓋如何?
(吸頂式AP+AC覆蓋,或者AP模式有線回程MESH,我用了AX3600*3 5G覆蓋)
“要爽”:
1.接入設備精細控制權限?動畫片時間,刷抖音時間等。
(愛快行為管控->應用協議控制,如果有脫離家庭WIFI使用4G行為的話,需要設置IOS的屏幕使用時間(神器))
2.涉及隱私的場景(攝像頭)網絡如何管理?
(愛快ACL規則、行為管控->網址黑名單)
3.如何提升網絡高可用?
(聯通、電信雙線接入,流控分流,故障切換)
4.如何規劃網絡游戲場景的流量?
(愛快流通分流->協議分流,智能流控->游戲優先 小包優先)
5.IPTV如果接入局域網?不連光貓IPTV口
(詳見3.6節)
6.多并發場景下NAS服務器接入?
(如果存在同時讀取的情況,做鏈路聚合,增加并發帶寬。目前群暉4口鏈聚后達到4G/帶寬,機械盤Raid5讀取220MB/S(物理性能受限))
7.如何利用閑置帶寬回血?
(ESXI安裝CDN虛機,網心、甜糖,滿足機柜每日電費后略有盈余)
注:僅針對與網絡部分的裝修相關闡述
大多數住宅的弱電箱被安排在了客廳的電視背景墻上或沙發后(有些恒大系在入戶門左右)從美觀性與維護便利性來說不一定合理。如果房屋處于毛坯狀態,建議改造至一個隱蔽的角落,從走廊弱電井重新穿光纖和其它弱電線(如有線電視)。
如果弱電箱位置不好更改或已經是精裝房,建議測量弱電箱大小,原則上越大越好。如果像我一樣喜歡折騰的話,可以在弱電箱前面放個小機柜。
我家的情況是弱電箱在電視背景墻上,會被電視柜遮擋,而且很小,果斷移位。
原弱電箱位
原弱電箱位
房屋結構比較緊湊,未來想要放置機柜,只好遷移弱電至澆筑樓梯的下面。也正因為放置機柜遮擋住弱電箱本體,無需柜門,我就買了個比較便宜的,貴的都是柜門比較好看。
新弱電箱位置
新弱電箱位置
弱電箱至走廊弱電井,我穿了2根烽火纖芯的單模光纖,當時想的是留作1條備份,結果現在接入了雙運營商
注:光纖很便宜,如果穿管容易,可以適當多留備份。
正規廠家生產的網線都不差,只要從正規渠道購買就好。我選擇了秋葉原的6類雙屏蔽,用量200米到手不足2.5元/米。
相對來說,雙屏蔽層的網線不好打6類帶理線和燕尾夾的水晶頭,還需要專用的6類網線鉗,用這個網線打了24個跳線水晶頭,手指都麻了.... 后來還是換了成品跳線。
屏蔽網線結構
屏蔽網線結構
另外提一下網線是否有必要買帶屏蔽層的,我認為最主要是看預算,帶的當然是比不帶的好,但是如果說你不能有效接地,也沒干擾源,傳輸距離又短,不帶屏蔽也并不會有實際的體驗差別。(貓爺有個網線接地的測試視頻,感興趣可以搜搜看,并關注下他測試時的網線長度)。
很多小伙伴用了屏蔽線并沒有效的接地(看了站內很多文章,普遍沒有真·接地,還有把網線插在交換機上,交換機外殼接地就認為等價于網線接地
),可以說沒用上配線架的,都不能優雅的接地。
接地作用在此不做詳解,只介紹真·接地方法:
①【十分繁瑣,極不推薦】每根網線屏蔽層引出一條細線與地線相連。
②【推薦】網線與配線架的屏蔽模塊連接,配線架統一接地。
網線屏蔽層與模塊金屬外殼壓緊
網線屏蔽層與模塊金屬外殼壓緊
能用有線用有線,哪怕現在用不到,以后可能也用到。新裝修考慮網線光纖同穿,為萬兆光做預埋。
有線是基礎,無線是補充,交叉互備,有備無患。
考慮好室內外(走廊)監控位置,預留網線(POE)。
放棄86面板式AP+AC方案,覆蓋差、發熱大、貴。別聽一些充值自媒體、裝修公司鼓吹了。技術日益革新,需要考慮替換成本和便利性。
如果選擇AP+AC方案,建議選擇吸頂式AP,或者隱藏到棚頂檢修口里。畢竟AP也不是什么家具,陳列的藝術品,只是網絡基礎設施。
如果選擇mesh方案,首選是有線回程mesh,減少5G信道占用和延遲,實在無法布線就只能無線回程了。同樣能藏還是藏起來。
棚頂AP位置預留網線和強電(雖然可以POE供電,但有備無患)
自用TL-SG2024MP,網管+靜態鏈聚+24口POE全千兆。穩定的狠,下次升級可能要等到萬兆24口普及吧。
網口數量根據接入設備的多少,做一定的預留,尤其是打算做鏈聚的網絡。
網管交換機普遍價格都不高,而且功能類似,性能都很穩定,不用過于追求高價產品。如果有在線剪輯,等非編需求,可以選帶2-4口10G SFP的產品。
自用群暉DS1517+,用了幾年了比較穩定。5*12T插滿+5*12T硬盤柜。
輕度使用的用戶,也可以自建黑群,功能上基本都是一致的。
APC BK650 家用YYDS不解釋,有很多反應電池愛報警,我的4年了還沒換電池,可能是人品爆發,當然自己換電池的話只需百元左右。
軟路由截止目前,我一共研究了三款設備:
優點:低功耗,入門神器,性能比J1900強 缺點:esxi下顯卡無驅動
改裝了頂蓋,加強散熱
改裝了頂蓋,加強散熱
優點:低功耗,性能強勁 缺點:為了追求機箱小巧,無法裝半高PCIE卡(也就是無法10G)
全鋁機箱顏值還是抗打的
全鋁機箱顏值還是抗打的
我剛剛從V2.0升級至3.0,升級原因是看了一眼本站大佬的一篇 Juniper SRX300防火墻結合貓棒的文章,僅僅一眼就上了頭,黃魚淘了洋垃圾SRX300和2個MA5671a貓棒,結果研究了幾天對SRX300開機速度與配置方法有點迷,而且不好上架,已經出掉重建新的軟路由。
中了貓棒毒主要是因為光貓的LAN口只有千兆,例如一般500M的家寬限速都是高于500M的,同理1000M的限速也高于1000M,但又被光貓的千兆LAN口速率限制,這哪能忍
經過查看各種帖子,總結出方案:華為MA5671a刷改版固件變身貓棒,與網卡協商2.5G速率(如果有能協商10G的物美價廉貓棒當然更好),刷固件教程建議百度,關鍵詞ma5671a GPON Stick ,懶得刷的可以直接購買成品(分藍色UPC和綠色APC接頭,買之前可以讓賣家改好,省個轉接頭)。
MA5671A
MA5671A
10G網卡選擇了DELL拆機的BCM57810S PCIE X8接口,網卡選擇需謹慎,一方面要與虛擬化軟件驅動兼容,我用的esxi6.7 和7.0 最新版本均可兼容;另一方面更要與貓棒的協商速率吻合,很多10G網卡無法協商2.5G需要注意。
BCM57810S
BCM57810S
已知MA57810S兼容情況LIST(不完全,可補充)
已知MA57810S兼容情況LIST(不完全,可補充)
1G網卡方面選擇了INTEL I350 T4 V2 PCIE x4屬于中規中矩的一張卡,勝在穩定,價格也不貴。
某貓有幾家賣4口1G網卡的店鋪,雖然是PCIE X4接口,實際靠后的幾個金手指沒有接線,4口并發速率是不可能達標的,注意避坑!
intel i350 t4 v2
intel i350 t4 v2
主板選了微星Z390-S01,MATX,屬于Z系列的丐版,價格便宜,接口滿足需求,內存光威D4 3000。
機箱在某寶買的支持ATX電源的2U機箱,大贊,價格十分便宜,用料做工沒得說。電源采用金牌電源,7*24開機電源轉換效率和品質是尤為重要。某東買的先馬500W金牌,220V 50%負載下,轉換效率90%,200+的價格還能買到金牌全模組+5年質保不容易。
已經更換為靜音PMW風扇
已經更換為靜音PMW風扇
安裝調試ESXI
安裝調試ESXI
基礎軟件的安裝 ESXI、PVE、愛快等,基本的安裝配置教程有很多,而且沒有門檻,請自行檢索,這里不重復造輪子了。這里介紹下關鍵點。
硬件直通可以帶來顯著的性能提升,相關測評可以去b站搜索,硬件支持的話能開還是一定要開的。注意事項:
①.BIOS上一定要開啟VT-D功能,否則無法硬件直通 ,SR-IOV也不正常;
②ESXI下不要將所有的網口都做成直通!!!會導致無法進入管理web,解決方法是開ESXI SHELL,改esx.conf配置文件,重改vmkernel ,或者重裝ESXI;
③直通后需要重啟系統。
硬件直通情況
硬件直通情況
esxi無論是6.7還是7.0版本(包括小版本更新的u3u3b等)自帶的驅動都不是最新,建議將驅動更新至最新版本。由于Z390主板上自帶了一個8111H的螃蟹卡,準備當做esxi硬管理口(技巧:軟的管理口可以綁定在愛快LAN,局域網直接進ESXI管理),7.0可能不太好驅。我安裝的是6.7U3版本。
安裝/升級步驟:
①.注冊個vm賬戶,在支持檢索頁面說搜索所需驅動型號,注意添加過濾條件!
https://www.vmware.com/resources/compatibility/search.php
例如搜索57810驅動
例如搜索57810驅動
②.下載對應的驅動包,注意核對VID DID SVID SSID信息
找到VID DID SVID SSID信息匹配的驅動
找到VID DID SVID SSID信息匹配的驅動
esxi中查看設備相關ID信息
esxi中查看設備相關ID信息
③開啟esxi ssh功能,使用xterm、crt、xshell等工具連接,并上傳驅動vib程序,建議上傳至/tmp/ 目錄下,重啟esxi后會自動清除臨時文件()
④執行安裝命令
esxcli software vib install -v /tmp/驅動文件名.vib
⑤安裝成功后會界面會提示true字樣,并說明重啟后生效,等所有驅動都裝完后一并重啟即可。
BCM57810S 更新后的驅動
BCM57810S 更新后的驅動
I350 T4 更新后的驅動
I350 T4 更新后的驅動
默認情況下BCM57810S固件中開啟的自動協商模式是1G/10G自適應,由于MA5671A是1G/2.5G協商,希望協商成2.5G的模式需要改下BCM57810S的固件配置,比較簡單,方法如下:
①準備一個大于1G的U盤
②使用Rufus斜盤工具,在U盤中寫入一個MS-DOS啟動盤
③下載QLogic BCM57800 Diag Driver驅動
https://www.helpjet.net/Fs-34550700-12624658-11814131.html
④解壓下載的驅動,并將 B57BCMCD_T7.12b.4.1.zip/dos/Diag/NX2_Ev/ 目錄下的全部內容復制到寫好MS-DOS的U盤的根目錄下。
⑤將U盤插入ESXI服務器,開機選擇從U盤引導,進入MS-DOS
⑥進入MS-DOS后在命令行輸入ediag.exe -b10eng 啟動ediag驅動配置工具
⑦依次執行如下命令每行回車。(如需修改第二個光口,執行完后,退出至頂層,命令首行修改為device 2對第二個光口做相同修改,如果第二個光口量連接局域網10G速率,請不要修改)
device 1
nvm cfg
7
35=70
36=70
56=6
59=6
save
exit
命令解釋:35/36=70 表示 1G、2.5G 和 10G 或 0x10 | 0x20 | 0x40=0x70,而 56/59=6 默認鏈接速度為 2.5G 而不是 10G。
⑧執行完成后重啟系統,即可自動與貓棒協商2.5G。
esxi是可以正常睿頻的,但在虛機中顯示只有基礎頻率,不用擔心。你可以在裸機上安裝WIN,用CPUZ跑分,再在esxi下虛擬出WIN,重新跑分,跑分結果比裸機分數略低一點,就說明睿頻正常。
①收集光貓現有配置(各個地區并不一樣,只能自己獲取),絕大部分光貓并不需要超級管理員用戶,光貓背面標簽上的普通用戶就可以查看到。
收集內容:
i. LOID
ii. LOID 密碼(如有)
iii. internet VLANID
iiii. other VLANID(如有 一般是IPTV)
收集LOID VLAN ID
收集LOID VLAN ID
②愛快WAN口綁定到貓棒所在端口,配置為靜態ip,ip為192.168.1.100 255.255.255.0 網關192.168.1.1 ,愛快的LAN口網段需避開192.168.1.0段!
PC端連接愛快LAN口,訪問192.168.1.10,進入光貓web頁面,賬號為root,密碼根據貓棒固件不同有區別,行查閱固件說明。
貓棒登錄
貓棒登錄
③配置貓棒的LOID LOID password (如有),點擊相應的run
配置LOID
配置LOID
④檢查貓棒狀態 5為OLT正常注冊 2或者3 則需要輸入LOID 密碼
5注冊正常,可以看到收發光功率和模塊溫度
5注冊正常,可以看到收發光功率和模塊溫度
⑤修改愛快WAN口連接模式為 基于VLAN的混合模式,在DHCP里添加 如圖配置,填入IPTV vlanID
⑥同上在ADSL/PPOE中添加,填寫internet vlanID
⑦正確配置后,可以正確獲取到IP
iptv
iptv
ppoe撥號
ppoe撥號
至此貓棒已經順利替換光貓。
無需從光貓IPTV口連接機頂盒,無需VLAN交換機。
①運營商給的IPTV盒子先接入局域網,在愛快DHCP中配置靜態分配或者在IPTV盒子中手動配置IP,例如設置IP為192.168.31.240
②愛快->流控分流->端口分流 添加配置如圖
③愛快->網絡設置->IGMP代理 配置如圖
④此時重啟IPTV盒子既可正常使用IPTV的直播、回看(即組播、單播)點播功能。注意盒子必須有線連接,組播走無線的話問題比較多。
手抖沒拍好
手抖沒拍好
單線測速1.4G左右
單線測速1.4G左右
雙運營商接入
雙運營商接入
只能放下12U的柜子有點擠
只能放下12U的柜子有點擠
全家福
全家福
工作室完工
工作室完工
作者聲明本文無利益相關,歡迎值友理性交流,和諧討論~
*請認真填寫需求信息,我們會在24小時內與您取得聯系。