go語言中的strings庫

strings庫

func EqualFold

func EqualFold(s, t string) bool

判斷兩個utf-8編碼字符串(將unicode大寫、小寫、標題三種格式字符視為相同)是否相同。

func main() {fmt.Println(strings.EqualFold("hello", "hello"))  //truefmt.Println(strings.EqualFold("hello", "HELLO"))  //truefmt.Println(strings.EqualFold("hello", "Hello"))  //true
}

func HasPrefix

func HasPrefix(s, prefix string) bool

判斷s是否有前綴字符串prefix。

func main() {fmt.Println(strings.HasPrefix("golang", "go"))   // truefmt.Println(strings.HasPrefix("golang", "lang")) // false
}

func HasSuffix

func HasSuffix(s, suffix string) bool

判斷s是否有后綴字符串suffix。

func main() {fmt.Println(strings.HasSuffix("hello.txt", ".txt")) // truefmt.Println(strings.HasSuffix("hello.txt", ".jpg")) // false
}

func Contains

func Contains(s, substr string) bool

判斷字符串s是否包含子串subs

func main() {fmt.Println(strings.Contains("hello world", "world")) // truefmt.Println(strings.Contains("golang", "java"))       // false
}

func ContainsRune

func ContainsRune(s string, r rune) bool

判斷字符串s是否包含utf-8碼值r。

func main() {fmt.Println(strings.ContainsRune("你好,世界", '界')) // truefmt.Println(strings.ContainsRune("hello", '你')) // falsefmt.Println(strings.ContainsRune("hello", 'h')) // true
}
//這個是適用于單個Unicode字符檢查,而不是子串 
//如果輸入多個字符的話,報這個錯:Too many characters in the rune literal

func ContainsAny

func ContainsAny(s, chars string) bool

判斷字符串s是否包含字符串chars中的任一字符。

func main() {fmt.Println(strings.ContainsAny("hello", "aeiou")) // true (包含 'e'、'o')fmt.Println(strings.ContainsAny("golang", "xyz"))  // false
}

func Count

func Count(s, sep string) int

返回字符串s中有幾個不重復的sep子串。

func main() {fmt.Println(strings.Count("banana", "a"))  // 3fmt.Println(strings.Count("hello", "l"))   // 2fmt.Println(strings.Count("golang", "go")) // 1fmt.Println(strings.Count("aaaa", "")) //猜一下這個
}

func Index

func Index(s, sep string) int

子串sep在字符串s中第一次出現的位置,不存在則返回-1。

func main() {s := "hello world"fmt.Println(strings.Index(s, "world")) // 6fmt.Println(strings.Index(s, "go"))    // -1 (找不到返回 -1)
}

func IndexByte

func IndexByte(s string, c byte) int

字符c在s中第一次出現的位置,不存在則返回-1。

func main() {s := "hello"fmt.Println(strings.IndexByte(s, 'e')) // 1fmt.Println(strings.IndexByte(s, 'x')) // -1
}

IndexByte適合查找**ASCII** 字符,因為byte是單字節,無法直接表示多字節的 UTF-8 字符(例如中文)。

如果你要查找英文或單字節字符,可以用這個函數,性能會比 IndexRune 略好。

func IndexRune

func IndexRune(s string, r rune) int

unicode碼值r在s中第一次出現的位置,不存在則返回-1。

func main() {s := "你好,世界"fmt.Println(strings.IndexRune(s, '世')) // 9fmt.Println(strings.IndexRune(s, '界')) // 12fmt.Println(strings.IndexRune(s, '你')) // 0fmt.Println(strings.IndexRune(s, 'x')) // -1
}

對于多字節字符(如中文),IndexRune 可以正確識別并定位索引。

注意索引依舊是以字節為單位計算的。例如 “你好”:

  • '你' 占用 3 個字節,索引從 0~2;
  • '好' 索引從 3~5。
    所以 '好' 的開始索引是 3。

func IndexAny

func IndexAny(s, chars string) int

字符串chars中的任一utf-8碼值在s中第一次出現的位置,如果不存在或者chars為空字符串則返回-1。

func main() {s := "hello"fmt.Println(strings.IndexAny(s, "jker")) // 1 (因為 'e' 出現在索引 1)fmt.Println(strings.IndexAny(s, "xyz"))  // -1 (找不到)//猜一下下面的fmt.Println(strings.IndexAny(s, "loo")) fmt.Println(strings.IndexAny(s, "ollo"))fmt.Println(strings.IndexAny(s, "olloe"))
}

一次性查找多個可能的字符,只要匹配到其中一個字符,就返回首次出現的索引。

func IndexFunc

func IndexFunc(s string, f func(rune) bool) int

在字符串 s 中,從左到右遍歷,每次取出一個 Unicode 字符 r 并調用 f(r) 判斷是否為 true,如果是,則返回該字符在字符串中的索引。若遍歷完都不為 true,返回 -1。

func main() {s := "123abc"// 找到第一個字母的位置index := strings.IndexFunc(s, func(r rune) bool {return unicode.IsLetter(r)})fmt.Println(index) // 3 ("a" 的位置)
}

f 是一個判斷函數,通常會使用到 unicode 包的判斷方法(如 unicode.IsLetterunicode.IsDigitunicode.IsSpace 等)。

適合自定義復雜的匹配條件

func LastIndex

func LastIndex(s, sep string) int

子串sep在字符串s中最后一次出現的位置,不存在則返回-1。

func main() {s := "hello world world"fmt.Println(strings.LastIndex(s, "world")) // 12fmt.Println(strings.LastIndex(s, "go"))    // -1
}

LastIndex 用于反向搜索子串的出現位置。

例如文件路徑處理時,需要找最后一個斜杠 / 的位置,可以用 LastIndex 來提取文件名等。

func LastIndexAny

func LastIndexAny(s, chars string) int

在字符串 s 中查找 chars任意一個字符最后一次出現的位置,找不到返回 -1。

func main() {s := "hello world"fmt.Println(strings.LastIndexAny(s, "o"))  //'0' 7//猜一下fmt.Println(strings.LastIndexAny(s, "hello")) 
}

func LastIndexFunc

func LastIndexFunc(s string, f func(rune) bool) int

從右往左遍歷字符串 s,每次取出一個 Unicode 字符 r,調用 f(r) 判斷是否為 true

若是,則返回該字符在字符串中的索引,否則 -1

func main() {s := "GoLang 123"// 找到最后一個字母index := strings.LastIndexFunc(s, func(r rune) bool {return unicode.IsLetter(r)})fmt.Println(index) // 5 ('g' 的索引)
}

func Title

func Title(s string) string

返回字符串 s 的拷貝,其中每個“單詞”的首字母都被轉換為 Title Case(類似首字母大寫)。

  • 注意:“單詞” 的定義基于 Unicode 標準,會按照空格或非字母邊界來拆分。
func main() {s := "her royal highness"fmt.Println(strings.Title(s)) // "Her Royal Highness"
}

func ToLower

func ToLower(s string) string

返回將所有字母都轉為對應的小寫版本的拷貝。

func main() {fmt.Println(strings.ToLower("Hello WORLD!")) // "hello world!"
}

func ToUpper

func ToUpper(s string) string

返回將所有字母都轉為對應的大寫版本的拷貝。

func main() {fmt.Println(strings.ToUpper("Hello WORLD!")) // "HELLO WORLD!"
}

func ToTitle

func ToTitle(s string) string

返回將所有字母都轉為對應的標題版本的拷貝。

func main() {fmt.Println(strings.ToTitle("loud noises")) //LOUD NOISESs := "? ? ? hello"fmt.Println(strings.ToUpper(s)) // "? ? ? HELLO"fmt.Println(strings.ToTitle(s)) // "? ? ? HELLO"
}

區別于 strings.ToUpper

  • ToTitle 對普通字母的效果等同于 ToUpper
  • 對于某些特殊的 Unicode 字母(如 ??),ToTitle 會轉換成 Titlecase 而不是 Uppercase

func Repeat

func Repeat(s string, count int) string

返回一個新字符串,由 s 重復 count拼接而成。

func main() {fmt.Println(strings.Repeat("ha", 3)) // "hahaha"	
}

func Replace

func Replace(s, old, new string, n int) string

在字符串 s 中,把 old 替換成 new,共替換 n 次,返回新字符串。若 n < 0,則替換所有出現。

package mainimport ("fmt""strings"
)func main() {s := "hello world world"fmt.Println(strings.Replace(s, "world", "Go", 1))  // "hello Go world"fmt.Println(strings.Replace(s, "world", "Go", -1)) // "hello Go Go"//ReplaceAll(s, old, new string) stringfmt.Println(strings.ReplaceAll(s, "world", "Go")) //類似于 strings.Replace(s, "world", "Go", -1)
}

func Map

func Map(mapping func(rune) rune, s string) string

對字符串 s 中的每個 Unicode 字符 r 調用 mapping(r),返回映射后的字符,并組成新字符串。

mapping 返回 -1,則會丟棄該字符

func main() {s := "Hello 123"// 將所有數字去掉result := strings.Map(func(r rune) rune {if unicode.IsDigit(r) {return -1 // -1 表示丟棄這個字符}return r}, s)fmt.Println(result) // "Hello "//大小寫轉化result = strings.Map(func(r rune) rune {return unicode.ToUpper(r)}, s)fmt.Println(result) //HELLO 123str := "Go@lang! is #awesome$"// 替換 @, !, #, $ 為 *result = strings.Map(func(r rune) rune {switch r {case '@', '!', '#', '$':return '*'default:return r}}, str)fmt.Println(result) // "Go*lang* is *awesome*"
}

Map 適合對字符串做逐字符的自定義轉換或過濾。

func Trim

func Trim(s string, cutset string) string

用于去除字符串兩端的指定字符集cutset)中的字符。

func main() {s := "   !hello world!   "cutset := " !"// 去除兩端的空格和感嘆號result := strings.Trim(s, cutset)fmt.Println(result) // "hello world"
}

func TrimSpace

func TrimSpace(s string) string

去除字符串 s 開頭和結尾的空白字符(包括空格、制表符、換行等)。

func main() {s := "  Hello Golang \n "fmt.Println(strings.TrimSpace(s)) // "Hello Golang"
}

func TrimFunc

func TrimFunc(s string, f func(rune) bool) string

根據自定義的判定函數(函數類型為 func(rune) bool)去除字符串兩端的字符。

func main() {s := "123!Hello, Go!?!456"// 定義判定函數:如果字符不是字母,則返回 true,表示該字符需要被移除trimFunc := func(r rune) bool {return !unicode.IsLetter(r)}// 使用 TrimFunc 去除兩端非字母字符result := strings.TrimFunc(s, trimFunc)fmt.Println(result) // 輸出 "Hello, Go!?"//去除兩端的的數字trimFunc = func(r rune) bool {return unicode.IsDigit(r)}result = strings.TrimFunc(s, trimFunc)fmt.Println(result) // 輸出 "!Hello, Go!?!"}

func TrimLeft

func TrimLeft(s string, cutset string) string

從字符串 左側(即開頭)開始移除所有出現在 cutset 中的字符,直到遇到第一個不在 cutset 中的字符為止。

僅對字符串開頭部分進行處理,中間和結尾的字符不會受影響。

func main() {s := "!!!Hello, World!!!"cutset := "!"// 去除左側所有感嘆號leftTrimmed := strings.TrimLeft(s, cutset)fmt.Println(leftTrimmed) // 輸出: "Hello, World!!!"
}

func TrimLeftFunc

func TrimLeftFunc(s string, f func(rune) bool) string

左側開始,移除連續滿足 f(rune) == true 的字符,直到遇到不滿足的字符后停止。

func main() {s := "   Hello 123"// 移除左側空白result := strings.TrimLeftFunc(s, unicode.IsSpace)fmt.Println(result) // "Hello 123"
}

func TrimPrefix

func TrimPrefix(s, prefix string) string

若字符串 sprefix 開頭,則去除該前綴并返回剩余部分;否則返回 s 本身。

func main() {s := "HelloWorld"fmt.Println(strings.TrimPrefix(s, "Hello")) // "World"fmt.Println(strings.TrimPrefix(s, "Go"))    // "HelloWorld" (無變化)
}

func TrimRight

func TrimRight(s string, cutset string) string

TrimRight 從字符串 右側(即結尾)開始移除所有出現在 cutset 中的字符,直到遇到第一個不在 cutset 中的字符為止。

僅對字符串末尾部分進行處理,左側和中間的字符不會受影響。

func main() {s := "!!!Hello, World!!!"cutset := "!"// 去除右側所有感嘆號rightTrimmed := strings.TrimRight(s, cutset)fmt.Println(rightTrimmed) // 輸出: "!!!Hello, World"
}

func TrimRightFunc

func TrimRightFunc(s string, f func(rune) bool) string

右側開始,移除連續滿足 f(rune) == true 的字符,直到遇到不滿足的字符后停止。

func main() {s := "Hello 123   "result := strings.TrimRightFunc(s, unicode.IsSpace)fmt.Println(result) // "Hello 123"
}

func TrimSuffix

func TrimSuffix(s, suffix string) string

若字符串 ssuffix 結尾,則去除該后綴并返回剩余部分;否則返回 s 本身。

func main() {s := "HelloWorld"fmt.Println(strings.TrimSuffix(s, "World")) // "Hello"fmt.Println(strings.TrimSuffix(s, "Go"))    // "HelloWorld"
}

func Fields

func Fields(s string) []string

strings.Fields 根據 Unicode 空白字符將字符串分割成多個字段。空白字符包括空格、制表符、換行符等,函數會把連續的空白字符看作一個分隔符。

func main() {s := "  hello\tworld\n    Go 語言  "fields := strings.Fields(s)fmt.Println(fields) // 輸出: ["hello" "world" "Go" "語言"]
}

func FieldsFunc

func TrimSuffix(s, suffix string) string

strings.FieldsFunc 根據用戶提供的判定函數來分割字符串。這個函數接受一個 rune 參數,并返回 truefalse。當判定函數返回 true 時,該字符被視為分隔符。

// 定義一個函數,將所有非字母和非漢字的字符作為分隔符
func isNotLetter(r rune) bool {return !unicode.IsLetter(r) && !unicode.Is(unicode.Han, r)
}func main() {s := "hello,world!歡迎來到-Go語言."// 根據自定義規則分割字符串fields := strings.FieldsFunc(s, isNotLetter)fmt.Println(fields) // 輸出: ["hello" "world" "歡迎" "來到" "Go語言"]
}

func Split

func Split(s, sep string) []string

按分隔符 sep 拆分字符串 s,返回 []string

  • sep 為空字符串 "",則將 s單個字符拆分。
  • seps 中不存在,則返回 [s]
func main() {s := "a,b,c"fmt.Println(strings.Split(s, ",")) // ["a" "b" "c"]fmt.Println(strings.Split(s, ""))  //[a , b , c]
}

func SplitN

func SplitN(s, sep string, n int) []string

按分隔符 sep 拆分字符串 s,最多拆分 n 個部分,返回 []string

  • 如果 n > 0,則最多返回 n 個子串。
  • 如果 n < 0,則拆分所有可能的子串
func main() {s := "a,b,c,d"fmt.Println(strings.SplitN(s, ",", 2))  // ["a" "b,c,d"]fmt.Println(strings.SplitN(s, ",", -1)) //[a b c d]
}

func SplitAfter/func SplitAfterN

func SplitAfter(s, sep string) []string
func SplitAfterN(s, sep string, n int) []string

Split / SplitN 類似,但保留分隔符在拆分后的結果里。

func main() {s := "a,b,c"fmt.Println(strings.SplitAfter(s, ","))     // ["a," "b," "c"]fmt.Println(strings.SplitAfterN(s, ",", 2)) // ["a," "b,c"]
}

func Join

func Join(a []string, sep string) string

[]string 用分隔符 sep 拼接成一個字符串。

func main() {words := []string{"Go", "is", "awesome"}fmt.Println(strings.Join(words, " ")) // "Go is awesome"
}

適用于把切片合并成一行文本,比如生成 CSV 行、命令行參數等。

總結:常見字符串操作的思維導圖

  1. 判斷/搜索
    • Contains/ContainsRune/ContainsAny:是否包含子串或字符
    • HasPrefix/HasSuffix:是否以某前綴/后綴開頭或結尾
    • Index/LastIndex 系列:查找子串或字符的第一次/最后一次出現位置
    • Count:統計子串出現次數
    • EqualFold:忽略大小寫判斷是否相等
  2. 大小寫轉換
    • ToLower/ToUpper/ToTitle:將字符串全部轉為小寫/大寫/標題形式
    • Title:對每個單詞首字母做大寫處理
  3. 替換/映射
    • Replace/ReplaceAll:將子串替換為新字符串
    • Map:對每個字符做自定義轉換,返回新字符串(可丟棄字符)
  4. 修剪(Trim)
    • Trim/TrimLeft/TrimRight:去除指定字符集
    • TrimSpace:去除首尾空白字符
    • TrimPrefix/TrimSuffix:僅去除指定前綴/后綴
    • TrimFunc/TrimLeftFunc/TrimRightFunc:用自定義函數判斷是否需要修剪
  5. 拆分/拼接
    • Split/SplitN/SplitAfter/SplitAfterN:按分隔符拆分字符串
    • Fields/FieldsFunc:按空白或自定義條件拆分
    • Join:將 []string 用分隔符拼接為一個字符串
  6. 重復
    • Repeat:將字符串重復 n

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

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

相關文章

Git沖突解決

目錄 一、Git沖突產生的原因二、解決Git沖突的步驟1. 發現沖突2. 查看沖突文件3. 手動解決沖突4. 提交解決后的代碼5. 完成合并 三、預防Git沖突的小技巧四、總結 在團隊協作開發中&#xff0c;Git沖突是常見的問題。當多個開發者同時修改了同一個文件的不同部分&#xff0c;然…

Spring AOP + RocketMQ 實現企業級操作日志異步采集(實戰全流程)

Spring AOP + RocketMQ 實現企業級操作日志異步采集(實戰全流程) ?? 項目背景 在企業級微服務架構中,記錄操作日志是一項剛需。傳統方式常使用數據庫直接寫入或通過 Feign 調用日志微服務,但這樣存在耦合高、主流程阻塞、擴展性差等問題。 為此,我們將使用: Spring …

Git Flow 分支管理策略

優勢 清晰的分支結構&#xff1a;每個分支都有明確的用途&#xff0c;便于團隊協作。 穩定的 master 分支&#xff1a;生產環境代碼始終穩定。 靈活的發布管理&#xff1a;通過發布分支和熱修復分支&#xff0c;可以靈活管理版本發布和緊急修復。 主要分支 master 分支 代表…

Altium Designer數模電學習筆記

模電 電容 **退耦&#xff1a;**利用通交阻直&#xff0c;將看似直流的信號中的交流成分濾除 &#xff08;一般用在給MPU供電&#xff0c;盡量小一些&#xff0c;10nf~100nf~1uf以下&#xff09; **濾波&#xff1a;**也可以理解為給電容充電&#xff0c;讓電容在電平為低時…

光譜儀與光譜相機的核心區別與協同應用

一、核心功能與數據維度 ?光譜儀? ?功能定位?&#xff1a;專注單點或線狀區域的光譜分析&#xff0c;通過色散元件&#xff08;光柵/棱鏡&#xff09;分離波長&#xff0c;生成一維或二維光譜曲線&#xff0c;用于量化光強、吸收率等參數?。 ?數據維度?&#xff1a;輸…

Pytorch中layernorm實現詳解

平時我們在編寫神經網絡時&#xff0c;經常會用到layernorm這個函數來加快網絡的收斂速度。那layernorm到底在哪個維度上進行歸一化的呢&#xff1f; 一、問題描述 首先借用知乎上的一張圖&#xff0c;原文寫的也非常好&#xff0c;大家有空可以去閱讀一下&#xff0c;鏈接放…

linux--時區查看和修改

查看當前時間和時區: 打開終端&#xff0c;輸入以下命令查看當前的日期和時間設置&#xff1a; timedatectl修改時區: 使用 timedatectl 命令來修改時區&#xff1a; sudo timedatectl set-timezone <時區>例如&#xff0c;設置時區為北京時間&#xff08;中國標準時間&a…

在windows下安裝windows+Ubuntu16.04雙系統(上)

這篇文章的內容主要來源于這篇文章&#xff0c;給文章很詳細的介紹了如何從windows下安裝windowsubuntu16.04雙系統。我剛開始裝雙系統都是參照這個方法&#xff0c;該作者前后更新了兩個版本&#xff0c;在這里對其稍微進行整理一下。 一、準備&#xff1a;&#xff08;這里推…

如何獲取thinkphp的所有發行版本

是的&#xff0c;你只需要一行代碼 composer show topthink/think --all 然后做了一個小實驗&#xff0c;神奇的事情發生了。是我眼睛花了嗎&#xff1f; 命令也能模糊查詢了嗎&#xff1f;tp6也太。。。。

算法模型從入門到起飛系列——遞歸(探索自我重復的奇妙之旅)

文章目錄 前言一、遞歸本質1.1 遞歸的要素1.2 遞歸特點 二、遞歸&迭代2.1 遞歸&迭代比較2.2 遞歸&迭代如何實現相同功能2.2.1 遞歸實現2.2.2 迭代實現2.2.3 性能對比 三、優雅的遞歸理解3.1 階乘計算分解3.2 [DFS](https://blog.csdn.net/qq_38315952/article/deta…

Android 系統進程啟動Activity方法說明

前面文章Android Activity的啟動器ActivityStarter入口說到Activity的恢復執行是由 mRootWindowContainer.resumeFocusedTasksTopActivities(mTargetRootTask, mStartActivity, mOptions, mTransientLaunch)來實現的&#xff0c;下面就看下它的實現。 RootWindowContainer類的…

PostgreSQL_安裝

目錄 前置&#xff1a; 安裝過程&#xff1a; 1 下載軟件 2 創建安裝文件夾和放置數據的文件夾 3 雙擊安裝 4 連接服務 前置&#xff1a; PostgreSQL 15 windows 10 專業版 安裝過程&#xff1a; 1 下載軟件 PostgreSQL: Downloads 大小326MB 2 創建安裝文件夾和放…

docker desktop 集成WSL Ubuntu22.04

Windows docker desktop 設置WSL ubuntu 22.04啟用與其他發行版的集成 Windows docker desktop 安裝參考 wsl ubuntu 22.04 查看我宿主機的docker desktop 容器全部的信息 wsl -d Ubuntu-22.04 -u root

從國家能源到浙江交通投資,全息技術在能源交通領域的創新應用

一、3D全息技術行業應用參數及設計制作要求 全息投影 全息投影技術通過激光器、全息片等設備&#xff0c;將物體的三維信息記錄下來&#xff0c;并在特定條件下再現。應用參數包括投影距離、投影面積、投影亮度等。設計制作要求&#xff1a;高清晰度、高亮度、低噪音、穩定性好…

新能源汽車充換站如何實現光儲充一體化管理?

長三角某換電站光伏板曬到發燙&#xff0c;卻因電網限電被迫切機&#xff1b;北京五環充電站每月多繳6萬超容費&#xff1b;深圳物流車充電高峰排隊3小時...當95%的充換站深陷“用不起綠電、扛不住擴容、算不清碳賬”困局&#xff0c;安科瑞用一組真實數據撕開行業潛規則&#…

二手Mac驗機過程

1.1 外觀檢查 螺絲是否擰過螺絲 1.2 關于本機中 序列號&#xff0c;盒子序列號&#xff0c;機器背部 核對參數 https://checkcoverage.apple.com/coverage 1.3 檢查apple ID與查找 1 登出 iCloud、iTunes、FaceTime、iMessage 在 Mac 上打開「訊息」應用程式&#xff0c;從上方…

C語言-狀態模式詳解與實踐 - OTA升級狀態機

文章目錄 C語言狀態模式詳解與實踐 - OTA升級狀態機1. 什么是狀態模式&#xff1f;2. 為什么需要狀態模式&#xff1f;3. 實際應用場景4. 代碼實現4.1 UML 關系圖4.2 頭文件 (ota_state.h)4.3 實現文件 (ota_state.c)4.4 使用示例 (main.c) 5. 代碼分析5.1 關鍵設計點5.2 實現特…

數據結構5(初):續寫排序

目錄 1、外排序 2、計數排序 1、外排序 上一節中提到的排序都可以用來進行內排序&#xff0c;但是只有歸并排序的思想可以用來進行外部排序&#xff0c;因為文件數據是沒辦法像數組那樣進行訪問的。 例如&#xff1a; #include <stdio.h> #include <assert.h> …

《當人工智能遇上廣域網:跨越地理距離的通信變革》

在數字化時代&#xff0c;廣域網作為連接全球信息的紐帶&#xff0c;讓數據能夠在不同地區的網絡之間流動。然而&#xff0c;地理距離給廣域網數據傳輸帶來諸多挑戰&#xff0c;如高延遲、低帶寬、信號衰減和不穩定等問題。幸運的是&#xff0c;飛速發展的人工智能技術為解決這…

Linux馮諾依曼體系與計算機系統架構認知(8)

文章目錄 前言一、馮諾依曼體系馮?諾依曼體系結構推導內存提高馮?諾依曼體系結構效率的方法你用QQ和朋友聊天時數據的流動過程與馮?諾依曼體系結構相關的一些知識 二、計算機層次結構分析操作系統(Operator System)驅動層的作用與意義系統調用接口(system call)用戶操作接口…