如何通過觀測云的RUM找到前端加載的瓶頸--可觀測性入門篇

聲明與保證

本文寫作于2023年6月,性能優化的評價標準和優化方式僅適用于當前觀測云控制臺,當然隨著產品迭代及技術更新,本文也會應要求適當更新。

創建、修訂時間創建修改人版本
2023/6/24觀測云***v1.0.0

1.網站性能評價的發展史(近20年)

講到網站性能優化,離不開網站技術發展史,更離不開網站性能的評價標準的發展。優化既離不開不斷演進發展的技術,也離不開前人對技術優化的方法論和具體實踐。近20年來,網站性能評價的標準有三次比較值得關注的關鍵節點,這三次關鍵節點分別能看出性能優化的視角與方法。

性能優化技術和評價標準的發展歷史圖

1.1 Yahoo軍規打下夯實的基礎:有定性無定量的坑

最初,在只有純文本閱讀的時代,幾乎或者很少會像現在一樣考慮性能(產品)上的優化。隨著互聯網時代的到來以及信息化發展,圖片、音視頻等多媒體時代降臨,開始有了在網站性能優化的第一次啟蒙。雅虎作為第一梯隊,率先推出了網站優化的軍規,很快被廣大開發者所接受,這些軍規即使現在看,依舊有很大的借鑒和指導意義。其中基本包含了以下內容,因篇幅有限,故未完全展開講述:

  1. 減少http請求

  2. 使用內容發布網絡

  3. 添加Expires頭

  4. 壓縮組件

  5. 將樣式表放在頂部

  6. 將腳本放在底部

  7. 避免css表達式

  8. 使用外部javascript和css

  9. 減少DNS查找

  10. 精簡Javascript

  11. 避免重定向

  12. 刪除重復腳本

  13. 配置ETag

  14. 使用Ajax可緩存

內容來源:《高性能網站建設指南》

注:此處不建議完全照搬雅虎軍規進行以上設置,尤其是在沒有構建全面的網站指標體系和性能模型前,單獨照搬不僅可能抓不住痛點甚至還有可能有反作用;

1.2.RAIL性能模型首次提出:以用戶體驗為中心的可量化標準

搜索引擎時代谷歌對于網站評價標準的影響非常大,在谷歌的不斷探索中,首先提出了以用戶為中心的性能模型,因為谷歌的巨大影響力,這個評價模型也開始在開發人員中傳播開來,性能評價的視角也逐漸轉向了用戶體驗,非常可喜的是對于這四項用戶體驗的維度,每個維度都有量化的指標。

RAIL模型圖

來源:web.dev/rail

如下介紹一下用戶如何感知性能延遲的關鍵指標:

數據來源:web.dev/rail

總結一下,該模型非常強調對于性能的延遲,特別強調:

  • 響應 :100ms內響應

  • 動作:50毫秒內處理事件

  • 動畫:10毫秒內生成一幀

  • 加載:在5s內交付內容并交互

1.3. 網站核心指標幾乎統一了性能的評價標準:從三個維度可量化

然而直到2020年的十年左右的時間,RAIL并沒有像搜索引擎一樣被大眾完全使用,在這期間谷歌陸續推出了開源框架lighthouse,并在chrome devtools中開始使用web vitals。谷歌也有很多開發開始了在web vitals的布道。web vitals很快被廣大開發者所接受,并快速被APM廠商作為衡量網站性能的方法。

web vitals是一種思想,該思想吸收囊括了性能發展過程中的幾個關鍵指標,分別從加載速度、交互情況、視覺穩定性這三個方面入手,每部分包括1個或者多個指標。web vitals也在不斷調整其指標內容,目前廣為接受的分別是LCP、FID和CLS。

網站核心指標圖

數據來源:web.dev/defining-co…

  • LCP :最大內容繪制 (LCP) 是測量感知加載速度的一個以用戶為中心的重要指標,因為該項指標會在頁面的主要內容基本加載完成時,在頁面加載時間軸中標記出相應的點,迅捷的 LCP 有助于讓用戶確信頁面是有效的。

  • FID:首次輸入延遲 (FID) 是測量加載響應度的一個以用戶為中心的重要指標,因為該項指標將用戶嘗試與無響應頁面進行交互時的體驗進行了量化,低 FID 有助于讓用戶確信頁面是有效的。

  • CLS:累積布局偏移 (CLS) 是測量視覺穩定性的一個以用戶為中心的重要指標,因為該項指標有助于量化用戶經歷意外布局偏移的頻率,較低的 CLS 有助于確保一個頁面是令人愉悅的。

需注意:web vitals標準也在不斷變化中,目前一個比較新穎的指標就包括即將替代FID的INP,這不是本篇最佳實踐的重點,但必須要認識到,web vitals是目前接受度最為廣泛的標準,也是觀測云的網站性能體系中的重要組成部分。

2.觀測云用戶體驗方案

言歸正傳,網站核心指標給出了比較規范易接受的性能評價體系。在觀測云的用戶體驗的最佳實踐中,首先推薦用戶的,便是使用觀測云用戶體驗監測功能。

隨著產品支持的用戶和平臺越來越多,雖然基礎設施和服務都健康運行,但沒有客戶端的可觀測性,也只是偽全面,因為很有可能報錯出現在客戶端,或者用戶體驗差已經流失了。

觀測云的用戶體驗監測(rum)既包含了RAIL的精華,也囊括了網站核心指標。作為基于瀏覽器的性能指標收集性能和用戶體驗的方式(這部分會在后續實踐的文章詳細介紹),遠比實驗室或者開發者本地性能測試有好處,正是因為基于真實的物理設備和網絡情況,以及真實的用戶行為,所提供的指標和數據也更有意義和價值,比如可以

  • 通過洞察用戶行為改善業務
  • 通過查看會話重放提高轉化率
  • 使用漏斗圖了解用戶旅程,或者
  • 根據會話生成指標

今天作為入門篇,我將簡單介紹一下基礎功能

2.1 用戶訪問監測介紹

觀測云用戶體驗方案推薦用戶接入用戶訪問監測,收集真實的用戶行為數據和性能數據,分析用戶行為和性能數據,做出對研發和業務做出最佳的決策。

需注意:不同網站有不同的性能需求,觀測云推薦用戶根據業務場景收集訪問和性能數據,不代表推薦用戶收集100%的用戶訪問數據,用戶需根據實際情況選用接入方式和接入情況,觀測云允許用戶對用戶數據進行采樣。

2.1.1 有關觀測云 SDK 的接入和數據的分析

網站接入觀測云SDK后,用戶的訪問數據(包含用戶旅程)和性能數據就有了進一步分析的可能。在登錄觀測云后不僅可以看到這部分的數據,包括有會話、頁面、動作、錯誤、卡頓這幾個維度,更重要的是可以以此創建基于業務的數據分析,以下將先介紹基礎的面板以滿足日常訪問和性能數據的查看。

a.數據查看

在性能方面,首先觀測云推薦用戶關注性能儀表盤中的網站核心指標,為方便用戶查看,在觀測云用戶監測中有專門的性能看板,不僅能夠滿足對網站核心指標的查看,還包含了卡頓、xhr、資源等分析情況。

觀測云用戶訪問數據的分析看板

其次,由于卡頓和報錯越來越成為制約性能和用戶體驗的兩大因素,觀測云推薦從會話和頁面的維度,關注以下4個和性能關鍵的指標:

  • session_long_task_count,會話卡頓次數
  • session_error_count,會話錯誤次數
  • view_long_task_count,頁面卡頓次數
  • view_error_count,頁面錯誤次數

注意:頁面級別的網站核心指標依然非常重要,核心指標對于good/needs improvement和poor的評價標準是一般指標,e.g. 讓用戶等2.5s(LCP 在2.5s內)才看到頁面這顯然又太寬泛,在沒有更適用的定量標準前,以產品使用場景設定一個benchmark非常有意義。

b.數據分析前的小知識點補充

性能數據分析

說到性能瓶頸分析,多基于瀏覽器的性能指標,這個過程通常劃分為以下十幾個階段:

Navigation Api 時間圖

數據來源:developer.mozila

看上圖的內容,具體指標的計算邏輯如下表所示,若感到枯燥,可以直接調到表格后的下一個部分看精簡內容,不過如果想成為網站性能專家,這部分算是基礎入門內容。

字段類型描述
first_contentful_paintnumber(ns)首次內容繪制時間 (FCP)計算方式:firstPaintContentEnd - firstPaintContentStart
largest_contentful_paintnumber(ns)最大內容繪制(頁面加載時間軸中的一剎那,其中呈現了視口中最大的 DOM 對象)參考鏈接:LCP計算方式:統計最近上報的一次 PerformanceEntry 時間
cumulative_layout_shiftnumber累計布局版面轉移 (CLS),0 表示載入過程沒有版面移動變化
first_input_delaynumber(ns)首次輸入延時 (FID)計算方式:performance.now() - event.timeStamp
loading_timenumber(ns)頁面加載時間initial_load 模式下計算公式:① loadEventEnd - navigationStart② 頁面首次無活動時間 - navigationStartroute_change 模式下計算公式:用戶點擊時間 - 頁面首次無活動時間頁面首次無活動時間:頁面超過 100ms 無網絡請求或 DOM 突變
dom_interactivenumber(ns)DOM 結構構建完畢時間獲取方式:time = performanceTiming.domInteractive;參考鏈接:MDN dom_interactive
dom_content_loadednumber(ns)DOM 內容加載時間計算方式:domContentLoadedEventEnd - domContentLoadedEventStart
dom_completenumber(ns)DOM 樹解析完成時間獲取方式:time = performanceTiming.domComplete;參考鏈接:MDN dom_complete
load_eventnumber(ns)事件加載時間計算方式:loadEventEnd - loadEventStart
first_meaningful_paintnumber(ns)首屏時間計算方式:firstPaintContentEnd - firstPaintContentStart
first_paint_timenumber(ns)首次渲染時間計算方式:responseEnd - fetchStart
resource_load_timenumber(ns)資源加載時間計算方式:loadEventStart - domContentLoadedEventEnd
time_to_interactivenumber(ns)首次可交互時間計算方式:domInteratice - requestStart
domnumber(ns)DOM 解析耗時計算方式:domComplete - domInteractive
dom_readynumber(ns)DOM Ready時間計算方式:domContentLoadedEventEnd - navigationStart
time_spentnumber(ns)頁面停留時間
resource_sizenumber資源大小,默認單位:byte
resource_dnsnumber(ns)資源加載 DNS 解析時間計算方式:domainLookupEnd - domainLookupStart
resource_tcpnumber(ns)資源加載 TCP 連接時間計算方式:connectEnd - connectStart
resource_sslnumber(ns)資源加載 SSL 連接時間計算方式:connectEnd - secureConnectStart
resource_ttfbnumber(ns)資源加載請求響應時間計算方式:responseStart - requestStart
resource_transnumber(ns)資源加載內容傳輸時間計算方式:responseEnd - responseStart
resource_first_bytenumber(ns)資源加載首包時間計算方式:responseStart - domainLookupStart
durationnumber(ns)資源加載時間計算方式:duration(responseEnd-startTime)

是不是看著眼睛都暈了?其實單純只看一下這部分其實也可以:

2.2 有關網站核心指標的數據分析初步展示與標準

在之前有關網站核心指標的敘述中,已經能夠看到對于幾個指標的benchmark。

需注意:網站核心指標最早針對MPA架構,現在也支持SPA架構的網站,但必須注意到,SPA目前沒有統一的標準和路由規范,谷歌也在不斷提高對SPA的適配,觀測云也不斷更新和補充用戶體驗的指標和相關功能,不斷滿足用戶需求。

觀測云內置的時序數據儀表盤,能夠清晰地觀測到真實的網站核心指標的數據情況,對于異常的性能數據指標,方便下鉆進行分析。

3.優化實踐參考

觀測云性能指標列表

這部分內容更多的是賦能、啟迪與實踐,所以不再列出具體的指標列表,詳情參考以下鏈接。

《web應用數據采集》

這里我特意列出在會話級別的幾個指標,這些可能是數據分析、網站性能、 用戶行為分析用戶增長與運營需要格外關注的:

session_referrerstring會話來源。一般是記錄來源的頁面地址。
session_first_view_urlstring當前會話的第一個頁面的 URL
session_last_view_urlstring當前會話的最后一個頁面的 URL
session_error_countnumber當前會話產生錯誤個數
session_action_countnumber當前會話用戶操作次數
session_long_task_countnumber當前會話產生長任務次數

3.1 需要關注的指標

控制性和可觀測性需要專家構建評價系統給出關鍵指標及其相關性指標構建模型,給出大一統的數據模型可能很難,但落地到具體產品場景可能會有一些方法,這需要有一定經驗的人對已有指標進行數據分析,在這點上觀測云又給用戶設置了特定的入口,供小白、中高級開發、專家乃至是產品同學進行場景建設。網站性能可以構建的模型可以從以下幾方面來搭建場景:

-網站加載性能的現場指標收集,包括前面描述的各種指標

-網站加載性能的可視化和評價標準體系,這部分可以參考觀測云默認的性能模板

-網站加載性能的相關性分析,這部分正好是一系列文章的第一篇。

下面我們便以觀測云為例進行探索:

3.2 性能探索與實踐

a.觀測云控制臺

第一個分析的例子,觀測云推薦用戶使用場景儀表板中的散點圖工具,來探查性能和不同指標之間的關系散點圖能直觀看出x和y的相關性,這里可以把y為加載時間,根據經驗推薦用戶分別以頁面為維度,將X軸可以設置為資源加載數量。

資源加載數量和頁面加載時間的數據可視化圖

圖注:其中X軸代表頁面資源加載的數量;Y軸代表頁面加載時間(單位:s)

肉眼就能看出x在0-30間存在比較明顯的正相關,導出該數據分析,發現數值遠小于0.05,也就是從統計分析上也能看出較強的相關性。

我們打開控制臺的network選項,進行查看,發現在該頁面有169個請求:

這么多資源看起來很不方便,我們使用觀測云的場景儀表板繼續探索,使用餅圖對當前的資源類型進行分類,發現js、css、image三者的數量合占比60%。

對這些靜態資源我們可以做一個耗時比的統計,一般我們可以取avg、min、max、p99、p90,這里我們采用max的duration來看,主要是想知道哪種類型耗時時間最長。

上圖可以看出,image類型耗時非常長,到底都是哪些內容呢,我們對image的類型繼續做探索:

我們加載耗時最長的圖片進行排序,看下圖發現大多是icon類型:

因為上面講到的樣式資源加載的數量,所以按照請求加載的數量進行排行:

能夠看到chart-loading等icon文件加載次數占比最多,但大小基本都在5kb以下,我們看到這些圖片的文件名都是非增量更新的,也就是不會經常變動的靜態資源,我們把這幾個文件打開查看一下分別是:

看到這里,優化的角度也就非常清晰了,這100多個icon需要設計整理到一個文件就可以了。

我們看到loading這個文件加載的次數比任何都要多,這個文件是做什么的?我們還可以進一步對這個loading的文件進行探究,可以以頁面功能或者viewid來進一步探索,這里以矩形樹圖為例:

看著是以login加載次數最多,其他幾乎所有頁面都有加載,看來這個文件還是挺重要的,我們看看這個文件的緩存情況,我們來按照resource_status來進行查看:

我們發現95%左右的狀態碼是200,我們看一下它的傳輸時間來判斷是否使用了本地緩存,在這個時候可以使用resource_trans這個來判斷:

這里從上圖也基本能推測該資源比較好的使用了緩存,大概在幾天左右,max基本可以理解成緩存失效后消耗的時間(>100ms),min可以理解成加載本地緩存的時間(幾乎為0ms),所以這塊可以如果適當做調整的話,可能得一個方向便是要從文件的大小入手,同理我們把其他類似的圖片傳輸耗時進行分析:

看avg都不大,但max較大,說明文件大小還是需要調整(也可能是文件格式),我們按照max進行排序:

看到這些文件不僅max時間長,avg也很長,要減少大小,可能還要考慮調整格式等手段了。

這里我再深入一點舉個例子以login_left_bg這個圖片為例子,其resource_status的餅形圖如下所示:

上圖所示,說明該文件幾乎都要經常去服務器查看文件是否有最新,這塊就需要考慮這個文件是否是需要將緩存時間設置長一些了。

綜上,使用了resource的很多指標字段進行了基本的數據分析,發現基本可以利用場景儀表板把揭示非常多的內容,不論是從loading_time和其他指標相關性的探索,還是對該指標的優化,我們都能看出當前網站的指標體系是非常復雜的,影響因素眾多,需要深入探索,這塊也是觀測云不斷投入力量研發的。

b.觀測云官網

同理對官網進行相關性分析,看到view_resource_count則沒有顯著性,但js_size、css_size的相關性較高.

我們打開官網進行查看,發現js和css較大存在blank_line和white_space,webpack有對應的compress插件可以去掉white_space和blank_line,這部分比較簡單就不展開了。

現在使用觀測云對resource進行分析,首先先以resource_status篩選resource_trans的情況,

上圖得知,304的資源平均傳輸時間比200的傳輸時間要長很多,也就是去服務器查看沒有更新的文件,發現沒有更新的內容,依舊使用了緩存內容,這里也能明顯看出使用了合理設置緩存時間的好處,但這里有點問題,下面以時序圖來推測緩存時間:

這時候 我們還可以直接將200、304時序圖拉出來,這里選擇加入resouce_type做篩選一并做可視化:

上圖看出css的耗時max和avg明顯大于js的耗時,我們看看css這部分的內容:

我們打開其中的文件進行查看:

這部分是第三方庫,可以摘出來放CDN可能效果會好很多。

下面針對js進行查看

限于篇幅,此處就不再做具體分析,相信小伙伴已經能夠看出性能調優的基本思路和方法。這里最后補充一張資源加載首包時間和頁面架子時間的可視化圖,感興趣的小伙伴可以繼續探索。

資源加載首包時間和頁面加載時間的數據可視化圖

圖注:其中X軸代表資源加載首包時間;Y軸代表頁面加載時間(單位:s)

注意:觀測云推薦用戶根據使用場景來洞察性能,需要明確的是,除了資源加載數量、資源加載首包時間,還有很多影響網站性能的因素,如TCP、DNS等網絡情況。

總結

綜上所述,隨著技術與評價標準的發展,觀測云既能給用戶提供完整的指標體系,提供了指標洞察的方法,讓網站系統的性能能夠被觀測和提升,限于篇幅內容,有關網站加載性能提升的第一篇內容到這里就先結束了,之后會對網站核心指標中有關加載性能的LCP以及提升的四大方法做分享。

后續補充:

  1. 儀表板配置json

  2. python或者r的代碼 隨附:

image.png

本文使用觀測云-中國區 1(杭州)站點,商業版賬號。

直接開通商業版可獲得?500?元無限制代金券,實現本文觀測場景每天消費僅需幾分錢,可以用幾十年了。

docs.guance.com/billing/tra…

或可以選擇開通體驗版,每天有2000的免費額度,,可參考:

docs.guance.com/billing/tra…

完成觀測云賬號注冊后,會登錄到觀測云工作空間控制臺,之后的數據可視化都會在這里展現。

作者:卡曼在觀測
鏈接:https://juejin.cn/post/7267797785088573480
來源:稀土掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39934.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39934.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39934.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP“深入淺出”淘寶商品詳情數據接口獲取方法,淘寶API申請指南

獲取淘寶商品詳情數據的方法如下: 確定監控對象,通常是與自己店鋪的商品相似的競品,通過在淘寶商品詳情頁的URL中獲取商品ID,進而獲取商品的詳情數據。通過API接口獲取商品詳情數據,申請開發者賬號并獲取授權訪問&…

打開vim的語法高亮

在一個Ubuntu中自帶的vim版本是8.2.4919,默認就是開始了語法高亮的,打開一個Java文件效果如下: 它不僅僅對Java文件有語法高亮,對很多的文件都有,比如vim的配置文件也有語法高亮,有語法高亮時讀起來會容易…

DNNGP模型解讀-early stopping 和 batch normalization的使用

一、考慮的因素(僅代表個人觀點) 1.首先我們看到他的這篇文章所考慮的不同方面從而做出的不同改進,首先考慮到了對于基因組預測的深度學習方法的設計 ,我們設計出來這個方法就是為了基因組預測而使用,這也是主要目的&…

排序算法-冒泡排序(C語言實現)

簡介😀 冒泡排序是一種簡單但效率較低的排序算法。它重復地掃描待排序元素列表,比較相鄰的兩個元素,并將順序錯誤的元素交換位置,直到整個列表排序完成。 實現🧐 以下內容為本人原創,經過自己整理得出&am…

WAVE SUMMIT2023六大分會場同步開啟,飛槳+文心大模型加速區域產業智能化!

由深度學習技術及應用國家工程研究中心主辦、百度飛槳和文心大模型承辦的WAVE SUMMIT深度學習開發者大會2023將于8月16日重磅來襲!屆時上海、廣州、深圳、成都、南昌和寧波六大分會場將同步開啟! 分會匯聚區域產業大咖、科研機構專家、知名學者和技術大…

【C++ 學習 ?】- 詳解 list 容器

目錄 一、list 容器的基本介紹 二、list 容器的成員函數 2.1 - 迭代器 2.2 - 修改操作 三、list 的模擬實現 3.1 - list.h 3.2 - 詳解 list 容器的迭代器 3.2 - test.cpp 一、list 容器的基本介紹 list 容器以類模板 list<T>&#xff08;T 為存儲元素的類型&…

【第二階段】kotlin函數引用

針對上篇傳入函數參數我們也可以重新定義一個函數&#xff0c;然后在main中調用時傳入函數對象 lambda屬于函數類型的對象&#xff0c;需要把普通函數變成函數類型的對象&#xff08;函數引用&#xff09;&#xff0c;使用“&#xff1a;&#xff1a;” /*** You can edit, ru…

DRF 緩存

應用環境 django4.2.3 &#xff0c;python3.10 由于對于服務而言&#xff0c;有些數據查詢起來比較費時&#xff0c;所以&#xff0c;對于有些數據&#xff0c;我們需要將其緩存。 最近做了一個服務&#xff0c;用的時 DRF 的架構&#xff0c;剛好涉及緩存&#xff0c;特此記…

webSocket 筆記

1 認識webSocket WebSocket_ohana&#xff01;的博客-CSDN博客 一&#xff0c;什么是websocket WebSocket是HTML5下一種新的協議&#xff08;websocket協議本質上是一個基于tcp的協議&#xff09;它實現了瀏覽器與服務器全雙工通信&#xff0c;能更好的節省服務器資源和帶寬…

centos 7.9 部署django項目

1、部署框架 主要組件&#xff1a;nginx、uwsgi、django項目 訪問頁面流程&#xff1a;nginx---》uwsgi---》django---》uwsgi---》nginx 2、部署過程 操作系統&#xff1a;centos 7.9 配置信息&#xff1a;4核4G 50G 內網 eip &#xff1a;10.241.103.216 部署過程&…

深入學習SpringCloud Alibaba微服務架構,揭秘Nacos、Sentinel、Seata等核心技術,助力構建高效系統!

課程鏈接&#xff1a; 鏈接: https://pan.baidu.com/s/1hRN0R8VFcwjyCTWCEsz-8Q?pwdj6ej 提取碼: j6ej 復制這段內容后打開百度網盤手機App&#xff0c;操作更方便哦 --來自百度網盤超級會員v4的分享 課程介紹&#xff1a; &#x1f4da;【第01階段】課程簡介&#xff1a;全…

Android FrameWork 層 Handler源碼解析

Handler生產者-消費者模型 在android開發中&#xff0c;經常會在子線程中進行一些耗時操作&#xff0c;當操作完畢后會通過handler發送一些數據給主線程&#xff0c;通知主線程做相應的操作。 其中&#xff1a;子線程、handler、主線程&#xff0c;其實構成了線程模型中經典的…

STM32存儲左右互搏 I2C總線FATS讀寫EEPROM ZD24C1MA

STM32存儲左右互搏 I2C總線FATS讀寫EEPROM ZD24C1MA 在較低容量存儲領域&#xff0c;EEPROM是常用的存儲介質&#xff0c;可以通過直接或者文件操作方式進行讀寫。不同容量的EEPROM的地址對應位數不同&#xff0c;在發送字節的格式上有所區別。EEPROM是非快速訪問存儲&#xf…

vue2+Spring Boot2.7 大文件分片上傳

之前我們文章 手把手帶大家實現 vue2Spring Boot2.7 文件上傳功能 將了上傳文件 但如果文件很大 就不太好處理了 按正常情況甚至因為超量而報錯 這里 我弄了個足夠大的文件 我們先搭建 Spring Boot2.7 環境 首先 application.yml 代碼編寫如下 server:port: 80 upload:path:…

【佳佳怪文獻分享】使用點云從半監督到全監督房間布局估計

標題&#xff1a;From Semi-supervised to Omni-supervised Room Layout Estimation Using Point Cloud 作者&#xff1a;Huan-ang Gao, Beiwen Tian, Pengfei Li, Xiaoxue Chen, Hao Zhao, Guyue Zhou , Yurong Chen and Hongbin Zha 來源&#xff1a;2023 IEEE Internation…

根據源碼,模擬實現 RabbitMQ - 通過 SQLite + MyBatis 設計數據庫(2)

目錄 一、數據庫設計 1.1、數據庫選擇 1.2、環境配置 1.3、建庫建表接口實現 1.4、封裝數據庫操作 1.5、針對 DataBaseManager 進行單元測試 一、數據庫設計 1.1、數據庫選擇 MySQL 是我們最熟悉的數據庫&#xff0c;但是這里我們選擇使用 SQLite&#xff0c;原因如下&am…

手機出現 不讀卡 / 無信號時應該怎么辦?

當手機屏幕亮起&#xff0c;一般在屏幕最上方都會有代表手機卡狀態的顯示&#xff0c;其中網絡信號和讀卡狀態的標識&#xff0c;依舊有很多人分不太清&#xff0c;更不清楚改怎么辦了。 1、當我們的手機里有兩張卡時&#xff0c;則會有兩個信號顯示 2、信號狀態一般是由短到…

CSS自己實現一個步驟條

前言 步驟條是一種用于引導用戶按照特定流程完成任務的導航條&#xff0c;在各種分步表單交互場景中廣泛應用。例如&#xff1a;在HIS系統-門診醫生站中的接診場景中&#xff0c;我們就可以使用步驟條來實現。她的執行步驟分別是&#xff1a;門診病歷>遺囑錄入>完成接診…

ArcGIS Pro基礎入門、制圖、空間分析、影像分析、三維建模、空間統計分析與建模、python融合、案例全流程科研能力提升

目錄 第一章 入門篇 GIS理論及ArcGIS Pro基礎 第二章 基礎篇 ArcGIS數據管理與轉換 第三章 數據編輯與查詢、拓撲檢查 第四章 制圖篇 地圖符號與版面設計 第五章 空間分析篇 ArcGIS矢量空間分析及應用 第六章 ArcGIS柵格空間分析及應用 第七章 影像篇 遙感影像處理 第八…

Python random模塊用法整理

隨機數在計算機科學領域扮演著重要的角色&#xff0c;用于模擬真實世界的隨機性、數據生成、密碼學等多個領域。Python 中的 random 模塊提供了豐富的隨機數生成功能&#xff0c;本文整理了 random 模塊的使用。 文章目錄 Python random 模塊注意事項Python random 模塊的內置…