當前位置:首頁 » 操作系統 » 亞洲源碼轉

亞洲源碼轉

發布時間: 2025-01-07 00:31:01

1. 為何Google、微軟、華為將億級源代碼放一個倉庫

作者 | 夕顏

編輯 | Just

出品 | AI 科技 大本營(ID:rgznai100)

大公司應該如何進行代碼管理?微軟研發並採用 VFS For Git 的過程和這個系統本身有哪些可以借鑒的地方?為了更深入了解 VFS For Git 和代碼管理相關問題,AI 科技 大本營(ID:rgznai100)采訪了微軟亞洲研究院首席研發經理鄒欣,他對這些問題進行了解答。

為什麼要做 VFS For Git?

鄒欣回憶,在將代碼遷移到 GVFS 前,微軟曾使用多個主要的代碼管理平台,包括 SLM, Source Depot (上世紀 90 年代開始)、TFS 的源代碼控制 TFVC (2006 年開始)。直到 2017 年,微軟用三個月的時間完成代碼遷移到 Git,並推出了 Git 的變種,針對特大 repo 的 GVFS,並沿用至今。

GVFS 是一個 Git 虛擬文件系統,全稱為 Git Virtual File System,允許 Git 處理 TB 規模的代碼庫,比如 270 GB 的 Windows 代碼庫。GVFS 的 V 就是 Virtual(虛擬),它解決了Git 原來的設計缺陷(每個客戶端都有所有版本的代碼),而是用虛擬文件來代替那些本地用不著的文件, 大大 減少了文件傳輸和本地機器存儲的壓力,讓微軟內部技術人員可以進行高效協作。

一段小插曲是,GVFS 從發布之初就引起了爭議,原因是 GNOME 項目的虛擬文件系統也叫 GVfs,而 GNOME 的 GVfs 最早發布於 2006 年,之後的教程、文檔、論壇都沿用這個名字。在微軟的 GVfs 項目發布後,很快超過了 Gnome GVfs 項目的搜索排名,且由於二者都與虛擬文件系統有關,導致用戶在查找信息時容易出現混淆。於是,很多開發者要求微軟改名,經過一番周折後,微軟終於在 2018 年將 "GVFS" 項目的名字改為 "VFS For Git"。

鄒欣表示,當時微軟將代碼遷移到 Git 主要是為了統一微軟百花齊放的內部工具,並沒有一個絕對好的選擇,領導團隊選擇了 Git, 但從現在的結果來看,這是一個比較好的選擇。如今,微軟仍然在對 Git 系列的工具做改進,也把改進回饋到 Git 社區。

現在,VFS For Git 已經是微軟內部統一的工具,同時被其他大型企業採用:https://vfsforgit.org/

VFS For Git 在 GitHub 上也已開源:

GitHub開源地址:https://github .com /microsoft/VFSForGit

除了微軟,我們發現,很多大公司的代碼託管已經向自己內部開發的版本控制系統遷移,比如 Google 就把使用不同語言編寫的超過 10 億文件,近百 TB 源代碼都存放在自行開發的版本管理系統 Piper 中,只當項目開源且需要外部協作時,才會使用業界流行的 Git。(詳見文章《為何Google將幾十億行源代碼放在一個倉庫?》)

再如華為的內源(Inner Source)平台,承載著華為 1100 億源代碼、60 萬+ 代碼倉庫、每天 60 T 的下載容量、1 萬次/秒的 高峰 並發下載。

這是否說明在大公司中流行的單一倉庫就是最好的做法? 這些公司在選擇採用代碼託管方式時需要考慮哪些不同的問題?

鄒欣解釋,在他看來,用 GVFS 也可以創建各種獨立的倉庫。用一套工具有利於公司內部進行代碼共享,讓人員流動、代碼復審、改進工具變得更簡單,效率提高。

其次,大公司有很大量的代碼,很長的 歷史 和很多工具,如果貿然選擇一個新工具就會出現以下問題:

a) 一些市面上的工具並不是為大規模代碼設計的,處理不了大量代碼, 我們以前用第三方的代碼分析工具, 結果處理 Office 的代碼的時候,自己崩潰了,因為 Office 的代碼量太大,這個工具的開發者沒有為如此大的代碼設計軟體。

b) 很多工具在 歷史 中不斷演化, 有自己獨特的特點,很多和企業內部的某些特殊需求有關,外部工具很難都實現這樣的功能。

很多工具聯合在一起,會形成了一個工具的生態,但如果只改變一個工具,讓其他的工具變得不兼容, 那整個團隊的很多工作流就會出現問題。

此外,鄒欣表示,代碼託管與 AI 結合是未來發展方向。例如,這種結合會告訴你昨天晚上簽入代碼有問題, 或者簽入代碼和某個其他團隊的代碼相似,建議重用。或者告訴你簽入的代碼是從網上拷貝來的, 而且把原來代碼中的 bug 也拷貝過來了。

最後,AI 科技 大本營引用此前微軟雲開發服務副總裁 Brian Harry 於 2017 年發表的一篇博文內容,在微軟推出 VFS For Git 三個月後,他分享了該平台的更多細節及其未來目標,包括擴大開放源代碼並改善其在 Microsoft 上的運行表現,想要了解 VFS For Git 更詳細的信息,不妨仔細研讀一下這篇文章:

每日檢出量

https://devblogs.microsoft .com /bharry/the-largest-git-repo-on-the-planet/

2. MKV轉換器兼容性

隨著avi格式的年代逐漸增長,盡管它在早期通過VD技術可支持2個音軌,但近年來並未有顯著的改進。與此同時,ogm格式的興起帶來了多音軌的新可能,最多可以合成8個以上的音軌,音頻格式增加了ogg,更令人興奮的是其內置的"軟字幕"功能,允許用戶自定義8個以上srt格式的字幕,但對亞洲字元支持不足,且ogm的源碼曾一度封閉,開發進度緩慢。


在ogm遇到瓶頸時,mkv應運而生,由俄羅斯程序員以開源形式推出,因此吸引了眾多開發者參與,使得開發速度迅速提升。mkv保留了ogm的優點,如多音軌和Real格式支持,且增添了Gabest公司開發的Plugin,如Media Player Classic(MPC)和mkv Mux,特別是針對Real格式的解決方案,彌補了rmvb在音頻處理上的不足,支持AC3和DTS合成,使得mkv在音頻效果上更具競爭力。


mkv的特點還包括對多種格式的兼容,高達16條的軟字幕支持,以及段落選擇功能,這些都讓用戶可以根據製作人的設定進行個性化播放。總的來說,mkv以其強大的功能,如Real格式的支持、多音軌、多字幕選項和自定義播放特性,成為了一個綜合性的視頻格式解決方案。


(2)亞洲源碼轉擴展閱讀

MKV轉換器屬於視頻轉換類軟體,其廣義的定義即對MKV進行編解碼的軟體。那麼,何為對MKV進行編解碼呢,對MKV進行解碼,通俗來說即將MKV轉換成其他格式,如將MKV轉RMVB、MKV轉AVI、MKV轉MP4、MKV轉3GP、MKV轉DVD等等,對MKV進行編碼,即將其他格式轉換成MKV,如將RMVB轉MKV、AVI轉MKV、MOV轉MKV等等。綜上所述,MKV轉換器根據轉換類型不同分為兩類,對MKV進行解碼和對MKV進行編碼的兩類軟體。

3. 三十、QuantLib C++源碼改寫計劃(2):Java的改寫

在金工領域,QuantLib C++鏈接庫已穩固其領導地位,產品廣泛,模型深入,難以被其他鏈接庫超越。然而,在實際的金融IT產業中,很難直接獲益於QuantLib,主要原因是大部分IT公司傾向於使用Java語言開發大型商業應用系統,而C++並非市場主要工具。QuantLib架構復雜,沒有熟悉金融市場的金工人員指導,IT人員難以理解其對象的繼承關系與金融計算邏輯。

一位在金融科技產業的朋友遇到金工模型開發瓶頸,我建議他使用QuantLib鏈接庫解決此問題。QuantLib可以透過SWIG的包覆提供Java介面。在協助下,他們順利產生正確的計算結果,獲得了全球金工專家的免費支持來開發核心計算模塊。然而,使用SWIG調用C++的DLL會降低計算效能,且QuantLib C++不支持多線程運算,特別是在執行蒙地卡羅模擬法時效果不佳。

QuantLib架構的限制來源於20年前的決定,當時計算機性能不佳,為避免系統進行無謂計算,項目人員採用了特定的設計樣式(Design Patterns),並搭配Lazy Object模式。然而,現代計算機性能已有巨大提升,多核晶元成為主流,異質性計算架構如GPU、FPGA也已成熟,金融市場的風險和實時風險評估需求也日益提升。QuantLib的C++程序代碼雖然公開,但與使用Java程序代碼的IT公司采購系統生態不兼容,導致困擾。

為解決這個問題,朋友公司技術長請求我研究以Pure Java Code改寫QuantLib鏈接庫,以實現與公司程序代碼的完全兼容,並提升計算效能。我意識到,以Java改寫QuantLib的構想始於2008年,但項目最終未能成功。通過重新分析C++與C#的繼承架構,並結合兩者優點,我嘗試了新的改寫路徑。在蘇州的兩個月里,我成功完成了相當一部分的改寫工作。

我發現,QuantLib的C++架構利用多重繼承,每個實用類別繼承多個父代。而Java與C#都是單一繼承的語言,這導致在改寫過程中需要正確選擇主要繼承關系,並通過介面實現次要繼承,以保持代碼結構清晰。這需要對金融類別關系有深入理解,以確保改寫正確。

在改寫過程中,我不僅解決了計算效能問題,還成功實現了多線程運算和GPU加速,滿足金融市場的實時風險評估需求。此外,我將每次改寫的內容都記錄下來,留下足夠的軌跡,便於指導年輕朋友學習QuantLib架構與內容。這有助於建立亞洲華人區金融市場計算能力,對抗長期由英美基督教文明主導的金融產業。

我將部分代碼上傳到GitHub,供有興趣的人士參考。明年四月與七月,我計劃分別提供Python與C++的計算機實操演練班,通過網路錄制影片與在線直播,讓參與者深入了解QuantLib並發揮其價值。課程將分為三個階段,涵蓋從基礎使用到高級開發技術,包括解析解、二叉樹、有限差分法、模擬法、GPU金融程序開發等。聽眾主要為碩士學歷的業界工作人士。

如果你對QuantLib開發實作班感興趣,可以通過電子郵件 or 微信與我聯系,獲取更多詳情和報名方式。我的電郵為 [email protected],微信ID為 andydong3137,均請註明對QuantLib開發實作班有興趣。

4. 代碼utf8轉成gbk

首先在你的head標簽中,加入<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
然後在你的編輯器中(或者使用記事本),選擇採用ANSI編碼保存你的源代碼文件。

這樣就可以了。

熱點內容
c語言輸出float 發布:2025-01-08 10:38:23 瀏覽:375
pythontab輸出 發布:2025-01-08 10:37:47 瀏覽:110
腳本搬磚姿勢 發布:2025-01-08 10:37:45 瀏覽:118
linux動態庫連接 發布:2025-01-08 10:31:48 瀏覽:588
怎麼將安卓軟體移到蘋果 發布:2025-01-08 10:30:04 瀏覽:547
小v抖音上青少年密碼是多少 發布:2025-01-08 10:29:22 瀏覽:626
html5清除緩存 發布:2025-01-08 10:29:14 瀏覽:901
高通uefi編譯指令 發布:2025-01-08 10:15:16 瀏覽:504
wif密碼怎麼分享 發布:2025-01-08 10:10:55 瀏覽:859
變頻升降機怎麼配置配電箱 發布:2025-01-08 10:06:00 瀏覽:510