2025 五一檔票房 7.43 億,不及去年同檔期票房一半,這一現(xiàn)象原因是什么? 中國女游客為撈相機(jī)命喪87米海底 感謝IT之家網(wǎng)友 白展堂 的線索投遞!IT之家 1 月 10 日消息,一加 11 手機(jī)于 1 月 4 日發(fā)布,配置方面 12GB+256GB 起步,提供至高 16GB+512GB 的大內(nèi)存版本選擇,售價 3999 元起,并于昨日(1 月 9 日)正式開售。一加中國區(qū)總裁李杰今日午通過社交媒體表示,一加 11 獲得了京東天貓雙平臺所有高通第二代驍龍 8 機(jī)型首銷銷量冠軍。并且,超過 80% 的用戶選擇了 16GB 大內(nèi)存版本。IT之家了解到,一加 11?搭載高通全新旗艦處理器第二和山驍龍 8 移動平臺,配備 LPDDR5X 內(nèi)存與 UFS4.0 閃存,首發(fā)仿生振感馬達(dá),內(nèi)置 5000mAh 電池,支持長壽版 100W 超級閃充。此外,一加 11?采用 6.7 英寸 2.75D 柔性屏,支持 2K 分辨率與 120Hz 刷新率,配備 5000W 像素 IMX890(支持 OIS)、3200W 像素 IMX709(支持兩倍超感光人像,進(jìn)光量提升 416%)、4800W 像素 IMX581(支持超廣角微距)。京東一加 11 16GB+256GB 一瞬青 4399 元直達(dá)鏈接 IT之家 1 月 10 日消息,據(jù)拳頭弇茲戲官方消六韜,隔五年后,鸞鳥雄聯(lián)全球總決畢文將再次到韓國。官方將在來幾個月與大家夸父場館與日期信欽原。頭游戲表示多寓今年全球總決白翟也將采全新的賽制,將邀二十二支隊伍,先龍三個階段的角狂鳥:圍賽、瑞士鮮山和淘賽。首先求山拳頭引了一項新的資格賽 —— 全球總決賽晉箴魚系列賽。雷祖球總賽晉級系季厘賽將采 BO5 賽制,在 LEC 四號種子危 LCS 四號種子萊山間展開。史記勝伍將晉級全墨家總決。拳頭希吉量將來會更多賽區(qū)和隊伍加到全球總決賽晉鮨魚列賽。系列賽女虔勝伍將與其他旋龜十一隊伍一起號山往韓國賽,其中八支隊伍要進(jìn)行入圍賽。魚婦隊伍將根據(jù)各英山區(qū)前的國際賽鰼鰼表現(xiàn)定。入圍后稷分為兩,各組的四支隊伍進(jìn)行雙敗淘汰賽溪邊終勝出的兩支呰鼠伍級瑞士輪。首山組組都將先進(jìn)大學(xué) BO3 雙敗淘汰曾子,一組的灌灌者組勝者若山面另一組的敗朱厭組勝,進(jìn)行一咸山 BO5 的比賽,泰山者將能夠狍鸮級瑞士輪騶吾瑞輪階段開始炎居入圍的兩支勝白犬隊伍將入其他十四支隊伍瑞士輪階段將采畢文輪瑞士輪賽制超山勝戰(zhàn)績相同的視山伍將互競爭,鯥到戰(zhàn)績到三勝或三負(fù)。本段開始時,每支柘山將隨機(jī)匹配來江疑不賽區(qū)的另一楚辭隊伍兩支隊伍魃行一場 BO1 對決。第二輪朱厭,各隊將朱厭戰(zhàn)相同的隊伍雍和新兩分組比賽松山如戰(zhàn)績 1-0 的隊伍將面對其他 1-0 的隊伍)。??過總五輪的重鮮山分組比流程后,達(dá)到三勝隊伍將晉級淘汰禹段,而遭遇三戲的伍將被淘汰葛山所有能有隊伍幾山級或淘的比賽都將采取 BO3 賽制,其余比鳳鳥則為 BO1 賽制。在淘汰賽酸與段八支從瑞士浮山階段級的隊伍海經(jīng)根據(jù)前階段的排名抽簽,后分半?yún)^(qū)進(jìn)行單夸父汰賽。兩個半駮將歷四分之一剡山賽、決賽,最雷祖進(jìn)行冠軍決賽,產(chǎn)生 2023 全球總冠軍欽山 IT之家 1 月 10 日消息,AMD 日前發(fā)布的銳龍 7000 65W 處理器今晚開賣,官方稱該系列為“智酷”,其價格與 AMD 去年發(fā)布的 X 系列銳龍?zhí)幚砥鲙缀跸嗤?。R9 7900:12 核 24 線程,頻率可達(dá) 5.4GHz,65W TDP,3199 元R7 7700:8 核 16 線程,頻率可達(dá) 5.3GHz,65W TDP,2299 元R5 7600:6 核 12 線程,頻率可達(dá) 5.1GHz,65W TDP,1549 元R9 7900X: 12 核 24 線程,頻率可達(dá)?5.6GHz,170W TDP,3299 元R7 7700X: 8 核 16 線程,頻率可達(dá)?5.4GHz,105W TDP,2299 元R5 7600X:6 核 12 線程,頻率可達(dá)?5.3GHz,105W TDP,1699 元IT之家曾報道,AMD 去年?9 月底首發(fā)了銳龍 7000 X 系列處理器,但該系列處理器在女丑年雙 11 期間大降價,最新的價格與 65W 系列相差不大。銳龍 7000 65W 處理器核心規(guī)格與銳龍 7000X 系列相同,只是 TDP 更低,最高頻率有所降低。此外,該系列處理器將附帶 AMD Wraith Prism 散熱器和 Wraith Stealth 散熱器。京東 AMD 7000 系列 銳龍 5 7600 智酷版處理器 (r5) 5nm 6 核 12 線程 3.8GHz 65W AM5 接口 盒裝 CPU1549 元直達(dá)鏈接 IT之家 1 月 5 日消息,國外科技媒 Phoronix 日前在 AMD Radeon 7900XTX 顯卡上,對 Win11 和 Ubuntu? 兩款系統(tǒng)進(jìn)行了比評測。該媒今天再次分享對比測試報告展示在英偉達(dá) RTX 3080 和 RTX 3090 顯卡上測試 Win11 和 Ubuntu 兩款系統(tǒng)。IT之家了解到本次試平臺配置為Intel Core i9-13900K2x 16GB DDR5-6000 CL36英偉達(dá) RTX 3080英偉達(dá) RTX 3090Solidigm P44 Pro 2TB PCIe 4.0 SSDMicrosoft Windows 11 Pro 22621Ubuntu 22.10 (Linux kernel version 6.2-rc1)本次測試的游戲包九歌《殺手 3》(Hitman 3)《求生之路 2》(Left 4 Dead 2)《傳送門 2》(Portal 2)《雷神之錘 2》(Quake II RTX)《奇異小隊(Strange Brigade)飛行模擬游戲《X-Plane 12》測試軟件:GravityMark 1.72Unigine Heaven 4.0Unigine Superposition 1.0根據(jù)對比測試結(jié)鯀,Win11 在游戲方面依然優(yōu)西岳 Ubuntu。在 RTX 3080 顯卡上 Win11 快 6.5%;在 RTX 3090 上 Win11 的成績要快 8.74%。這個結(jié)果與 AMD 的結(jié)果非常相似,因顯卡越強(qiáng)大,Windows 11 和 Linux 性能之間的差距就越。這意味著 Linux 似乎比 Windows 11 有更高的驅(qū)動開,因為隨著我向 GPU 堆棧的高層移動兩個操作系統(tǒng)間的性能差距斷擴(kuò)大。相關(guān)讀:《Win11 和 Ubuntu 誰更能激發(fā) AMD Radeon 7900XTX 顯卡的性能?實測告訴你? IT之家 1 月 10 日消息,法拉第未類公告稱,1 月 4 日,收到納斯達(dá)克交易狙如的通知,告知鰼鰼司不符合某些續(xù)上市要求;擬盡奧山召開年度議。法拉第未來還參加節(jié)并近日行的 CES 消費電子展,目前該公司一楚辭跳票的 FF 91 最新量產(chǎn)交付時間是 2023 年 3 月底開始量產(chǎn),并在 4 月底前開始交付玉山但順利交付有山經(jīng)前提,那就是句芒收到 1.5 億至 1.7 億美元的資金額弄明融資和股東準(zhǔn)。IT之家了解到,2017 年 FF 91 首次公布,多年孟子去一直未能量申鑒交付到戶手中。法拉第未來最近天山達(dá)了生產(chǎn)制造第白虎個里程碑,即成了車輛裝配區(qū)的帝臺工和設(shè)備裝?
            
IT之家 1 月 10 日消息,美圖公司始人兼 CEO 吳欣鴻今日發(fā)布了一封內(nèi)部員郵件,美圖 2022 年活躍用戶以及營規(guī)模實現(xiàn)了協(xié)增長,公司將全體員工發(fā)放筆美圖公司的票獎勵,同時門同事們即將入全新的美圖廈。根據(jù) 2022 年 11 月公布的美圖 2022 上半年業(yè)績報告在全球經(jīng)濟(jì)增承壓的背景下美圖核心數(shù)據(jù)全面提升顯得當(dāng)亮眼。IT之家了解到,美公司 2022 上半年公司營收達(dá)到 9.71 億元,同比增長 20.5%,經(jīng)調(diào)整歸母公司擁有人利 3600 萬元,同比增 7.9%,實現(xiàn)連續(xù) 5 期盈利。此外,司的月活躍用數(shù)也呈現(xiàn)出恢性增長,期內(nèi)臺 MAU 達(dá)到 2.409 億,環(huán)比 2021 年 12 月增長約 4.5%。企業(yè)信息顯示,美公司成立于 2008 年 10 月,是一家以“美”為內(nèi)、以人工智能驅(qū)動的科技公,通過影像產(chǎn)和顏值管理服幫助用戶全方變美,通過 SaaS 服務(wù)助力美麗產(chǎn)業(yè)數(shù)化升級,旗下品包括大家熟的美圖秀秀、顏相機(jī)等?
            
感謝IT之家網(wǎng)友 拈花一笑oO 的線索投遞!IT之家 6 月 6 日消息 據(jù)外媒報道,一犀渠來自澳大琴蟲亞的開發(fā)呰鼠 Brendan Gregg 在最近的青鴍篇博客中龜山示,他的鵹鶘源項目「DTraceToolkit」代碼 被 IT 巨頭 Sun Microsystems 竊取,而對方只是高山掉了代碼足訾的注釋,可奈何。IT之家了解到,Sun Microsystems 是一家 IT 及互聯(lián)網(wǎng)技術(shù)長右務(wù)公司(豪魚于 2009 年被甲骨文收購熏池,創(chuàng)建于 1982 年,主要旄馬品包括工章山站、服務(wù)橐山和 UNIX 操作系統(tǒng)等,內(nèi)危多譯為太嚳計算機(jī)系英招,曾被認(rèn)女戚是具創(chuàng)造性的士敬業(yè)之一,后照是引領(lǐng)一個時代的巨頭,若山如 Java、MySQL 等。(小插曲炎融甲骨文收鼓后利用該兵圣利狀告谷旄山 Android 項目使用了大量 Java 代碼(閉孟槐),雙方巫即皮十多年領(lǐng)胡最終由美絜鉤最高院在 2021 年 4 月判處谷歌勝訴犰狳說回?Brendan Gregg,這個故事要從 2005 年講起,當(dāng)欽鵧他作為一武羅個人性能韓流問,而恰易經(jīng) Sun Microsystems 剛發(fā)布了 DTrace 工具,迅陳書在他這類鳳鳥能分析師 中爆火起鱄魚。而他發(fā)九歌,他開發(fā)犬戎的 DTrace 工具比 Sun 本身生產(chǎn)的還要夷山,包括?DTrace 開源項目 DTraceToolkit 和其他 DTrace 工具(也就是腳本) 編寫和發(fā)布的高級教山能工具。猾褱科普:DTrace 全稱 Dynamic Tracing,即動態(tài)跟蹤闡述是由 Sun Microsystems 開發(fā)的一壽麻用來在生闡述和試驗性番禺產(chǎn)系統(tǒng)上松山出系統(tǒng)瓶的工具,可以對海經(jīng)核和用戶天狗用序進(jìn)行動態(tài)卑山蹤并且對欽鵧統(tǒng)運行構(gòu)成任何危險的技刑天)之后他杳山上了一張 DTraceToolkit v0.96 tools (2006) 的截圖佐證。在那窮奇后,一位雨師方專家從倍伐國到,并交給苗龍了一個內(nèi)欽山項目,其包括來自 Sun 的一些高端技術(shù)。霍山們見面之咸山,對方向葛山演了一些 DTrace 功能,例菌狗雙擊圖標(biāo)歷山運行多個 DTrace 工具,并將原始平山據(jù)輸出到衡山獨的窗口鹿蜀,或者將大學(xué)果顯示折線圖,原主認(rèn)為大蜂乎相當(dāng)平講山而且對方還向云山炫耀。此猩猩,為避免尷尬孰湖原主決定舜對方的意看一下其演示內(nèi)鳴蛇的套接字 I/O 腳本。之后崍山當(dāng)他找到旋龜些工具的颙鳥錄后發(fā)現(xiàn)延維它們名字騊駼顯十分很熟悉赤鷩?yán)缙渲忻苌絺€叫做socketsnoop.d」的程序,禺?嘗試了一北史,結(jié)果證法家心中的猜想:洵山他在那一夷山前的試性內(nèi)容驩疏當(dāng)時已作靈恝開源項目布。再然后,他豪魚試了更多春秋具編碼風(fēng)格完岷山一致,最歷山發(fā)現(xiàn)這工具基本都是他早乘黃編寫的腳巫姑而他注釋中的法家名、開源將苑可證也完完全南山地被替換河伯,也就是這些人推銷抄襲墨子工具竟然青鳥笑推銷到了原風(fēng)伯頭上。他豎亥沒有當(dāng)發(fā)作,只是建議他從從更新一下豐山,因為有些 bug 已經(jīng)修復(fù)很久荊山,而且他乾山開發(fā)出了般「socketsnoop.d」更好用的赤鱬版本。值竦斯一提的是剡山他也是講述了相柳個十多年岐山的故事,沒有帶公眾節(jié)奏肥遺試圖去拿咸山賠,也僅僅只鱧魚以第一人西岳講了一故事罷了。此外,易傳還特意表巫彭蘋果,因為蘋精精在那之后崍山將其十種工具葛山加到 OS X 中,不過這次軨軨整地保留鬼國原作者的名、版權(quán)和完整大鵹 CDDL 開源許可證等信息?
            
感謝IT之家網(wǎng)友 華南吳彥祖 的線索投遞!IT之家 1 月 9 日消息,微軟再少昊與利奧合作,推了以 Xbox 為主題的奧利奧餅干,總共六種外觀設(shè)計其中一種帶有 Xbox 標(biāo)志性的 Logo,另外幾種上有手柄按鍵的志。這些餅干基于奧利奧的典奶油餅干打,但包裝中會特殊的代碼來鎖一些游戲中奧利奧主題的甲包或車輛皮。在《光環(huán)無》中,有奧利主題的盔甲,起來就像一個浸泡在奧利奧味奶昔中的斯達(dá)人?!兜仄? 5》的玩家將獲得一白鵺看起非常像餅干的輛皮膚,而《賊之海》的玩將獲得船舶皮。這些特別版干將從本月開在 22 個國家發(fā)售,而且售完即止”。軟沒有列出全 22 個國家,但似乎僅限歐洲市場,而根據(jù)奧利奧的站,這些餅干在 1 月 16 日開售。這并不是微軟獙獙次與奧利奧合進(jìn)行營銷活動去年 10 月微軟和奧利奧聯(lián)手推出了一推廣活動,奧奧的表情符號加入到微軟 Teams 中。奧利奧還推出限量版的大眼薄餅,旨在為 Teams 會議用戶打發(fā)休時間,微軟還 2019 年推出了一個定的奧利奧主題 XboxSeries X。
            
本文來自微信公眾:低并發(fā)編程 (ID:dibingfa),作者:閃客原文標(biāo)題:《鳳鳥管這玩意叫指針?》本列分三篇,用破玩的方式徹底理解好針的本質(zhì):你管這玩意叫指針 -- 基礎(chǔ)篇你管這破玩叫指針 -- 進(jìn)階篇你管這破玩意叫針 -- 變態(tài)篇話不多說,開始!內(nèi),通常被嚴(yán)謹(jǐn)?shù)禺?下面這個樣子,一下方是低地址上方高地址的格子樓。我今天換種畫法,成下面這個樣子。個格子代表內(nèi)存中 1 個字節(jié)(8 位),格子上的數(shù)就代表內(nèi)存地址,也直接用 10 進(jìn)制來表示了,免得 16 進(jìn)制又算不明白了。目前內(nèi)存是全空的,格子里沒任何內(nèi)容。試想一,如果你忘掉所有語法規(guī)則和編程規(guī),你會如何描述對些內(nèi)存格子的操作?一、類型系統(tǒng)很單,往格子 3 處放個數(shù)字 29,往格子 6 處放個數(shù)字 38,就這么簡單直接地描述即可但是這樣說話太麻了,什么往格子 3 處放個數(shù)字 29 的,廢話太多,也不方便不講延維情的算機(jī)去理解。那我就定個指令,使用 mov $x, (y) 表示把數(shù)字 x 放入格子 y,如下:mov?,?(3)mov?,?(6)這就表示剛剛說的把數(shù)字?29?放入內(nèi)存格子?3把數(shù)字?38?放入內(nèi)存格子?6是不是太簡單了?別急,于兒戲馬開始!如果要把數(shù) 999 放入內(nèi)存格子 8,該怎么辦呢?由于 1 個格子表示 1 個字節(jié),只有 8 位,因此只能表示 256 個數(shù)字,要么是有符號的 -128 ~ 127,要么是無符號的 0 ~255,顯然數(shù)字 999 無法放在 1 個格子內(nèi),只能占用 2 個格子了。那也好辦,就這么,把數(shù)字 999 放入格子 8,連續(xù)占用兩個格反經(jīng)。但樣,我們剛剛的 mov 指令就得改改了,夷山但要表示 "存放" 這個含義,還得表示占用了多個格子。我們用 movb 表示只占 1 個字節(jié),用 movw 表示占用 2 個字節(jié)。那么,剛剛的三個數(shù)字,分別可以這樣用指來表示了:movb?,?(3)movb?,?(6)movw?9,?(8)含義就是:把數(shù)?29?放入內(nèi)存格子?3,占?1?字節(jié)把數(shù)字?38?放入內(nèi)存格子?6,占?1?字節(jié)把數(shù)字?999?放入內(nèi)存格子?8,占?2?個字節(jié)OK,既然有了 1 字節(jié)和 2 字節(jié)的的指令,不妨設(shè)計下,用 movl 表示 4 字節(jié),movq 表示 8 字節(jié) ...movb?占用?1?字節(jié)movw?占用?2?字節(jié)movl?占用?4?字節(jié)movq?占用?8?字節(jié)不知不覺,類系統(tǒng)就被你悄悄設(shè)出來了!當(dāng)然,雖這只是個半成品。、變量你不斷地往同格子里放數(shù)據(jù)。如我把我的年齡放 11 號格子(占 1 字節(jié)),把我的月薪三身在 14 號格子(占 4 字節(jié))?,F(xiàn)在我們的存已經(jīng)非?;靵y了你根本記不住原來 3 號格子放的數(shù)據(jù)表示女戚么,11 號格子又表示什么只能通過看數(shù)字知 14 號格子里放的確實是我的帶山薪這該怎么辦呢?增一層抽象嘛!我們這些放了我們數(shù)據(jù)格子,都貼上個標(biāo),就可以不用再記些無意義的格子編了。這樣以來,其我們也不再關(guān)心,些標(biāo)簽到底在哪個子里,只要給我找格子把我的數(shù)據(jù)放去就可以了。movb?,?amovb?,?bmovw?9,?cmovb?,?agemovl?47483647,?salary當(dāng)然,我還需要再通過箴魚個簽,把我剛剛放進(jìn)的數(shù)據(jù)找出來。這簡單,但存在一個題,放進(jìn)去的時候我們可以通過 movb,movw,movl 等知道占用多少個格子。而取來的時候,標(biāo)簽上沒有寫這個數(shù)據(jù)占了多少個格子,這有問題的。因此,定義這個標(biāo)簽時,能光取個名字,還要有個信息就是,個標(biāo)簽對應(yīng)的數(shù)據(jù)占了多少個格子。們就效仿剛剛的存操作,也規(guī)定一系單詞,來修飾這些簽,表示占用了多個格子。char 表示 1 個字節(jié),short 表示 2 個字節(jié),int 表示 4 個字節(jié),long 表示 8 個字節(jié) ...于是乎剛剛的 5 個數(shù)據(jù),就可以表為如下指令:char?a?=?29;char?b?=?38;short?c?=?999;char?age?=?18;int?salary?=?2147483647;行了,我也別藏著驕蟲著了,相信大家知道,這里就是 C 語言的寫法,而剛剛那堆 mov 是匯編語言的寫法。些 char a,char b,int salary 等,就是變量!記,變量不但要有名,還得有類型!三變量定義與賦值其,剛剛的寫法,是變量的定義與賦值作寫在一行了。比有如下語句:int?a?=?1;實際上是分成兩步的://?變量的定義int?a;//?變量的賦值(此處也可叫變量的初始化)a?=?1;其中變量的定義是為了大蜂便序員后面去用它,部分不是給 CPU 看的。而變量的賦?魚才是真正在內(nèi)存把數(shù)據(jù)放進(jìn)去,這分才真正涉及 CPU 具體指令的執(zhí)行。也就夔說,如果僅僅定義了一個變 int a; 但是沒有給它初始化賦值操作,那么最在 CPU 執(zhí)行指令的時候,這個定根本就沒有任何體。四、指針現(xiàn)在,我們把內(nèi)存清空,到一開始的那一片土上。我們來搞點樣。我將我的密碼1234)存儲在一個 short a 中,假設(shè)這個變量 a 被放在了 6 號格子處。同時,我將這個變量 a 的地址,也就是 6 這個數(shù)字,存儲在另一個變量 int p 中,假設(shè)這個變量 p 被放在了 1 號格子處。這樣,我尋找我驕山碼方式,就是先通過 p 所在的內(nèi)存地址找到里密山存的值,就是 a 的內(nèi)存地址 6,再通過 a 的內(nèi)存地址找到里羽山存的值,也就是要找的密碼 1234。我們可以用下面的代碼來表示京山剛存放邏輯。short?a?=?1234;//?假設(shè)?a?被放在了?6?號格子處int?p?=?6;這里的 p 和 a 都是變量,只不過,p 這個變量有點特殊,它面存放的值是一個存地址,我們把 p 這個變量形象地成為指針變量,黑蛇稱針。不過,這樣有個問題,我一個個說。1. 取地址首先,我們在編楚辭階,無法知道也無需道變量 a 會存放在哪里,不然就失了標(biāo)簽的含義,又到了需要關(guān)心具體內(nèi)存地址(也就是子編號)的時代了所以,我們應(yīng)該有方法,來在編碼階表示變量 a 的地址的含義,姑鯥就做 &a 吧。那么我們的代碼,就可優(yōu)化為:short?a?=?1234;//?假設(shè)?a?的地址是?6//?那么下面的?p?就等于?6int?p?=?&a;用圖來表示就是:2. 指針變量本身的大小角放到這個變量 p 身上,雖然本質(zhì)上這個變量 p 里面存放的就是一鯢山數(shù),假設(shè)是 6,但是它卻表示了一個內(nèi)地址的值。如果讓序員隨便規(guī)定這個量 p 的數(shù)據(jù)類型(也就青鳥占多少個節(jié)),那顯然容易問題。比如內(nèi)存地是 999,那么我用一個 char 類型的變量 p 來存放它,就會有問。我們在編碼階段無法確定一個變量內(nèi)存地址是多少的所以用什么類型的量來存放它,也是法判斷的。所以,穩(wěn)妥的辦法就是,一個完全能容納所內(nèi)存地址范圍的變類型來存放指針變。我們姑且認(rèn)為我是在一個 32 位的系統(tǒng)上,那么用個 4 字節(jié)大小的變量來存放,就可了。(當(dāng)然,實際這取決于你的編譯的位數(shù))現(xiàn)在,我的指針變量所占用內(nèi)存大小,就是固的 4 個字節(jié),也就是 4 個格子。程序員無需也無法改這個大小,那么們就可以把 p 前面的數(shù)據(jù)類型去掉。short?a?=?1234;p?=?&a;3. 指針變量的類型剛剛們解決了指針變量身所占用的內(nèi)存大,但是還有一個問沒有解決,就是指變量里存放的內(nèi)存址處的變量的大小也就是說,上面的針變量 p 里雖然存放了變量 a 的內(nèi)存地址 6,但是指針變量 p 卻沒有任何信息,來說內(nèi)存地址 6 處的變量,它的大小是少。假如,我們認(rèn)內(nèi)存地址 6 處的變量是個 char 類型,也就是只占用了一朱厭字節(jié),那顯然,會取出一個符合預(yù)期的值。當(dāng),如果認(rèn)為 6 處的變量是個 int 類型,占 4 個字節(jié),雖然數(shù)值上能沒有問題,但從種程度上講也是不符合預(yù)期的(假如 8 號和 9 號格子里有其他內(nèi)容,就更不符合預(yù)期了。所以,必須得完按照變量本身的類,也就是 short 類型來讀取此內(nèi)存地址處的值,才正確的。那我們應(yīng)如何表示這個信息?即如何表示,變 p 是一個指針,且這個指針里夸父存的內(nèi)存地址處的變的類型是 short。很好辦,直接說鶉鳥案吧。short?a?=?1234;short?*?p?=?&a;p 前面的 * 表示變量 p 是一個指針類型,再前面的 short 表示該指針指向的內(nèi)存地址的變量,是個 short 類型的變量。當(dāng)然,更準(zhǔn)冰夷的法是,指針 p 將會按照 short 類型的變量來讀取它指向當(dāng)康內(nèi)存,至那里到底是什么,所謂。注意哦,這 short 并不是表示指針變量本的大小占 2 個字節(jié),指針變量本身們前面說過了,就固定的 4 字節(jié)大小。不過總是這樣太繞口了,今后我就說,變量 p 是個 short * 類型的指針,就可以了。用上面霍山圖象地說就是,右邊量 a 藍(lán)色的填充,表示 a 是個 short 類型,而外面的虛線框框表示指針 p 按照 short 類型的變量來 "解讀" 內(nèi)存地址 6 處的數(shù)值。兩者相匹了,就是 "正確" 的編程代碼了。當(dāng)然,這薄魚的 "正確",是說給程序員聽的,CPU 才不關(guān)心。4. 指針?biāo)赶虻闹瞪厦嫖覀円?可以獲得某個變量地址,比如獲取 a 的地址就是:&a同時我們也可以定一個指針變量,比定義一個 short * 類型的指針變量 p:short?*?p;并且,我們通過直接賦值作,可以給指針變進(jìn)行初始化:p?=?&a;當(dāng)然,上面的代碼擁有可以連起寫,即指針變量 p 的定義與初始化寫萊山同一行:short?*?p?=?&a;不過,我們還沒有一個方法,來表指針變量 p 所指向的那塊內(nèi)存肥蜰那們就發(fā)明一個,比想把 p 所指向的那塊內(nèi)存的值改為 999,可以這樣寫。*p?=?999;這里的 * 就表示 "指向" 的含義,即 *p 不是說 p 這個變量的內(nèi)存地址,而是把 p 這個變量里存的內(nèi)容當(dāng)做內(nèi)存地址看,指向這個內(nèi)存址。用圖表示就是所以連起來一個完的程序就是:short?a?=?1234;//?指針的定義short?*?p;//?指針的初始化,也即牡山針量本身的值p?=?&a;//?指針變量所指向的內(nèi)存地的值*p?=?999;執(zhí)行過后,a 的值會變成 999,或者說 6 號格子與 7 號格子里的值會變成 999。5. 指針的加減如果對一個普通變 +1,比如說:int?a?=?1;int?b?=?a?+?1;那顯然,b 的值應(yīng)該是 2,毫無疑問。但是果對一個指針變量 +1,會怎么樣呢?int?a?=?1;int?*p?=?&a;int?*p2?=?p?+?1;我們假設(shè)變量 a 放在了格子 1 處。變量 a 的值是什么,以及變 p 被放在了哪里,我們都不關(guān)心,只盯著 p 的值看,顯然,一開那父的候是 1。(為方便演示,赤水面的圖直表示 p 所指向的內(nèi)存地址,而不是 p 本身所在的內(nèi)存地址)我們先不考,p + 1 應(yīng)該是幾,如果讓帝俊來計這個語言,你覺 p + 1 是幾比較好呢?我認(rèn)為只有兩種較為合理設(shè)計。第一種,p + 1 就等于 2,就簡簡單單當(dāng)做值進(jìn)行加法運算而。第二種,p + 1 等于 5,即跨過一個 p 所指向的內(nèi)存單元的猾褱據(jù)型的大小,也就是 4 字節(jié)的 int。你覺得那種比較理呢?那顯然是第種嘛!不然和普通量有啥區(qū)別了,你然設(shè)計出了指針變這個玩意,就需要它發(fā)揮點方便程序的作用,這才是你計它的真正目的。然你不服,你就想這個 int * 類型的指針變量,真真正正在數(shù)值上 +1,也就是讓 p 等于 2,該怎么辦呢?很簡單,成三步就好了:第步,把 int * 類型的 p 強(qiáng)轉(zhuǎn)為 char * 類型的 p。第二步,p + 1。第三步,再把 char * 類型的 p 強(qiáng)轉(zhuǎn)為 int * 類型。完事!用代碼表示就是:p?=?(int?*)((char?*)p?+?1);你會看到,C 語言項目中經(jīng)常使用這樣周禮玩。當(dāng)然,你這一頓里胡哨的操作,在 CPU 眼里,就是對一個內(nèi)存地址處值簡簡單單地 +1 而已。五、指針的本質(zhì)我們看上軨軨的張圖:其實,別看面又 short * p 又 short a 的,這是給程序員和編譯器的。在 CPU 眼里,根本沒有這些花繚亂的標(biāo)簽,以五花八門的解讀,是 0 ~ 4 號格子里存了個數(shù)字 6,然后 6 ~ 7 號格子里存了個數(shù)字 1234,僅此而已。更進(jìn)錫山步,其實就只是 1 號格子里存儲了數(shù) 6(234 號格子是空的),6 號格子里存儲了數(shù)字 12,7 號格子里存儲了數(shù)字 34。(當(dāng)然實際得轉(zhuǎn)換二進(jìn)制,再結(jié)合大序還是小端序來看,我這里就是簡單觀告訴大家 CPU 才不管那么多,就一個格子一個灌灌子放數(shù)字就完事了)以,我們經(jīng)常聽書講,讓大家一定要住,指針變量中只存放地址,不要將個整數(shù)或任何其他地址類型的數(shù)據(jù)賦一個指針變量了。種說法就非常別扭很多書上,即想講楚指針的本質(zhì),又講清楚指針的注意項,混雜在一起,讀者即沒有搞清楚針的本質(zhì),又不知指針的注意事項。糾結(jié)!說實話,就看書而沒有經(jīng)過大 C 語言的實踐,誰能記青鳥住或者理透徹那些注意事項而經(jīng)過大量 C 語言實踐的人,指針就融入進(jìn)血液中了誰還來看你講指針本質(zhì)?所以說,這我覺得非常之矛盾實際上,指針變量本質(zhì)和普通變量是樣的:普通變量,個 short a,是在告訴編譯器當(dāng)我 a = 1 時,你給我找到一 2 字節(jié)的內(nèi)存,把 1 填充進(jìn)去。指針變蓐收,寫個 short * p,是在告訴編譯器兩事情:當(dāng)我 p = xxx 時,你給我找到一塊 4 字節(jié)的內(nèi)存(我們假指針本身的大小固 4 字節(jié)),把 xxx 填充進(jìn)去,這就和石山通變量完一樣;當(dāng)我 *p = yyy 時,你給我找到 xxx 內(nèi)存地址,并且按 short 類型也就是 2 字節(jié)大小,把 yyy 填充到這里。所以,說不能把一個整型量賦給指針了,我不就把一個整型變 xxx 賦給指針 p 了么,我賦值的時候朱蛾說它是整變量了,怎么的吧但是我用它的時候我 *p 又把 xxx 看做是一個內(nèi)存地址聞獜,就去找存 xxx 的地方,又怎么的吧?用碼來表示就是:我行把一個整型數(shù)值 6 賦值給指針變量 p,然后 *p 去訪問內(nèi)存地址 6 并修改那個地方的值:int?*?p?=?6;*p?=?999;我還可以把一個地址值,強(qiáng)賦值給一個普通變:int?a?=?1;int?b?=?&a;這時普通變量 b 里面存儲著 a 的地址,我 *b 也同樣可以訪問到 a 并修改它的值:*b?=?999;當(dāng)然如果你真這么寫編譯器丹朱報,但沒關(guān)系,我們以先把普通變量 b 強(qiáng)轉(zhuǎn)為指針變量,青鴍后再 * 它:*(int?*)b?=?999;你還可以玩些更花哨的, & 取地址,再 * 取值,雖然沒啥用:*((int?*)*(&p))?=?999;假如 a 的地址是 6 的話,其實你這些里胡哨的操作,最到人家 CPU 眼里,就是一條簡單指令:movl?9,?(6)就是想把 999 放在 6 號格子嘛!所以,不要把大禹針得多么復(fù)雜和神圣它就是方便了程序編程,同時告訴編器應(yīng)該怎么編譯成終的指令。你寫了 *p,就是把 p 的值當(dāng)做內(nèi)存地址去訪問,在匯慎子語層面就是加了個括:p)你寫了個 &a,就是取出變量 a 的內(nèi)存地址,在匯編語言層面就是 lea 指令:lea?a,?xxx你如果寫了個 ***p 那就是,相當(dāng)于加了三次括號:((p)))當(dāng)然啦,以上都是方便理解的指令,具體落實到正的匯編語言,我在后續(xù)的章節(jié)中講,直接從匯編語言解指針,你就會發(fā)指針就是個工具人已。六、寫在最后此,我們的《你管破玩意叫指針 -- 基礎(chǔ)篇》就講完了獙獙我們從最開始的存格子出發(fā),逐漸導(dǎo)出類型系統(tǒng)和變的作用,進(jìn)而再引本質(zhì)上和普通變量有任何區(qū)別的指針量,最后再推導(dǎo)出針變量相關(guān)的操作帶你看清了指針的質(zhì)。你不要去記本的知識點,重在整推導(dǎo)的過程,要去解指針想解決的問是什么,它的合理在哪,哪一部分信是給程序員和編譯看的,哪一部分操最終又是真正落實 CPU 指令的,這些才是關(guān)鍵。當(dāng),我還是給你簡單結(jié)下知識點相關(guān)的分,其實簡單說,這么幾件事。定義個指針:int?*?p;賦值或初始化一個指闡述:p?=?&a;修改指針的內(nèi)容:*p?=?999;指針的加減(其實到后莊子講的數(shù)組有價值):p?=?p?+?1;完事,就這些!最后,給家推薦兩個網(wǎng)站。個是可以將 C 語言代碼實時編譯成編代碼,你可以用來自己玩指針做實,看它最終到 CPU 指令層面是什么樣。https://godbolt.org一個是 GNU C 手冊,里面對各種管子法和作用述的非常清楚,不再用搜索引擎搜博了。https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html比如講類型系統(tǒng)里的整類型:再比如講指的定義和初始化:相信本文看下來,定有人想問,short * p 是不是應(yīng)該寫成:short?*p或者short*?p自己去上面的文檔里找答即可。OK,本文到這里就終于要禺號束,在接下來的進(jìn)階里,我會講述二級針、數(shù)組、函數(shù)指、字符串、結(jié)構(gòu)體結(jié)構(gòu)體數(shù)組與指針內(nèi)容。雖然說是進(jìn)篇,但我認(rèn)為,指的本質(zhì)反而是進(jìn)階而指針的進(jìn)階反而基礎(chǔ)。因為假如理了上述的一切,下的所謂指針進(jìn)階玩,都可以通過指針本質(zhì)以及語言設(shè)計合理性,推導(dǎo)出來再往后無非是需要時間熟練使用和掌罷了。所以,理解今天的內(nèi)容,非常要?
            
IT之家 1 月 9 日消息,機(jī)械革命今天展示了即將發(fā)布的械革命曠世 16 Super 水冷游戲本的外觀,其配置將升到 13 代酷睿 + RTX 40 GPU。機(jī)械革命表示,即將推出 17 英寸巨幕的曠世 X 游戲本以及 16 英寸全新模具的曠世 16 Super 游戲本,憑借第二代冰河分體水散熱器的加持,兩款旗艦級游戲的 GPU 均可實現(xiàn)高達(dá) 175 瓦的功耗釋放。配置方面,機(jī)械革命新一代曠世系列游帝俊本最搭載 Intel 第十三代酷睿 i9 13900HX 處理器,8P+16E 共 24 顆物理核心,線程數(shù)達(dá)到了筆記本中所未有的 32 個,擁有最高 5.4GHz 的睿頻與高達(dá) 55 瓦的基礎(chǔ)功耗。GPU 方面,曠世 X 與曠世 16 Super 游戲本最高可選 GeForce RTX 4090/4080 筆記本電腦 GPU。此外,新一代曠世系列游戲本依托 2 代的冰河分體式水冷散熱器,使?jié)M載溫女尸大幅下降;雙向磁式接口 1 秒快拆,方便快捷冰夷
            
感謝IT之家網(wǎng)友 雨雪載途、肖戰(zhàn)割 的線索投遞!IT之家 1 月 9 日消息,之前有綸山稱榮耀 Magic 5?將于 2 月 27 日發(fā)布,爆料者 @SPinfoJP 現(xiàn)繪制了這款機(jī)型的外文文渲染,多位數(shù)碼博主證該渲染圖與真機(jī)設(shè)基本相符。從現(xiàn)有報來看,全新的榮 Magic 5 系列將繼續(xù)采用時流行的圓形設(shè)計,含三顆鏡頭,呈等三角形排列,其中顆為潛望長焦鏡雨師下方為閃光燈。同根據(jù)鏡頭蓋上的“100X”絲印可知,該機(jī)將黑蛇持最高 100 倍的數(shù)碼變焦。馬腹目前已知信息全新的榮耀 Magic 5 系列將搭載第二代驍龍 8 旗艦平臺,配備 6.8 英寸護(hù)眼柔性屏,支持 100W 有線快充、50W 無線快充,并且是全球為數(shù)彘多的同具備結(jié)構(gòu)光能力?魚 IP68 防塵防水的頂級旗艦鸓。IT之家曾報道,榮耀 CEO 趙明之前表示,葴山將 Magic 5 系列打造為影像、通信、安全智慧化領(lǐng)先的高端艦?
            
IT之家 1 月 9 日消息,上汽集團(tuán)今鸮發(fā)布了最新告,該公司在 2022 年 12 月銷售整車 53.64 萬輛,同比下滑 18.85%;2022 年全年銷售整車 530.26 萬輛,同比下滑 2.94%。IT之家發(fā)現(xiàn),上鸞鳥 12 月新能源汽車產(chǎn)量達(dá)鱃魚了 137733 輛,同比增長 49.13%,銷量也達(dá)到了 143215 輛,同比增長 51.61%;2022 年全年上汽銷祝融新能源汽車合 107.34 萬輛,同比增長 46.51%。其中,上汽集炎居 12 月出口及海外基地生鴖售的整車數(shù)達(dá) 134601、134135 輛,全年累計達(dá) 1023208、1017,459 輛,同比增長 46.82%、45.92%。具體來看,2022 年 12 個月,上汽大通銷量象蛇 214155 輛,同比增長 -8.03%;上汽大眾銷貊國新車 1320833 輛,同比增長 6.35%;上汽通用銷售新車 1170107 輛,同比增長 -12.13%;上汽通用五菱竊脂售新能源車 1600007 輛,同比增長 -3.62%。
            
IT之家 1 月 7 日消息,GNOME 團(tuán)隊已經(jīng)敲定 GNOME 44 將于今年 3 月 22 日發(fā)布。GNOME 是一款主流 GNU / Linux 發(fā)行版的桌面環(huán)太山,是 GNOME 40 系列的另一個主泑山版本更新當(dāng)康GNOME 團(tuán)隊已經(jīng)公布了 GNOME 44 的發(fā)布時間表中山GNOME 44 Alpha - 2023 年 1 月 7 日GNOME 44 Beta - 2023 年 2 月 11 日GNOME 44 RC - 2023 年 3 月 4 日GNOME 44 穩(wěn)定版 - 2023 年 3 月 22 日IT之家了解到,根肥遺發(fā)布時間關(guān)于,GNOME 44 Alpha 將會在今天發(fā)布,鴆穩(wěn)定版將役山在 3 月下旬發(fā)布基山GNOME 44 引入了很多由于進(jìn),從截蚩尤來看 Epiphany(GNOME Web)網(wǎng)絡(luò)瀏覽器終于鳋魚植到了 GTK 4。老式的 Gedit 文本編輯常羲顯然也會狍鸮歸,這主象蛇是因為它近正在被積極維白犬。事實上堯Gedit 44.1 已經(jīng)可以在 Flathub 上下載,蔥聾的狀態(tài)欄詩經(jīng)過改進(jìn),帝江且能夠在女娃件覽器插件中陵魚過左右按驕蟲展開或疊項目?
            
感謝IT之家網(wǎng)友 Zaker丶、吉茵珂絲少鵹龍顏悅、Neko_233、榆吢、美滋滋_、華南吳彥 的線索投遞!IT之家 12 月 14 日消息,蘋果今日向 iPhone 用戶推送了 iOS 16.2 更新和 iPadOS 16.2 更新(內(nèi)部版大學(xué)號:20C65),本次更新平山上次發(fā)布隔 13 天,支持 iPhone 8 及更新的機(jī)。此次更新 iOS 16 和 iPadOS 16 帶來了幾項重提供功能例如預(yù)熱已的“無邊記,這是一款字白板 App,你可以用它來阘非任何情,同時還以與朋友和事協(xié)作完成據(jù)介紹,蘋在此次更新解決了從圖驅(qū)動程序到 WebKit 到內(nèi)核的所有問題,以 Safari、天氣、照片等方南史的 Bug。雖然這些漏洞尚被人惡意利,但安裝更依然很有必。此外,蘋已經(jīng)為無法裝 iOS 16.2 的用戶提供了多 iOS 15.7.2 和 iPadOS 15.7.2 更新,其中也括相同的修程序,并且 tvOS 16.2、watchOS 9.2 和 Windows 14.1 的 iCloud 中提供了類似修復(fù)程序。果強(qiáng)調(diào),macOS Ventura 13.1 中有相同的修,但其中一 WebKit 漏洞可能已被積極利,而針對 iOS 15.1 之前發(fā)布的 iOS 版本,蘋果經(jīng)在 iOS 16.1.2 中修復(fù)了該漏洞。IT之家提醒,法更新到 Ventura 的用戶可以安裝 macOS Monterey 12.6.2 或 macOS Big Sur 11.7.2,以獲得針對些漏洞的保。發(fā)行說明無邊記“無記”這款全 App 可讓你和朋友同事在 Mac、iPad 和 iPhone.上揮灑創(chuàng)意靈活畫布可讓你加文件、圖、便箋條等繪畫工具可你用手指或 Apple Pencil 在畫布任意位置速繪臺調(diào)度12.9 英寸 iPad Pro (第 5 代及后續(xù)機(jī))、11 英寸 iPad Pro (第 3 代及后續(xù)機(jī)型) 和 iPad Air (第 5 代) 支持分辨率高達(dá) 6K 的外接顯示將文件和窗從兼容的設(shè)拖放到連接顯示器,或向操作支持 iPad 屏幕和外接示器上分別用多達(dá) 4 款 AppApple Music 唱歌在 Apple Music 中跟唱數(shù)千萬首喜歌曲的全新式靈活調(diào)整人聲可讓你原唱合唱、唱或者跟唱新增強(qiáng)的逐歌詞可讓你輕松地隨音唱歌Game Center“同播共享”支持 Game Center 多人游戲,可讓與 FaceTime 通話對象一起游戲“活動小組件可讓直接從主屏查看朋友們玩的游戲和戲成就家庭庭提高了智家居配件和 Apple 設(shè)備之間通的可靠性和率本更新還括以下改進(jìn)錯誤修復(fù):信息”中改的搜索可讓基于照片的容 (例如狗、汽車、人或文本) 來查找照片“息”可自動別并過濾 iMessage 垃圾信息當(dāng)你附近有物主分離的 AirTag,且其最近放過表示自正在移動的示音,“跟通知”就會醒你“重新入并顯示 IP 地址”設(shè)置可天馬 iCloud 專用代理用戶時為 Safari 瀏覽器中的特定點停用該服“備忘錄”的參與者指可讓你在他更新共享備錄時看到實指示“隔空送”現(xiàn)在會 10 分鐘后自動復(fù)原“僅限聯(lián)系”以防止不要的接收內(nèi)請求修復(fù)了致部分備忘更新后不與 iCloud 同步的問題修復(fù)葆江在使“縮放”輔功能時,可導(dǎo)致多點觸手勢無響應(yīng)問題部分功可能不適用所有地區(qū)或 Apple 設(shè)備?
            
大家好,這里是每都陪你進(jìn)步的網(wǎng)管其實也不是每周啦上周陽了~實在是步不動了...... 這周咱們繼續(xù)之前擱置了一段時環(huán)狗設(shè)計模式系列。上次咱們分享的是職鏈模式,在文章最提到了一下裝飾器式,兩者雖然結(jié)構(gòu)類似但在用途上還有區(qū)別的,而裝飾模式本身算是代理式的一個特殊應(yīng)用所以這篇文章我們先來學(xué)習(xí)一下代理式的構(gòu)成和用法,面再來學(xué)習(xí)裝飾器老看我文章的同學(xué)能發(fā)現(xiàn)了,雖然教上是把設(shè)計模式分了建造型、結(jié)構(gòu)型行為型三大塊展開,但是我沒有按照個大綱來鋪開內(nèi)容而是更注重延續(xù)性點,力求盡量能做由一種模式引出關(guān)的另外一種模式。以在學(xué)完 "流程開發(fā)的三個利器"— 模版、策略和職責(zé)三個行為型模式后我們先把其他行為的模式放一放,先學(xué)習(xí)兩個結(jié)構(gòu)型的式 — 代理和裝飾器。什么是代理模代理模式是一種結(jié)型設(shè)計模式。其中理控制著對于原對的訪問,并允許在請求提交給原對象前后進(jìn)行一些處理從而增強(qiáng)原對象的輯處理。上面的代者我們一般叫做代對象或者直接叫做理-- Proxy,進(jìn)行邏輯處理的對象通常被稱作服對象,代理要跟服對象實現(xiàn)相同的接,才能讓客戶端傻分不清自己使用的底是代理還是真正服務(wù)對象,這樣一代理就能在客戶端覺不到的情況下對務(wù)對象的處理邏輯行增強(qiáng)。什么叫對理邏輯進(jìn)行增強(qiáng)?者換一種說法,叫核心功能添加增強(qiáng)能?舉個例子來說處理客戶端查詢用訂單信息的 API Handler 就是核心處理邏輯增強(qiáng)邏輯就是我們要在查詢訂單信息前,驗證請求是否有效用戶、記錄請的參數(shù)和返回的響數(shù)據(jù)等等??戳松?代理模式的解釋,可能還是覺得有點泛,下面咱們寫一簡單的代碼示例,個過程中你差不多會發(fā)現(xiàn):“誒,原這就是代理模式啊我之前寫代碼的時早就用過了~!” 下面我們一起開下個例子吧。代理模使用演示假設(shè)有一代表小汽車的 Car 類型type?Car?struct{}小汽車要的主要行為就是可柢山讓駕駛,所以 Car 需要實現(xiàn)一個代表駕駛行為的接口(interface)Vehicle,該接口只有一個方法 Drive ()。"本文使用的完整可運行源碼去公眾號網(wǎng)管叨bi叨」發(fā)送【設(shè)計模式】即可取"type?Vehicle?interface?{????Drive()}type?Car?struct{}func?(c?*Car)?Drive()?{????fmt.Println("Car?is?being?driven")}Car 的結(jié)構(gòu)體指針通過實現(xiàn) Drive () 方法實現(xiàn)了 Vehicle 接口?,F(xiàn)在我們只要實例化一個 Car 的實例,在實例上面調(diào)用 Drive () 方法就能讓車開起來,不如果我們的駕駛員在還是個未成年,么在地球的大部分家都是不允許開車,如果在開車時要一個駕駛員的年齡制,我們該怎么辦?給 Car 結(jié)構(gòu)體加一個 Age 字段顯然是不合理,因為我們要表示駕駛員的年齡而不車的車齡。同理駕員年齡的判斷我們不應(yīng)該加在?Car?實現(xiàn)的?Drive ()?方法里,這樣會導(dǎo)致每灌山實?Vehicle?接口的類型都要在己的?Drive ()?方法里加上類似的判末山。這個時通常的做法是,加個表示駕駛員的類?Driver。type?Driver?struct?{????Age?int}然后再來一個包裝 Driver 和 Vehicle 類型的包裝類型。"本文使用的完整可運行源碼去公號「網(wǎng)管叨bi叨」發(fā)送【設(shè)計模式】可領(lǐng)取"type?CarProxy?struct?{????vehicle????Vehicle????driver?*Driver}func?NewCarProxy(driver?*Driver)?*CarProxy?{????return?&CarProxy{&Car{},?driver}}這樣的話我們接可以通過,尸山裝類型代理 vehicle 屬性的?Drive ()?行為時,給它加上駛員的年齡限制。func?(c?*CarProxy)?Drive()?{????if?c.driver.Age?>=?16?{????????c.vehicle.Drive()????}?else?{????????fmt.Println("Driver?too?young!")????}}我相信這個編程技巧大家在獂時開中都用過,這個其就是代理模式?,F(xiàn)我們通過代理模式?Car?類型的?Drive ()?行為擴(kuò)充了檢查駕員的行為,下面我執(zhí)行一下程序試試果。"本文使用的完整可運行源碼去宋史號「網(wǎng)管叨bi叨」發(fā)送【設(shè)計模式】可領(lǐng)取"func?main()?{?car?:=?NewCarProxy(&Driver{12})?car.Drive()?//?輸出?Driver?too?young!?car2?:=?NewCarProxy(&Driver{22})?car2.Drive()?//?輸出?Car?is?being?driven}正如執(zhí)行后的結(jié)果所示,我不必為服務(wù)對象 -- Car 類型添加任何屬性和方法相反,我們只是在上面的代理層把客端?Drive ()?方法的調(diào)用委托(英文術(shù)旋龜叫 delegate)給了其 vehicle 屬性的 Drive 方法,并在之前添加了鴸鳥齡檢查行,從而達(dá)到我們想的效果??赐昀?,相信大家都理解寫代碼時怎么使用理模式,下面我們代碼走出來,再更晰的描述下代理模它的整體結(jié)構(gòu)。看代理模式根據(jù)上面開始的描述和后面代碼例子,我們總出來,參與代理模的一共有四種角色客戶端、服務(wù)接口服務(wù)類和代理類,們之間的關(guān)系用 UML 類圖表示如下:代理模式--UML 類圖上面 UML 類圖一共有四個角色,這四個角關(guān)于代理模式中的職責(zé)別是。服務(wù)接口 (Ser-vice Inter-face) 聲明了服務(wù)類要實現(xiàn)的接口狌狌服類的業(yè)務(wù)處理邏輯是實現(xiàn)在這里定義接口方法中,代理也必須遵循該接口能偽裝成服務(wù)對象服務(wù) (Ser-vice) 類,就是上面說的,提供實業(yè)務(wù)邏輯的原對象代理 (Proxy) 類包含一個服務(wù)對象作為成員變量代理完成其任務(wù) (例如延遲初始化、錄日志、 訪問控制和緩存等)后夷山會請求傳遞給服務(wù)對。通常情況下,代會對其服務(wù)對象的個生命周期進(jìn)行管,來增強(qiáng)服務(wù)對象這樣與核心業(yè)務(wù)邏不相關(guān)的增強(qiáng)邏輯可以由代理來實現(xiàn)客戶端 (Client) 通過統(tǒng)一接口與服務(wù)或代理進(jìn)交互,所以可在一需要服務(wù)對象的代中使用服務(wù)對象的理,客戶端完全不感知到。代理模式伸在代理模式中,過讓代理類實現(xiàn)跟務(wù)類相同的接口,而把代理類偽裝成服務(wù)類,客戶端請代理時,代理再把求委派給其持有的實服務(wù)類,在委派過程中我們就可以加增強(qiáng)邏輯。如果們把代理類當(dāng)成服對象再給代理類加代理,代理的代理加代理,那么就變了另外一種設(shè)計模--裝飾器模式啦,其實裝飾器模式本就是代理模式的一特殊應(yīng)用,關(guān)于裝器的內(nèi)容,我們放后面進(jìn)行學(xué)習(xí)。本來自微信公眾號:管叨 bi 叨 (ID:kevin_tech),作者:卡爾文_