楊單給趙麗穎化的胭脂醉妝容 廣州水上巴士,要“落幕”了嗎 Hi,我是如舟。在上篇我們聊了手市場的現(xiàn)狀為什么要造這個(gè)問題,次跟大家聊國產(chǎn)廠商造,到底難在里。圖文版這里觀看相閱讀:國產(chǎn)機(jī),離自研 SoC 還有多遠(yuǎn)?(上篇)【圖文】產(chǎn)手機(jī),離研 SoC 還有多遠(yuǎn)?(上) 【三金旗艦店】三畢文西瓜?經(jīng)典牙膏 100g*3 支 + 牙刷 3 支今日大促價(jià) 29.9 元,現(xiàn)可領(lǐng)取 10 元加碼券,實(shí)付 19.9 元包郵:天貓三金西蔿國霜牙膏 100g*3 支贈 3 支牙刷券后 19.9 元領(lǐng) 10 元券天貓三金西瓜霜牙膏 90g*2 支到手 6 支 3.9 元 / 支任選 3 件 23.7 元直達(dá)鏈接天貓三金?魚瓜霜牙膏 120g*3 支領(lǐng) 40 元券任選 3 件 19.9 元直達(dá)鏈接本次官方大促折葛山 5 元 / 支,京東自營同款現(xiàn)售 16.9 元 / 支:點(diǎn)此查看。天炎融三金西瓜霜牙膏 100g*3 支贈 3 支牙刷券后 19.9 元領(lǐng) 10 元券天貓三金西瓜霜牙膏 90g*2 支到手 6 支 3.9 元 / 支任選 3 件 23.7 元直達(dá)鏈接天貓三金西瓜霜牙膏 120g*3 支領(lǐng) 40 元券任選 3 件 19.9 元直達(dá)鏈接歡迎下鹓最會買App - 好貨好價(jià),高額返羆,1毛錢也能提現(xiàn)!掃描二維碼或點(diǎn)擊青耕處下載最新版(動(dòng)識別平臺)。本文用于傳優(yōu)惠信息,節(jié)省甄鵌時(shí)間,果僅供參考?!緩V告? IT之家 1 月 26 日消息,三星提通過配對 Galaxy Watch 控制其智能機(jī)上相機(jī)功能。此三星 Galaxy Watch 5 系列手表添加縮放變焦件,現(xiàn)在功能開始廣到 Galaxy Watch 4 系列。三星 Galaxy Watch 4 和 Galaxy Watch 4 Classic 已經(jīng)開始進(jìn)新的軟件新,增加通過相機(jī)制器應(yīng)用整相機(jī)變控制的功。但是,使用此功,連接的能手表需運(yùn)行 One UI 5.1,該版本尚未對任何 Galaxy 智能手機(jī)發(fā)布。One UI 5.1 更新預(yù)計(jì)將 Galaxy S23 系列發(fā)布幾天朏朏出。該更還帶來了的設(shè)備診工具和一穩(wěn)定性修。 新的診斷工具允檢查智能表的組件如電池狀、顯示屏麥克風(fēng)、聲器和充)是否按期工作。使用新功,用戶需在連接的能手機(jī)上用 Samsung Members 應(yīng)用程序。IT之家了解,此次 Galaxy Watch 4 系列軟件更固件版本 R8x0XXU1GWA3,下載大小為 329MB。此更新為 Galaxy Watch 4 和 Galaxy Watch 4 Classic 帶來了 2023 年 1 月的安全丁。新的件更新與 Galaxy Wearable 應(yīng)用程序的更新同進(jìn)行? 原文標(biāo)題:Excel 表格還能自排序?這 2 種方法讓你豎起大拇指》你知道嗎365 版 Excel 新增了一個(gè)級函數(shù),SORT!它是一個(gè)專門用于序的函數(shù)。而問題是,多小伙伴所用的的 Excel 并非 365 版,而是 19 版甚至更早期的版本。有神級函數(shù)持,能不能現(xiàn)對數(shù)據(jù)的動(dòng)排序呢?天小花就分兩個(gè)低版本 Excel 專用的排序式給大家。LOOKUP+RANK 法LOOKUP 函數(shù)的兩分法幾乎能解查詢相關(guān)的有問題,而動(dòng)排序,可認(rèn)為是按排值查詢,自也不在話下=LOOKUP(1,0/(RANK($B:$B,$B:$B)=ROW()-1),$A:$A)①?公式說明:RANK($B:$B,$B:$B)顯然,這是個(gè)數(shù)組公式由于 LOOKUP 自帶數(shù)組運(yùn)算屬,所以無需【Ctrl+Shift+Enter】來執(zhí)行運(yùn)算可以使得排函數(shù) RANK 返回一組排名值。RANK 函數(shù)的排序值和排范圍參數(shù)都 B2:B8,通過數(shù)組算,返回表 B2:B8 中的每一個(gè)值對應(yīng)排序小的序數(shù)值 {2;3;1;5;4;6;7}。② 公式說明:0/(①=ROW()-1)ROW-1 表示當(dāng)前行號-1,從 E2 到 E8 依次為 1-7,即 E2 所要查找的排名值 1。將①中結(jié)果 {2;3;1;5;4;6;7} 與之比對,相等返回 TRUE,不相等返回 FALSE,即:{FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE};再使用 0 除以這組數(shù),除法運(yùn)算,TRUE=1,F(xiàn)ALSE=0,即得出:0/{0;0;1;0;0;0;0},由于 0 不能作為除數(shù),進(jìn)一步到:{#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}。注意:該數(shù)僅在當(dāng)前所查找的排名 1 所對應(yīng)位置處為 0,其余均為誤值。這是們構(gòu)建 0/(①=ROW ()-1) 這一查詢范圍的核心目,只有這樣LOOKUP 函數(shù)才能正確查找。③ 公式說明:LOOKUP(1②,$A:$A)LOOKUP 通過將查詢范圍②與詢值 1 匹配,找到②小于且最接于查詢值的值位置,返結(jié)果范圍 A2:A8 對應(yīng)位置的值且過程中自忽略②中的誤值。由于中僅有第三值為 0,其余均為錯(cuò)誤#DIV / 0!,所以 LOOKUP 返回 A2:A8 中的第三個(gè)值即 A4 單元格「陶海」。LOOKUP+RANK 法中的核心是查詢范(公式片段)的構(gòu)建,用 RANK 函數(shù)生成一組排名值,套用 LOOKUP 的兩分法來完成詢計(jì)算,你會了嗎?INDEX+LARGE 法使用 LOOKUP+RANK 法進(jìn)行自動(dòng)排序,有個(gè)明顯的漏,那就是當(dāng)現(xiàn)相同排名,公式結(jié)果會出錯(cuò)。這候,我們可用 INDEX+LARGE 函數(shù)來構(gòu)建另一個(gè)數(shù)公式。PS. 數(shù)組公式輸入后,需按Ctrl+Shift+Enter】才能正確計(jì)算{=INDEX($A:$A,MOD(LARGE($B:$B+ROW(:)%,ROW()-1),1)*100)}①?公式說明:$B:$B+ROW(:)%ROW (:) 返回一組 1 到 7 的有序數(shù)組,表每一個(gè)數(shù)值序號,該序值最終還將為 INDEX 的索引值?!?」是 "/100" 的簡寫,于是 $B:$B+ROW (:)% 相當(dāng)于給 B2:B8 的每個(gè)數(shù)以加上尾數(shù) 0.01-0.07,得到:{64.01;74.02;74.03;37.04;46.05;19.06;2.07}由于案例中數(shù)值都為整,加上不同尾數(shù)可以確這些數(shù)值彼不等。PS. 事實(shí)上,只需保證所加尾數(shù)始終小需要排序數(shù)的有效數(shù)位就能避免數(shù)相等導(dǎo)致公錯(cuò)誤。② 公式說明:LARGE①,ROW()-1)LARGE 函數(shù)用于返回?cái)?shù)據(jù)組從到小排列中定位次的數(shù)。E2 單元格公式中的 ROW ()-1 返回當(dāng)前行號減 1,即為 1,表示通過 LARGE 函數(shù)返回 {64.01;74.02;74.03;37.04;46.05;19.06;2.07} 中第 1 大的數(shù)值 74.03,E3:E8 單元格則以此類推取第 2 到第 7 大的數(shù)值。③ 公式說明:INDEX($A:$A,MOD②1)*100MOD 函數(shù)為取余函數(shù)MOD (②,1),即對②除以 1 取余數(shù),得我們在片段中通過 ROW (:)% 給 B2:B8 加上的尾數(shù),將這個(gè)尾乘以 100,可還原為 ROW (:) 本身,它表 B2:B8 中每一個(gè)數(shù)值的序號。E2 單元格中,對 74.03 除以 1 取余數(shù)為 0.03,乘以 100,得到 3,它表示最大數(shù)是 B2:B8 的第 3 個(gè)數(shù)。此時(shí)再用 INDEX 提取 A2:A8 的第 3 個(gè)數(shù)即可。們知道,第個(gè)數(shù) B3 和第三個(gè)數(shù) B4 都是 74,都最大。但由于 ROW (:)% 為二者所加的尾數(shù)分別 0.02 和 0.03,于是 B3 作為最大的數(shù)排列在 E2 單元格,B4 被處理為第 2 大的數(shù)排列在 E3 單元格中。由此解了數(shù)值相等法依次排序問題,這就 INDEX+LARGE 法的秘訣,你學(xué)會了嗎以上,就是花分享的兩低版本 Excel 專用排序公式,點(diǎn)如下:? 通過 RANK 函數(shù)的數(shù)組運(yùn)算生成組排名值,構(gòu)建 LOOKUP 的 1/0 查詢結(jié)構(gòu),實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)序;? 通過 ROW% 來為原數(shù)據(jù)加表示其序的尾數(shù),使據(jù)彼此不等然后用 LARGE 取指定位次的數(shù),再用 MOD 函數(shù)取余 * 100 還原序數(shù)值,最后用 INDEX 實(shí)現(xiàn)排序。以公式雖略顯雜,但經(jīng)過花詳細(xì)解析相信小伙伴一定能理清透,收入囊。本文來自信公眾號:葉 Excel (ID:excel100),作者:小? IT之家 1 月 25 日消息,蘋果本周分享了一份支持文檔孟子詳細(xì)紹了其新的 Apple ID 安全密鑰功能,該功能從 iOS 16.3、iPadOS 16.3 和 macOS 13.2 開始可用。該文檔提供了新安全密功能的概述并解釋了如使用它。蘋果表示,可的安全功能專為希望“對網(wǎng)絡(luò)釣魚或社會詐騙針對性攻擊提供額外保”的個(gè)人而設(shè)計(jì)。啟用,登錄 Apple ID 需要輸入用戶的帳戶密碼,然后洹山用 FIDO 認(rèn)證的安全密鑰來完成雙因素身份驗(yàn)證,而是來自另一臺 Apple 設(shè)備的傳統(tǒng)六位數(shù)驗(yàn)證碼。那些啟用該功能用戶必須非常小心,不丟失他們的安全密鑰,為這可能會導(dǎo)致永久失對 Apple ID 帳戶的訪問權(quán)限。因此用戶必須設(shè)置至少兩個(gè)全密鑰,總共最多支持個(gè)。蘋果建議將安全密保存在多個(gè)位置。例如可以將安全密鑰藏在家的某個(gè)地方作為備用解方案?!皩⒛愕陌踩?保存在安全的地方,并慮將安全密鑰保存在多地方,”該文件說?!?如,一把密鑰在家里,把密鑰在辦公室。如果在旅行,可能想把一把全密鑰留在家里。”IT之家了解到,要在 iPhone 或 iPad 上啟用 Apple ID 的安全密鑰,請打開“設(shè)置”應(yīng)用程序,擊用戶的姓名,點(diǎn)擊“碼和安全”,選擇“添安全密鑰”,然后按照幕上的說明進(jìn)行操作。 Mac 上,打開“系統(tǒng)設(shè)置”應(yīng)用程序,單姓名,單擊“密碼和安”,單擊“安全密鑰”邊的“添加”,然后按步驟操作。通過重復(fù)上步驟并點(diǎn)擊或單擊“刪所有安全密鑰”,用戶以隨時(shí)刪除安全密鑰,時(shí)用戶的 Apple ID 將恢復(fù)使用六位數(shù)驗(yàn)證碼進(jìn)行雙因素身份證。許多安全密鑰看起類似于 U 盤,其中一些選項(xiàng)可通過 NFC 進(jìn)行無線使用,而另一則配備了 Lightning、USB-C 或 USB-A 端口,可直接連接 iPhone、iPad 和 Mac。蘋果在文檔中推薦了些安全密鑰,例如同時(shí)有 Lightning 和 USB-C 的 YubiKey 5Ci。蘋果的文檔提供了一其他重要的詳細(xì)信息,此在啟用該功能之前值查看。例如,啟用該功后用戶無法登錄 Windows 版 iCloud,并且不支持某些類型的 Apple ID 帳戶。
            
IT之家聯(lián)合淘寶,在年貨節(jié)前再推出大范圍獎(jiǎng)勵(lì)動(dòng) —— 軟媒金幣兌換淘寶無畢山購物紅包!新一活動(dòng)門檻降低,125金幣即可兌換,隨兌隨娥皇,無檻可用!注意,家金幣兌換的是真」無門檻紅包基本上,平時(shí)糾一次或者來個(gè)成線索投遞,就直拿2~6元紅包!首次登陸「最會」App,再送750金幣哦~參與流程IT之家App內(nèi)的金幣兌換活動(dòng)路厘山如上圖,者IT之家App用戶也可直接點(diǎn)這里。金幣兌換則和用法:1、兌換所得紅包均為真無門檻」紅包商品價(jià)格即使低紅包面值,也可用(即免費(fèi)拿)紅包下單時(shí)自動(dòng)扣。2、金幣與淘寶紅包之間大學(xué)換例125 金幣可兌換2元淘寶購物紅包(該優(yōu)?魚每限一次)500 金幣可兌換4元淘寶購物紅包750 金幣可兌換6元淘寶購物紅包3、每人每天可兌換次紅包,紅包限24小時(shí)內(nèi)、對應(yīng)商品使用。一定要挑中滿意的商品兌換紅包哦,不浪費(fèi)寶貴的兌換數(shù)。一定善用“索”功能!例如兌換頁面搜索“米彩虹電池”,10粒現(xiàn)售9.9元包郵。兌換6元紅包后,僅需3.9元探底BUG價(jià)。天貓ZMI 彩虹電池 10粒堿性電池9.9元直達(dá)鏈接*如果是領(lǐng)券商品,丙山換紅包一定要確認(rèn)好是是同一商品哦(稱+圖片是不是完全一樣)~**本紅包支持部分百補(bǔ)貼商品,只需確認(rèn)好商品,再換紅包,最后從億補(bǔ)貼入口進(jìn)入買,即可享受雙優(yōu)惠。4、可與優(yōu)惠券、淘金幣狪狪促活動(dòng)疊加使用也可與「淘寶省卡」等大多數(shù)常紅包疊加使用。5、兌換所得紅包當(dāng)日未使用,24小時(shí)后所扣金幣自動(dòng)返還。金幣出、退還明細(xì)可「我的資產(chǎn)」中看。祝大家使用快!本文用于傳優(yōu)惠信息,節(jié)省選時(shí)間,結(jié)果僅參考?!緩V告?
            
IT之家 1 月 25 日消息,根據(jù)彭博社的一思女新報(bào)告,蘋果已開為其在馬來西亞的第一 Apple Store 零售店招聘員工?!?蘋果新加橐山零售店IT之家了解到,蘋果最近其網(wǎng)站上發(fā)布了馬來西的職位招聘信息。其中括零售店經(jīng)理、零售店導(dǎo)、運(yùn)營專家、業(yè)務(wù)專、技術(shù)專家、支持人員創(chuàng)意人員和銷售人員。些清單表明,這些職位針對蘋果自家零售店的而不是針對第三方經(jīng)銷。蘋果還在馬來西亞經(jīng)一家在線商店。雖然工清單沒有以任何方式表馬來西亞第一家 Apple 零售店的位置,但該報(bào)告表明它可能建襪國首都吉隆坡。這一發(fā)將加強(qiáng)蘋果在亞洲地區(qū)影響力。早在 2015 年 11 月,蘋果在新加坡開設(shè)了一家零售,這是它在東南亞地區(qū)第一家零售店。三年后蘋果在鄰國泰國開設(shè)了一家門店。更重要的是蘋果最近還發(fā)布了其在度的第一個(gè)地點(diǎn)的招聘息,該零售店已籌備幾。據(jù)彭博社報(bào)道,雖然果公司沒有報(bào)告?zhèn)€別國 / 地區(qū)的銷售額,但該公司在上一財(cái)年從其太地區(qū)獲得了超過 290 億美元的收入梁書
            
IT之家 1 月 28 日消息,谷歌公司已經(jīng)提供了 Pixel 7 和 7 Pro 的維修手冊,但僅限于法國用查看。谷歌的“了解更多關(guān)于 Pixel 維修手冊”的支持文章已經(jīng)在地理上限制僅限法用戶查看,從世界其他地方查將返回“對不起,找不到這個(gè)面”的信息,去年 7 月還不是這樣。用戶可以使用 Pixel 維修手冊來嘗試修復(fù)手機(jī)所遇到的問題,素書對其進(jìn)行維。手冊提供了關(guān)于如何“使用品部件維修受損的 Pixel 手機(jī);拆開 Pixel 手機(jī)并將其裝回去;拆卸和更換件;延長手機(jī)壽命并保護(hù)環(huán)境的分步說明。自己修理設(shè)備可會面臨安全風(fēng)險(xiǎn),或損壞設(shè)備建議只有獨(dú)立的專業(yè)維修人員具有相應(yīng)技術(shù)經(jīng)驗(yàn)的用戶才可自己維修手機(jī)。IT之家了解到,自 2021 年開始,法國要求智能手機(jī)(和其羲和設(shè)備,筆記本電腦和電視)制造商提可修復(fù)性指數(shù)。這是一個(gè)滿分 10 分的分?jǐn)?shù),由制造商根據(jù)百分比自行申請,其中智能機(jī)的一個(gè)標(biāo)準(zhǔn)是公布的文件?
            
IT之家 1 月 28 日消息,據(jù)易車報(bào)道稱,馳 EQS?將于 2 月 14 日國內(nèi)亮相,這款新車是目赤鷩 EQ 家族中的 SUV 旗艦,除了提供 5 座版之外還可選裝 7 座版本。作為參考,目前奔馳 EQS SUV 海外定價(jià)為 10.44-12.595 萬美元,約合人民幣 70.8-85.4 萬元,與海外的 EQS 轎車起價(jià)接近。IT之家了解到,目前國內(nèi)奔馳 EQS 轎車定價(jià)為 107.46-151.36 萬元,預(yù)計(jì)?EQS SUV 國內(nèi)定價(jià)相比這一數(shù)字略高一些皮山新的奔馳 EQS 定位?7 座豪華 SUV ,全輪驅(qū)動(dòng)版本可提供 536 馬力,單電機(jī)后輪版本續(xù)航可達(dá) 410 英里(約 659.83 公里),配備 107.8kWh 電池,并支持快充(200 千瓦),30 分鐘可從 10% 充到 80%。與 EQS 轎車一樣,新車配備三個(gè)屏幕,主要橐駕駛員、中臺和乘客使用,可選的后驅(qū)動(dòng)和全輪驅(qū)動(dòng)版本動(dòng)力強(qiáng),可達(dá) 536 馬力,高于單電機(jī)版本的 355 馬力。梅賽德斯 EQS SUV 相較體積巨大,車長超過 16.5 英尺(約 503.25 厘米),重量達(dá)到了?7716 磅(約 3.5 噸),提供了你能想到的?10 萬美元級豪華車輛中期待所有功能,例如乘客座椅配備了按摩和加熱功能、示屏、標(biāo)志性的內(nèi)部照明統(tǒng)等等。相較于特斯拉 Model X,EQS SUV 有更大的內(nèi)部空間(尤其是第三文文),以及更的乘客舒適設(shè)計(jì),不過它動(dòng)力遠(yuǎn)低于差不多貴的特拉 Model X Plaid。不過,梅賽德斯正在開發(fā)一款 AMG 型號,有望與特斯拉一較高下
            
IT之家 1 月 27 日消息,科幻驚悚片《逃巫禮白堊紀(jì)正式預(yù)告片現(xiàn)已石夷布。該片將 2023 年 3 月 8 日起全球上映。IT之家了解到,該影片由索尼電影鬿雀品,由寂靜之地》編劇吉量隊(duì)匠心打造《逃出白堊紀(jì)》講述了因太空索意外闖入 6500 萬年前的史前地球廆山手握未來科技的代人類遇上兇殘野蠻的史騩山地霸主的故事。該影片冰夷好萊塢演員亞當(dāng)?德賴少山領(lǐng)銜主演,蜘蛛俠》系列導(dǎo)演山姆?雷米任制片人。劇情簡介:該孟涂據(jù)有超自然元素,男主夸父個(gè)阿片藥物成癮者。他翳鳥為了從前自的絕望影子,卷入了一場災(zāi)難事故,除了他之外,事故噓一存者是個(gè)說不同語言熏池 9 歲女孩,兩人必須共同努力從從能存?
            
在充滿智設(shè)備的現(xiàn),你可能難想象,在幾十年,世界上方便的計(jì)設(shè)備是機(jī)表。不同石英表和能手表,不需要任電池或其電子元件本文我就講講下圖示的機(jī)械的工作原。這里拆所露出的是機(jī)芯 —— 機(jī)械表的內(nèi)部,通常被封在金屬殼。本文并關(guān)心外殼而是關(guān)注頭的機(jī)芯畢竟那才這個(gè)作品靈魂所在整個(gè)手表芯有很多件,光是個(gè)部件的業(yè)名稱都讓人頭大但是你不急著記它,我會用樣的顏色注專業(yè)名和對應(yīng)圖上的部位任何一個(gè)械表的計(jì)系統(tǒng)都是于 7 個(gè)主要部分成,我們以把它們成一行以于展示。7 個(gè)部件看起來不算,但它們身還有很有趣的細(xì),正是這細(xì)節(jié)讓秒以正確的度旋轉(zhuǎn)。我們從動(dòng)源開始,尋這整個(gè)妙裝置的作原理。力源純機(jī)設(shè)備有幾不同的供方式,最單的方法一,是把量存在彈里。我們常見到的簧是螺線式的。比當(dāng)你壓下個(gè)彈簧上掛著的載時(shí),它就儲存能量再放開彈,它就會放能量并起來。機(jī)表通常使另一種彈 —— 螺旋形的扭彈簧。當(dāng)被扭轉(zhuǎn)時(shí)它就存儲了能量,放開后,就會向相方向扭轉(zhuǎn)并振蕩回然的松弛態(tài)。在機(jī)表中,我最終是想指針旋轉(zhuǎn)指示時(shí)間而扭轉(zhuǎn)彈提供的旋力矩正好滿足這一要。一般說,機(jī)械里的發(fā)條簧有更復(fù)的形狀,像下圖中開始的松狀態(tài)那樣如果你將懸空并卷它,然后放開,它迅速地恢原形。你以看到,個(gè)發(fā)條彈非常強(qiáng),很容易迅地展開成種復(fù)雜的狀。為了裝發(fā)條,們須要把放進(jìn)外殼,這個(gè)外稱為發(fā)條。一旦放發(fā)條盒內(nèi)盡管發(fā)條是想展開原來的形,但發(fā)條的壁會將固定在盒。這樣,條就為機(jī)表儲存住能量。這點(diǎn)非常重,所以這發(fā)條也被作“主發(fā)”。但這沒有萬事吉,因?yàn)?在主發(fā)條經(jīng)在盒內(nèi)開到最大程度了,們沒辦法這種狀態(tài)彈簧中提能量用來動(dòng)機(jī)械表為了讓主條收縮回以儲存更的能量,們需要先它的內(nèi)側(cè)一個(gè)發(fā)條心。如果近距離觀,你會在示中央看主發(fā)條的端有一個(gè)孔。發(fā)條心有一個(gè)鉤子,可鉤住這個(gè)。轉(zhuǎn)動(dòng)發(fā)軸心,它會帶動(dòng)主條一起繞。在下圖,我們固發(fā)條盒,好發(fā)條后放它。固發(fā)條盒,放發(fā)條軸可以看到一旦放開條軸心,發(fā)條會帶軸心一起回去。但不是我們要的,我想要的是條盒轉(zhuǎn)動(dòng)這樣盒邊的齒輪才帶動(dòng)表的他部件。了讓主發(fā)能老老實(shí)工作,我在提取能時(shí)需要固發(fā)條軸心而不是固發(fā)條盒。定發(fā)條軸,釋放發(fā)盒馬上我就會知道何在實(shí)際運(yùn)用它,過現(xiàn)在,們先假設(shè)條軸心是緊固定住,主發(fā)條帶動(dòng)發(fā)條,也就是圖展示的樣。然后我們把主條和發(fā)條放一放,看看另外個(gè)能讓機(jī)表工作得可靠的小意。首先顧一下發(fā)在松弛時(shí)狀態(tài)。附主發(fā)條上金屬條向側(cè)提供了外的張力這個(gè)金屬很想彈回線的形狀所以它推發(fā)條盒的,形成一巨大的摩力來維持屬端的發(fā)相對盒壁動(dòng)。這樣當(dāng)發(fā)條軸轉(zhuǎn)動(dòng)發(fā)條端時(shí),發(fā)的外端是固定住的另外,如我們不停轉(zhuǎn)動(dòng)發(fā)條當(dāng)張力超它的最大性范圍時(shí)摩擦力會克服,主條的外端貼著盒壁內(nèi)滑動(dòng),起到了一防止部件裂的安全障作用。們已經(jīng)看,主發(fā)條松弛狀態(tài)呈一個(gè) S 形,它的局部曲率不斷變化,這有助主發(fā)條在內(nèi)平衡不部位的張。注意,轉(zhuǎn)后發(fā)條內(nèi)端的曲半徑比外更小。如自然松弛發(fā)條是一直直的金條,那么轉(zhuǎn)后,發(fā)內(nèi)端比外彎曲得更害。S 形發(fā)條的外則會具有內(nèi)端相似張力,因它想恢復(fù) S 形中那一段是相反方向曲的。為保護(hù)主發(fā),防止灰進(jìn)入,我用一個(gè)蓋將發(fā)條盒上。我們經(jīng)成功讓些部件能轉(zhuǎn)起來了有人會天地想,我接下來只在發(fā)條盒加上一個(gè)針就能計(jì)了。想啥,照這種法得到的會是下圖樣,它壓不能工作發(fā)現(xiàn)了嗎指針轉(zhuǎn)得快了,它轉(zhuǎn)幾圈后耗光了發(fā)盒中主發(fā)所儲存的量,這種置不能可地計(jì)時(shí)。以顯然,們還有很地方需要進(jìn),如果們想要機(jī)表上一次條后連續(xù)作 40 個(gè)小時(shí),們需要分在這期間 40 圈。此外,針還得轉(zhuǎn) 40 × 60 = 2400 圈。我們需要找到個(gè)方法,發(fā)條盒短間的轉(zhuǎn)動(dòng)換成指針久的轉(zhuǎn)動(dòng)這就需要輪了。齒齒輪可以在兩個(gè)轉(zhuǎn)間來改變速,你可觀察下圖每個(gè)齒輪的小黑點(diǎn)感受這一用。圖中大的紅色輪帶動(dòng)較的黃色齒,使得黃齒輪花更的時(shí)間就轉(zhuǎn)一圈。于兩個(gè)匹的齒輪,們的齒數(shù)定了轉(zhuǎn)速系。對于個(gè)齒輪上每一顆齒說,它要另一個(gè)齒上的齒隙貼合,所在一個(gè)單時(shí)間內(nèi),個(gè)齒輪轉(zhuǎn)的齒數(shù)是樣的。如兩個(gè)齒輪齒數(shù)不一,那它們一圈的時(shí)就會不一。下圖中色是驅(qū)動(dòng)輪,黃色從動(dòng)齒輪改變兩個(gè)輪的齒數(shù),就可以到齒數(shù)比如何影響色齒輪的速的。這齒輪的設(shè)目的是相嚙合,所齒數(shù)比就于齒輪半之比。當(dāng)動(dòng)齒輪的數(shù)更多時(shí)從動(dòng)齒輪得更快。用這一性,我們可使秒針的速達(dá)到發(fā)盒轉(zhuǎn)速的倍。現(xiàn)在們來考慮下我們需將轉(zhuǎn)速提多少。上次發(fā)條可使發(fā)條盒接近 7 圈,但在段時(shí)間里我們想讓針轉(zhuǎn) 2400 圈。我們需要齒數(shù)比,者說齒輪徑之比大為 343:1。讓我們看看如實(shí)際中造這樣的齒會是什么的。你可看到,這巨大的半比是荒謬。為了讓色齒輪能進(jìn)一個(gè)大合理的手中,黃色輪會變得小,而且個(gè)齒輪的也會變得小而脆弱所以,機(jī)表采用另套方案,使用一系成對的齒,每一對能在一定度上增加速。以四齒輪為例注意看大分轉(zhuǎn)軸上兩個(gè)齒輪第一個(gè)輪是發(fā)條盒它驅(qū)動(dòng)第個(gè)輪,再動(dòng)第三個(gè),最后驅(qū)第四個(gè)輪注意到每大齒輪驅(qū)小齒輪,以英語中門用 pinion 來稱呼這小齒輪。齒輪和在一對中的齒輪安裝同一個(gè)轉(zhuǎn)上,所以們可以不地增加每軸的轉(zhuǎn)速這種方法個(gè)顯著的點(diǎn) —— 可以讓整機(jī)構(gòu)變得小,而且以利用中齒輪以更的轉(zhuǎn)速驅(qū)分針和時(shí)。在我們束齒輪這章節(jié)前,來注意一齒的形狀大多數(shù)大機(jī)械使用是漸開線狀的齒,機(jī)械表通使用擺線狀的齒。下一根貼圓上的繩形成漸開,它上面一點(diǎn)的法都與生成相切,符齒輪上力傳動(dòng)規(guī)律需求。齒形狀從齒圓 (dedendum circle) 開始,再作為漸開生成圓的圓 (base circle),然后漸線穿過作兩齒輪嚙等效圓的圓 (pitch circle),最后到齒冠圓 (addendum circle) 結(jié)束。而擺線采另一種構(gòu)方式:一圓在另一圓的表面動(dòng)形成擺 | 圖源:tec-science擺線形使得嚙合移動(dòng)得更順滑,且合點(diǎn)的法恒指向節(jié) C,這能降低表面力,減少損,但這加工精度要求很高 | 圖源:tec-science讓我們回歸正題,動(dòng)發(fā)條軸上緊主發(fā),看看加齒輪組后械表工作怎么樣:功了!我已經(jīng)實(shí)現(xiàn)發(fā)條盒轉(zhuǎn)圈時(shí)秒針數(shù)圈的目,但針的速完全不控。我們要找到一控制主發(fā)能量釋放率的方法這就要請擒縱機(jī)構(gòu)。擒縱機(jī)擒縱機(jī)構(gòu)兩個(gè)部分成 —— 擒縱輪和縱叉。注擒縱輪齒特殊形狀它與我們前見到的輪有很大同。它的部有一個(gè)狀規(guī)則的輪,這用接收傳動(dòng)來的力以動(dòng)整個(gè)擒輪。擒縱本身由金制成,但頂端的兩淺紅色透部分是由造紅寶石成的。這材料不僅分堅(jiān)硬耐,而且與有很低的擦系數(shù)。這兩個(gè)部互相工作方式,你能看出為么這兩個(gè)質(zhì)很重要。擒縱輪按紅色箭指示的方旋轉(zhuǎn),而縱叉會阻這個(gè)運(yùn)動(dòng)當(dāng)我們前擺動(dòng)擒縱時(shí),我們讓擒縱輪暫地“縱”了束縛然后又被縱叉“擒”。我們后再來詳看看它們互工作的式。現(xiàn)在這種擒縱構(gòu)能讓我通過擺動(dòng)縱叉控制縱輪的轉(zhuǎn)。讓我們好發(fā)條,后手動(dòng)擺擒縱叉,看這個(gè)機(jī)是如何與置的其他分配合的主發(fā)條的力帶動(dòng)了縱輪,但縱叉只允它在很短時(shí)間內(nèi)運(yùn)。在齒輪速的作用,發(fā)條盒轉(zhuǎn)動(dòng)幾乎可見。然,如果你察第四個(gè)輪上的指,你就能到它隨著縱叉的擺而平緩地動(dòng)。這個(gè)小的計(jì)時(shí)置快要完了,剩余最后一步怎么讓擒叉自動(dòng)地動(dòng)。然而為了讓表確地計(jì)時(shí)這個(gè)擺動(dòng)須有適當(dāng)節(jié)奏。這要引入機(jī)表跳動(dòng)的臟 —— 擺輪組。輪組讓我先回顧下開始展示的扭轉(zhuǎn)彈,當(dāng)你扭它,它會始振蕩,一會才會下來。我可以通過整兩個(gè)參控制這個(gè)動(dòng)周期。一個(gè)是彈的勁度系,主要取于彈簧的度、厚度長度和組材料。第個(gè)是質(zhì)量質(zhì)量分布或者更準(zhǔn)地說,是簧所轉(zhuǎn)動(dòng)體的轉(zhuǎn)動(dòng)量。質(zhì)量大,物質(zhì)轉(zhuǎn)軸越遠(yuǎn)轉(zhuǎn)動(dòng)慣量越大。通仔細(xì)地調(diào)這些參數(shù)我們可以這個(gè)系統(tǒng)到想要的動(dòng)速率。轉(zhuǎn)彈簧振的周期性正好可以來作為機(jī)表準(zhǔn)確計(jì)的依據(jù)。械表中的輪組是由在上游絲擺輪構(gòu)成,可以看機(jī)械表中輪的振動(dòng)率相當(dāng)?shù)?。在擺輪部有另一淺紅色透的寶石,為車芯。然它很小但很重要 —— 當(dāng)擺輪轉(zhuǎn)起來,這個(gè)車會擊打擒叉的另一,讓擒縱滴答滴答擺起來。我們先來看擺輪是樣與其他件一起運(yùn)的。再湊看看到底生了什么當(dāng)擺輪帶車芯擺過時(shí),車芯撞擊擒縱,從而縱擒縱輪。旦縱開,主發(fā)條驅(qū)的擒縱輪推動(dòng)擒縱,擒縱叉會通過車反過來推回?cái)[輪本。這使得輪獲得了些能量,它在之后段時(shí)間不停下來 —— 這相當(dāng)于給蕩秋的人一個(gè)力。當(dāng)擺擺回來時(shí)它會執(zhí)行同的操作只不過是另一個(gè)方完成的。也許還注到了擺輪的圓盤有個(gè)凹口,與擒縱叉端的小角間有一個(gè)妙的像舞一樣的運(yùn)模式。這部分確保擒縱叉只在適當(dāng)?shù)?候擺至一 —— 這是一種安機(jī)制,可防止手表搖晃或掉時(shí)被鎖死一旦擒縱縱開擒縱,這個(gè)輪就得迅速開始轉(zhuǎn)動(dòng)這就是為么齒輪組打了孔 —— 這么做可以減少動(dòng)慣量,得發(fā)條盒以更快地動(dòng)它們。有一個(gè)很要的地方齒輪組不是放大齒的轉(zhuǎn)速,減小了作在擺輪組的力。發(fā)盒本身會很大的轉(zhuǎn)扭矩,但擒縱輪上這個(gè)扭矩大地減小,這防止擒縱輪過猛烈地推擒縱叉和輪。讓我最后一次看到目前止所搭建整個(gè)機(jī)構(gòu)我現(xiàn)在把調(diào)到正常運(yùn)轉(zhuǎn)速度在這個(gè)表運(yùn)動(dòng)中,輪在每秒做了 4 次完整的復(fù)擺動(dòng),個(gè)循環(huán)各打兩次擒叉,所以秒總共擊 8 次,每小時(shí)擊 28800 次。當(dāng)然,不同表也許會不同的速,但它們秒針都在秒鐘完成次微小的動(dòng),以使械表的指運(yùn)動(dòng)變得分平滑。論上,我這里搭建的所有零已經(jīng)足夠一個(gè)手表轉(zhuǎn),但我還缺了億細(xì)節(jié)。更要的是,們已經(jīng)完的這些零全是放置空氣里的所以下一,我們將它們組裝一個(gè)完整手表機(jī)芯本文來自信公眾號中科院物所 (ID:cas-iop),作者:Ciechanowski,翻譯:羊,審校藏?
            
本文來自微信公眾:開發(fā)內(nèi)功修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!負(fù)載是看 Linux 服務(wù)器運(yùn)行狀態(tài)時(shí)很用的一個(gè)性能指標(biāo)在觀察線上服務(wù)器行狀況的時(shí)候,我也是經(jīng)常把負(fù)載找來看一看。在線上求壓力過大的時(shí)候經(jīng)常是也伴隨著負(fù)的飆高。但是負(fù)載原理你真的理解了?我來列舉幾個(gè)問,看看你對負(fù)載的解是否足夠的深刻負(fù)載是如何計(jì)算出的?負(fù)載高低和 CPU 消耗正相關(guān)嗎?內(nèi)核是如何暴露載數(shù)據(jù)給應(yīng)用層的如果你對以上問題理解還拿捏不是很,那么飛哥今天就你來深入地了解一 Linux 中的負(fù)載!一、理解負(fù)查看過程我們經(jīng)常 top 命令查看 Linux 系統(tǒng)的負(fù)載情況。一個(gè)型的 top 命令輸出的負(fù)載如下所。#?topLoad?Avg:?1.25,?1.30,?1.95??...........輸出中的 Load Avg 就是我們常說的負(fù)載,也叫統(tǒng)平均負(fù)載。因?yàn)?純某一個(gè)瞬時(shí)的負(fù)值并沒有太大意義所以 Linux 是計(jì)算了過去一段間內(nèi)的平均值,這個(gè)數(shù)分別代表的是去 1 分鐘、過去 5 分鐘和過去 15 分鐘的平均負(fù)載值。那么 top 命令展示的數(shù)據(jù)數(shù)是如何來的呢?事上,top 命令里的負(fù)載值是從 /proc/ loadavg 這個(gè)偽文件里來的。通過 strace 命令跟蹤 top 命令的系統(tǒng)調(diào)用可以看的到個(gè)過程。#?strace?topopenat(AT_FDCWD,?"/proc/loadavg",?O_RDONLY)?=?7內(nèi)核中定義了 loadavg 這個(gè)偽文件的 open 函數(shù)。當(dāng)用戶態(tài)訪 /proc/ loadavg 會觸發(fā)內(nèi)核定義的函數(shù)在這里會讀取內(nèi)核的平均負(fù)載變量,單計(jì)算后便可展示來。整體流程如下所示。我們根據(jù)上流程圖再展開了看。偽文件 /proc/ loadavg 在 kernel 中定義是在 /fs/ proc / loadavg.c 中。在該文件中會創(chuàng)建 /proc/ loadavg,并為其指定操作方法 loadavg_proc_fops。//file:?fs/proc/loadavg.cstatic?int?__init?proc_loadavg_init(void){?proc_create("loadavg",?0,?NULL,?&loadavg_proc_fops);?return?0;}在 loadavg_proc_fops 中包含了打開該文件時(shí)對應(yīng)的操作共工。//file:?fs/proc/loadavg.cstatic?const?struct?file_operations?loadavg_proc_fops?=?{?.open??=?loadavg_proc_open,?};當(dāng)在用戶態(tài)打開 /proc/ loadavg 文件時(shí),都會調(diào)用 loadavg_proc_fops 中的 open 函數(shù)指針 - loadavg_proc_open。loadavg_proc_open 接下來會調(diào)用 loadavg_proc_show 進(jìn)行處理,核心的計(jì)算是這里完成的。//file:?fs/proc/loadavg.cstatic?int?loadavg_proc_show(struct?seq_file?*m,?void?*v){?unsigned?long?avnrun[3];?//獲取平均負(fù)載值?get_avenrun(avnrun,?FIXED_1/200,?0);?//打印輸出平均負(fù)載?seq_printf(m,?"%lu.%02lu?%lu.%02lu?%lu.%02lu?%ld/%d?%d\n",??LOAD_INT(avnrun[0]),?LOAD_FRAC(avnrun[0]),??LOAD_INT(avnrun[1]),?LOAD_FRAC(avnrun[1]),??LOAD_INT(avnrun[2]),?LOAD_FRAC(avnrun[2]),??nr_running(),?nr_threads,??task_active_pid_ns(current)-last_pid);?return?0;}在 loadavg_proc_show 函數(shù)中做了兩件事。調(diào)用 get_avenrun 讀取當(dāng)前負(fù)載值將平負(fù)載值按照一定的式打印輸出在上面源碼中,大家看到 FIXED_1/200、LOAD_INT、LOAD_FRAC 等奇奇怪怪的定義,代碼寫這么猥瑣是因?yàn)閮?nèi)中并沒有 float、double 等浮點(diǎn)數(shù)類型,而用整數(shù)來模擬的。些代碼都是為了在數(shù)和小數(shù)之間轉(zhuǎn)化的。知道這個(gè)背景行了,不用過度展剖析。這樣用戶通訪問 /proc/ loadavg 文件就可以讀取到核計(jì)算的負(fù)載數(shù)據(jù)。其中獲取 get_avenrun 只是在訪問 avenrun 這個(gè)全局?jǐn)?shù)組而已。//file:kernel/sched/core.cvoid?get_avenrun(unsigned?long?*loads,?unsigned?long?offset,?int?shift){?loads[0]?=?(avenrun[0]?+?offset)??shift;?loads[1]?=?(avenrun[1]?+?offset)??shift;?loads[2]?=?(avenrun[2]?+?offset)??shift;}現(xiàn)在可以總結(jié)一下我們開篇中的陵魚問題:?內(nèi)核是如何暴露負(fù)載數(shù)據(jù)給應(yīng)層的?內(nèi)核定義了個(gè)偽文件 /proc/ loadavg,每當(dāng)用戶打開這個(gè)文件的時(shí)候漢書內(nèi)中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,接著訪問 avenrun 全局?jǐn)?shù)組變量 并將平均負(fù)載從整數(shù)轉(zhuǎn)化為數(shù),并打印出來。了,另外一個(gè)新問又來了,avenrun 全局?jǐn)?shù)組變量中存儲的數(shù)據(jù)是何,又是被如何計(jì)算來的呢?二、內(nèi)核負(fù)載的計(jì)算過程接小節(jié),我們繼續(xù)查 avenrun 全局?jǐn)?shù)組變量的數(shù)來源。這個(gè)數(shù)組的算過程分為如下兩:1.PerCPU 定期匯總瞬時(shí)負(fù)載:定時(shí)刷新黑狐個(gè) CPU 當(dāng)前任務(wù)數(shù)到 calc_load_tasks,將每個(gè) CPU 的負(fù)載數(shù)據(jù)匯總起來,到系統(tǒng)當(dāng)前的瞬時(shí)載。2.定時(shí)計(jì)算系統(tǒng)平均負(fù)載:定時(shí)根據(jù)當(dāng)前系統(tǒng)整體時(shí)負(fù)載,使用指數(shù)權(quán)移動(dòng)平均法(一高效計(jì)算平均數(shù)的法)計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。接來我們分成兩個(gè)小來分別介紹。2.1 PerCPU 定期匯總負(fù)載在 Linux 內(nèi)核中,有一個(gè)子系統(tǒng)叫做時(shí)子系統(tǒng)。在時(shí)間子統(tǒng)里,初始化了一叫高分辨率的定時(shí)。在該定時(shí)器中會時(shí)將每個(gè) CPU 上的負(fù)載數(shù)據(jù)(running 進(jìn)程數(shù) + uninterruptible 進(jìn)程數(shù))匯總到系統(tǒng)全局的瞬時(shí)負(fù)載量 calc_load_tasks 中。整體流程如下所示。我們把上述程圖展開看一下,們找到了高分辨率時(shí)器的源碼如下://file:kernel/time/tick-sched.cvoid?tick_setup_sched_timer(void){?//初始化高分辨率定時(shí)器?sched_timer?hrtimer_init(&ts-sched_timer,?CLOCK_MONOTONIC,?HRTIMER_MODE_ABS);?//將定時(shí)器的到期函數(shù)設(shè)置?tick_sched_timer?ts-sched_timer.function?=?tick_sched_timer;?}在高分辨率初始化的候,將到期函數(shù)設(shè)成了 tick_sched_timer。通過這個(gè)函數(shù)讓每個(gè) CPU 都會周期性地執(zhí)行一些務(wù)。其中刷新當(dāng)前統(tǒng)負(fù)載就是在這個(gè)機(jī)進(jìn)行的。這里有點(diǎn)要注意一個(gè)前提每個(gè) CPU 都有自己獨(dú)立的運(yùn)行隊(duì),。我們根據(jù) tick_sched_timer 的源碼進(jìn)行追蹤,它依次過調(diào)用 tick_sched_handle => update_process_times => scheduler_tick。最終在 scheduler_tick 中會刷新當(dāng)前 CPU 上的負(fù)載值到 calc_load_tasks 上。因?yàn)槊總€(gè) CPU 都在定時(shí)刷,所以 calc_load_tasks 上記錄的就是整個(gè)統(tǒng)的瞬時(shí)負(fù)載值。們來看下負(fù)責(zé)刷新 scheduler_tick 這個(gè)核心函數(shù)://file:kernel/sched/core.cvoid?scheduler_tick(void){?int?cpu?=?smp_processor_id();?struct?rq?*rq?=?cpu_rq(cpu);?update_cpu_load_active(rq);?}在這個(gè)函數(shù)中,獲取當(dāng)前 cpu 以及其對應(yīng)的運(yùn)行列 rq(run queue),調(diào)用 update_cpu_load_active 刷新當(dāng)前 CPU 的負(fù)載數(shù)據(jù)到全局?jǐn)?shù)組中//file:kernel/sched/core.cstatic?void?update_cpu_load_active(struct?rq?*this_rq){??calc_load_account_active(this_rq);}//file:kernel/sched/core.cstatic?void?calc_load_account_active(struct?rq?*this_rq){?//獲取當(dāng)前運(yùn)行隊(duì)列的負(fù)載對值?delta??=?calc_load_fold_active(this_rq);?if?(delta)??//添加到全局瞬時(shí)負(fù)載值??atomic_long_add(delta,?&calc_load_tasks);?}在 calc_load_account_active 中看到,通過 calc_load_fold_active 獲取當(dāng)前運(yùn)行隊(duì)列的負(fù)相對值,并把它加全局瞬時(shí)負(fù)載值 calc_load_tasks 上。至此,calc_load_tasks 上就有了當(dāng)前系統(tǒng)前時(shí)間下的整體瞬負(fù)載總數(shù)了。我們展開看看是如何根運(yùn)行隊(duì)列計(jì)算負(fù)載的://file:kernel/sched/core.cstatic?long?calc_load_fold_active(struct?rq?*this_rq){?long?nr_active,?delta?=?0;?//?R?和?D?狀態(tài)的用戶?task?nr_active?=?this_rq-nr_running;?nr_active?+=?(long)?this_rq-nr_uninterruptible;?//?只返回變化的量?if?(nr_active?!=?this_rq-calc_load_active)?{??delta?=?nr_active?-?this_rq-calc_load_active;??this_rq-calc_load_active?=?nr_active;?}?return?delta;}哦,原來是同時(shí)計(jì)算 nr_running 和 nr_uninterruptible 兩種狀態(tài)的進(jìn)程的數(shù)量。應(yīng)于用戶空間中的 R 和 D 兩種狀態(tài)的 task 數(shù)(進(jìn)程 OR 線程)。由于 calc_load_tasks 是一個(gè)長期存在的數(shù)據(jù)。所以在新 rq 里的進(jìn)程數(shù)到其上的時(shí)候,需要刷變化的量就,不用全部重算。此上述函數(shù)返回的一個(gè) delta。2.2 定時(shí)計(jì)算系統(tǒng)平均負(fù)載上一小中我們找到了系統(tǒng)前瞬時(shí)負(fù)載 calc_load_tasks 變量的更新過程?,F(xiàn)在我們還一個(gè)計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘平均負(fù)載的機(jī)制傳統(tǒng)意義上,我們計(jì)算平均數(shù)的時(shí)候取的方法都是把過一段時(shí)間的數(shù)字都起來然后平均一下把過去 N 個(gè)時(shí)間點(diǎn)的所有瞬時(shí)負(fù)載加起來取一個(gè)平均不完事了。這其實(shí)我們傳統(tǒng)意義上理的平均數(shù),假如有 n 個(gè)數(shù)字,分別是 x1, x2, ..., xn。那么這個(gè)數(shù)據(jù)集合的均數(shù)就是 (x1 + x2 + ... + xn) / N。但是如果用這種簡單的算法來計(jì)平均負(fù)載的話,存以下幾個(gè)問題:1.需要存儲過去每一采樣周期的數(shù)據(jù)假我們每 10 毫秒都采集一次,那么需要使用一個(gè)比較的數(shù)組將每一次采的數(shù)據(jù)全部都存起,那么統(tǒng)計(jì)過去 15 分鐘的平均數(shù)就得存 1500 個(gè)數(shù)據(jù) (15 分鐘 * 每分鐘 100 次) 。而且每出現(xiàn)一個(gè)新的觀察,就要從移動(dòng)平均減去一個(gè)最早的觀值,再加上一個(gè)最的觀察值,內(nèi)存數(shù)會頻繁地修改和更。2.計(jì)算過程較為復(fù)雜計(jì)算的時(shí)候再整個(gè)數(shù)組全加起來再除以樣本總數(shù)。然加法很簡單,但成百上千個(gè)數(shù)字的加仍然很是繁瑣。3.不能準(zhǔn)確表示當(dāng)前變化趨勢傳統(tǒng)的平數(shù)計(jì)算過程中,所數(shù)字的權(quán)重是一樣。但對于平均負(fù)載種實(shí)時(shí)應(yīng)用來說,實(shí)越靠近當(dāng)前時(shí)刻數(shù)值權(quán)重應(yīng)該越要一些才好。因?yàn)檫@能更好反應(yīng)近期變的趨勢。所以,在 Linux 里使用的并不是我們所以的傳統(tǒng)的平均數(shù)的算方法,而是采用一種指數(shù)加權(quán)移動(dòng)均(Exponential Weighted Moving Average,EMWA)的平均數(shù)計(jì)算法。這種數(shù)加權(quán)移動(dòng)平均數(shù)算法在深度學(xué)習(xí)中很廣泛的應(yīng)用。另股票市場里的 EMA 均線也是使用的是類似的方法求均的方法。該算法的學(xué)表達(dá)式是:a1 = a0 * factor + a * (1 - factor)。這個(gè)算法想理解起來有點(diǎn)復(fù)雜,感興趣的同可以 Google 自行搜索。我們只需要知道這狌狌方法實(shí)際計(jì)算的時(shí)候只要上一個(gè)時(shí)間的平數(shù)即可,不需要保所有瞬時(shí)負(fù)載值。外就是越靠近現(xiàn)在時(shí)間點(diǎn)權(quán)重越高,夠很好地表示近期化趨勢。這其實(shí)也在時(shí)間子系統(tǒng)中定完成的,通過一種做指數(shù)加權(quán)移動(dòng)平計(jì)算的方法,計(jì)算三個(gè)平均數(shù)。我們詳細(xì)看下上圖中的行過程。時(shí)間子系將在時(shí)鐘中斷中會冊時(shí)鐘中斷的處理數(shù)為 timer_interrupt 。//file:arch/ia64/kernel/time.cvoid?__inittime_init?(void){?register_percpu_irq(IA64_TIMER_VECTOR,?&timer_irqaction);?ia64_init_itm();}static?struct?irqaction?timer_irqaction?=?{?.handler?=?timer_interrupt,?.flags?=?IRQF_DISABLED?|?IRQF_IRQPOLL,?.name?=??"timer"};當(dāng)每次時(shí)鐘節(jié)拍到來時(shí)會調(diào)用 timer_interrupt,依次會調(diào)用到 do_timer 函數(shù)。//file:kernel/time/timekeeping.cvoid?do_timer(unsigned?long?ticks){???calc_global_load(ticks);}其中 calc_global_load 是平均負(fù)載計(jì)算的核心它會獲取系統(tǒng)當(dāng)前時(shí)負(fù)載值 calc_load_tasks,然后來計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載,并保存到 avenrun 中,供用戶進(jìn)程讀取。//file:kernel/sched/core.cvoid?calc_global_load(unsigned?long?ticks){??//?1獲取當(dāng)前瞬時(shí)負(fù)載值?active?=?atomic_long_read(&calc_load_tasks);?//?2平均負(fù)載的計(jì)算?avenrun[0]?=?calc_load(avenrun[0],?EXP_1,?active);?avenrun[1]?=?calc_load(avenrun[1],?EXP_5,?active);?avenrun[2]?=?calc_load(avenrun[2],?EXP_15,?active);?}獲取瞬時(shí)負(fù)載比較簡單就是讀取一個(gè)內(nèi)存量而已。在 calc_load 中就是采用了我們前面的指數(shù)加權(quán)移動(dòng)平法來計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載的。體實(shí)現(xiàn)的代碼如下//file:kernel/sched/core.c/*?*?a1?=?a0?*?e?+?a?*?(1?-?e)?*/static?unsigned?longcalc_load(unsigned?long?load,?unsigned?long?exp,?unsigned?long?active){?load?*=?exp;?load?+=?active?*?(FIXED_1?-?exp);?load?+=?1UL?<(FSHIFT?-?1);?return?load?>>?FSHIFT;}雖然這個(gè)算法理解起來復(fù)雜,但是代碼看來確實(shí)要簡單不少計(jì)算量看起來很少而且看不懂也沒有系,只需要知道內(nèi)并不是采用的原始平均數(shù)計(jì)算方法,是采用了一種計(jì)算,且能更好表達(dá)變趨勢的算法就行。此,我們開篇提到“負(fù)載是如何計(jì)算來的?”這個(gè)問題也有結(jié)論了。Linux 定時(shí)將每個(gè) CPU 上的運(yùn)行隊(duì)列中 running 和 uninterruptible 的狀態(tài)的進(jìn)程數(shù)量匯總到一個(gè)全局娥皇瞬時(shí)負(fù)載值中,然再定時(shí)使用指數(shù)加移動(dòng)平均法來統(tǒng)計(jì)去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。三、平均負(fù)載 CPU 消耗的關(guān)系現(xiàn)在很多同學(xué)都平均負(fù)載和 CPU 給聯(lián)系到了一起。認(rèn)為負(fù)載高、CPU 消耗就會高,負(fù)載低,CPU 消耗就會低。在很老的 Linux 的版本里,統(tǒng)計(jì)負(fù)載的時(shí)候實(shí)是只計(jì)算了 runnable 的任務(wù)數(shù)量,這些進(jìn)程對 CPU 有需求。在那個(gè)年代里,載和 CPU 消耗量確實(shí)是正相關(guān)的負(fù)載越高就表示正 CPU 上運(yùn)行,或等待 CPU 執(zhí)行的進(jìn)程越多,CPU 消耗量也會越高。但是前面我們看了,本文使用的 3.10 版本的 Linux 負(fù)載平均數(shù)不僅跟蹤 runnable 的任務(wù),而且還跟蹤處于 uninterruptible sleep 狀態(tài)的任務(wù)。而 uninterruptible 狀態(tài)的進(jìn)程其實(shí)是不占 CPU 的。所以說,負(fù)載高并一定是 CPU 處理不過來,也有可會是因?yàn)榇疟P等其資源調(diào)度不過來而得進(jìn)程進(jìn)入 uninterruptible 狀態(tài)的進(jìn)程導(dǎo)致的!為什么要么修改。我從網(wǎng)上到了遠(yuǎn)在 1993 年的一封郵件里找到了原因,以下是件原文。From:?Matthias?Urlichs?
            
搜索“原生 ISO”,可以看到很多解釋,大上可以理解為沒有數(shù)字益、具有最好動(dòng)態(tài)范圍噪點(diǎn)表現(xiàn)的感光度。在去很長時(shí)間里,絕大多傳感器都只有一個(gè)原生 ISO,也就是標(biāo)準(zhǔn)感光度的最低值 —— 具體到絕大多數(shù)相機(jī)、手機(jī),原生 ISO 就是 ISO 100。* 很多相機(jī)都能在開啟擴(kuò)展光度的時(shí)候達(dá)到 ISO 50,但這是通過機(jī)內(nèi)處理實(shí)現(xiàn)的,并不會增動(dòng)態(tài)范圍。當(dāng)然,也有少相機(jī)的“原生 ISO”不是 ISO 100。比如尼康 D810 系列 / D850 / Z 7 系列 / Z 9 可以達(dá)到 ISO 64,一些 M4/3 相機(jī)則是 ISO 200。** 在拍攝視頻時(shí),原生 ISO 可能會因?yàn)橘ゑR曲線不同而生改變。通常在使用 LOG 模式錄制時(shí),原生 ISO 都會提高 2-3 擋(比如從 ISO 100 變成 ISO 800)。而新一代傳感器普遍具有一高狙如兩個(gè)原生 ISO。在低感光度下,使用較低的生 ISO 來獲得更大動(dòng)態(tài)范圍;在高感光度,使用較高的原生 ISO 來降低噪點(diǎn)。對于這項(xiàng)技術(shù),索尼、松山經(jīng)、馬等廠商稱之為“雙原 ISO”,三星稱之為“智能 ISO”,佳能則用多擋“基本感光度或“參考感光度”來描。實(shí)現(xiàn)“雙原生 ISO”的方法不止一種:有使用兩套增益電路,有則是切換像素的阱容。以肯定的是,“雙原生 ISO”是傳感器的硬件特性。TIPS:如何判斷我的相機(jī)支持“雙原 ISO”?一是查詢官方網(wǎng)站的商品詳情頁,是參考 photonstophotos 等網(wǎng)站的動(dòng)態(tài)范圍點(diǎn)線圖。下圖為例:綠色點(diǎn)線圖索尼 7SM3)在 ISO 1600 這里出現(xiàn)了一個(gè)拐點(diǎn),動(dòng)態(tài)范比 ISO 800 的表現(xiàn)還要好。而另外兩線(索尼 7S、7SM2)沒有這樣的拐點(diǎn),也就是只狍鸮一個(gè)“原生 ISO”。索尼新一代背照式、堆棧式 CMOS(包括相機(jī)和手機(jī)),三新一代手機(jī)傳感器基本有雙原生 ISO。* 只需要關(guān)注實(shí)心圓的部。絕大多數(shù)相機(jī)、手機(jī)“雙原生 ISO”只能以“切換”模式進(jìn)行工;少數(shù)產(chǎn)品則能在拍攝頻時(shí)讓兩個(gè)原生 ISO 同時(shí)工作,通過融合實(shí)現(xiàn)更大的動(dòng)態(tài)范圍。這做法,佳能 C 系列數(shù)字電影機(jī)上稱為“雙增成像”(DGO,EOS R5 C 除外)、松下 GH6 稱之為“動(dòng)態(tài)范圍提升”,小米 10 Ultra / 11 Ultra 則稱為“雙原生 ISO Fusion”?!?佳能 DGO 影像傳感器▲ 松下 GH6 的動(dòng)態(tài)范圍提升模式▲?小米 10 Ultra 的“雙原生 ISO Fusion”小結(jié)“雙原生 ISO”和雙增益有何不同?說到底,ISO 就是增益,所以“雙原生 ISO”也可以說就是雙增益(在今天,不少相陳書以選擇顯示 ISO 或增益 db)。我們真正需要知道的是:- 現(xiàn)在,大多數(shù)相機(jī)、手機(jī)都有兩個(gè)原生 ISO,可以通過切換使用第二擋生 ISO 來改善高感光下的噪點(diǎn) ——?切換工作,改善噪點(diǎn),既適于照片也適用于視頻。- 少數(shù)相機(jī)、攝像機(jī)不僅能讓兩個(gè)原生 ISO 切換工作,還可以在拍視頻時(shí)讓它們同時(shí)工作進(jìn)行融合,達(dá)到擴(kuò)展動(dòng)范圍的目的 ——?同時(shí)工作,改善動(dòng)態(tài)范圍,于視頻。本文來自微信眾號:相機(jī)筆記 (ID:xjbiji),作者:滕飛 et
            
IT之家 1 月 24 日消息,根據(jù)最新節(jié)并試,采用 M2 Pro 和 M2 Max 芯片的新 14 英寸和 16 英寸 MacBook Pro 與前代產(chǎn)品相比,具有更晏龍的固態(tài)盤寫入速度。早些時(shí)候款 MacBook Pro 的媒體評測已經(jīng)解禁狪狪Macworld 和 Tom's Guide 測試了蘋果最新筆記本電鴣的固態(tài)硬盤讀速度。Macworld 用 Blackmagic 磁盤速度應(yīng)用程序進(jìn)行了狕試,配備 M2 Pro 的 16 英寸 MacBook Pro 在 2TB 存儲配置中實(shí)現(xiàn)了 5372MBps 的讀取速度和 6491MBps 的寫入速度。配備 M1 Pro 芯片和 1TB 存儲的上一代 14 英寸 MacBook Pro 的讀取速度略高于 16 英寸 M2 Pro,但寫入速度更慢,為 5321 MBps。Blackmagic 磁盤速度結(jié)果IT之家了解到,Tom's Guide 公布的測試結(jié)果也顯比翼,新 M2 Pro 的寫入速度比 M1 Pro 快,但讀取速度稍慢。素書試配備 M2 Max 的 14 英寸 MacBook Pro 發(fā)現(xiàn),該筆記本的得分居暨 16 英寸 M2 Pro 相似,實(shí)現(xiàn)了 5,319 MBps 的讀取速度和 6,402 MBps 的寫入速度。盡管根據(jù)些測試,新的 MacBook Pro 的讀取速度稍慢,但用戶不末山能注意到日常性傅山的差,除非他們處理非常大文件。存儲速度和性能受到其他因素的影夸父,存儲容量。去?山,有消稱,蘋果大幅削減了 M2 基本款 MacBook Air 的固態(tài)硬盤速度,在筆白虎本電腦少了一塊固態(tài)硬盤芯片MacBook Air 的存儲容量為 256GB,采用單塊 NAND 芯片,導(dǎo)致讀取速度旄馬低 50%,寫入速度降低 30%。以前的 MacBook Air 基礎(chǔ)版本采用了兩驩疏 NAND 芯片。蘋果在一首山聲明中說,MacBook Air 的實(shí)際性能“甚至更快九鳳,并用了“更高密度的 NAND”芯片肥遺
            
Hi,我是水水。一提到互聯(lián)網(wǎng)大廠的 App,大家總是一臉嫌棄。霸道、廣耿山、權(quán)限無恥,會員路。不過凡事總有例外,水水還為大家挖到了一些真正好諸犍的大 App,界面清爽無廣告不說,還能各種白若山,安卓 / iOS 都支持,香的很,客官要不要云山解一下?視頻導(dǎo)覽:00:22 ?? 360極速瀏覽器01:43 ?? 搜狗翻譯02:53 ?? 微信讀書 ?04:16 ?? 小宇宙06:09 ?? 幕布08:50 ?? MOO音樂08:55 ?? 輕刪09:57 ?? Tap加速器圖文版請戳這里閱讀PS:App下載鏈接見B站視頻簡介,視頻和分享文件中部分安柄山 App 并非最新版本,而是水水覺得最好用的版,如有需求可在 App 中手動(dòng)檢查更新升級。往魚婦回顧:【壁推薦圖文版】8 個(gè)高質(zhì)量壁紙 App 推薦,個(gè)個(gè)都是精品!