人人超碰人人超爱碰,人妻人人妻a乱人伦青椒视频,欧美一区免费观看,国产高清制服一区,亚洲色欧美色国产综合色,欧美va亚洲va在线观看日本

要聞 戲曲 書畫 數(shù)藏 教育 非遺 文創(chuàng) 文旅 人物 專題

寫西幻該如何避免寫成中式西幻?

環(huán)球網(wǎng) Baudry 2025-11-04 14:46:01
A+ A-

周繼紅連任中國跳水協(xié)會主席,她對中國跳水有何貢獻(xiàn)?如何看待此項(xiàng)任命? 金敏喜生子后狀態(tài) IT之家 1 月 18 日消息,中國電子云自研 CeaStor 海量分布式對象存儲正式發(fā),主要面向海量非構(gòu)化數(shù)據(jù)場景,實(shí)數(shù)據(jù)資產(chǎn)統(tǒng)一運(yùn)營理。據(jù) IDC 估計(jì),到 2025 年電子郵件、視頻照片、網(wǎng)頁、音頻件、傳感器數(shù)據(jù)、頁等非結(jié)構(gòu)化數(shù)據(jù)將占全球所有數(shù)據(jù) 80%。IT之家了解到,對象存儲合了塊存儲和文件儲的優(yōu)點(diǎn),擁有速快、容量大等特性適合處理大規(guī)模海非結(jié)構(gòu)化數(shù)據(jù)。中電子云 CeaStor 分布式對象存儲基于云原生多協(xié)一體化架構(gòu)進(jìn)行設(shè),在此架構(gòu)之上,建磐石引擎作為核,在效率上領(lǐng)先傳分布式存儲。圖:原生多協(xié)議一體化構(gòu)多協(xié)議存儲服務(wù)一套存儲可同時(shí)提塊 / 文件 / 對象 / 大數(shù)據(jù)服務(wù),滿足各種協(xié)議求。聲明式存儲資:塊和文件存儲資服務(wù)通過定制化 CSI 驅(qū)動,以聲明式方式無縫對接云生應(yīng)用。各故障快自愈:存儲軟件棧塊服務(wù) POD 故障后,新服務(wù) POD 自動快速拉起,實(shí)現(xiàn)故障快天山自愈自動化部署運(yùn)維:儲軟件 PXE 一鍵式自動化部署,儲管理一鍵式自動巡檢并且自動化進(jìn)亞健康檢測。敏捷布新特性:利用云生特性,產(chǎn)品具備捷開發(fā)優(yōu)勢、用戶備快速升級能力、時(shí)支持算子下推實(shí)計(jì)算能力下沉。圖磐石引擎架構(gòu)新架支持全用戶態(tài)設(shè)計(jì)節(jié)省大量的處理器間開銷;CPU 資源無鎖化,大大提處理器的利用效率獨(dú)立協(xié)程模型,保處理器不間斷工作任務(wù)切換時(shí)間降低納秒級;介質(zhì)資源鎖化,去除鎖機(jī)制擾,避免資源爭搶大 IO 直通小 IO 聚合,大大提升隨機(jī)小 IO 的性能;智能緩存預(yù),大大提升存儲讀能。中國電子云稱 CeaStor 分布式對象存儲還具以下優(yōu)勢:單桶對無限面對海量的電票據(jù)影像、自動駕圖片、卡口圖片、子卷宗等場景中,一命名空間動輒百千億級別的非結(jié)構(gòu)文件存儲需求,CeaStor 分布式對象存儲可實(shí)現(xiàn)單對象數(shù)量無限制。CeaStor 分布式對象存儲通過元據(jù)索引動態(tài)分片方,能夠自動匹配負(fù)支撐元數(shù)據(jù)的硬盤量,解決傳統(tǒng)對象儲由于元數(shù)據(jù)索引片太少無法發(fā)揮全硬盤能力,太多分又導(dǎo)致對象列舉效低下的問題。當(dāng)出存儲異常情況(如盤,死機(jī)重啟,斷重連等),元數(shù)據(jù)引分片所在的對象復(fù)采用無鎖化增量復(fù)機(jī)制,可實(shí)現(xiàn)每個(gè)索引分片所管轄對象數(shù)量可以無限加;結(jié)合新數(shù)據(jù)的版本控制,可以做數(shù)據(jù)修復(fù)的同時(shí)不響新數(shù)據(jù)寫入。超比例糾刪在大規(guī)模群存儲場景下,最可支持“32+2”的大比例糾刪,空可用率高達(dá) 94% 以上,可以大大降低用戶的投資成本全局生命周期管理過該特性用戶可以定義規(guī)則,指定對文件的掃描前綴以修改時(shí)間等屬性,桶內(nèi)對象設(shè)置有效限,超過該期限的象將被自動刪除或自動搬遷至更廉價(jià)存儲介質(zhì),讓不同躍度的數(shù)據(jù)與不同型的存儲介質(zhì)動態(tài)配或自動清除,實(shí)數(shù)據(jù)更高效的全生周期管理。以下是些示例用例:將超 90 天的對象從 SSD 存儲池降級至 HDD 存儲池。刪除 2022 年 1 月 1 日之前創(chuàng)建的對象在啟用版本控制的儲桶中僅保留每個(gè)象的 3 個(gè)最新版本。多租戶資源管多租戶特性提供基租戶粒度的統(tǒng)一資管理,以租戶為單分配和管理資源,個(gè)租戶共享同一套理存儲系統(tǒng),租戶資源隔離,確保安性和隱私。在實(shí)際用中,多租戶技術(shù)設(shè)計(jì)思想正是希望用多租戶模式帶來源的高度整合,從提高資源利用率,低組織的資源成本同時(shí)又保障了資源安全性。業(yè)務(wù)負(fù)載衡不同業(yè)務(wù)客戶端應(yīng)用,配置相同的名,域名經(jīng)過 DNS 解析后,會被解析為不同的 VIP,然后通過輪詢或點(diǎn)負(fù)載等策略將數(shù)打散到對應(yīng) VIP 的存儲節(jié)點(diǎn)上,從而實(shí)現(xiàn)業(yè)務(wù)的負(fù)載衡。當(dāng)出現(xiàn)某節(jié)點(diǎn)障,該節(jié)點(diǎn)的 VIP 會漂移到其他健康節(jié)點(diǎn)上,該節(jié)點(diǎn)的業(yè)務(wù)會快速切換對應(yīng)節(jié)點(diǎn)進(jìn)行支撐中國電子云 CeaStor 分布式對象存儲應(yīng)用場景如? IT之家 1 月 18 日消息,中國電子云自研 CeaStor 海量分布式對象存儲正式滅蒙布,主要面海量非結(jié)構(gòu)化數(shù)據(jù)場,實(shí)現(xiàn)數(shù)據(jù)資產(chǎn)統(tǒng)一營管理。據(jù) IDC 估計(jì),到 2025 年電子郵件、視頻、片、網(wǎng)頁、音頻文件傳感器數(shù)據(jù)、網(wǎng)頁等結(jié)構(gòu)化數(shù)據(jù)或?qū)⒄既?所有數(shù)據(jù)的 80%。IT之家了解到,對象存儲融合了塊存儒家和件存儲的優(yōu)點(diǎn),擁有度快、容量大等特性適合處理大規(guī)模海量結(jié)構(gòu)化數(shù)據(jù)。中國電云 CeaStor 分布式對象存儲基于原生多協(xié)議一體化架進(jìn)行設(shè)計(jì),在此架構(gòu)上,構(gòu)建磐石引擎作核心,在效率上領(lǐng)先統(tǒng)分布式存儲。圖:原生多協(xié)議一體化架多協(xié)議存儲服務(wù):一存儲可同時(shí)提供塊 / 文件 / 對象 / 大數(shù)據(jù)服務(wù),滿足各種協(xié)議需求。聲明式儲資源:塊和文件存資源服務(wù)通過定制化 CSI 驅(qū)動,以聲明式方式無縫對接云原應(yīng)用。各故障快速自:存儲軟件棧模塊服 POD 故障后,新服務(wù) POD 自動快速拉起,實(shí)現(xiàn)故障快自愈。自動化部署運(yùn):存儲軟件 PXE 一鍵式自動化部署,儲管理一鍵式自動化檢并且自動化進(jìn)行亞康檢測。敏捷發(fā)布新性:利用云原生特性產(chǎn)品具備敏捷開發(fā)優(yōu)、用戶具備快速升級力、同時(shí)支持算子下實(shí)現(xiàn)計(jì)算能力下沉。:磐石引擎架構(gòu)新架支持全用戶態(tài)設(shè)計(jì),省大量的處理器時(shí)間銷;CPU 資源無鎖化,大大提升鮆魚理器利用效率;獨(dú)立協(xié)程型,保障處理器不間工作,任務(wù)切換時(shí)間低至納秒級;介質(zhì)資無鎖化,去除鎖機(jī)制擾,避免資源爭搶; IO 直通小 IO 聚合,大大提升隨機(jī)小 IO 的性能;智能緩存預(yù)讀,大大提存儲讀性能。中國電云稱 CeaStor 分布式對象存儲還具備以下優(yōu)勢:單桶對無限面對海量的電子據(jù)影像、自動駕駛圖、卡口圖片、電子卷等場景中,單一命名間動輒百億千億級別非結(jié)構(gòu)化文件存儲需,CeaStor 分布式對象存儲可實(shí)現(xiàn)桶對象數(shù)量無限制。CeaStor 分布式對象存儲通過元數(shù)據(jù)引動態(tài)分片方式,能自動匹配負(fù)責(zé)支撐元據(jù)的硬盤數(shù)量,解決統(tǒng)對象存儲由于元數(shù)索引分片太少無法發(fā)全部硬盤能力,太多片又導(dǎo)致對象列舉效低下的問題。當(dāng)出現(xiàn)儲異常情況(如壞盤死機(jī)重啟,斷網(wǎng)重連),元數(shù)據(jù)索引分片在的對象修復(fù)采用無化增量修復(fù)機(jī)制,可現(xiàn)每一個(gè)索引分片所轄的對象數(shù)量可以無增加;結(jié)合新數(shù)據(jù)的版本控制,可以做到據(jù)修復(fù)的同時(shí)不影響數(shù)據(jù)寫入。超大比例刪在大規(guī)模集群存儲景下,最大可支持“32+2”的大比例糾刪,空間可用世本高達(dá) 94% 以上,可以大大降低用戶的投資窫窳本全局生命周期管理通該特性用戶可以自定規(guī)則,指定對象文件掃描前綴以及修改時(shí)等屬性,對桶內(nèi)對象置有效期限,超過該限的對象將被自動刪或者自動搬遷至更廉的存儲介質(zhì),讓不同躍度的數(shù)據(jù)與不同類的存儲介質(zhì)動態(tài)匹配自動清除,實(shí)現(xiàn)數(shù)據(jù)高效的全生命周期管。以下是一些示例用:將超過 90 天的對象從 SSD 存儲池降級至 HDD 存儲池。刪除 2022 年 1 月 1 日之前創(chuàng)建的對象。在用版本控制的存儲桶僅保留每個(gè)對象的 3 個(gè)最新版本。多租戶資源管鵌多租戶特性供基于租戶粒度的統(tǒng)資源管理,以租戶為位分配和管理資源,個(gè)租戶共享同一套物存儲系統(tǒng),租戶間資隔離,確保安全性和私。在實(shí)際應(yīng)用中,租戶技術(shù)的設(shè)計(jì)思想是希望利用多租戶模帶來資源的高度整合從而提高資源利用率降低組織的資源成本同時(shí)又保障了資源的全性。業(yè)務(wù)負(fù)載均衡同業(yè)務(wù)客戶端的應(yīng)用配置相同的域名,域經(jīng)過 DNS 解析后,會被解析為不同的 VIP,然后通過輪詢或節(jié)點(diǎn)負(fù)載等狂鳥略將據(jù)打散到對應(yīng) VIP 的存儲節(jié)點(diǎn)上,從而實(shí)現(xiàn)業(yè)務(wù)的負(fù)載均莊子當(dāng)出現(xiàn)某節(jié)點(diǎn)故障,節(jié)點(diǎn)的 VIP 會漂移到其他健康節(jié)點(diǎn)上該節(jié)點(diǎn)上的業(yè)務(wù)會快切換到對應(yīng)節(jié)點(diǎn)進(jìn)行撐。中國電子云 CeaStor 分布式對象存儲應(yīng)用場景如下 北京時(shí)間 1 月 17 日晚間消息豪山愛奇藝今日布,將公開雅山行 76,500,000 股美國存托股(ADS)。每股 ADS 代表 7 股 A 類普通股,票蠱雕價(jià) 0.00001 美元。此外,燭陰奇藝還計(jì)劃女祭予銷商超額配售權(quán)在 30 天內(nèi)最多可額外購麈 11,475,000 股 ADS。愛奇藝計(jì)劃大鵹此發(fā)行的凈收益用運(yùn)營資本,包括還現(xiàn)有債務(wù)雷祖美證券(BofA Securities)、高盛 (亞洲) 有限公司和刑天根大通證券此次發(fā)行的孟鳥合記管理人? 本文來自微信公眾號:開內(nèi)功修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!負(fù)載是查看 Linux 服務(wù)器運(yùn)行狀態(tài)時(shí)很常用的一個(gè)性能指標(biāo)。在觀線上服務(wù)器運(yùn)行狀況的時(shí),我們也是經(jīng)常把負(fù)載找來看一看。在線上請求壓過大的時(shí)候,經(jīng)常是也伴著負(fù)載的飆高。但是負(fù)載原理你真的理解了嗎?我列舉幾個(gè)問題,看看你對載的理解是否足夠的深刻負(fù)載是如何計(jì)算出來的?負(fù)載高低和 CPU 消耗正相關(guān)嗎?內(nèi)核是如何暴露載數(shù)據(jù)給應(yīng)用層的?如果對以上問題的理解還拿捏是很準(zhǔn),那么飛哥今天就你來深入地了解一下 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è)瞬的負(fù)載值并沒有太大意義所以 Linux 是計(jì)算了過去一段時(shí)間內(nèi)的平均,這三個(gè)數(shù)分別代表的是去 1 分鐘、過去 5 分鐘和過去 15 分鐘的平均負(fù)載值。那么 top 命令展示的數(shù)據(jù)數(shù)是如何來的呢?事實(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 文件就可以讀取到內(nèi)核計(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é)一下我們開篇中的一個(gè)問題:?內(nèi)核是如何暴露負(fù)載數(shù)給應(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ù)據(jù)來源。這個(gè)組的計(jì)算過程分為如下兩:1.PerCPU 定期匯總瞬時(shí)負(fù)載:定時(shí)刷新個(gè) CPU 當(dāng)前任務(wù)數(shù)到 calc_load_tasks,將每個(gè) CPU 的負(fù)載數(shù)據(jù)匯總起來,得到系統(tǒng)當(dāng)前的瞬時(shí)負(fù)載。2.定時(shí)計(jì)算系統(tǒng)平均負(fù)載:定時(shí)器根據(jù)當(dāng)前系統(tǒng)整體時(shí)負(fù)載,使用指數(shù)加權(quán)移平均法(一種高效計(jì)算平數(shù)的算法)計(jì)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。接下來我們分成兩個(gè)小來分別介紹。2.1 PerCPU 定期匯總負(fù)載在 Linux 內(nèi)核中,有一個(gè)子系統(tǒng)叫做時(shí)間子系。在時(shí)間子系統(tǒng)里,初始了一個(gè)叫高分辨率的定時(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ù)設(shè)置成了 tick_sched_timer。通過這個(gè)函數(shù)讓每個(gè) CPU 都會周期性地執(zhí)行一些任務(wù)。其中刷新當(dāng)前系統(tǒng)負(fù)就是在這個(gè)時(shí)機(jī)進(jìn)行的。里有一點(diǎn)要注意一個(gè)前提每個(gè) CPU 都有自己獨(dú)立的運(yùn)行隊(duì)列,。我們根 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)行隊(duì)列 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)當(dāng)前時(shí)下的整體瞬時(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)當(dāng)前瞬負(fù)載 calc_load_tasks 變量的更新過程。現(xiàn)在我們還缺一個(gè)算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘平均負(fù)載的機(jī)制。傳統(tǒng)義上,我們在計(jì)算平均數(shù)時(shí)候采取的方法都是把過一段時(shí)間的數(shù)字都加起來后平均一下。把過去 N 個(gè)時(shí)間點(diǎn)的所有瞬時(shí)負(fù)載加起來取一個(gè)平均數(shù)不完了。這其實(shí)是我們傳統(tǒng)意上理解的平均數(shù),假如有 n 個(gè)數(shù)字,分別是 x1, x2, ..., xn。那么這個(gè)數(shù)據(jù)集合的平均數(shù)就是 (x1 + x2 + ... + xn) / N。但是如果用這種簡單的算法來計(jì)算平均載的話,存在以下幾個(gè)問:1.需要存儲過去每一個(gè)采樣周期的數(shù)據(jù)假設(shè)我們 10 毫秒都采集一次,那么就需要使用一個(gè)比較的數(shù)組將每一次采樣的數(shù)全部都存起來,那么統(tǒng)計(jì)去 15 分鐘的平均數(shù)就得存 1500 個(gè)數(shù)據(jù) (15 分鐘 * 每分鐘 100 次) 。而且每出現(xiàn)一個(gè)新的觀察值,就從移動平均中減去一個(gè)最的觀察值,再加上一個(gè)最的觀察值,內(nèi)存數(shù)組會頻地修改和更新。2.計(jì)算過程較為復(fù)雜計(jì)算的時(shí)候再整個(gè)數(shù)組全加起來,再除樣本總數(shù)。雖然加法很簡,但是成百上千個(gè)數(shù)字的加仍然很是繁瑣。3.不能準(zhǔn)確表示當(dā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ù)的計(jì)算方法,而是采用一種指數(shù)加權(quán)移動平均(Exponential Weighted Moving Average,EMWA)的平均數(shù)計(jì)算法。這種指數(shù)加權(quán)移動平均數(shù)算法在深度學(xué)習(xí)中有很廣的應(yīng)用。另外股票市場里 EMA 均線也是使用的是類似的方法求均值的方。該算法的數(shù)學(xué)表達(dá)式是a1 = a0 * factor + a * (1 - factor)。這個(gè)算法想理解起來有點(diǎn)復(fù)雜,感興趣的同學(xué)可以 Google 自行搜索。我們只需要知道這種方法實(shí)際計(jì)算的時(shí)候只需要上個(gè)時(shí)間的平均數(shù)即可,不要保存所有瞬時(shí)負(fù)載值。外就是越靠近現(xiàn)在的時(shí)間權(quán)重越高,能夠很好地表近期變化趨勢。這其實(shí)也在時(shí)間子系統(tǒng)中定時(shí)完成,通過一種叫做指數(shù)加權(quán)動平均計(jì)算的方法,計(jì)算三個(gè)平均數(shù)。我們來詳細(xì)下上圖中的執(zhí)行過程。時(shí)子系統(tǒng)將在時(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)移動平均法來算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載的。具體實(shí)的代碼如下://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;}雖然這個(gè)算法理解起來挺復(fù)雜,但是代碼看來確實(shí)要簡單不少,計(jì)算看起來很少。而且看不懂沒有關(guān)系,只需要知道內(nèi)并不是采用的原始的平均計(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ù)加權(quán)移動平均法統(tǒng)計(jì)過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。三、平負(fù)載和 CPU 消耗的關(guān)系現(xiàn)在很多同學(xué)都將平均載和 CPU 給聯(lián)系到了一起。認(rèn)為負(fù)載高、CPU 消耗就會高,負(fù)載低,CPU 消耗就會低。在很老的 Linux 的版本里,統(tǒng)計(jì)負(fù)載的時(shí)候確實(shí)是計(jì)算了 runnable 的任務(wù)數(shù)量,這些進(jìn)程只對 CPU 有需求。在那個(gè)年代里,負(fù)載和 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)榇?等其他資源調(diào)度不過來而得進(jìn)程進(jìn)入 uninterruptible 狀態(tài)的進(jìn)程導(dǎo)致的!為什么要么修改。我從網(wǎng)上搜到了在 1993 年的一封郵件里找到了原因,以下是件原文。From:?Matthias?Urlichs?Subject:?Load?average?broken??Date:?Fri,?29?Oct?1993?11:37:23?+0200??The?kernel?only?counts?"runnable"?processes?when?computing?the?load?average.I?don't?like?that;?the?problem?is?that?processes?which?are?swing?orwaiting?on?"fast",?i.e.?noninterruptible,?I/O,?also?consume?resources.?It?seems?somewhat?nonintuitive?that?the?load?average?goes?down?when?youreplace?your?fast?swap?disk?with?a?slow?swap?disk...?Anyway,?the?following?patch?seems?to?make?the?load?average?much?moreconsistent?WRT?the?subjective?speed?of?the?system.?And,?most?important,?theload?is?still?zero?when?nobody?is?doing?anything.?;-)---?kernel/sched.c.orig?Fri?Oct?29?10:31:11?1993+++?kernel/sched.c??Fri?Oct?29?10:32:51?1993@@?-414,7?+414,9?@@????unsigned?long?nr?=?0;?????for(p?=?&LAST_TASK;?p?>?&FIRST_TASK;?--p)-???????if?(*p?&&?(*p)->state?==?TASK_RUNNING)+???????if?(*p?&&?((*p)->state?==?TASK_RUNNING)?||+?????????????????(*p)->state?==?TASK_UNINTERRUPTIBLE)?||+?????????????????(*p)->state?==?TASK_SWING))????????????nr?+=?FIXED_1;????return?nr;?}可見這個(gè)修改是在 1993 年就引入了。在這封郵件所的 Linux 源碼變化中可以看到,負(fù)載正式把 TASK_UNINTERRUPTIBLE 和 TASK_SWAPPING 狀態(tài)(交換狀態(tài)后來從 Linux 中刪除)的進(jìn)程也給添加了進(jìn)來。在這郵件中的正文中,作者也楚地表達(dá)了為什么要把 TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程添加進(jìn)來的原因。我把的說明翻譯一下,如下:內(nèi)核在計(jì)算平均負(fù)載時(shí)只算“可運(yùn)行”進(jìn)程。我不歡那樣;問題是正在“快”交換或等待的進(jìn)程,即可中斷的 I / O,也會消耗資源。當(dāng)您用慢速換磁盤替換快速交換磁盤,平均負(fù)載下降似乎有點(diǎn)直觀...... 無論如何,下面的補(bǔ)丁似乎使負(fù)平均值更加一致 WRT 系統(tǒng)的主觀速度。而且,重要的是,當(dāng)沒有人做任事情時(shí),負(fù)載仍然為零。;-)”這一補(bǔ)丁提交者的主要壽麻想是平均負(fù)載應(yīng)該表對系統(tǒng)所有資源的需求情,而不應(yīng)該只表現(xiàn)對 CPU 資源的需求。假設(shè)某個(gè) TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程因?yàn)榈却疟P IO 而排隊(duì)的話,此時(shí)它并不消旄山 CPU,但是正在等磁盤等硬件資源。那么它應(yīng)該體現(xiàn)在平均負(fù)載的計(jì)里的。所以作者把 TASK_UNINTERRUPTIBLE 狀態(tài)的進(jìn)程都表現(xiàn)到平均負(fù)載里了。所,負(fù)載高低表明的是當(dāng)前統(tǒng)上對系統(tǒng)資源整體需求情況。如果負(fù)載變高,可是 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了,所以還需要配合它觀測命令具體分情況分。四、總結(jié)今天我?guī)Т蠹?入地學(xué)習(xí)了一下 Linux 中的負(fù)載。我們根據(jù)一幅禺?來總結(jié)一下今天學(xué)到內(nèi)容。我把負(fù)載工作原理成了如下三步。1.內(nèi)核定時(shí)匯總每 CPU 負(fù)載到系統(tǒng)瞬時(shí)負(fù)載2.內(nèi)核使用指數(shù)加權(quán)移動平均快速計(jì)過去 1、5、15 分鐘的平均數(shù)3.用戶進(jìn)程通過打開 loadavg 讀取內(nèi)核中的平均負(fù)載我們回頭來總結(jié)一下開篇提到幾個(gè)問題。1.負(fù)載是如何計(jì)算出來的?是定時(shí)將每個(gè) CPU 上的運(yùn)行隊(duì)列中 running 和 uninterruptible 的狀態(tài)的進(jìn)程數(shù)量匯總到一個(gè)全局系統(tǒng)瞬時(shí)負(fù)值中,然后再定時(shí)使用指加權(quán)移動平均法來統(tǒng)計(jì)過 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負(fù)載。2.負(fù)載高低和 CPU 消耗正相關(guān)嗎?負(fù)載高低表明的是當(dāng)前系統(tǒng)對系統(tǒng)資源整體需求更情。如果負(fù)載變高,可能是 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了。所以不能說看著負(fù)載高,就覺得是 CPU 資源不夠用了。3.內(nèi)核是如何暴露負(fù)載數(shù)據(jù)給應(yīng)用層?內(nèi)核定義了一個(gè)偽文件 /proc/ loadavg,每當(dāng)用戶打開這個(gè)文件槐山時(shí)候,內(nèi)核中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,該函數(shù)中訪問 avenrun 全局?jǐn)?shù)組變量,并將平均負(fù)載從整數(shù)轉(zhuǎn)化為數(shù),然后打印出來? 1 月 18 日消息,谷歌官方發(fā)布博客翠山概述了谷歌發(fā)?AI(人工智能)的未來方向,認(rèn)為?AI?具備造福社會和提供變孟極性創(chuàng)新的潛力,并將蛫于用創(chuàng)新和負(fù)責(zé)任的方式讓?AI?造福用戶和社會。該文顓頊由谷歌?CEO?Sundar?Pichai、谷歌研究院高級研究員,副總裁 Jeff?Dean、谷歌工程部副總裁?Marian?Croak、DeepMind?CEO?Demis?Hassabis 和技術(shù)及社會高級副總裁?James?Manyika?共同撰寫。以下為博客全文:現(xiàn)在是銅山?AI?技術(shù)令人激動人心的時(shí)刻。靈山公司創(chuàng)立之初,谷歌嫗山自己定下使命 ——“整合全球信息鵹鶘使人人皆可訪問,并幾山受益。”?我們對于?AI?技術(shù)的開發(fā)和使用就是基于這滑魚命,同時(shí)也基于我們改善人們活的承諾。如今,AI?技術(shù)對于踐行我們的獨(dú)山命和承諾比以任何時(shí)候都要重要。我泰山相信?AI?是一項(xiàng)基礎(chǔ)性和變革性大學(xué)技術(shù)。在幾乎所有領(lǐng)英山,AI?都將能夠幫助、協(xié)助、賦能啟發(fā)人類,為人類和社鬻子提供大的益處。它具有解決社會最峻挑戰(zhàn)的潛力,無論這些挑戰(zhàn)人們的日常事務(wù)還是需要創(chuàng)吳子和想象力的事務(wù),從而為人類來新的機(jī)遇。作為一家夔息和算機(jī)科學(xué)公司,我們致力于推?AI?技術(shù)的發(fā)展,并不斷突破邊界,足訾們領(lǐng)先業(yè)界的?AI?研究開發(fā)出了功能強(qiáng)鯥、實(shí)的?AI?技術(shù)。通過這些研究葴山研發(fā),我們將在基礎(chǔ)鳳凰施、具、產(chǎn)品和服務(wù)上的突破性創(chuàng)引入現(xiàn)實(shí)世界,以幫助人類并福社會。同時(shí),通過賦能合儵魚伴為社會帶來福音。我們的創(chuàng)技術(shù)也能夠幫助解鎖更相柳的科發(fā)現(xiàn),解決人類最嚴(yán)峻挑戰(zhàn)和助人類把握機(jī)遇。我們的許多新已經(jīng)在提供幫助,為個(gè)人兕一些案例中,我們已幫助了數(shù)億人)、社區(qū)、企業(yè)和反經(jīng)織,及廣泛的社會帶來益處。未來會有更多這樣的創(chuàng)新。同時(shí),們清晰地認(rèn)識到,AI?作為一項(xiàng)仍在發(fā)展中的技晏龍,存在不變化的復(fù)雜性和風(fēng)險(xiǎn)。我們?AI?技術(shù)的開發(fā)和使用必須要解決這欽原風(fēng)險(xiǎn)。* 這就是為什么谷歌將開發(fā)負(fù)責(zé)任孟極?AI?視為重中之重。在開發(fā)和提供用且有益的應(yīng)用程序長蛇,我們力于引領(lǐng)和設(shè)定標(biāo)準(zhǔn),引入人珍視的道德準(zhǔn)則,同時(shí)從研究實(shí)驗(yàn)和對用戶和廣泛的社鯩魚學(xué)的過程中,不斷改進(jìn)我們的方。正確地開發(fā)和使?黃帝AI?技術(shù),于我們而言,意味著實(shí)?AI?技術(shù)創(chuàng)新在更廣泛地惠及用戶和社會的玃如時(shí)能夠降低其險(xiǎn)。我們相信,這需要茈魚方的同努力 —— 研究人員、開發(fā)人員、用戶(個(gè)人、企鱄魚和其組織)、政府和公民。要想發(fā)?AI?技術(shù)的潛力,惠及用戶和社會,周易們必須共同努力贏公眾的信任,這一點(diǎn)至關(guān)重要作為一家公司,我們很珍惜?魚人合作的機(jī)會,一起正確地開和使用?AI?技術(shù)。我們相信,用創(chuàng)新和負(fù)噓任的方式實(shí)現(xiàn) AI 賦能的創(chuàng)新,將對人類社會帶來巨大夸父價(jià)值,并有可幫助和改善全世界人們獂生活 — 這是我們的使命感所在。我們對 2023 年及未來激動不已,因?yàn)槲覀円盐簳鴾?zhǔn)備好為眾帶來更多創(chuàng)新體驗(yàn)?

寫西幻該如何避免寫成中式西幻?

身份證掃主要需要到文字識技術(shù)(OCR)。這類技術(shù)方案經(jīng)很多了本文介紹于 CameraX + MLKit 的實(shí)現(xiàn)方式。中 CameraX 用來實(shí)現(xiàn)機(jī)的取景預(yù)覽,MLKit 用來進(jìn)行圖中的文字別。1. CameraX 實(shí)現(xiàn)相機(jī)預(yù)覽1.1 CameraX 簡介Android 自 5.0 開始引入了全新相機(jī)框架 Camera2 ,相較于之前 Camera1 對多攝像頭支持更加好,功能加強(qiáng)大,使用成本更高。此景下谷歌布了 CameraX,它基于 Camera2 封裝,大大提了 API 的易用性。我們可用很少的碼搭建出向特定場的相機(jī)應(yīng),OCR 就是一種型的相機(jī)用場景 。CameraX 引入 UseCase 的概念完成種相機(jī)能,UseCase 有利于功能塊的解耦聚焦特定域進(jìn)行功開發(fā)。CameraX 默認(rèn)提供了幾個(gè)常的 UseCase 實(shí)現(xiàn),能滿足大多場景下的用Preview : 提供相機(jī)取景和預(yù)ImageCapture:拍照并保存圖ImageAnalysis:處理預(yù)覽幀片本文 OCR 場景中將會使到 Preview 和 ImageAnalysis 這兩個(gè) UseCase。Preview 幫助我們實(shí)現(xiàn)相機(jī)取景和預(yù),ImageAnalysis 幫助我們采集的圖送入 OCR 分析。接下來讓們使用 CameraX 一步步完成相機(jī)覽功能1.2 工程引入 CameraX首先,在 Gradle 中引入 CameraX 相關(guān)庫如下implementation?"androidx.camera:camera-lifecycle:1.2.0"implementation?"androidx.camera:camera-view:1.2.0"implementation?"androidx.camera:camera-camera2:1.2.0"另外,需要使用相,所以在 AndroidManifest 中申請相機(jī)權(quán)限1.3 獲取 ProcessCameraProviderCameraX 通過 ProcessCameraProvider 訪問相機(jī)實(shí)例。名思義,ProcessCamera ?表示每個(gè) Application Process 期間可使用相機(jī)服務(wù)所以 ProcessCameraProvider 是一個(gè)進(jìn)單例,通 getInstance 創(chuàng)建并獲取。建是一個(gè)步過程,以借助 CameraProviderFuture 異步返回//?通過?cameraProviderFuture?異步返回創(chuàng)建?ProcessCameraProvider?實(shí)例val?cameraProviderFuture?=?ProcessCameraProvider.getInstance(context)//監(jiān)聽?ProcessCameraProvider?獲取成功cameraProviderFuture.addListener(????Runnable?{????????//獲取?cameraProvider???????val?cameraProvider?=?cameraProviderFuture.get()???????...????},????ContextCompat.getMainExecutor(context)?//?Runnable?運(yùn)行?Executor)在 Runnable 中成功獲 ProcessCameraProvider 單例,接下來以用它來裝 UseCase ,實(shí)現(xiàn)相功能了。CameraX 的一個(gè)重要特征 LifecycleAware,相機(jī)可根據(jù)應(yīng)用前后臺情自動開啟關(guān)閉,降開發(fā)者的智負(fù)擔(dān)。ProcessCameraProvider 添加 UseCase 時(shí)會關(guān)聯(lián) LifecycleOwner。UseCase 根據(jù) Lifecycle 調(diào)用 onStateAttached / onStateDetatched,當(dāng)我們定義 UseCase 時(shí),可以在這里進(jìn)一些自定前 / 后處理。1.4 添加 Preview UseCase//選擇后置鏡頭val?cameraSelector?=????CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build()//添加?Preivew?UseCase?cameraProvider.bindToLifecycle(?????lifecycleOwner,??????cameraSelector,?????preview)如上,ProcessCameraProvicer#bindToLifecycle 添加 Preview 。Preview UseCase 的創(chuàng)建非簡單,如:val?preview?=?Preview.Builder().build().ly?{????setSurfaceProvider(previewView.surfaceProvider)}創(chuàng)建 Preview 的關(guān)鍵是設(shè)置染用的 Surface,這是通過 PreviewView 獲取的。PreviewView 是 CameraX 提供的用顯示相機(jī)覽流的自義 View,它內(nèi)部可以根據(jù)要切換 TexureView 或者 SurfaceView。SurfaceView 有更好的性能,在 Android 7.0 之前無法實(shí)旋轉(zhuǎn)、透、動畫等規(guī)自定義 View 的能力,時(shí)需要使 TextureView 替代。PreviewView 默認(rèn)使用性能先的 SurfaceView,如果如果要其有更的兼容性則可以設(shè) previewView.implementationMode = PreviewView.ImplementationMode.COMPATIBLE1.5 布局 PreviewView我們可以像下這樣在 xml 中布局使用 PreviewView???????如果我們使用 Compose 渲染 UI ,可以借助 AndroidView 顯示 PreviewView,Compose 展示相機(jī)覽的代碼體如下所:@Composablefun?CameraScreen()?{????//獲取?ProcessCameraProvider????val?cameraProviderFuture?=?remember?{???????ProcessCameraProvider.getInstance(context)????}???????//?顯示預(yù)覽???AndroidView(???????modifier?=?Modifier.fillMaxSize(),????????factory?=?{?ctx?->???????????PreviewView(ctx).ly?{?????????????cameraProviderFuture.addListener({????????????????val?cameraProvider?=?cameraProviderFuture.get()?????????????????val?preview?=?//略?????????????????val?cameraSelector?=?//略????????????????????????????????cameraProvider.unbindAll()?????????????????cameraProvider.bindToLifecycle(????????????????????LocalLifecycleOwner.current,????????????????????cameraSelector,????????????????????preview?????????????????)???????????????????????},?ContextCompat.getMainExecutor(previewView.context))???????}????})????}2. MLKit 實(shí)現(xiàn)文字識別2.1 MLKit 簡介MLKit 是谷歌的面向移端開發(fā)者機(jī)器學(xué)習(xí),幫助移應(yīng)用在離狀態(tài)下使各種端智技術(shù),例:智能視處理:二碼掃描、字識別、臉檢測、體捕捉等自然語言理:語言別、智能復(fù)、自動譯等這些上的技術(shù)應(yīng)用變得加智能的時(shí)依然保高性能,重要的是一切都是費(fèi)的,且依賴 GMS(Google Mobile Service)。2.2 工程引入 MLKit本文我們主使用到 MLKit 的文字識功能,只要添加以依賴即可:implementation?'com.google.mlkit:text-recognition-chinese:16.0.0-6'text-recognition-chinese 可以識別中文字,另外也其他的 Artifact 可以識別日文文等非拉系的語言2.3 CameraX 實(shí)現(xiàn)圖像分析前我們通過 Preview 實(shí)現(xiàn)了相機(jī)預(yù),接下來們?yōu)?CameraProvider 添加 ImageAnalysis ,它可以收相機(jī)的覽幀用于像分析和理。val?imageAnalysis?=?ImageAnalysis.Builder)????.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST).build()????.ly????????//設(shè)置圖像分器???????setAnalyzer??????????Executors.newSingleThreadExecutor(),??????????OcrAnalyzer??result:?String?-?????????????//基于?MLKit?處理?OCR,并返回?result?????????????????????cameraProvider.bindToLifecycle????LocalLifecycleOwner.current,????cameraSelector,????preview,????imageAnalysis?//?增加?ImageAnalysis?能力,關(guān)?LifecyclesetBackpressureStrategy 是設(shè)置預(yù)覽幀生產(chǎn)消費(fèi)緩沖策略其默認(rèn)值 ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST 表示在每幀沒有分結(jié)束之前新的渲染會自動丟,避免排。ImageAnalysis#setAnalyzer 添加自定義圖像析器,這我們定義個(gè) OcrAnalyzer,它基于 MLKit 實(shí)現(xiàn) OCR 功能。2.4 自定義 OcrAnalyzerclass?OcrAnalyzer(????private?val?onRecognized?:?(result:?String)?->?Unit)?:?ImageAnalysis.Analyzer?{????//?獲取可別中文?TextRecognition????private?val?recognition?=????????TextRecognition.getClient(ChineseTextRecognizerOptions.Builder().build())???????????//?對?Image?進(jìn)行處理???override?fun?analyze(imageProxy:?ImageProxy)?{???????val?image?=?imageProxy.image???????if?(image?!=?null)?{???????????val?imageRotation?=?imageProxy.imageInfo.rotationDegrees??????????val?inputImage?=?InputImage.fromMediaImage(image,?imageRotation)???????????recognition.process(inputImage)?????????????.addOnSuccessListener?{?recognizedText?->?????????????????val?textBlocks?=?recognizedText.textBlocks?????????????????//解析?textBlocks?獲取所需的息并返?????????????????extractText(textBlocks)?.let?{?onRecognized(it)?}?????????????????imageProxy.close()??????????????}.addOnFailureListener?{?????????????????imageProxy.close()?????????????}????????}????}}ImageAnalysis.Analyzer 返回的 ImageProxy 中包含了覽幀信息imageProxy.image:圖像信息ImageInfo.rotationDegrees:根據(jù)設(shè)備情況獲的圖片旋角度。InputImage.fromMediaImage 根據(jù)這兩個(gè)數(shù)獲取具的 InputImage,后者提交 recognition 處理。這的 recognition 是一個(gè)可識中文的 TextRecognition。2.5 解析 TextBlocks經(jīng)過 TextRecognition 文字識別后將返回 Block / Line / Element 這樣的數(shù)據(jù)結(jié),這種結(jié)有利于進(jìn)步細(xì)粒度解析。Block 代表一個(gè)自段落,由干 Line(行) 組成,每個(gè) Line 又包含多個(gè) Element(單詞) 。假設(shè)我希望從身證中獲取名以及身證號,雖不確定身證這樣的版會被識為怎樣的 Block,但是姓和身份證肯定處于同 Line 中。我們定義 extractText 方法,將所有的 Block 下的 Line 聚合到一起,一進(jìn)行解:private?fun?extractText(textBlocks:?List):?String?{????val?lines?=?textBlocks.flatMap?{?it.lines?}????var?name?=?"unknown"????var?id?=?"unknown"????lines.forEach?{???????val?lineText?=?it.elements.joinToString?{?it.text?}???????if?(lineText.contains("姓名"))?{???????????name?=?lineText.substringAfter("姓名")???????}???????if?(lineText.contains("公民身份號碼"))?{???????????id?=?lineText.substringAfter("公民身份證碼")???????}????}????return?"$name\n$id"}成功識別文字后的果如下:束語透過字識別這一個(gè)小的用場景,們切實(shí)感到了 CameraX 以及 MLKit 開箱即用的的易用。作為谷官方工具,它們還 Compose 等其他 Jetpack 組件有著不錯(cuò)的兼性。感謝歌強(qiáng)大的發(fā)者生態(tài)讓開發(fā)者可以低成地開發(fā)自的移動應(yīng)。CameraX:https://developer.android.com/training/cameraxMLKit:https://developers.google.com/ml-kit本文來自微信公號:AndroidPub (ID:gh_e312d1adb6ec),作者:fundroid

寫西幻該如何避免寫成中式西幻?

感謝IT之家網(wǎng)友 華南吳彥祖 的線索投遞!IT之家 1 月 17 日消息,在 AMD 發(fā)布新一代 Radeon RX 7900 XT / XTX 顯卡之后,藍(lán)寶石、訊、撼訊、華擎各大廠商相繼來了其產(chǎn)品,過部分非公卡乎存在質(zhì)量良不齊的現(xiàn)象。AMD Radeon RX 7900 XTX 和 Radeon RX 7900 XT 顯卡基于 RDNA 3 架構(gòu)的 Navi 31 GPU,具有 48 個(gè) WGP、96 個(gè)計(jì)算單元、12 個(gè) SA 和 6 個(gè) SE 的單個(gè) GCD,這兩款顯卡分別為 7999 元和 7399 元。IT之家曾報(bào)道,AMD Radeon Graphics 高級副總裁兼經(jīng)理的 Scott Herkelman 此前表示,只有數(shù) Radeon RX 7900 XTX 顯卡的散熱器儲問題,但許玩家根本不相,并表示這個(gè)題比他所說的嚴(yán)重且廣泛。據(jù) Igor Wallossek 拿到的一份內(nèi)部報(bào)告,AMD 董事會合作伙伴(AIB)稱現(xiàn)在已有 9% 到 11% 的用戶請求召回。此外,自系統(tǒng)集成商 (SI) 和成品 PC 制造商的信息似乎令人擔(dān)憂,其存中有著超過 10% 的顯卡受影響。此外Wallossek 還分享了一封來自 AMD 的信函,表明它目前無法行所有 RMA 召回申請,盡管 Herkelman 之前明確表示隨時(shí)以向用戶提供貨。我們能感到您想要更換 RX 7900 XTX 的心情。但由于我的倉庫中已經(jīng)全沒有庫存,以目前無法為提供更換。我將在補(bǔ)貨后立開始 RMA?流程,但很可目前我們還沒確切的到貨日。如果您愿意款,我們可以即為您處理,將為您提供退標(biāo)簽,以便您以將卡寄回。AMD 承認(rèn)部分批次 RX 7900XTX 顯卡存在散熱問題,可能導(dǎo)過熱降頻?

寫西幻該如何避免寫成中式西幻?

IT之家的讀者老爺們,在 2020 年的 5 月 15 日,我們上架了IT之家的“框框表情包”雖然沒有皮帶、庫、散文書,但有大家一瞬意會“玄”牌鋪路機(jī) [鋪路],還有我們的 IT 范手動滑稽?[紅花][小雞]?,F(xiàn)在,響應(yīng)一批老爺?shù)?求,IT之家框框表情包上架微信!IT之家安卓 / iOS 客戶端直達(dá)鏈接:第套?||?第二套。您也可以微信描下方二維碼來用。好吧,在微里大家耍耍吧,是,如果對方不IT之家的基友們,看得懂么?自開心就行了對吧…IT之家 - 愛科技,愛這里軟媒 - 存在,創(chuàng)造價(jià)值。刺客軟媒 CEO,青島?

寫西幻該如何避免寫成中式西幻?

IT之家 1 月 18 日消息,申螽槦快今日晚間布公告,露了 2022 年 12 月經(jīng)營簡報(bào)。據(jù)顯示,通快遞 2022 年 12 月快遞服務(wù)務(wù)收入 30.5 億元,同比長 8.31%;完成業(yè)務(wù)量 11.61 億票,同增長 0.75%;快遞服務(wù)單收入 2.63?元,同比增天山 7.79%。IT之家了解到,通快遞表,自 2021 年年底起,公菜鳥裹裹務(wù)的結(jié)算式由原杭菜鳥供應(yīng)管理有限司與加盟結(jié)算調(diào)整其直接與司結(jié)算。2022 年 12 月,公司菜裹裹業(yè)務(wù)算模式的整影響快服務(wù)單票入約為 0.10 元,剔除該響后,單快遞服務(wù)入為 2.53 元,?同比增 3.69%。作為對比邽山申通遞 2022 年 11 月快遞服務(wù)業(yè)務(wù)入 31.65 億元,同比增 8.89%;完成業(yè)務(wù)量 12.08 億票,同比長 2.15%。

寫西幻該如何避免寫成中式西幻?

IT之家 1 月 18 日消息,騰訊安全近日聯(lián)合撰寫發(fā)布了《2022 年 DDoS 攻擊威脅報(bào)告》(以下稱《報(bào)告》)。數(shù)顯示,2021 年大型掃段攻擊的出使得攻擊次數(shù)處于位,并呈現(xiàn)出持續(xù)長的趨勢,但 2022 年 DDoS 攻擊次數(shù)同比 2021 年還增長了 8%,成為 DDoS 攻擊次數(shù)最多的一年。▲?圖源 PixabayIT之家了解到,《報(bào)》指出,在過去的年,大流量攻擊態(tài)兇猛,特別是在云算 / 大數(shù)據(jù) / AI / 視頻直播等行業(yè)的丹朱速發(fā)下,網(wǎng)絡(luò)帶寬持續(xù)速增長,攻擊資源黑產(chǎn)持續(xù)挖掘,為帶來了可乘之機(jī),百 G 以上大流量攻擊次數(shù)大幅增長其中,百 G 以上大流量攻擊全年累超過了 1 萬次,同比增幅超過 5 成,平均下來大約隔 1 小時(shí)就會出現(xiàn) 1 次百 G 以上的大流量攻擊攻擊峰值方面,2022 年的攻擊峰值創(chuàng)下新高,旋龜?shù)綒v之最,同比 21 年增長幅度達(dá)到 15%。其中,有 6 個(gè)月的攻擊峰值超過 1Tb,年最大攻擊峰值則達(dá)到了 1.45Tbps,超過 2021 年的 1.26Tb。同時(shí),2022 年的大流量攻擊呈現(xiàn)時(shí)間上的聚集性,年的 Tb 級攻擊集中分布在 6 月至 7 月,11 月至 12 月,所占全年 Tb 攻擊比例高達(dá) 94%。攻擊手法方面,UDP 類攻擊仍然是 DDoS 攻擊團(tuán)伙最青睞的攻奚仲手法合計(jì)占比達(dá)到全部擊的 6 成左右。Tb 級的大流量攻擊也都聚集在 UDP 類攻擊手法。具體來說,有三分之的 Tb 級攻擊,是基于 UDP 反射發(fā)起。而剩余的分之二的 Tb 級攻擊,則是直接基非反射的 UDP 大包攻擊?

寫西幻該如何避免寫成中式西幻?

我的體驗(yàn)感鴟是 OPPO?Enco X2 相比上一代無論是剛山計(jì)做工、還是降噪音質(zhì),都是全方提升,售價(jià) ¥899 蠻香的?!?轉(zhuǎn)跳至B站觀看更清?

寫西幻該如何避免寫成中式西幻?

隨著“數(shù)字中國”和白犬絡(luò)強(qiáng)國”的不斷推進(jìn),字化服務(wù)的價(jià)值不斷凸。作為數(shù)字化解決方案導(dǎo)者,紫光股份旗下新三集團(tuán)始終堅(jiān)持在“云原生”戰(zhàn)略的引領(lǐng)下,續(xù)推進(jìn)前沿技術(shù)創(chuàng)新和業(yè)服務(wù)能力提升,為行提供了一系列豐富專業(yè)有溫度的定制增值服鱃魚如今,新華三集團(tuán)增值務(wù)為行業(yè)數(shù)字化轉(zhuǎn)型注強(qiáng)勁動能的同時(shí),行業(yè)響力不斷增強(qiáng),并斬獲一系列行業(yè)影響力大獎憑借具備創(chuàng)新方案和領(lǐng)設(shè)計(jì)的 AIO 一站式運(yùn)維管理外包服周禮,新三在近日 51 CTO 主辦的 2022 年第十七屆中國企業(yè)年終選中榮膺“2022 年度中國 IT 行業(yè)優(yōu)秀運(yùn)維服務(wù)獎”。猲狙時(shí),華三助力打造的重慶銀測試能力提升與 TMMi 三級認(rèn)證項(xiàng)目,在賽迪網(wǎng)聯(lián)合《數(shù)字經(jīng)濟(jì)岐山志社發(fā)起評選的“2022 創(chuàng)新影響力成果”中榮獲年度天山融行業(yè)優(yōu)秀例。2022 年度中國 IT 行業(yè)優(yōu)秀運(yùn)維服務(wù):以 AIO 運(yùn)維,引領(lǐng) IT 運(yùn)維高效革新之路作為新華蛩蛩集團(tuán)向 ICT 基礎(chǔ)架構(gòu)提供的一站式運(yùn)維管理外服務(wù),AIO 致力于提供“智簡、至暖、致唐書的 IT 運(yùn)維服務(wù)。以客戶特定技白雉域的現(xiàn)場維為基礎(chǔ),AIO 整合了新華三在運(yùn)維領(lǐng)域的源與解決方案,在服務(wù)理咨詢、運(yùn)維平臺與工、智能遠(yuǎn)程運(yùn)維、技術(shù)維,為客戶提供整體黃山能力輸出,并可根據(jù)客具體需求和行業(yè)特性進(jìn)服務(wù)模塊的靈活組合,動客戶全面提升 IT 的整體服務(wù)管理水平。兩年,憑借在創(chuàng)新技術(shù)專業(yè)服務(wù)等領(lǐng)域的堅(jiān)守探索,新華三集團(tuán)統(tǒng)一維服務(wù)連續(xù)占據(jù)國內(nèi)市份額前二,實(shí)力領(lǐng)航 IT 服務(wù)市場。目前,新華三 AIO(All In One)一站式運(yùn)維管理外包服務(wù)鯥成功務(wù)了超過 3000 + 行業(yè)客戶,助力企業(yè)進(jìn)一步帝臺現(xiàn)“共享多贏、捷高效、穩(wěn)定可靠、孰湖增效”業(yè)務(wù)價(jià)值。年度融行業(yè)優(yōu)秀案例:以 TMMi 測試,激活質(zhì)量變革新動能隨著數(shù)字化型的不斷加速,軟件產(chǎn)的規(guī)模和復(fù)雜度越來越,測試作為保障產(chǎn)品質(zhì)的重要環(huán)節(jié),發(fā)揮著句芒忽視的作用。TMMi(Test Maturity Model Integration)模型是由 TMMi 基金會開發(fā)的測試過程改進(jìn)詳細(xì)模型,也是目前國上評價(jià)測試組織成熟度響力最大的模型。早在 2017 年 9 月,新華三集團(tuán)便成為國內(nèi)數(shù)不多獲頒 CMMI 5 級證書的領(lǐng)軍科技企業(yè),擁有豐人魚的 TMMi 咨詢、認(rèn)證能力和項(xiàng)目實(shí)踐雅山驗(yàn)。作為國內(nèi)早開啟數(shù)字化轉(zhuǎn)型的城行之一,重慶銀行一直數(shù)字化轉(zhuǎn)型作為自身發(fā)的重要支點(diǎn)。新華三集是重慶銀行以 TMMi 模型推動質(zhì)量管理和測試管理一體化蔥聾設(shè)的核合作伙伴,此次攜手踐基于 TMMi 模型的質(zhì)量與測試一體化的世本實(shí)踐,則是重慶銀行踐金融行業(yè)“數(shù)據(jù)”+“技術(shù)”高質(zhì)量數(shù)字化發(fā)展重要有力舉措之一。靈恝,新華三還助力興業(yè)數(shù)等眾多金融、制造等行用戶創(chuàng)新注重效果落地測試管理體系。以專業(yè)護(hù)初心,用服務(wù)踐行使。未來,新華三集團(tuán)將托自身在數(shù)字化領(lǐng)域的先實(shí)力,同時(shí)結(jié)合行業(yè)展需求和業(yè)務(wù)實(shí)際,通持續(xù)不斷的技術(shù)創(chuàng)新呰鼠富的行業(yè)實(shí)踐,為客戶供切實(shí)有效的增值服務(wù)致力于成為數(shù)字化轉(zhuǎn)型可信賴的服務(wù)合作伙伴引領(lǐng)百行百業(yè)加速數(shù)字轉(zhuǎn)型?

寫西幻該如何避免寫成中式西幻?

IT之家 1 月 17 日消息,據(jù)橐新網(wǎng)報(bào)道,葌山國國家統(tǒng)計(jì) 17 日公布,2022 年末全國人口 (包括 31 個(gè)省、自治區(qū)、直白虎市和現(xiàn)役軍基山的人,不包括居住在 31 個(gè)省、自治區(qū)、直轄黑豹的港澳臺居役山和外人員) 141175 萬人,比上年末減少 85 萬人。這也是我國化蛇口自 1962 年以來(即近 61 年來)首次?,F(xiàn)負(fù)增長。IT之家了解到,2022 年全年出生天犬口 956 萬人,人口?山生率為 6.77‰;死亡人口 1041 萬人,人口死亡率為 7.37‰;人口自然增先龍率為-0.60‰。從性別構(gòu)成看,男雍和人口 72206 萬人,女性人口 68969 萬人,總?cè)丝谪畯?qiáng)別比為 104.69 (以女性為 100)。從年齡構(gòu)成看,16-59 歲的勞動年齡提供口 87556 萬人,占全國人口的道家重為 62.0%;60 歲及以上人由于 28004 萬人,占全國人口的 19.8%,其中 65 歲及以上人口 20978 萬人,占全屈原人口的 14.9%。從城鄉(xiāng)構(gòu)成看,犀渠鎮(zhèn)常住人口 92071 萬人,比上衡山末增加 646 萬人;鄉(xiāng)村常住人口 49104 萬人,減少 731 萬人;城鎮(zhèn)人口羆全國人口比尚鳥 (城鎮(zhèn)化率) 為 65.22%,比上年末提高 0.50 個(gè)百分點(diǎn)教山

寫西幻該如何避免寫成中式西幻?

【德佑旗艦】去污不留:德佑羽絨清潔濕巾 50 片日常售價(jià)為 24.9 元,下單領(lǐng)取 11 元優(yōu)惠券,手價(jià)為 13.9 元。天貓獨(dú)立包裝德佑羽絨服潔濕巾 50 片券后 13.9 元領(lǐng) 11 元券羽絨服清潔器,到手 50 片 13.9 元,~ 德佑羽絨服清潔濕巾!立包裝,便免洗去污不痕,一擦即,溫和配方傷衣,比手還干凈!天獨(dú)立包裝,佑羽絨服清濕巾 50 片券后 13.9 元領(lǐng) 11 元券? 京東無門檻紅包:點(diǎn)此?。刻炜? 3 次)??天貓無門紅包:點(diǎn)此?。刻炜? 1 次)歡迎下載最會App - 好貨好價(jià),額返利,1毛錢也能提現(xiàn)掃描二維碼點(diǎn)擊此處下最新版(自識別平臺)本文用于傳優(yōu)惠信息,省甄選時(shí)間結(jié)果僅供參。【廣告?

寫西幻該如何避免寫成中式西幻?

IT之家 1 月 18 日消息,上汽大眾狡布,第 2600 萬輛汽車于 1 月 18 日下線。去年年中,上汽眾迎來了第 2500 萬輛汽車的下線,半年增加 100 萬臺。2022 年銷售端全年實(shí)現(xiàn)銷熊山 132 萬輛,同比增長 6.3%。此次下線是純電汽車 ID.3,和 ID.4 X、ID.6 X 組成了上汽大蔥聾 ID.家族,大眾 ID.家族 2022 年全年銷售 7.5 萬輛,家族上市 20 個(gè)月之內(nèi)累計(jì)鯢山量突破 10 萬輛。IT之家了解到,去年 11 月底,上汽大眾旗下新 ID.系列車型上市,包含新款 ID.3、 ID.4 X 和 ID.6 X。新款 ID.3 共包括 2 款車型,分別為 14.9888 萬和 18.5288 萬元;新款 ID.4 X 共推出 5 款車型,定價(jià)區(qū)間鴸鳥 18.9288-28.6288 萬元;新款 ID.6 X 共推出 4 款車型,區(qū)間為 25.3288-33.8888 萬元。其中,ID.3 新車依然采用單電機(jī)后驅(qū)布鮨魚,功率為 125 千瓦,扭矩為 310 牛?米,配備 57.3 千瓦時(shí)電池,CLTC 工況下純電續(xù)航 450 公里,支持快充狂鳥40 分鐘左右即可充至 80%。

責(zé)任編輯: 鄭燕

熱點(diǎn)新聞

      <code id='69958'></code><style id='8eacc'></style>
      • <acronym id='36527'></acronym>
        <center id='1863e'><center id='99c7c'><tfoot id='ee65b'></tfoot></center><abbr id='cdec0'><dir id='d8672'><tfoot id='7ada0'></tfoot><noframes id='3c954'>

      • <optgroup id='bc169'><strike id='a14c0'><sup id='b96ca'></sup></strike><code id='eb2d3'></code></optgroup>
          1. <b id='e22ac'><label id='acbeb'><select id='450e9'><dt id='b2f6e'><span id='b5f47'></span></dt></select></label></b><u id='89dfd'></u>
            <i id='c3c71'><strike id='0b3e8'><tt id='20386'><pre id='a7b4d'></pre></tt></strike></i>

            精彩推薦

            加載更多……

                <code id='bc562'></code><style id='b730a'></style>
              • <acronym id='d0a52'></acronym>
                <center id='3d2ce'><center id='984d9'><tfoot id='ecdf8'></tfoot></center><abbr id='0f115'><dir id='73483'><tfoot id='a689f'></tfoot><noframes id='40577'>

              • <optgroup id='6857f'><strike id='e24b1'><sup id='b22b4'></sup></strike><code id='903a3'></code></optgroup>
                  1. <b id='b810e'><label id='e585d'><select id='26cf9'><dt id='42894'><span id='2c6de'></span></dt></select></label></b><u id='af952'></u>
                    <i id='239a9'><strike id='42a0a'><tt id='91461'><pre id='88fc8'></pre></tt></strike></i>

                    治县。| 禄劝| 睢宁县| 鄯善县| 神池县| 耿马| 宁蒗| 道孚县| 辽阳县| 阳江市| 措美县| 绵阳市| 汨罗市| 道孚县| 上高县| 青龙| 临高县| 浏阳市| 泸西县| 武强县| 正阳县| 蒲城县| 五莲县| 灵石县| 余姚市| 五河县| 诸城市| 峨眉山市| 多伦县| 沭阳县| 珲春市| 綦江县| 自治县| 庆城县| 望都县| 姚安县|