博客 / 列表

oioihoii - 網道千年:從TCP到gRPC的通信演進史

通信技術的演進如同一棵大樹的生長,TCP/IP是深植於土壤的根系,為整個互聯網世界輸送着基礎的養分。這組誕生於1970年代的雙層協議構成了現代通信的底層骨骼——IP協議在網絡層編織起全球尋址的路由網絡,而TCP則在傳輸層確保了數據流動的可靠有序。它們的精妙之處在於將複雜的通信問題分層化解,就像建築的地基與框架,雖不直接可見,卻支撐着上層所有應用協議的運轉。當數據包在互聯網中穿梭時,TCP

tcp , HTTP , c++ , 後端開發 , rpc , c

oioihoii - C++數據競爭與無鎖編程

在多核處理器成為標配的今天,併發編程從"錦上添花"變成了"必不可少"。然而,併發在帶來性能提升的同時,也引入了新的複雜性——數據競爭。傳統鎖機制雖然直觀,但在高併發場景下可能成為性能瓶頸。無鎖編程作為替代方案,提供了更高的併發度,但也帶來了前所未有的複雜性。 一、數據競爭的本質 1.1 什麼是數據競爭? 數據競爭發生在多個線程同時訪問同一內存位置,且至少有一個線程執行寫操作,

無鎖 , 數據 , c++ , 後端開發 , 無鎖編程 , c

oioihoii - C++虛函數表與多重繼承內存佈局深度剖析

在C++面向對象編程中,虛函數是實現運行時多態的關鍵機制。單繼承場景下的虛函數表(vtable)佈局相對直觀,但當涉及到多重繼承時,情況就變得複雜起來。本文將深入探討虛函數表的實現原理,並重點解析多重繼承下的內存佈局,幫助開發者更好地理解C++對象模型的底層機制。 第一部分:虛函數表基礎 1.1 什麼是虛函數表 虛函數表(vtable)是C++編譯器為每個包含虛函數的類生成的

虛繼承 , 多重繼承 , 虛函數 , c++ , 後端開發 , c

oioihoii - 淺談如何從C++開發者到架構師

對於C++開發者而言,從一名精通語法和算法的程序員,成長為一名駕馭系統全局、平衡多方約束的軟件架構師,是一條充滿挑戰與機遇的經典職業路徑。這並非簡單的職級晉升,而是一次思維模式、技能重心和職責範圍的系統性躍遷。本文將結合行業實踐與專業理論,為你勾勒出一條清晰的轉型路線圖。 一、認知重構:理解架構師的核心內涵 在踏上轉型之路前,首要任務是釐清“架構師”究竟意味着什麼。架構師的角色遠

架構設計 , c++ , 後端開發 , 開發者 , c , 架構師

oioihoii - VS Code 1.107 更新:多智能體協同與開發體驗升級

2025 年 12 月 10 日,微軟正式發佈了 VS Code 1.107 版本,這次更新堪稱年度最重磅!多智能體協同開發成為核心亮點,徹底重構了開發者與 AI 協作的模式。想象一下,你可以同時部署多個 AI 助手分工合作:一個負責代碼審查,一個處理單元測試,還有一個在後台默默重構 legacy 代碼——這不再是科幻場景! 多智能體協同:開發效率的革命性突破 Agent

code , 懸停 , c++ , 後端開發 , 開發者 , c

oioihoii - VSCode CMake Tools 功能解析、流程與最佳實踐介紹

CMake Tools 是由 Microsoft 開發的 VS Code 擴展,其核心定位是作為 CMake 與 IDE 界面之間的橋樑,通過自動化傳統命令行開發中的多步驟操作(如配置、生成、構建流程)來提升開發效率。該工具不僅提供基礎的項目管理功能,還包含詳細的文檔支持(如 FAQ 指南)以幫助用户解決使用過程中的疑問。 從用户需求適配角度,CMake Tools 實現了對不同技術

工具鏈 , cmake , c++ , 後端開發 , c , Json

oioihoii - VS Code終端從入門到精通完全指南

當前,Visual Studio Code的集成終端已成為開發者日常工作中不可或缺的工具。它不僅能運行 echo、 ls 和 git 等命令,還與編輯器深度集成,支持工作區文件鏈接和錯誤檢測等功能。無論你是使用Bash、Zsh還是PowerShell,VS Code終端都能滿足你的需求。 打開終端的三種方式: 快捷鍵: Ctrl+``(Windows/Linux)或Cmd

code , bash , c++ , 後端開發 , c , Json

oioihoii - C++對象生命週期與析構順序深度解析

一、全局/靜態對象的構造與析構時機 構造順序:跨編譯單元的挑戰 全局對象和靜態對象的構造順序在C++標準中沒有明確定義,特別是對於位於不同編譯單元中的對象。這可能導致危險的初始化依賴問題。 // file1.cpp extern int global_from_file2; int global1 = global_from_file2 + 1; // 危險!可能使用未初始

初始化 , c++ , 後端開發 , 解決方案 , 全局對象 , c

oioihoii - C++異常安全保證:從理論到實踐

1. 異常安全保證的三種級別 1.1 基本保證(Basic Guarantee) 定義:如果異常被拋出,程序保持有效狀態,不會發生資源泄漏,但對象的確切狀態可能是未指定的。 實踐示例: class BasicGuaranteeExample { int* data; size_t size; public: void modify(siz

拋出異常 , 構造函數 , c++ , 後端開發 , sqlite , c

oioihoii - 【精華】C++成員初始化列表完全指南:為什麼、何時以及如何正確使用

本文是我攢給自己的面試前必看文章之一,屬於私藏。 一個常見的誤解 許多C++初學者會有這樣的疑問:“為什麼我需要在構造函數後面加個冒號來初始化成員?在構造函數體內賦值不行嗎?”本文將通過深入分析C++對象構造機制,徹底解答這個問題。 一、初始化列表的基本語法 class Example { int a; std::string str; pu

初始化列表 , 初始化 , 構造函數 , c++ , 後端開發 , c

oioihoii - C++ 強制類型轉換:類型安全的多維工具

在C++中,類型轉換是將一種數據類型轉換為另一種數據類型的過程。與C語言簡單的(type)value強制轉換不同,C++提供了四種專門的強制類型轉換運算符,它們不僅執行轉換,還提供了編譯時檢查和更明確的語義。這體現了C++"類型安全"的設計哲學。 C++四種強制類型轉換運算符 1. static_cast - 靜態類型轉換 static_cast是最常用的轉換運算符,用於編譯

c++ , 後端開發 , 類型安全 , 多態 , 類型轉換 , c

oioihoii - C++智能指針避坑指南:90%人會犯的3個致命錯誤

你以為將new替換為make_shared就萬事大吉?真相是,智能指針的陷阱比手動管理更隱蔽、更危險。本文將深入剖析循環引用、性能陷阱、線程安全這三大「暗礁」,讓你從「自以為會」到「真正精通」。 一個經典的崩潰代碼 如下代碼展露了智能指針中的循環引用問題。 // 這就是那個導致崩潰的簡化版代碼 class UserProfile { std::share

循環引用 , 智能指針 , 引用計數 , c++ , 後端開發 , c

oioihoii - 從理論到實踐:構建你的AI語音桌面助手(Demo演示)

本文從“可運行”的實踐角度,探索利用Python與AI技術實現語音控制Windows操作系統的方案。核心觀點是:構建一個完整的語音控制助手,是將“能聽會説”的語音模型與“能操作”的系統執行器相結合的過程。本文將繞過複雜的底層理論,直接提供一條基於開源技術的實踐路徑,並通過一個可運行的代碼Demo,展示如何將自然語言指令轉化為具體的系統操作。 一、構建“口-腦-手”協同系統 一個完

windows , 服務器 , c++ , 後端開發 , c , Json

oioihoii - C++程序執行起點不是main:顛覆你認知的真相

你以為main函數是起點?C++的運行機制遠比這複雜! 在C++學習之路上,我們都被教導過一個“基本事實”:程序從main函數開始執行。但今天,我要帶你揭開這個廣為流傳的誤解背後的真相。 一個令人驚訝的實驗 讓我們通過一個簡單例子來觀察C++程序的實際啓動過程: #include iostream using namespace std; class Li

include , main函數 , 後端開發 , .net , 啓動過程

oioihoii - 阿里《靈光》生成的視頻下載不帶水印的極簡方法

新發現 最近靈光剛出來,我用它生成了視頻後下載發現是帶水印的,如下: 但是我發現用網頁瀏覽器的開發者模式F12,可以直接拿到視頻地址,這樣下載的視頻是沒有水印的。 拿到網址後複製到瀏覽器點擊下載 下載後沒有水印! 感興趣快去試試吧! 題外話:很多網站的視頻通過 F12(開發者工具)可以直接拿到。 主要是因為: 1. 視頻並非真正加密

服務器 , network , 加載 , 後端開發 , .net

oioihoii - WPF入門指南:解析默認項目結構

作為WPF的初學者,理解Visual Studio創建的默認項目結構非常重要。這篇博客將詳細解析每個文件的作用,幫助你建立堅實的WPF基礎。 項目概覽 當你使用Visual Studio 2022創建基於.NET 8.0的WPF項目時,會生成以下幾個核心文件: App.xaml 和 App.xaml.cs - 應用程序入口點 MainWindow.x

xaml , wpf , xml , 後端開發 , .net

oioihoii - 【C++必知必會】字符串操作速記

幹了這麼多年C++,每次處理字符串還得查文檔,真是説不過去!今天我決定把這些常用的字符串操作函數背下來,整理成這份速記指南。 在C++中,字符串操作主要依賴於 string 頭文件。掌握字符串處理是C++編程中的核心技能之一。 必須掌握的頭文件 #include string // 主要頭文件 #include iostream // 用於輸入輸出

字符串 , include , 後端開發 , 字符串操作 , harmonyos

oioihoii - 【C++必知必會】讀取文件速記

幹了這麼多年C++開發,每次遇到文件讀取還得去問AI,真是慚愧!今天我決定把這些基礎的文件操作函數背下來,整理成這份速記指南。 在C++中,文件操作主要依賴於 fstream 頭文件中的類。掌握文件讀取是C++編程中的基礎技能之一。 必須掌握的類和頭文件 #include fstream // 主要頭文件 #include iostream // 用

include , 頭文件 , 後端開發 , 文件讀取 , harmonyos

oioihoii - 不懂彙編的後端不是一個好的開發

在高級語言甚至AI生成代碼橫行的時代,為何還要關注最底層的彙編? 作為一名後端開發者,我堅定地認為:不懂彙編的優化就是瞎子摸石頭過河,不理解系統底層機制的開發者在面對複雜問題時,就像在迷霧中摸索前行的盲人。 這個觀點或許聽起來有些極端,但請允許我用接下來的內容説服你。 為什麼我堅持彙編的重要性? 在我多年的後端開發經歷中,發現一個令人深思的現象:那些能夠深入

後端開發 , JAVA , 開發者 , harmonyos

oioihoii - C++語言演進之路:從“C with Classes”到現代編程基石

從貝爾實驗室的雛形到ISO標準,一門語言如何塑造了數字世界的底層根基。 C++語言的發展史是計算機軟件工程領域一部波瀾壯闊的史詩。從1979年誕生至今,它已從貝爾實驗室的一個實驗性項目,成長為支撐全球數字基礎設施的核心力量。 根據GitHub Octoverse 2025的數據,C++依然是構成全球近80%新項目的六大核心語言之一,是名副其實的“現代開發基石”。

jar , 後端開發 , 計算機科學 , harmonyos , 移動語義

oioihoii - 跨越語言的藩籬:論不同語言間調用的難點與實踐

在軟件開發的廣闊世界裏,沒有一種語言是“萬能”的。我們常常需要取各家之所長:用 Python 進行快速原型設計和數據分析,用 C++ 編寫高性能的計算核心,用 Java 構建穩健的企業級應用,用 JavaScript 打造動態的前端界面。當這些各有所長的模塊需要協同工作時,就產生了“語言間調用”的需求。 然而,讓説不同“母語”的模塊順暢交流,並非易事。這就像讓一個只懂中文的人和一個只

調用約定 , 運行環境 , 後端開發 , harmonyos , Python

oioihoii - AI編程規模化實踐:從1到100的工程化之道

規模化階段的挑戰 在AI編程工具日益普及的今天,從0到1快速構建原型已不再是難題。然而,當項目進入從1到100的規模化階段,開發者面臨着全新的挑戰:如何確保AI生成代碼的質量、可維護性和系統架構的連貫性?本文將深入探討AI在規模化開發階段的最佳實踐,為團隊提供切實可行的解決方案。 核心原則:建立AI輔助開發的基礎 人類專家的核心地位 在規模化開發中,AI應明確定位為增強人

線程池 , 後端開發 , 模塊化 , 開發者 , harmonyos

oioihoii - Python與C#:從哲學到細節的全面對比

Python和C#都是現代、高級、面向對象的編程語言,擁有龐大的社區和廣泛的應用。然而,它們源於不同的生態系統,秉承不同的設計哲學,因此在語法、執行模型和典型應用上存在顯著差異。Python以其極簡主義和靈活性著稱,而C#則以其在強大類型系統和結構化框架下的優雅與一致性聞名。 下面,我們將從整體到細節,系統地剖析這兩種語言的差異。 一、整體與哲學 設計哲學與

封裝 , 多重繼承 , 後端開發 , harmonyos , Python

oioihoii - Python與C++:從哲學到細節的全面對比

Python和C++是兩種在當今軟件開發領域佔據主導地位的語言,但它們的定位、設計哲學和應用場景有着天壤之別。Python以其簡潔、直觀的語法和“內置電池”的理念,致力於讓開發者用更少的代碼做更多的事,強調開發效率和可讀性。而C++則是由C語言發展而來,以其對硬件底層的控制能力、極高的運行效率和靈活性著稱,信奉“零開銷抽象”原則,即你不用的東西不需要付出代價,你用的東西則能被最優地實現。

後端開發 , harmonyos , 縮進 , 代碼塊 , Python