2023年9月8日 Go生態洞察:gopls的擴展與Go生態系統的成長


🌷🍁 博主貓頭虎(🐅🐾)帶您 Go to New World?🍁

🦄 博客首頁——🐅🐾貓頭虎的博客🎐
🐳 《面試題大全專欄》 🦕 文章圖文并茂🦖生動形象🐅簡單易學!歡迎大家來踩踩~🌺
🌊 《IDEA開發秘籍專欄》 🐾 學會IDEA常用操作,工作效率翻倍~💐
🌊 《100天精通Golang(基礎入門篇)》 🐅 學會Golang語言,暢玩云原生,走遍大小廠~💐

🐅🐾貓頭虎建議Go程序員必備技術棧一覽表📖:

??🐳 Go語言開發者必備技術棧??:
🐹 GoLang | 🌿 Git | 🐳 Docker | ?? Kubernetes | 🔧 CI/CD | ? Testing | 💾 SQL/NoSQL | 📡 gRPC | ?? Cloud | 📊 Prometheus | 📚 ELK Stack


🪁🍁 希望本文能夠給您帶來一定的幫助🌸文章粗淺,敬請批評指正!🐅🐾🍁🐥


在這里插入圖片描述

文章目錄

    • 🐅🐾貓頭虎建議Go程序員必備技術棧一覽表📖:
  • 2023年9月8日 Go生態洞察:gopls的擴展與Go生態系統的成長 🌍
    • 摘要
    • 引言
    • 正文內容
      • gopls的改進和新架構 🛠?
        • 啟動時間和內存使用的減少 📉
        • gopls和不斷發展的Go生態系統 🌱
        • 重新審視gopls的編譯器起源 🔍
        • 獨立編譯 📦
        • 細粒度的失效處理 ??
        • 新的可能性 🔮
      • 嘗試一下!
    • 總結
    • 下一篇預告
  • 原創聲明

  • 原創作者: 貓頭虎

  • 作者wx: Libin9iOak

  • 作者公眾號: 貓頭虎技術團隊

在這里插入圖片描述

2023年9月8日 Go生態洞察:gopls的擴展與Go生態系統的成長 🌍

摘要

🐯 貓頭虎博主來啦!今天咱們聊聊Go語言的世界里的新動態——gopls的最新進展。如果你是Go語言的愛好者或專業開發者,這篇文章會給你提供寶貴的洞察。搜索關鍵詞:Go語言,gopls,性能優化,內存使用。

引言

大家好!貓頭虎博主這次帶來的是Go生態系統中的一次重要進展。最近,Go團隊發布了gopls的v0.12版本,這不僅是一次簡單的更新,而是一次對其核心架構的重寫,使其能夠更好地擴展到更大的代碼庫中。讓我們深入了解一下!

正文內容

gopls的改進和新架構 🛠?

首先,讓我們看一下這個重大更新的背后。gopls作為Go語言的語言服務器,在其v0.12版本中進行了核心重寫。這是一項為期一年的努力,重點是在保持內存占用更少的情況下,保持與v0.11版本相同的交互查詢速度(如自動完成或查找引用)。

啟動時間和內存使用的減少 📉

讓我們先看一些實際成果。下面的圖表顯示了GitHub上28個最受歡迎的Go倉庫的啟動時間和內存使用情況的變化。

在這些倉庫中,節省的平均值約為75%,但內存減少是非線性的:項目越大,相對減少的內存使用越多。

gopls和不斷發展的Go生態系統 🌱

自2018年問世以來,gopls已經合并了許多不同的命令行工具,并成為了VS Code Go擴展的默認后端,以及許多其他編輯器和LSP插件。隨著時間的推移,Go生態系統的增長和代碼庫的擴大,要求我們改變gopls的擴展方式。

重新審視gopls的編譯器起源 🔍

gopls在很多方面類似于編譯器,它需要讀取、解析、類型檢查和分析Go源文件。在v0.11版本中,gopls將所有這些符號保留在內存中,導致內存占用與被編輯的源代碼成正比,甚至更大。

獨立編譯 📦

為了解決這個問題,gopls v0.12引入了獨立編譯的概念,使用與編譯器相同的包摘要格式。這一改變使gopls的內存使用與打開的包數量及其直接導入的數量成比例。

細粒度的失效處理 ??

當你在一個包中做出更改時,只需要重新編譯直接或間接導入該包的包。gopls從一開始就在使用這個思路。v0.12版本引入了一種基于語法分析的更快速的剪枝啟發式,通過在內存中保持一個簡化的符號引用圖,gopls可以快速確定一個包中的更改是否可能影響另一個包。

新的可能性 🔮

這些改進不僅

提高了性能,還使gopls得以實現一些以前受內存限制而無法實現的功能,例如健壯的靜態分析和更簡單的工作區配置。

嘗試一下!

$ go install golang.org/x/tools/gopls@latest

請嘗試使用最新版本的gopls,并填寫這個調查問卷。如果遇到任何問題,請報告。

特性描述影響
核心重寫提升大型代碼庫的處理能力?? 性能提升
內存使用減少啟動時間和內存使用顯著減少?? 資源需求
獨立編譯引入獨立編譯的概念?? 內存占用
細粒度失效處理更有效的處理包之間的依賴關系?? 編譯效率
新功能靜態分析等功能得以實現?? 功能豐富

總結

本文被貓頭虎的Go生態洞察專欄收錄,詳情點擊這里。

下一篇預告

下一篇文章,我們將探討Go語言中的WASI支持。敬請期待貓頭虎博主帶來的深入解析!🐯💻🚀

在這里插入圖片描述

原創聲明

======= ·

  • 原創作者: 貓頭虎

  • 作者wx: Libin9iOak
    在這里插入圖片描述

  • 作者公眾號: 貓頭虎技術團隊

在這里插入圖片描述

學習復習Go生態
???

本文為原創文章,版權歸作者所有。未經許可,禁止轉載、復制或引用。

作者保證信息真實可靠,但不對準確性和完整性承擔責任

未經許可,禁止商業用途。

如有疑問或建議,請聯系作者。

感謝您的支持與尊重。

點擊下方名片,加入IT技術核心學習團隊。一起探索科技的未來,洞察Go生態,共同成長。

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

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

相關文章

AI材料專題報告:AI革命催生新需求國產替代推動新方向

今天分享的AI系列深度研究報告:《AI材料專題報告:AI革命催生新需求國產替代推動新方向》。 (報告出品方:光大證券) 報告共計:25頁 1、算力需求增長催生 800G 光模塊需求 算力是數字經濟時代新生產力&…

2023年10月9日 Go生態洞察:深入了解類型推斷及其更多細節

🌷🍁 博主貓頭虎(🐅🐾)帶您 Go to New World?🍁 🦄 博客首頁——🐅🐾貓頭虎的博客🎐 🐳 《面試題大全專欄》 🦕 文章圖文…

【C++ Primer Plus學習記錄】if語句

目錄 一、if語句 二、if else語句 三、格式化if else語句 四、if else if else結構 一、if語句 if語句讓程序能夠決定是否應執行特定的語句。 if有兩種格式:if和if else。 if語句的語法與while相似: if(test-condition)statement; 如果test-con…

Android 從assets讀取文件裝載成Bitmap,Kotlin

Android 從assets讀取文件裝載成Bitmap,Kotlin /*** fileName assets里面圖片文件名*/fun readBitmapFromAssets(ctx: Context, fileName: String): Bitmap? {val assetManager: AssetManager ctx.assetsvar bitmap: Bitmap? nulltry {val inputStream assetMa…

Java預科知識

以下內容是根據狂神的Java說、chatgpt和csdn相關博客,結合自己的理解完成的。 Java了解 基于Java 開發了巨多的平臺,系統,工具 構建工具: Ant, Maven, Jekins應用服務器:Tomcat, Jetty, Jboss, Websphere, weblogic…

程序員入門:打造抖音同城外賣小程序的技術解析

在當今數字化時代,外賣平臺已經成為人們生活中不可或缺的一部分,而抖音作為一款社交媒體平臺,也開始涉足同城外賣服務。本文將為初學者提供一份關于如何打造抖音同城外賣平臺的技術解析,探討其中的關鍵技術和步驟。 一、項目規劃…

【C++】輸入輸出流 ⑤ ( cin 輸入流對象 | cin.ignore() 函數 | cin.peek() 函數 | cin.putback() 函數 )

文章目錄 一、cin.ignore() 函數1、cin.ignore() 函數簡介2、cin.ignore() 函數原型3、代碼示例 - cin.ignore() 函數 二、cin.peek() 函數1、cin.peek() 函數簡介2、代碼示例 - cin.peek() 三、cin.putback() 函數1、cin.putback() 函數簡介2、代碼示例 - cin.putback() 一、c…

if語句和switch語句來確定金額之下的優惠折扣

一、優惠規則 輸入相應的金額,可以獲得規則之下,金額相應的享受的折扣,需要先定義金額,然后就是使用if語句進行判斷,使用switch語句選擇判斷規則之下對應的優惠折扣。 二、相關代碼 public class DiscountPrice {p…

<DB2>《DB2使用期間一些注意事項》

1 建存儲過程時 Create 后不能使用 TAB 鍵 create procedure create 后只能用空格,而不可用 tab 健,否則編譯會通不過。 2 查看語句執行計劃 dynexpln -d testdb -f test.sql -o test.out -g -z ; sql 語句放在 test.sql 中,結果輸出到 te…

git 拉取項目指定目錄或者指定文件

因為要做數據庫自動更新,需要拉取Gitlab項目中/bm-server-biz/docs目錄下的表更新sql文件,其他的都不需要,這時候可以利用git的“sparse checkout”方法(設置稀疏檢出)來實現。 1、在項目目錄下git 初始化 [rootxcc-…

開源軟件:JumpServer、DataEase、MeterSphere

FIT2CLOUD 認識開源軟件之前,先了解一下開發團隊FIT2CLOUD。FIT2CLOUD(飛致云)是一家中國領先的開源軟件公司,成立于2014年。公司專注于提供工業操作系統技術平臺與解決方案,是中國工業互聯網行業的領軍企業&#xff…

矩陣處理—Zigzag矩陣打印

與其明天開始,不如現在行動! 文章目錄 Zigzag矩陣打印1.1 題目描述1.2 解決思路1.3 代碼實現 💎總結 Zigzag矩陣打印 1.1 題目描述 有一個n行m列的矩陣,要求按照Z字形打印出數據,如圖: 1.2 解決思路 用一…

Weblogic T3協議反序列化漏洞

文章目錄 1. Weblogic T3協議反序列化漏洞1.1 漏洞描述1.2 基本原理1.3 漏洞復現1.4 修復建議 1. Weblogic T3協議反序列化漏洞 1.1 漏洞描述 說明內容漏洞編號CVE-2018-2628漏洞名稱Weblogic T3協議反序列化漏洞漏洞評級高危影響范圍Weblogic 10.3.6.0Weblogic 12.1.3.0Webl…

基于JavaWeb+SSM+Vue居住證申報系統小程序的設計和實現

基于JavaWebSSMVue居住證申報系統小程序的設計和實現 源碼獲取入口KaiTi 報告Lun文目錄前言主要技術系統設計功能截圖訂閱經典源碼專欄Java項目精品實戰案例《500套》 源碼獲取 源碼獲取入口 KaiTi 報告 1.1題目背景 隨著時代的發展,人口流動越來越頻繁&#xff0…

生活、工作常用API免費接口

身份證識別OCR:傳入身份證照片,識別照片文字信息并返回,包括姓名、身份證號碼、性別、民族、出生年月日、地址、簽發機關及有效期。二維碼識別OCR:對圖片中的二維碼、條形碼進行檢測和識別,返回存儲的文字內容。銀行卡…

pycharm安裝

1.先去官網下載pycharm 2.下載python3.8 3.修改pip鏡像 4.如果有環境變量沒加的加一下

Gazebo基本使用

參考文章 熟悉Gazebo界面 : ROS自學筆記八:Gazebo 搭建環境:Gazebo仿真環境搭建 搭建環境+加載機器人:gazebo仿真環境搭建配置小車運動仿真

全國農服進萬家系列活動——中國農業生產托管萬里行在河北玉田舉行

12月8日,“全國農服進萬家系列活動-中國農業生產托管萬里行”在河北省玉田縣圓滿舉行。來自全國各地農業農村領域的嘉賓齊聚一堂,交流農業社會化服務典型經驗,共話農業社會化服務高質量發展大事。 原農業部總農藝師、中國合作經濟學會會長孫中…

【戀上數據結構】前綴樹 Tire 學習筆記

Tire 需求分析 如何判斷一堆不重復的字符串是否以某個前綴開頭? 用 Set\Map 存儲字符串(不重復)遍歷所有字符串進行判斷缺點:時間復雜度 O(n) 有沒有更優的數據結構實現前綴搜索? Tire(和 Tree 同音&a…

Rust測試字符串的移動,Move

代碼創建了一個結構體,結構體有test1 字符串,還有指向字符串的指針。一共創建了兩個。 然后我們使用swap 函數 交換兩個結構體內存的內容。 最后如上圖。相同的地址,變成了另外結構體的內容。注意看指針部分,還是指向原來的地址…