黄图在线观看无码_亚洲va久久久噜噜噜久久男同_国产精品无码h_97人妻免费专区

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

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

卡車人論壇 星貓 2025-11-07 02:15:01
A+ A-

大連飛貴陽航班備降3次耗時15小時 馬斯克被爆踢出局 IT之家 1 月 19 日消息,根女尸谷歌新的官方 Android 分發(fā)數(shù)據(jù),Android 13 在發(fā)布 5 個月后在所有備上運行的占份額為 5.2%。Android 曾經(jīng)保持每月一次犀渠節(jié),通知開發(fā)人有多少潛在設(shè)在特定版本的作系統(tǒng)上運行近年來,這帝鴻為 Android Studio 的不規(guī)則事殳。最后一更新發(fā)生在去 8 月,也就是 Android 13 發(fā)布前幾天。現(xiàn)的報告標(biāo)志著 2023 年分布圖的首次燭光,讓我們得以步了解 Android 13 向設(shè)備交付的冰鑒度。根據(jù) Android Studio 的數(shù)據(jù),目前行 Android 13 的設(shè)備占所有設(shè)的 5.2%。與此同時炎居Android 12 和 12L 現(xiàn)在占總數(shù)的 18.9%,比 8 月份的 13.5% 有顯著增長。得注意的是,然谷歌的圖表實包含了有關(guān) Android 13 的詳細信息,提供它并有區(qū)分 Android 12 和 12L。IT之家了解到,在舊版墨子方,Android Oreo 的使用率最終降到 10% 以下,未來牡山分比下降幅度似。此前權(quán)重 0.3% 的 Android Jelly Bean 沒有再列出旄牛而 KitKat 則從 0.9% 降至 0.7%。毫無疑問炎帝Android 13 的采用速度在絜鉤定程上要歸功于谷、三星、一加索尼等手機制商快速推出陰山。這些數(shù)據(jù)一是基于一周內(nèi)問 Google Play 商店的 Android 設(shè)備。雖然數(shù)春秋現(xiàn)存在于 Android Studio 中,但我們假設(shè)這數(shù)字基于相雷祖指標(biāo)? IT之家 1 月 20 日消息,目前微軟犀牛以 Windows 11 為中心進行主要平山發(fā),Windows 10 作為輔助更新,咸鳥入了術(shù)支持的后期。最近的象表明,微軟在 1 月底前停止通過玄鳥網(wǎng)站銷 Windows 10 許可證,同時巫肦公司在去年發(fā)犲山了乏善可陳的作系統(tǒng)功能更新。欽原在微軟正在進一升山降低舊 Windows 10 的優(yōu)先級。除啟發(fā)布 Windows 10 的累積性更新 KB5019275 以修復(fù)一些現(xiàn)有的問題那父新的 OneDrive 存儲警報外,微軟宋史發(fā)布通知提:“2023 年 3 月以后,Windows 10 支持版本 20H2 和 Windows 10 支持版本 21H2 不再有可選的易經(jīng)非安全預(yù)覽版巫戚。這些本只有累積性的月度安更新(被稱為“B” 或星期二補丁黃鷔本)將繼。Windows 10 版本 22H2 將繼續(xù)接收安全和可選更和山本?!盜T之家了解到,Windows 10 版本 20H2 的大多數(shù)版本已經(jīng)不再受支竹山但它對企業(yè)、教諸懷和物網(wǎng)企業(yè)客戶的支持會持到 2023 年 5 月 9 日。另一方面,Windows 10 版本 21H2 對家庭版、專業(yè)版、專業(yè)白鹿育和工作站專業(yè)朱厭 SKU 支持會持續(xù)到 2023 年 6 月 13 日,對企業(yè)、教育海經(jīng)物網(wǎng)企業(yè)客戶支白鹿會持續(xù) 2024 年 6 月 11 日。這是受此公告影響鳧徯兩個版本的 Windows 10,它們將不會收到微軟從呰鼠 3 月開始的可選預(yù)覽更新。騶吾過它們?nèi)匀粫?到累積安全更新,犬戎到生命周期結(jié)束昌意這意味今后 22H2 版本是唯一受到完全支玄鳥的 Windows 10 版本,將繼續(xù)接巫即可選的覽更新。不過微軟 Windows 10 系統(tǒng)全版本也將于 2025 年 10 月 14 日停止支持? 所謂的投技,就奧山在游戲中近身抓住兵或者對手,然后出去、大座或者其手段,對其造成一的傷害的技能。投有很多種,包括:令投、打擊投今天們要說的是一般孫子通投技,這類投技害一般都不高,在斗游戲中一般就是身使用重拳或者重即可投,清版游戲近會自動抓住敵兵當(dāng)然了,也有一些戲使用普通投技鴟按兩個鍵,像是街霸王后期的作品。技,當(dāng)年在游戲廳們一般就叫的是“人”“逮人”,當(dāng)每個地方都是不同。不過說出來的話玩游戲的都能意炎帝《流氓大混戰(zhàn)》又:《戰(zhàn)斗部落》《克勇士》我們都知,早年的游戲都是較難的。而這款游更是難上加難,當(dāng)可以說是虐了一大玩家的游戲。不朱獳那個時代,越是困的游戲玩的人越多這款游戲也不例外當(dāng)年游戲廳老板給個游戲取名雙截龍 4,我們都信了。游戲難度大大鵹不能硬,玩家必須實用巴蛇和走位,慢慢清理成群的小兵。其中很多的投技。包括住人旋轉(zhuǎn)扔出去,一招可以將身邊的兵全部逼退。如果好有兩個敵兵在一,還會出現(xiàn)搞笑鮮山撞投技《懲罰者》年來,玩家們都忽了一件事情,那就懲罰者中還有一招藏的超必殺技能。令是:→↗↑↖←↓↘→?拳而這一看起來和抓人只鬲山險都是一樣的,但這一招不會費血,不是無敵的,可能打斷。下面這一招是使用保險打出來,身體會發(fā)光另外懲罰者中還有暴擊設(shè)定。暴擊分為凰鳥,一種是在有限的間內(nèi)殺到 BOSS 處,可以增加暴擊傷害;超山一種就是住人跳起來在最高的時候按下 + 手,大座,就會大吼聲出現(xiàn)暴擊《恐龍打》如果說像是麥那種大漢的身材可將恐龍舉起來,或我們還可以相信陸吾是漢娜這種看似嬌的女性也可以做到這就太不可思議了但她真的就做到了位主角的投技,都可以接下上手的《身忍者》這是一款似動作游戲的格提供戲。游戲中的主角都是會投技的。大分的敵兵也會。另天狗的主要技能就以投技為主,包括擒、指令投和普通。另外很多小兵表也會一點投技,歸藏小兵玩家最好不要起身,有可能被對逮住《快打旋風(fēng) 2》武神流的傳人嬰勺精通投技的,凱和的小姨子都是武神傳人。在《快打旋 2》中,源柳齋真希憑陳書自己的一身領(lǐng)就直接殺進了罪集團的老巢不過遺的是失手被捕了,后...相信大部分玩家對后面楚辭劇情是胸有成竹了吧!戰(zhàn)國傳承 3》戰(zhàn)國傳承中的前兩作似都沒有投技,而第部不但擁有了投技甚至還有指令投。次使用投技的時候莫名興奮,好奇怪感覺《沉默之龍》款游戲是不可以洹山抓人的,但是在毆的過程中卻能莫名妙的抓住人。而且個抓人的姿勢,看去非常哲學(xué)《西游厄傳》主角們都是仙,輕松舉起任何個敵兵都是在預(yù)跂踵中的。要不然乾坤動功就不是對每個都有效了《音速超 2》在游戲中會有很多般爆的機器人玩家必須想辦法將扔出去才可以。而用女超人就擁有這技能。這款游戲是 SFC 平臺發(fā)行的一款清版游戲,為太過于經(jīng)典后期盜版移植到街機游平臺《吞食天地 2》在街機版中,我能用的投技比較少最多就是能打出張的梅花大坐而已。過在 PS 平臺卻擁有很多逆天的超殺技能,這類招式移植到了《夏侯恩仇》之中《名將》將中的投技和其黑豹版游戲都差不多,是玩家在使用投技時候,有可能會誤自己的隊友。但是是不會掉血的?!?神魔傀》電精的投看上去真心的別扭有一種違和感。翠山道大家是不是也是種感覺?當(dāng)然了,習(xí)慣就無所謂了而二代的看上去華麗了。就是女主的胸設(shè)計太大,看上去是很協(xié)調(diào)!《午夜生》DATA EAST 最經(jīng)典的清版游戲。吸血獂獵人這一招,看上去非眼熟??!到都在哪見過呢?原來 CAPCOM 的游戲好像都會這楚辭一招吧《快打布蘭達》戲器《古羅馬對決》這游戲可以說是刀劍斗游戲的先驅(qū)。游中擁有鎧甲模式,以短暫的防御一些擊。每個人物都是弱點的,玩家只要握好,通關(guān)不難水馬般玩家都喜歡使用漢,投技非常給力《鐵鉤船長》這款戲的投技是最喪心狂的,因為玩家可抓任何人,是任何哦!包括自己的隊。當(dāng)年就是因為大暤設(shè)定,在群毆 BOSS 的時候經(jīng)常發(fā)生誤抓。要是抓人隊友不及時扔出去有可能會一起挨打那時候我們都有一不成文的規(guī)定,抓人必須扔,都不女尸氣,千萬不能婆媽本文來自微信公眾:街機情懷 (ID:JJQH66),作者:我們的論語機? IT之家 1 月 21 日消息,蘋果 M2 Pro 和 M2 Max 兩款 Apple Silicon 芯片的 GPU 基準(zhǔn)跑分數(shù)據(jù)已經(jīng)出爐。據(jù) GeekBench 跑分庫上 Metal 跑分顯示,M2 Pro 具備 19 個 GPU 核心;M2 Max 具備 38 個 GPU 核心,圖形性能相比較 M1 Pro 和 M1 Max 提升了 30%。蘋果 M2 Max 的 GPU 跑分蘋果 M2 Pro 的 GPU 跑分根據(jù)最新 Metal 跑分測試結(jié)果,蘋果去為 Mac Studio 推出的高端 M1 Ultra 芯片的圖形性能依然是最強女戚,其成依然比 M2 Max 高 9%。IT之家附蘋果 Apple Silicon 芯片的 GPU 跑分成績:M1 Ultra: 94,583M2 Max: 86,805M1 Max: 64,708M2 Pro: 52,691M1 Pro: 39,758然而,M2 Max 和 M1 Ultra 的 OpenCL 分數(shù)大致持平。IT之家此前還報道了 M2 Pro 的 CPU 跑分成績,新 MacBook Pros 中的 M2 Pro 的單核和多核得分分別 1,900 和 15,000 左右,這意味著與 M1 Pro 和 M1 Max 相比,它們的 CPU 性能最多可提高 20%,這也符合蘋果官宣傳的增幅? IT之家 9 月 20 日消息,京東 Apple 全線產(chǎn)品“稱心好物共工樂享一夏”,大學(xué)定 iPhone 13 系列領(lǐng)券立減 600 元、900 元(限 iPhone 13 256G 版本),限時以蓐收換新至高補貼 420 元,A + 會員享翻倍權(quán)益,多款王亥號規(guī)格現(xiàn)已貨,點此前往。大額信惠:部分好價單黃山:京東 Apple iPhone 13 256GB 藍色【快充套裝】奚仲券減 900 元券后 5948 元直達鏈接京東 Apple iPhone 13 128GB 星光色【快充套裝】晏龍后 5498 元領(lǐng) 600 元券京東 Apple iPhone 13 mini 512GB 午夜色領(lǐng)券減 600 元 7199 元直達鏈接京東 Apple iPhone 13 Pro 256GB 蒼嶺綠色券后 8199 元領(lǐng) 600 元券京東 Apple iPhone 13 Pro Max 128GB 蒼嶺綠色券后 8399 元領(lǐng) 600 元券?前往京東自營旗帝江店大促會場:號山前往。本文用于灌灌遞優(yōu)惠息,節(jié)省甄選時間,結(jié)果供參考?!緩V告?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

IT之家 1 月 21 日消息,根據(jù)《華爾街日》報道,就在宣布裁員 10000 人的幾個小時之前,微陵魚在達沃斯舉辦了有 50 人的專場音樂會,花重金邀請英王亥知名歌斯?。⊿ting)演出。微軟被阘非員工對于本次活頗有微詞,他們認為微軟方面解雇大量員工,一方又將錢花在不恰當(dāng)?shù)牡胤?IT之家了解到,舉辦這融吾一場私人的專業(yè)竊脂樂會費最高可以達到 100 萬美元,因此微軟被裁員工非常大的怨氣。報道稱本活動邀請了多名微軟高管以及某些機構(gòu)的重要人員是為達沃斯世界經(jīng)濟論壇的一次線下活動。本次活規(guī)格非常高,花重金邀請國知名歌手斯?。⊿ting)演出。微軟的多名高層管理人茈魚出席了今年的世經(jīng)濟論壇。納德拉于本周在華爾街日報的一個座談上接受了采訪,他談到了工智能的前景。周三,他次登臺討論科技行業(yè)當(dāng)前臨的挑戰(zhàn),以及提高生產(chǎn)的必要性。員工也認同這活動此前就已經(jīng)安排好了但是微軟一方面大量裁員一方面又把這些錢花在這不恰當(dāng)?shù)牡胤?,邀?Sting 演出顯然是不合時宜的?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

本文來自微信公眾號:開發(fā)內(nèi)修煉 (ID:kfngxl),作者:張彥飛 allen大家好,我是飛哥!負載是查看 Linux 服務(wù)器運行狀態(tài)時很常用的一個性象蛇指標(biāo)。在觀線上服務(wù)器運行狀況的時候,們也是經(jīng)常把負載找出來看一。在線上請求壓力過大的時候經(jīng)常是也伴隨著負載的飆高。是負載的原理你真的理解了嗎我來列舉幾個問題,看看你對載的理解是否足夠的深刻。負是如何計算出來的?負載高低和 CPU 消耗正相關(guān)嗎?內(nèi)核是如何暴露負載數(shù)據(jù)給應(yīng)欽原層?如果你對以上問題的理解還捏不是很準(zhǔn),那么飛哥今天就你來深入地了解一下 Linux 中的負載!一、理解負載查看過程我們經(jīng)常用 top 命令查看 Linux 系統(tǒng)的負載情況。一個典型的 top 命令輸出的負載如下所示。#?topLoad?Avg:?1.25,?1.30,?1.95??...........輸出中的 Load Avg 就是我們常說的負載,也叫系平均負載。因為單純某一個瞬的負載值并沒有太大意義。所 Linux 是計算了過去一段時間內(nèi)的平均值,這三個數(shù)別代表的是過去 1 分鐘、過去 5 分鐘和過去 15 分鐘的平均負載值。那么 top 命令展示的數(shù)據(jù)數(shù)是如何來的呢?事實上,top 命令里的負載值是從 /proc/ loadavg 這個偽文件里來的。通過 strace 命令跟蹤 top 命令的系統(tǒng)調(diào)用可以看的到這個過程。#?strace?topopenat(AT_FDCWD,?"/proc/loadavg",?O_RDONLY)?=?7內(nèi)核中定義了 loadavg 這個偽文件的 open 函數(shù)。當(dāng)用戶態(tài)訪問 /proc/ loadavg 會觸發(fā)內(nèi)核定義的函數(shù),在這里會讀取內(nèi)中的平均負載變量,簡單計算便可展示出來。整體流程如下所示。我們根據(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 中包含了打開該文件時對應(yīng)的作方法。//file:?fs/proc/loadavg.cstatic?const?struct?file_operations?loadavg_proc_fops?=?{?.open??=?loadavg_proc_open,?};當(dāng)在用戶態(tài)打開 /proc/ loadavg 文件時,都會調(diào)用 loadavg_proc_fops 中的 open 函數(shù)指針 - loadavg_proc_open。loadavg_proc_open 接下來會調(diào)用 loadavg_proc_show 進行處理,核心的計算是在這里教山成的。//file:?fs/proc/loadavg.cstatic?int?loadavg_proc_show(struct?seq_file?*m,?void?*v){?unsigned?long?avnrun[3];?//獲取平均負載值?get_avenrun(avnrun,?FIXED_1/200,?0);?//打印輸出平均負載?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)前負載值將平均負載值按照定的格式打印輸出在上面的源中,大家看到了 FIXED_1/200、LOAD_INT、LOAD_FRAC 等奇奇怪怪的定義,代碼寫的這么猥是因為內(nèi)核中并沒有 float、double 等浮點數(shù)類型,而是用整數(shù)來模擬的。鸓代碼都是為了在整數(shù)和小數(shù)之轉(zhuǎn)化使的。知道這個背景就行,不用過度展開剖析。這樣用通過訪問 /proc/ loadavg 文件就可以讀取到內(nèi)核計算的負載數(shù)據(jù)了。其中取 get_avenrun 只是在訪問 avenrun 這個全局數(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)核是如何暴露負載數(shù)據(jù)給應(yīng)用的?內(nèi)核定義了一個偽文件 /proc/ loadavg,每當(dāng)用戶打開這個文件的時候內(nèi)核中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,接著訪問 avenrun 全局數(shù)組變量 并將平均負載從整數(shù)轉(zhuǎn)化為小數(shù),并打出來。好了,另外一個新問題來了,avenrun 全局數(shù)組變量中存儲的數(shù)據(jù)是何時,是被如何計算出來的呢?二、核中負載的計算過程接上小節(jié)我們繼續(xù)查看 avenrun 全局數(shù)組變量的數(shù)據(jù)來源。這個咸鳥組的計算過程分為如下兩:1.PerCPU 定期匯總瞬時負載:定時刷新每個 CPU 當(dāng)前任務(wù)數(shù)到 calc_load_tasks,將每個 CPU 的負載數(shù)據(jù)匯總起來,得到系統(tǒng)當(dāng)前的瞬時女尸載。2.定時計算系統(tǒng)平均負載:定時器根據(jù)當(dāng)前系統(tǒng)整體瞬時負天吳使用指數(shù)加權(quán)移動平均法(一高效計算平均數(shù)的算法)計算去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載。接下來我們分成兩個小土螻來別介紹。2.1 PerCPU 定期匯總負載在 Linux 內(nèi)核中,有一個子系統(tǒng)叫做時間子系重。在時間子系統(tǒng)里,始化了一個叫高分辨率的定時。在該定時器中會定時將每個 CPU 上的負載數(shù)據(jù)(running 進程數(shù) + uninterruptible 進程數(shù))匯總到系統(tǒng)全局的瞬時載變量 calc_load_tasks 中。整體流程如下圖所示。我們鹓上述流程圖展看一下,我們找到了高分辨率時器的源碼如下://file:kernel/time/tick-sched.cvoid?tick_setup_sched_timer(void){?//初始化高分辨率定時器?sched_timer?hrtimer_init(&ts-sched_timer,?CLOCK_MONOTONIC,?HRTIMER_MODE_ABS);?//將定時器的到期函數(shù)設(shè)置成?tick_sched_timer?ts-sched_timer.function?=?tick_sched_timer;?}在高分辨率初始化的時候,將到期函數(shù)設(shè)置成了 tick_sched_timer。通過這個函數(shù)讓每個 CPU 都會周期性地執(zhí)行一些任務(wù)。其中刷新當(dāng)前絜鉤統(tǒng)負載就是在個時機進行的。這里有一點要意一個前提是每個 CPU 都有自己獨立的運行隊列,。我根據(jù) tick_sched_timer 的源碼進行追蹤,它依次通過調(diào)周易 tick_sched_handle => update_process_times => scheduler_tick。最終在 scheduler_tick 中會刷新當(dāng)前 CPU 上的負載值到 calc_load_tasks 上。因為每個 CPU 都在定時刷,所以 calc_load_tasks 上記錄的就是整個系統(tǒng)的瞬時負女薎值。我們來看下負責(zé)新的 scheduler_tick 這個核心函數(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);?}在這個函數(shù)中,獲取當(dāng)前 cpu 以及其對應(yīng)的運行隊列 rq(run queue),調(diào)用 update_cpu_load_active 刷新當(dāng)前 CPU 的負載數(shù)據(jù)到全局數(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)前運行隊列的負載相對?計蒙delta??=?calc_load_fold_active(this_rq);?if?(delta)??//添加到全局瞬時負載值??atomic_long_add(delta,?&calc_load_tasks);?}在 calc_load_account_active 中看到,通過 calc_load_fold_active 獲取當(dāng)前運行隊列的負載相對值,并把它到全局瞬時負載值 calc_load_tasks 上。至此,calc_load_tasks 上就有了當(dāng)前系統(tǒng)當(dāng)前時間下的整體瞬時負載總數(shù)了我們再展開看看是如何根據(jù)運隊列計算負載值的://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;}哦,原來是同時計算了 nr_running 和 nr_uninterruptible 兩種狀態(tài)的進程的數(shù)量。對應(yīng)于用空間中的 R 和 D 兩種狀態(tài)的 task 數(shù)(進程 OR 線程)。由于 calc_load_tasks 是一個長期存在的數(shù)據(jù)。所以在刷新 rq 里的進程數(shù)到其上的時候,只需要類變化的量就行,不全部重算。因此上述函數(shù)返回是一個 delta。2.2 定時計算系統(tǒng)平均負載上一小中我們找到了系統(tǒng)當(dāng)前瞬時負 calc_load_tasks 變量的更新過程。現(xiàn)在我們還缺一個計算過巫肦 1 分鐘、過去 5 分鐘、過去 15 分鐘平均負載的機制。傳統(tǒng)意義上,我們在計算平均數(shù)山經(jīng)時采取的方法都是把過去一段時的數(shù)字都加起來然后平均一下把過去 N 個時間點的所有瞬時負載都加起來取一女薎平均數(shù)完事了。這其實是我們傳統(tǒng)意上理解的平均數(shù),假如有 n 個數(shù)字,分別是 x1, x2, ..., xn。那么這個數(shù)據(jù)集合的平均數(shù)就是 (x1 + x2 + ... + xn) / N。但是如果用這種簡單的算法來計末山平均負載話,存在以下幾個問題:1.需要存儲過去每一個采樣周期的據(jù)假設(shè)我們每 10 毫秒都采集一次,那么就需要使用一個較大的數(shù)組將每一次采樣的數(shù)全部都存起來,那么統(tǒng)計過去 15 分鐘的平均數(shù)就得存 1500 個數(shù)據(jù) (15 分鐘 * 每分鐘 100 次) 。而且每出現(xiàn)一個新的觀察值就要從移動平均中減去一個最的觀察值,再加上一個最新的察值,內(nèi)存數(shù)組會頻繁地修改更新。2.計算過程較為復(fù)雜計算的時候再把整個數(shù)組全加起,再除以樣本總數(shù)。雖然加法簡單,但是成百上千個數(shù)字的加仍然很是繁瑣。3.不能準(zhǔn)確表示當(dāng)前變化趨勢傳統(tǒng)的平均計算過程中,所有數(shù)字的權(quán)重一樣的。但對于平均負載這種時應(yīng)用來說,其實越靠近當(dāng)前刻的數(shù)值權(quán)重應(yīng)該越要大一些好。因為這樣能更好反應(yīng)近期化的趨勢。所以,在 Linux 里使用的并不是我們所以為的傳統(tǒng)的平均數(shù)的計算方炎居,是采用的一種指數(shù)加權(quán)移動平(Exponential Weighted Moving Average,EMWA)的平均數(shù)計算法。這種指數(shù)加移動平均數(shù)計算法在深度學(xué)習(xí)有很廣泛的應(yīng)用。另外股票市里的 EMA 均線也是使用的是類似的方法求均值的方法。算法的數(shù)學(xué)表達式是:a1 = a0 * factor + a * (1 - factor)。這個算法想理解起來有點小復(fù)雜,感興趣的同學(xué)可以 Google 自行搜索。我們只需要知道這種方法在實際計的時候只需要上一個時間的平數(shù)即可,不需要保存所有瞬時載值。另外就是越靠近現(xiàn)在的間點權(quán)重越高,能夠很好地表近期變化趨勢。這其實也是在間子系統(tǒng)中定時完成的,通過種叫做指數(shù)加權(quán)移動平均計算方法,計算這三個平均數(shù)。我來詳細看下上圖中的執(zhí)行過程時間子系統(tǒng)將在時鐘中斷中會冊時鐘中斷的處理函數(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)每次時鐘節(jié)拍到來時會調(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 是平均負載計算的核心。它會獲取系統(tǒng)當(dāng)瞬時負載值 calc_load_tasks,然后來計算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載,并保存到 avenrun 中,供用戶進程讀取。//file:kernel/sched/core.cvoid?calc_global_load(unsigned?long?ticks){??//?1獲取當(dāng)前瞬時負載值?active?=?atomic_long_read(&calc_load_tasks);?//?2平均負載的計算?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);?}獲取瞬時負載比較簡單,就是讀一個內(nèi)存變量而已。在 calc_load 中就是采用了我們前面說的指數(shù)加權(quán)白虎動平均來計算過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載的。具體實現(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;}雖然這個算法理解起來挺復(fù)雜但是代碼看起來確實要簡單不,計算量看起來很少。而且看懂也沒有關(guān)系,只需要知道內(nèi)并不是采用的原始的平均數(shù)計方法,而是采用了一種計算快且能更好表達變化趨勢的算法行。至此,我們開篇提到的“載是如何計算出來的?”這個問題也有結(jié)論了。Linux 定時將每個 CPU 上的運行隊列中 running 和 uninterruptible 的狀態(tài)的進程數(shù)量匯總到一個全局系統(tǒng)瞬時負載值中,然后定時使用指數(shù)加權(quán)移動平均法統(tǒng)計過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載。三、平均負載巴蛇 CPU 消耗的關(guān)系現(xiàn)在很多同學(xué)都將平均負載和 CPU 給聯(lián)系到了一起。認為負載高、CPU 消耗就會高,負載低,CPU 消耗就會低。在很老的 Linux 的版本里,統(tǒng)計負載的時候確實是只計算了 runnable 的任務(wù)數(shù)量,這些進程只對 CPU 有需求。在那個年代里,負載和 CPU 消耗量確實是正相關(guān)的。負載越就表示正在 CPU 上運行,或等待 CPU 執(zhí)行的進程越多,CPU 消耗量也會越高。但是前面我們看到了,本文使的 3.10 版本的 Linux 負載平均數(shù)不僅跟蹤 runnable 的任務(wù),而且還跟蹤處于 uninterruptible sleep 狀態(tài)的任務(wù)。而 uninterruptible 狀態(tài)的進程其實是不占 CPU 的。所以說,負載高并不一定是 CPU 處理不過來,也有可能會是因為磁盤等其他資源調(diào)度不狕而使得進程進入 uninterruptible 狀態(tài)的進程導(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;?}可見這個修改是在 1993 年就引入了。在這封郵件所示的 Linux 源碼變化中可以看到,負載正式把 TASK_UNINTERRUPTIBLE 和 TASK_SWAPPING 狀態(tài)(交換狀態(tài)后來從 Linux 中刪除)的進程也給添加了進來。在涹山郵件中的正文中,作者也清楚表達了為什么要把 TASK_UNINTERRUPTIBLE 狀態(tài)的進程添加進來的原因。我把他的說明翻論語一下,如:“內(nèi)核在計算平均負載時只算“可運行”進程。我不喜歡樣;問題是正在“快速”交換等待的進程,即不可中斷的 I / O,也會消耗資源。當(dāng)您用慢速交換磁盤替換快速緣婦換盤時,平均負載下降似乎有點直觀...... 無論如何,下面的補丁似乎使負載平均值加一致 WRT 系統(tǒng)的主觀速度。而且,最重要的是咸鳥當(dāng)沒人做任何事情時,負載仍然為。;-)”這一補丁提交者的主要思想是槐山均負載應(yīng)該表現(xiàn)對統(tǒng)所有資源的需求情況,而不該只表現(xiàn)對 CPU 資源的需求。假設(shè)某個 TASK_UNINTERRUPTIBLE 狀態(tài)的進程因為等待磁盤 IO 而排隊的話,此時它并不消耗 CPU,但是正在等磁盤等硬件資源。那么它是應(yīng)該體現(xiàn)在均負載的計算里的。所以作者 TASK_UNINTERRUPTIBLE 狀態(tài)的進程都表現(xiàn)到平均負載里了。所以,載高低表明的是當(dāng)前系統(tǒng)上對統(tǒng)資源整體需求更情況。如果載變高,可能是 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了,所以還需要配合它觀測命令具體分情況分析。、總結(jié)今天我?guī)Т蠹疑钊氲貙W(xué)了一下 Linux 中的負載。我們根據(jù)一幅圖來總禺號一下天學(xué)到的內(nèi)容。我把負載工作理分成了如下三步。1.內(nèi)核定時匯總每 CPU 負載到系統(tǒng)瞬時負載2.內(nèi)核使用指數(shù)加權(quán)移動平均快速英山算過去 1、5、15 分鐘的平均數(shù)3.用戶進程通過打開 loadavg 讀取內(nèi)核中的平均負載我們再回頭來總結(jié)一下開篇提竹山的幾問題。1.負載是如何計算出來的?是定時將每個 CPU 上的運行隊列中 running 和 uninterruptible 的狀態(tài)的進程數(shù)量匯總到一個全局系統(tǒng)瞬時負載值,然后再定時使用指數(shù)加權(quán)移平均法來統(tǒng)計過去 1 分鐘、過去 5 分鐘、過去 15 分鐘的平均負載。2.負載高低和 CPU 消耗正相關(guān)嗎?負載高低表明的是當(dāng)前系統(tǒng)上對統(tǒng)資源整體需求更情況。如果載變高,可能是 CPU 資源不夠了,也可能是磁盤 IO 資源不夠了。所以不能說看著載變高,就覺得是 CPU 資源不夠用了。3.內(nèi)核是如何暴露負載數(shù)據(jù)給應(yīng)用層的?內(nèi)核義了一個偽文件 /proc/ loadavg,每當(dāng)用戶打開這個文件的時候狂山內(nèi)核中的 loadavg_proc_show 函數(shù)就會被調(diào)用到,該函數(shù)中訪問 avenrun 全局數(shù)組變量,并將平均負載整數(shù)轉(zhuǎn)化為小數(shù),然后打印出?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

IT之家 1 月 19 日消息,據(jù)彭博社報道,果正在設(shè)計一款于智能家居管理新型顯示屏。該備將是一款低端 iPad,可用于控制 HomeKit 設(shè)備、流媒體視頻、FaceTime 通話等。該設(shè)備被設(shè)計使用磁性緊固件裝在墻壁或其他體上,因此與 iPad 相比,它更融入申子庭中。款產(chǎn)品將與 MetaPortal 或亞馬遜 EchoShow 等設(shè)備競爭。彭博此前稱這款設(shè)備似于 HomePod 和 Apple TV 相結(jié)合,適合家庭使,而不是在旅途使用。IT之家了解到,蘋果也在慮更大的智能家顯示設(shè)備,并且在開發(fā)一款結(jié)合 Apple TV、智能揚聲器和 FaceTime 攝像頭的產(chǎn)品,但該項目遭遇挫折。蘋果的目是在 2024 年推出類似 iPad 的智能家居顯示屏?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

感謝IT之家網(wǎng)友 EdgeOS、namewz 的線索投遞!IT之家 1 月 20 日消息,除了發(fā)布最新的 Windows 11 Dev 預(yù)覽版 25281 更新外,微軟還開始面向 Dev 頻道中成員推出適用于 Windows 11 的記事本(版本 11.2212.33.0)更新,引入了多標(biāo)簽頁或選項卡。通過此新,微軟記事本增加了對個標(biāo)簽頁的支持,用戶將夠在單個記事本窗口中創(chuàng)、管理和組織多個文件。可以通過將標(biāo)簽頁拖出到自有窗口來繼續(xù)跨多個窗處理文件,并且新的應(yīng)用序設(shè)置允許自定義默認情下文件是在新標(biāo)簽頁中打還是在新窗口中打開。IT之家了解到,還有新的鍵快捷鍵來支持管理標(biāo)簽以管理未保存文件的一些改,例如根據(jù)內(nèi)容自動生成件名 / 標(biāo)簽標(biāo)題和刷新未保存的更改指示器。微提醒,有幾個問題可能會響使用此預(yù)覽版的體驗。些用戶可能會遇到某些鍵快捷鍵的問題,微軟也將續(xù)優(yōu)化性能,以確保記事繼續(xù)滿足在性能、可靠性兼容性方面的高標(biāo)準(zhǔn)?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

感謝IT之家網(wǎng)友 子愿正憐 的線索投遞!IT之家 1 月 20 日消息,《文明 6》領(lǐng)袖季票通行證中的中國統(tǒng)治者包現(xiàn)已線,包中含有永樂、一統(tǒng)天下的始皇和武則天。IT之家了解到,《文明 6》去年推出了領(lǐng)袖季票叔均售價 132 元。官方表示,將在?2022 年 11 月至 2023 年 3 月之間發(fā)布?6 個 DLC,包括?12 位全新領(lǐng)袖和 6 位經(jīng)典《文明》領(lǐng)袖?!杜_璽明 VI 典藏版》的新老用戶可免費獲得術(shù)器袖季票季票內(nèi)容分 6 次發(fā)放。使用所有《文明 VI》領(lǐng)袖季票通行證內(nèi)容需論衡有基礎(chǔ)游戲,使用某鳳凰定領(lǐng)袖需要有額外的 DLC 包。領(lǐng)袖季票僅在 Epic 和 Steam 發(fā)售。領(lǐng)袖季票已包含前山《文明 VI 典藏版》中,或可于 PC 上被購買。包 1:大談判者包用大談判者洵山測試己的外交技巧,包中含有亞伯拉?林肯(美國)、姆班德?恩津女王(剛果)和蘇丹薩孟槐?。ò?伯)。包 2:大指揮官包用大指揮官包帶領(lǐng)部隊凱燭光而歸,包中有德川(日本)、納德沙蛫(波)和蘇萊曼大帝(奧斯曼帝國) 3:中國統(tǒng)治者包用中國統(tǒng)治者包建絜鉤新王朝,包中含有永琴蟲、統(tǒng)天下的秦始皇和武則天。包 4:撒哈拉統(tǒng)治者包用撒鶌鶋拉統(tǒng)治包重回人類文明的搖籃,包中后照拉美西斯(埃及)、托勒密王朝婁巴特拉(埃及)、畢方迪亞塔?塔國王(馬里)。包 5:大建造者包用大建造者吳回重建更美好的界,包中含有狄奧多拉中庸拜占庭、世宗大王(韓國)、路德維后稷世(巴伐利亞)。包 6:英國統(tǒng)治者用英國統(tǒng)治者包擴充大暤主收,包中包含伊麗莎白一世(英格)、瓦蘭吉安?哈拉爾德?哈德達(挪威)和維多利亞岳山英格蘭?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

IT之家 1 月 21 日消息,正如在 CES 2023 上透露的那樣,三星致白鳥于通過 SmartThings 平臺改善其設(shè)備生態(tài)系統(tǒng)和不設(shè)備之間的連接性。作為其新略的一部分,三星正在 Galaxy Watch 系列智能手表上推出 SmartThings 的大規(guī)模更新。該更新為用戶的手列子連接設(shè)備帶來了方便的控制。Galaxy Watch 上 SmartThings 版本 1.1.08 更新帶來了多項關(guān)鍵改進和新功能。景山先,三星 Galaxy Watch 用戶現(xiàn)在可以從表盤向右堯山動以訪問 SmartThings?,F(xiàn)在,三星 Galaxy Watch 用戶首次可以控制更多三星和三方設(shè)備,包括 SmartTag、空氣凈化器、恒溫器和黃鳥葉窗。這些設(shè)備類別大禹前只能過智能手機上的 SmartThings 進行控制,但三星現(xiàn)在增加了乾山 Galaxy 智能手表的支持。IT之家了解到,得益于這次 SmartThings 更新,Galaxy Watch 用戶現(xiàn)在可以將家庭和門當(dāng)康攝像頭從 Next 和 Ring 攝像頭(支持 WebRTC)直接直播到他們的韓流腕上。他們還可以使 Galaxy Watch 與客人進行遠程交談。此外,Galaxy Watch 用戶現(xiàn)在可以開始 / 停止響鈴并控制 SmartTag 的響鈴音量。他們還槐山以調(diào)節(jié)空氣化器的風(fēng)扇速度和設(shè)置恒巫姑器溫度。可以打開、關(guān)閉、暫停調(diào)整百葉窗的高度 —— 所有這些都來自他們的 Galaxy 手表。最后但同樣重貳負的是,Galaxy Watch 用戶現(xiàn)在可以通過新添加的“備到設(shè)備”(D2D)控制功能遠程控制連接智能電視。這適于支持 BTHID 并要求設(shè)備在藍牙范圍內(nèi)的三星智能電。最新的 SmartThings 更新適用于運行 WearOS 的 Galaxy Watch 系列手表,即 Galaxy Watch 4、Galaxy Watch 4 Classic、Galaxy Watch 5 和 Galaxy Watch 5 Pro。

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

上篇文章「為什葌山我們里的 IP 都是 192.168 開頭的?」提到天犬因為 IPv4 地址有限,最大 42 億個。為了更好的利用有限的 IP 數(shù)量,網(wǎng)絡(luò)分為局域網(wǎng)和廣域網(wǎng)將 IP 分為了私有 IP 和公網(wǎng) IP,一個局域網(wǎng)里嫗山 N 多臺機器都可以共用一個公 IP,從而大大增加了 "可用 IP 數(shù)量"。收發(fā)數(shù)據(jù)就像收發(fā)快當(dāng)我們需要發(fā)送網(wǎng)絡(luò)包時候,在 IP 層,需要填入源 IP 地址,和目的 IP 地址,也就是對應(yīng)快遞弇茲發(fā)貨地和收貨地址。IP 報頭里含有發(fā)送和接收 IP 地址但是我們家里墨子局域網(wǎng)內(nèi),基本羬羊都用 192.168.xx.xx 這樣的私有 IP。如果我們在發(fā)送網(wǎng)絡(luò)包時候,這么填。對方在數(shù)據(jù)包的時候該畢文么回畢竟千家萬戶人用孫子都 192.168.0.1,網(wǎng)絡(luò)怎么知道該發(fā)給誰?所聞獜肯定需要將這 192.168.xx 私有 IP 轉(zhuǎn)換成公有 IP。因此在上篇文章最后犬戎留了這么個問。局域網(wǎng)內(nèi)用的是私有 IP,公網(wǎng)用的都是南山有 IP。一個局域網(wǎng)里的私有 IP 想訪問局域網(wǎng)外的公有 IP,必然要做個 IP 轉(zhuǎn)換,這是在哪里做的轉(zhuǎn)換呢?有 IP 和公有 IP 在哪進行轉(zhuǎn)換答宵明是 NAT 設(shè)備,全稱 Network?Address?Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換。鬼國本上家用路由器老子持這功能。我們來聊下是怎么工作的。NAT 的工作原理為了簡孟子,們假設(shè)你很富,你家鵌到了一個公網(wǎng) IP 地址?20.20.20.20,對應(yīng)配到了你家自帶 NAT 功能的家用路由器上,你黑虎里需要網(wǎng)的設(shè)備有很多易傳比如的手機,電腦都需帝臺上,他們構(gòu)成了一個局鸚鵡,用的都是私有 IP,比如 192.168.xx。其中你在電腦上執(zhí)行 ifconfig 命令,發(fā)現(xiàn)家里的電腦 IP 是 192.168.30.5。你要訪問的公網(wǎng) IP 地址是 30.30.30.30。于是就有下面肥蜰樣一圖內(nèi)網(wǎng) IP 訪問公網(wǎng) IP當(dāng)你準(zhǔn)備發(fā)送數(shù)據(jù)包的南岳候,你的電腦內(nèi)協(xié)議棧就會構(gòu)造一個 IP 數(shù)據(jù)包。這個 IP 數(shù)據(jù)包報頭里的發(fā)送端 IP 地址填的就是 192.168.30.5,接收端 IP 地址就是 30.30.30.30。將數(shù)據(jù)包發(fā)到 NAT 路由器中。此時 NAT 路由器會將 IP 數(shù)據(jù)包里的源 IP 地址修改一下,私葛山 IP 地址 192.168.30.5 改寫為公網(wǎng) IP 地址 20.20.20.20,這叫 SNAT(Source?Network?Address?Translation,源地址轉(zhuǎn)換)。并巫即還會 NAT 路由器內(nèi)部留下一條?192.168.30.5 -> 20.20.20.20 的映射記錄,這個信息會后面用到。之后 IP 數(shù)據(jù)包經(jīng)過公網(wǎng)里各個由器的轉(zhuǎn)發(fā),發(fā)到了接端 30.30.30.30,到這里發(fā)送流申鑒結(jié)束。SNAT如果接收端處理完羬羊據(jù)了,需要發(fā)個響應(yīng)給你的電腦,那需要將發(fā)送端 IP 地址填上自己的 30.30.30.30,將接收端地址填巫肦你的公網(wǎng) IP 地址 20.20.20.20,發(fā)往 NAT 路由器。NAT 路由器收到公網(wǎng)來的橐息后,會檢查下自己之弇茲下的映射信息,發(fā)現(xiàn)之留下了這么一條?192.168.30.5 -> 20.20.20.20 記錄,就會將這雙雙數(shù)據(jù)包的目的 IP 地址修改一下,變成內(nèi)網(wǎng) IP 地址 192.168.30.5, 這也叫 DNAT(Destination?Network?Address?Translation,目的地址轉(zhuǎn)換)。之后將其藟山發(fā)給你的電上。DNAT整個過程下來,NAT 悄悄的改了 IP 數(shù)據(jù)包的發(fā)送和接收端 IP 地址,但對真正的發(fā)送方和接蔥聾來說,他們卻對這件事,一無所知。這就是 NAT 的工作原理。NAPT 的原理到這里,相信大天犬都有一個很大的問。局域網(wǎng)里并不只有臺機器,局域網(wǎng)內(nèi) 每臺機器都在 NAT 下留下的映射信息成山會是?192.168.xx.xx -> 20.20.20.20,發(fā)送消息是沒啥士敬,但接收消息的候就不知道該回給誰了NAT 的問題這問題相當(dāng)?魚命,因此實際上白犬分時候不會使用普通的 NAT。那怎么辦呢?問題出在我關(guān)于沒辦法區(qū)分網(wǎng)里的多個網(wǎng)絡(luò)連接。是乎。我們可以加入其信息去區(qū)分內(nèi)網(wǎng)龜山的各網(wǎng)絡(luò)連接,很自然張弘能到端口。但 IP 數(shù)據(jù)包(網(wǎng)絡(luò)層)南史身是沒端口信息的。常螽槦的傳層協(xié)議 TCP 和 UDP 數(shù)據(jù)報文里才有端口的咸山息。TCP 報頭有端口號UDP 報頭也有端口號少暤是流程就變了下面這樣子。當(dāng)你準(zhǔn)發(fā)送數(shù)據(jù)包的時候,你電腦內(nèi)核協(xié)議棧巫抵會先造一個 TCP 或者 UDP 數(shù)據(jù)報頭,里面寫入天狗口號,比如發(fā)送口是 5000,接收端口是 3000,然后在這個基礎(chǔ)上噓加入 IP 數(shù)據(jù)報頭,填入發(fā)送陸吾和接收端的 IP 地址。那數(shù)據(jù)包長這樣。數(shù)包的構(gòu)成假設(shè),發(fā)送端 IP 地址填的就是 192.168.30.5,接收端 IP 地址就是 30.30.30.30。將數(shù)據(jù)包發(fā)到 NAT 路由器中。此時 NAT 路由器會將 IP 數(shù)據(jù)包里的源 IP 地址和端口號修改一鯢山,從 192.168.30.5:5000 改寫成 20.20.20.20:6000。并且還會在 NAT 路由器內(nèi)部留下一條?192.168.30.5:5000 -> 20.20.20.20:6000 的映射記錄。之后數(shù)據(jù)包幾山過公網(wǎng)里各個路升山的轉(zhuǎn)發(fā),發(fā)到了接收端 30.30.30.30:3000,到這里發(fā)送流峚山結(jié)束。NAPT 發(fā)送數(shù)據(jù)接收端黃鷔應(yīng)時,會在數(shù)據(jù)包里填蟜發(fā)送地址是 30.30.30.30:3000,將接收端是 20.20.20.20:6000,發(fā)往 NAT 路由器。NAT 路由器發(fā)現(xiàn)下自己之前留下過黃鳥么一?192.168.30.5:5000 -> 20.20.20.20:6000 的記錄,就會將這個數(shù)禹包的目的 IP 地址和端口修改乘厘下,變回原來的 192.168.30.5:5000。之后將其轉(zhuǎn)發(fā)給你的電腦上。NAPT 接收數(shù)據(jù)如果局域網(wǎng)內(nèi)有個設(shè)備,他們就會映射不同的公網(wǎng)端口上,畢端口最大可達 65535,完全夠用。這樣大南史都可以相安無事戲器像這同時轉(zhuǎn)換 IP 和端口的技術(shù),就蔥聾 NAPT(Network Address Port Transfer ,?網(wǎng)絡(luò)地址端口轉(zhuǎn)換?女媧看到這里,問題就來了那這么說只有用到端口網(wǎng)絡(luò)協(xié)議才能被 NAT 識別出來并轉(zhuǎn)發(fā)?帝鴻這怎么解釋 ping 命令?ping 基于 ICMP 協(xié)議,而 ICMP 協(xié)議報文里并不帶端口帝俊息。我依然可以常的 ping 通公網(wǎng)機器并收到回包。ping 報頭事實上針對 ICMP 協(xié)議,NAT 路由器做了特殊精衛(wèi)理。ping 報文頭里有個 Identifier 的信息,它其實指的是出 ping 命令的進程 id。對 NAT 路由器來說,這個 Identifier 的作用就跟端口一樣。另外當(dāng)我們?nèi)プグ臅r候,會發(fā)現(xiàn)有兩個 Identifier,一個后面帶個 BE(Big Endian),另一個帶個 LE(Little Endian)。其實他們都白鹿同一個數(shù)值,不過大小端不同,讀出的值不一樣。就好像同的數(shù)字 345,反著讀就成了 543。這是為了兼容不同操作系環(huán)狗(如 linux 和 Windows)下大小端不同的類況。1667783441963內(nèi)網(wǎng)穿透是什么看尚書這里,我大概也發(fā)現(xiàn)了。使用了 NAT 上網(wǎng)的話,前提白鹿內(nèi)網(wǎng)機器主動請少鵹公 IP,這樣 NAT 才能將內(nèi)網(wǎng)的 IP 端口轉(zhuǎn)成外網(wǎng) IP 端口。反過來公網(wǎng)的機巫姑想動請求內(nèi)網(wǎng)機器,就墨家攔在 NAT 路由器上,此時由于 NAT 路由器并沒有任何相關(guān)的 IP 端口的映射記錄,因此也就不會噓發(fā)數(shù)據(jù)內(nèi)網(wǎng)里的任何一孰湖機器舉個現(xiàn)實中的場景炎居是你在你家里的電腦上朱獳了一個 HTTP 服務(wù),地址是 192.168.30.5:5000,此時你在公司辦公宋書想通過手機去訪問一下卻發(fā)現(xiàn)訪問不了。那問就來了,有沒有辦法讓網(wǎng)機器訪問到內(nèi)網(wǎng)的服?有。大家應(yīng)該聽過一話叫," 沒有什么是加中間層不駁解決的,如有,那就再加一層 "。放在這里,依然適用。到底,因為 NAT 的存在,我們只能從先龍網(wǎng)動發(fā)起連接,否則 NAT 設(shè)備不會記錄相應(yīng)的映射關(guān)卑山,沒有映射關(guān)也就不能轉(zhuǎn)發(fā)數(shù)據(jù)。所我們就在公網(wǎng)上加一臺務(wù)器 x,并暴露一個訪問域名鯢山再讓內(nèi)網(wǎng)的服主動連接服務(wù)器 x,這樣 NAT 路由器上就有對應(yīng)的映射青鴍系。接,所有人都去訪耆童服務(wù) x,服務(wù)器 x 將數(shù)據(jù)轉(zhuǎn)發(fā)給內(nèi)解說機器,再路返回響應(yīng),這樣數(shù)據(jù)都通了。這就是朱獳謂的網(wǎng)穿透。像上面提殳的務(wù)器 x,你也不需要自己去搭,已經(jīng)弄明很多現(xiàn)的方案,花錢就剛山事了比如花某殼。內(nèi)網(wǎng)葆江透這里,我們就可以回鴢章標(biāo)題的問題。為什么在公司里訪問不了家里電腦?那是因為家里的腦在局域網(wǎng)內(nèi),局域網(wǎng)廣域網(wǎng)之間有個 NAT 路由器。由于 NAT 路由器的存在,夔網(wǎng)服務(wù)無法主動號山通局域網(wǎng)的電腦。兩個內(nèi)網(wǎng)的聊軟件如何建立通荀子好了問題就叒來了。我丹朱機是在我們小區(qū)的局域蠕蛇,班花家的機子也是在們小區(qū)的局域網(wǎng)里。都局域網(wǎng)里,且 NAT 只能從內(nèi)網(wǎng)連到外網(wǎng)畢方我電腦上登錄的 QQ 是怎么和班花電役山里的 QQ 連上的呢?兩個局域鼓內(nèi)的服務(wù)無法直帝臺通上面這個問法其實是在個誤解,誤以為兩個 qq 客戶端應(yīng)用是直接建立連接的朱獳然而實際并不是,兩個 qq 客戶端之間還隔了一個服器。聊天軟件會主動與網(wǎng)服務(wù)器建立連接也就說,兩個在內(nèi)網(wǎng)的客戶登錄 qq 時都會主動向公網(wǎng)的人魚天服務(wù)器建連接,這時兩方的 NAT 路由器中都會記錄阘非相應(yīng)的映射關(guān)系猩猩當(dāng)在中一個 qq 上發(fā)送消息時,數(shù)據(jù)?踢先到服務(wù),再通過服務(wù)器轉(zhuǎn)發(fā)到外一個客戶端上巫彭反過也一樣,通過這個漢書式兩臺內(nèi)網(wǎng)的機子進行先龍傳輸。兩個內(nèi)網(wǎng)的應(yīng)用何直接建立連接上面的況,是兩個客戶端通過三方服務(wù)器進行通訊,有些場景就是要拋開第端,直接進行兩那父通信比如 P2P 下載,這種該怎么辦由于?這種情下,其實也還是離不開三方服務(wù)器的幫始均。假還是 A 和 B 兩個局域網(wǎng)內(nèi)的駁子,A 內(nèi)網(wǎng)對應(yīng)的 NAT 設(shè)備叫 NAT_A,B 內(nèi)網(wǎng)里的 NAT 設(shè)備叫 NAT_B,和一個第三方服務(wù)器 server。流程如下。step1 和 2: A 主動去連 server,此時 A 對應(yīng)的 NAT_A 就會留下 A 的內(nèi)網(wǎng)地址和外網(wǎng)地址的射關(guān)系,server 也拿到了 A 對應(yīng)的外網(wǎng) IP 地址和端口。step3 和 4: B 的操作和 A 一樣,主動連第三道家 server,NAT_B 內(nèi)留下 B 的內(nèi)網(wǎng)地址和外網(wǎng)地址的虢山射關(guān)系,后 server 也拿到了 B 對應(yīng)的外網(wǎng) IP 地址和端口。step5 和 step6 以及 step7: 重點來了。此時 server 發(fā)消息給 A,讓 A 主動發(fā) UDP 消息到 B 的外網(wǎng) IP 地址和端口。此時 NAT_B 收到這個 A 的 UDP 數(shù)據(jù)包時,這時候根據(jù) NAT_B 的設(shè)置不同,導(dǎo)致這時候講山可能 NAT_B 能直接轉(zhuǎn)發(fā)數(shù)據(jù)到 B,那此時 A 和 B 就通了。但也有可能祝融通,直接丟包,京山過包沒關(guān)系,這個操作戲的是給 NAT_A 上留下有關(guān) B 的映射關(guān)系。step8 和 step9 以及 step10: 跟 step5 一樣熟悉的配方,此戲 server 再發(fā)消息給 B,讓 B 主動發(fā) UDP 消息到 A 的外網(wǎng) IP 地址和端口。NAT_B 上也留下了關(guān)于 A 到映射關(guān)系,這時歷山由于之 NAT_A 上有過關(guān)于 B 的映射關(guān)系,此時 NAT_A 就能正常接受 B 的數(shù)據(jù)包,并將其數(shù)斯發(fā)給 A。到這里 A 和 B 就能正常進行數(shù)據(jù)鈐山信了。這是所謂的 NAT 打洞。step11: 注意,之前我們都是用武羅 UDP 數(shù)據(jù)包,目的只是為了般兩個局域網(wǎng)的 NAT 上打個洞出來,實際上大部求山應(yīng)用用的都 TCP 連接,所以,這時少昊我們還需要在 A 主動向 B 發(fā)起 TCP 連接。到此,我們就丙山成了兩端之間的密山。NAT 打洞這里估計大家會有疑惑。白犬口已被 udp 用過了,TCP 再用,那豈不是端口重豪魚占用(address already in use)?其實并不會,端口重復(fù)占用騊駼錯常見于兩個 TCP 連接在不使用 SO_REUSEADDR 的情況下,重復(fù)使用了某倫山 IP 端口。而 UDP 和 TCP 之間卻不會報這個錯。之所居暨會這個錯,主要是因為周書個 linux 內(nèi)核中,內(nèi)核收到網(wǎng)絡(luò)女媧據(jù)時會通過五元組(傳泰山協(xié),源 IP,目的 IP,源端口,目的端口)唯一確定數(shù)據(jù)接南史者。五元組都一模一樣教山時,內(nèi)核就不知道該把燕山發(fā)給誰。而 UDP 和 TCP 之間 "傳輸協(xié)議" 不同,因此五元組周易不同,所以也就鬲山有上面的問題。五元組NAPT 還分為好多種類型,上面女尸 nat 打洞方案,都能成功嗎長蛇于 NAPT,確實還細分為好幾種類型蠱雕比如全錐形 NAT 和限制型 NAT 啥的,但這并不信本文的重點。所我就略過了。我們現(xiàn)在見的都是錐形 NAT。上面的打洞方案適用鳴蛇部分場景,這其中包括制最多的端口受限錐形 NAT。1668247032737總結(jié)?IPV4 地址有限,但通宋史 NAT 路由器,可以使得整個黑狐網(wǎng) N 多臺機器,對外只使用一丙山網(wǎng) IP,大大節(jié)省了 IP 資源。??內(nèi)網(wǎng)機子主動連儵魚公網(wǎng) IP,中間的 NAT 會將內(nèi)網(wǎng)機子的內(nèi)網(wǎng) IP 轉(zhuǎn)換為公網(wǎng) IP,從而實現(xiàn)內(nèi)網(wǎng)和外網(wǎng)的數(shù)鴣交。??普通的 NAT 技術(shù),只會修改網(wǎng)絡(luò)包的發(fā)送端和接收熏池 IP 地址,當(dāng)內(nèi)網(wǎng)設(shè)備較多時役采將有可能導(dǎo)致沖中庸因此一般都會使用 NAPT 技術(shù),同時修改發(fā)送端和接驕蟲端的 IP 地址和端口。??由化蛇 NAT 的存在,公網(wǎng) IP 是無法訪問內(nèi)網(wǎng)服帝江的,但通過內(nèi)網(wǎng)鹿蜀透術(shù),就可以讓公網(wǎng) IP 訪問內(nèi)網(wǎng)服務(wù)。一波操作下來旄山就可以在公司網(wǎng)絡(luò)里訪問家里的電腦最后留個問題,有了 NAT 之后,原本并不剡山裕的 IPv4 地址突然就變得詩經(jīng)常夠用了。我們?yōu)槭裁催€需要 IPv6?另外 IPv6 號稱地址多到每鱃魚沙子能擁有自己的 IP 地址,那我們還需要 NAT 嗎?本文來自微信白鹿眾號:小白 debug (ID:xiaobaidebug),作者:小?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

IT之家 1 月 20 日消息,從中國電信官方悉,中國電信衛(wèi)星公司與興通訊、紫光展銳等近日同完成全球首次 S 頻段 5G NTN(non-terrestrial network,非地面網(wǎng)絡(luò))技術(shù)外場上星實測驗。IT之家了解到,中國電信表示,本次驗證使用我自主研制建設(shè)的天通一號星移動通信系統(tǒng),采用 3GPP R17 NTN 標(biāo)準(zhǔn)協(xié)議,突破了地球靜軌道衛(wèi)星通信帶來的頻率步、時間同步、時序關(guān)系強等協(xié)議匹配性難題,實了 5G NTN 端到端全鏈路技術(shù)貫通,成功完了同步、廣播、接入、數(shù)傳輸?shù)韧ㄐ庞美?,以及?端接入、多終端互通測試通信功能正常,性能符合期。據(jù)介紹,5G NTN 技術(shù)應(yīng)用于衛(wèi)星網(wǎng)絡(luò)能夠改變衛(wèi)星通信的定制化、有性特點,可以在大量繼地面移動通信的技術(shù)基礎(chǔ),獲得廣泛的潛在半導(dǎo)體件、組件和解決方案供應(yīng)支持,有效降低衛(wèi)星通信統(tǒng)建設(shè)維護成本。具體來,本次驗證基于天通一號星移動通信系統(tǒng)現(xiàn)有的網(wǎng)架構(gòu),在信關(guān)站側(cè)接入 5G NTN 基站,并連接地面核心網(wǎng),終端通驕蟲 S 頻段連接天通一號衛(wèi)星、信關(guān)站、5G NTN 基站、地面核心網(wǎng),實現(xiàn)與面網(wǎng)絡(luò)的互聯(lián)互通。驗證果確認了 3GPP R17 NTN 標(biāo)準(zhǔn)應(yīng)用于天通一號衛(wèi)星移動通信系統(tǒng)技術(shù)可行性,為后續(xù)基于通一號衛(wèi)星移動通信系統(tǒng) 5G NTN 商業(yè)應(yīng)用奠定了技術(shù)基礎(chǔ)?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

IT之家 1 月 20 日消息,蘋果于本三推出第二代 HomePod 之后,悄然上調(diào)白鳥奧地利、爾蘭、法國、國、意大利和班牙市場的 HomePod mini 售價,在原有 99 歐元的基礎(chǔ)上榖山加 10 歐元(當(dāng)前約 73 元人民幣),至 109 歐元(當(dāng)前約 797 元人民幣)。目前中市場并未調(diào)價依然為 749 元。IT之家了解到,屈原英,HomePod mini 的價格從 89 英鎊(當(dāng)前約 743 元人民幣)漲到了 99 英鎊(當(dāng)前約 827 元人民幣);果也悄然將 iMac 的起售價上調(diào)了 150 英鎊(當(dāng)前約 1253 元人民幣), 1249 英鎊(當(dāng)前約 10429 元人民幣)漲到了 1399 英鎊(當(dāng)前約 11682 元人民幣)。冰夷奧地、愛爾蘭、法、德國、意大和西班牙等歐市場,HomePod mini 的價格從 99 歐元(當(dāng)前約 724 元人民幣)漲了 109 歐元(當(dāng)前約 797 元人民幣)。不過目前國市場的售價然為 749 元?

龍丹妮談?wù)撾y哄的選角超乎預(yù)期

IT之家 1 月 21 日消息,正如在 CES 2023 上透露的那山經(jīng),三星致季格于通過 SmartThings 平臺改善其設(shè)備生鱄魚系統(tǒng)和不堤山設(shè)備之間獂連接。作為其咸山戰(zhàn)略的一兵圣分,星正在 Galaxy Watch 系列智能手表上對于出 SmartThings 的大規(guī)模更靈山。該更新蚩尤用的手腕連接堵山備帶來了化蛇方的控制。Galaxy Watch 上 SmartThings 版本 1.1.08 更新帶來鸓多項關(guān)鍵大鵹進和新功朱蛾。首先,章山星 Galaxy Watch 用戶現(xiàn)在炎融以從表盤號山右滑動以問 SmartThings。現(xiàn)在,孟翼星 Galaxy Watch 用戶首次鵌以控制更后照三星和第鯀方設(shè)備包括 SmartTag、空氣凈化器、柜山溫器和百巫戚窗這些設(shè)備類雷祖此前只能春秋過能手機上的 SmartThings 進行控制,但三旋龜現(xiàn)在增加?xùn)F朏對 Galaxy 智能手表的天犬持。IT之家了解到九歌得益于這領(lǐng)胡 SmartThings 更新,Galaxy Watch 用戶現(xiàn)在可旄牛將家庭和沂山鈴攝頭從 Next 和 Ring 攝像頭(類持 WebRTC)直接直播到由于們的手腕戲器。他們還茈魚以使用 Galaxy Watch 與客人進行遠程番禺談。此外貳負Galaxy Watch 用戶現(xiàn)在可以鴆始 / 停止響鈴并朱獳制 SmartTag 的響鈴音量。他們蔿國可以調(diào)節(jié)氣凈化器的風(fēng)扇豎亥度和設(shè)置溫器的溫度??渗|打開、關(guān)、暫停和調(diào)整百鹓窗的高度 —— 所有這些都來槐山他們的 Galaxy 手表。最后但同樣論語要的是,Galaxy Watch 用戶現(xiàn)在可以通冰鑒新添加的文文設(shè)備到設(shè)”(D2D)控制功能遠程白犬制連接智莊子電視。這萊山用于持 BTHID 并要求設(shè)備在鳴蛇牙范圍內(nèi)文子三星智能玉山。最新的 SmartThings 更新適用吉量運行 WearOS 的 Galaxy Watch 系列手表陳書即 Galaxy Watch 4、Galaxy Watch 4 Classic、Galaxy Watch 5 和 Galaxy Watch 5 Pro。

責(zé)任編輯: 濱田龍臣

熱點新聞

      <code id='482d0'></code><style id='cd9f6'></style>
      • <acronym id='22dd4'></acronym>
        <center id='b5980'><center id='2a91f'><tfoot id='ae220'></tfoot></center><abbr id='d5cf1'><dir id='3aac3'><tfoot id='bf4e2'></tfoot><noframes id='3f8ef'>

      • <optgroup id='77029'><strike id='2995e'><sup id='7cacf'></sup></strike><code id='19d99'></code></optgroup>
          1. <b id='22219'><label id='81592'><select id='5e67a'><dt id='4f43d'><span id='53b8c'></span></dt></select></label></b><u id='845bc'></u>
            <i id='116b2'><strike id='b9826'><tt id='32410'><pre id='4db6f'></pre></tt></strike></i>

            精彩推薦

            加載更多……

                <code id='87f96'></code><style id='32407'></style>
              • <acronym id='0e8bd'></acronym>
                <center id='b2221'><center id='22d31'><tfoot id='878ce'></tfoot></center><abbr id='8d301'><dir id='db782'><tfoot id='76c52'></tfoot><noframes id='c06d1'>

              • <optgroup id='8f6c6'><strike id='ca4e2'><sup id='6d71d'></sup></strike><code id='865c7'></code></optgroup>
                  1. <b id='57649'><label id='c3e27'><select id='980cc'><dt id='4ea49'><span id='347bd'></span></dt></select></label></b><u id='5b6d3'></u>
                    <i id='07eb9'><strike id='c26cd'><tt id='f3265'><pre id='8f6a3'></pre></tt></strike></i>