Go:基本數據

文章目錄

  • 整數
  • 浮點數
  • 復數
  • 布爾值
  • 字符串
    • 字符串字面量
    • Unicode
    • UTF - 8
    • 字符串和字節 slice
    • 字符串和數字的相互轉換
  • 常量
    • 常量生成器 iota
    • 無類型常量

整數

分類

  • Go 的整數類型按大小分有 8 位、16 位、32 位、64 位 ,同時有符號整數包括int8int16int32int64 ,無符號整數包括uint8uint16uint32uint64intuint大小依平臺而定,可能是 32 位或 64 位 。
  • runeint32同義詞,用于指明 Unicode 碼點 ;byteuint8同義詞,強調原始數據 。uintptr用于底層編程存放指針,大小不明確 。

范圍

  • 有符號整數以補碼表示,最高位為符號位,n位有符號整數取值范圍是-2^(n - 1)2^(n - 1) - 1 ;無符號整數取值范圍是02^n - 1 ,如int8取值范圍是-128127uint8取值范圍是0255

運算

  • 二元操作符:涵蓋算術、邏輯和比較運算,按優先級分五級,同級別運算滿足左結合律 。算術運算符(+-*/% )中,取模運算%僅用于整數,除法運算/在整數相除時結果為整數 。運算結果超出類型范圍會溢出,溢出高位部分丟棄 。比較運算符用于比較同類型整數,結果為布爾型 。
  • 一元操作符:有一元加法(+x ,等同于0 + x )和一元減法(-x ,等同于0 - x ) 。
  • 位運算符:包括&(位運算 AND )、|(位運算 OR )、^(位運算 XOR )、&^(位清空 AND NOT )、<<(左移 )、>>(右移 ) 。位運算符對操作數逐位運算,不涉及算術進位或正負號 。左移運算x << n等價于x乘以2^n ,右移運算x >> n等價于x除以2^n 向下取整 ,有符號整數右移按符號位填充 。

類型轉換

  • 不同整數類型間轉換需顯式轉換 。算術和邏輯(不含移位 )二元運算符要求操作數類型相同 ,否則需轉換為同一類型 。整數與浮點型相互轉換可能改變值或損失精度 ,浮點型轉整型會舍棄小數部分 。
  • 底層數據結構相同但數據名稱不同也需類型轉化,如tpye MyInt intMyInt類型數據無法賦值給int類型數據。

Go中無隱式類型的轉化。

格式化輸出

  • 整數可寫成十進制、八進制(以0開頭 )、十六進制(以0x0X開頭 ) 。使用fmt包輸出整數時,可用%d(十進制 )、%o(八進制 )、%x(十六進制 )等謂詞指定進制 。

浮點數

  • Go 語言有float32float64兩種浮點數類型,算術特性遵循 IEEE 754 標準 。float32有效數字約 6 位,float64約 15 位 ,應優先選用float64 ,因float32運算易累積誤差 。

范圍與表示

  • math包給出浮點值極限,math.MaxFloat32約為3.4e38math.MaxFloat64約為1.8e308 ,最小正浮點數分別約為1.4e - 454.9e - 324 。浮點數在源碼中可寫成小數(小數點前后數字可省略 )或科學記數法(如6.02214129e23 ) 。
  • 通過fmt.Printf%g謂詞可輸出浮點值,也可用%e(有指數 )或%f(無指數 ) 。

特殊值

  • math包含創建和判斷 IEEE 754 標準特殊值(正無窮大、負無窮大、NaN )的函數 。math.IsNaN判斷參數是否為非數值,math.NaN返回非數值 。與 NaN 比較除!=外總不成立 。

運算與應用

  • 函數返回浮點型且可能出錯時,最好單獨報錯 。

復數

  • Go 語言有complex64complex128兩種復數類型,分別由float32float64構成 。

操作函數

  • complex函數用于根據給定實部和虛部創建復數,如var x complex128 = complex(1, 2)創建復數1 + 2i
  • real函數提取復數實部,imag函數提取虛部,如real(x*y)imag(x*y)

表示

  • 在源碼中,浮點數或十進制整數后緊跟i表示虛數(實部為 0 ),如3.141592i2i ,復數常量可與其他常量相加,如1 + 2i 。可用==!=判斷復數是否相等,需實部和虛部都相等 。
  • math/cmplx包提供復數運算庫函數,如cmplx.Sqrt(-1)計算復數平方根 。

布爾值

bool型值即布爾值,只有true(真 )和false(假 )兩種取值 。iffor語句中的條件以及比較操作符(如==< )的運算結果都是布爾值 。一元操作符!表示邏輯取反,如!truefalse ,且(!true==false)==true 。代碼風格上,x==true常簡化為x

運算規則

  • 布爾值可通過&&(邏輯與 )和||(邏輯或 )組合運算,存在短路行為:當&&左邊操作數為false ,或||左邊操作數為true時,右邊操作數不會計算 。例如s != "" && s[0] == 'x' ,若s為空字符串,不會計算s[0]
  • &&||優先級高于==< ,形如'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9'這樣的條件表達式無需加括號 。

與C++,Java等,運算規則相同。

與數值的轉換

  • 布爾值不能隱式轉換成數值(如 0 或 1 ),反之亦然 。若需轉換,要使用顯式if語句,如if b { i = 1 }

字符串

  • 字符串是不可變的字節序列,可包含任意數據,主要用于存儲人類可讀文本,文本字符串按 UTF - 8 編碼的 Unicode 碼點序列解讀 。

操作函數與運算

  • 長度獲取:內置len函數返回字符串字節數,如len("hello, world")結果為12
  • 字符訪問:通過下標操作s[i]獲取第i個字符(0 ≤ i < len(s) ),訪問越界會觸發宕機異常 。非 ASCII 字符的 UTF - 8 碼點可能占多個字節,所以第i個字節不一定是第i個字符 。
  • 子串生成:用s[i:j]生成子字符串,從下標i(含 )到j(不含 ),結果長度為j - iij默認值分別為0len(s) ,下標越界或j < i會觸發宕機異常 。
  • 字符串連接:用加號+連接兩個字符串生成新字符串,如"goodbye" + s[5:]
  • 字符串比較:可通過==<等比較運算符比較,按字節進行字典排序 。

不可變性

  • 字符串值不可改變,不能直接修改字符串內部字節,如s[0] = 'L'會編譯報錯 。可通過+=等方式生成新字符串并賦值給原變量實現拼接等操作 。字符串不可變性使得字符串及其子串可安全共用底層內存,復制和子串生成操作開銷低 。

存儲方式

image.png

字符串字面量

常規字符串字面量

  • 形式:帶雙引號的字節序列,如"Hello, 世界" 。由于 Go 源文件按 UTF - 8 編碼,字符串也按 UTF - 8 解讀,可寫入 Unicode 碼點 。
  • 轉義序列:以反斜杠\開始,用于插入特定字節或表示 ASCII 控制碼等,如\a(“警告” 或響鈴 )、\n(換行符 )、\"(雙引號 )、\\(反斜杠 )等 。還可包含十六進制(\xhhh為十六進制數字 )或八進制(\oooo為八進制數字 )轉義字符來表示單個字節 。

原生字符串字面量

  • 形式:用反引號包裹,如:
const GoUsage = `Go is a tool for manageing Go source code.
Usage:go command  [arguments]
...`
  • 特性:轉義序列不起作用,內容嚴格按字面寫法,包括反斜杠和換行符,可跨多行書寫,回車符會被刪除以保證字符串在各平臺值相同 。適用于正則表達式、HTML 模板、JSON 字面量、命令行提示信息等場景 。

Unicode

從 ASCII 到 Unicode 的演進

  • 早期軟件主要處理 ASCII 字符集,US - ASCII 碼用 7 位表示 128 個字符,包含英文字母、數字、標點等,能滿足早期計算機行業需求,但無法支持其他語言的文字體系 。隨著互聯網發展,數據包含多種語言,ASCII 無法滿足需求,于是出現了 Unicode 。

  • 定義:Unicode 囊括世界上所有文書體系的字符,給每個字符賦予標準數字,即 Unicode 碼點 。

  • Go 語言實現:在 Go 語言中,這些字符記號稱為文字符號(rune ),Unicode第 8 版定義超 100 種語言文字的 12 萬個字符碼點 。Go 采用int32類型保存單個文字符號,runeint32的別名 。可將文字符號序列表示成int32值序列,即 UTF - 32 或 UCS - 4 編碼,每個碼點編碼長度固定為 32 位 。但這種編碼因多數文本是 ASCII 碼(每個字符 8 位 ),會造成存儲空間浪費,且多數常用字符用 16 位就能容納。

UTF - 8

編碼原理

  • UTF - 8 是以字節為單位對 Unicode 碼點作變長編碼,由 Ken Thompson 和 Rob Pike 發明 。每個文字符號用 1 - 4 個字節表示,ASCII 字符編碼占 1 字節,與傳統 ASCII 碼一致 ;若最高位是 110,編碼占 2 個字節;若最高位是 1110,編碼占 3 個字節;若最高位是 11110,編碼占 4 個字節 。

編碼特性

  • 緊湊兼容:緊湊且兼容 ASCII,從左向右解碼不超過 3 字節就能定位一個字符,能快速搜索字符,無需考慮前文,字符順序與 Unicode 碼點順序一致,編碼本身不會嵌入 NUL 字節 。
  • 操作便利:基于 UTF - 8 編碼的字符串操作無需解碼即可進行,如判斷前綴(HasPrefix函數 )、后綴(HasSuffix函數 )、包含子串(Contains函數 )等 。

轉義與碼點表示

Unicode 轉義符可用于文字符號,碼點值小于 256 的可寫成單個十六進制數轉義形式,更高碼點需用\u\U轉義 。不同轉義序列形式的字符串字面量,實質字符串值相同 。

字符串操作與解碼

  • 統計與遍歷:可使用unicode/utf8包中的函數,如RuneCountInString統計字符串中文字符號數目 。通過for i, r := range s循環可隱式解碼遍歷 UTF - 8 編碼字符串,對于非 ASCII 文字符號,下標增量大于 1 。
  • 顯式解碼utf8.DecodeRuneInString函數可返回文字符號本身和其按 UTF - 8 編碼所占字節數 ,用于顯式解碼操作 。

類型轉換相關

  • []rune轉換用于 UTF - 8 編碼字符串時,返回其 Unicode 碼點序列 。
  • 將文字符號類型的slice轉換成字符串,會輸出各文字符號的 UTF - 8 編碼拼接結果 。
  • 整數轉換為字符串時,按文字符號類型解讀,產生代表該文字符號值的 UTF - 8 編碼 。

字符串和字節 slice

標準包功能

  • strings 包:提供字符串搜索、替換、比較、修整、切分與連接等操作函數 。
  • bytes 包:功能類似 strings 包,用于操作字節 slice([]byte ),且提供Buffer類型,能高效處理字符串構建,避免多次內存分配和復制 。
  • strconv 包:用于布爾值、整數、浮點數與字符串間的類型轉換,以及字符串添加 / 去除引號等操作 。
  • unicode 包:包含判別文字符號值特性(如是否為數字IsDigit 、字母IsLetter 、大寫IsUpper 、小寫IsLower )的函數,還有轉換大小寫(ToUpperToLower )的函數,遵循 Unicode 標準 。

函數示例

func main() {fmt.Println(basename2("a/b/c.go"))fmt.Println(basename2("c.d.go"))fmt.Println(basename2("abc"))
}func basename2(s string) string {slash := strings.LastIndex(s, "/")s = s[slash+1:]if dot := strings.LastIndex(s, "."); dot >= 0 {s = s[:dot]}return s
}func basename1(s string) string{for i := len(s) - 1; i >= 0; i-- {if s[i] == '/' {s = s[i + 1:]break;}}for i := len(s) - 1; i >= 0; i-- {if s[i] == '.'{s = s[:i]break}}return s
}
  • basename 函數:有兩種實現方式,初版獨立完成工作,移除字符串中類似文件系統路徑的前綴和文件類型后綴 ;簡化版利用strings.LastIndex函數,更簡潔高效 。

字符串與字節 slice 轉換

  • 字符串和字節 slice 可相互轉換,[]byte(s)將字符串s轉換為字節 slice ,會分配新字節數組并拷貝內容;string(b)將字節 sliceb轉換為字符串,會生成副本 。strings 包和 bytes 包有功能對應的實用函數,只是操作對象分別為字符串和字節 slice 。
func main() {fmt.Println(intsToString([]int{1, 2, 3}))
}func intsToString(values []int) string {var buf bytes.Bufferbuf.WriteByte('[')for i, v := range values {if i > 0 {buf.WriteString(", ")}fmt.Fprintf(&buf, "%d", v)}buf.WriteByte(']')return buf.String()
}
  • intsToString 函數:將字節 slice 轉化為 string。

字符串和數字的相互轉換

整數轉字符串

  • 可使用fmt.Sprintf函數,通過格式化謂詞(如%d )將整數轉換為字符串,例如x := 123; y := fmt.Sprintf("%d", x)
  • 也可使用strconv.Itoa函數,它專門用于將整數轉換為 ASCII 字符串 ,如strconv.Itoa(x)
  • strconv.FormatIntstrconv.FormatUint函數可按不同進位制格式化數字 ,如strconv.FormatInt(int64(x), 2)可將整數按二進制格式輸出 。相比之下,fmt.Printf%b%d%o%x等謂詞在包含額外信息時更方便 。

字符串轉整數

  • strconv.Atoi函數用于將表示整數的字符串轉換為整型 ,如x, err := strconv.Atoi("123")
  • strconv.ParseInt函數可指定進制和結果匹配的整型大小(第三個參數 ),如y, err := strconv.ParseInt("123", 10, 64) ,結果類型為int64 ,可再轉換為較小類型 。strconv.ParseUint用于無符號整數轉換 。

輸入處理

  • 對于字符串和數字混合的單行輸入,可嘗試用fmt.Scanf解釋 ,但它在處理不完整或不規則輸入時靈活性欠佳 。

常量

  • 定義:常量是在編譯階段就能計算出值的表達式,本質屬于基本類型(布爾型、字符串、數字 ) 。其聲明類似變量,但值恒定,防止程序運行中被意外修改,適合表示數學常量(如圓周率pi ) 。
  • 計算時機:許多常量計算在編譯時完成,減少運行時工作量,利于編譯器優化 。操作數為常量時,一些運行時才報錯的情況(如整數除 0 )編譯時就會報錯 。常量參與的數學、邏輯、比較運算結果仍是常量,類型轉換結果和部分內置函數(lencap等 )返回值也是常量 。

聲明與使用

  • 單個常量聲明:用const關鍵字,如const pi = 3.14159
  • 多個常量聲明:可在一個const聲明中定義一系列常量,適用于相關值,如const ( e = 2.71828… pi = 3.14159… )
  • 在類型聲明中使用:常量表達式可用于數組類型長度聲明,如const IPv4Len = 4; var p [IPv4Len]byte
  • 類型推斷:常量聲明可指定類型和值,未顯式指定類型時,根據右邊表達式推斷 ,如const noDelay time.Duration = 0
  • 復用表達式:同時聲明一組常量時,除第一項外,其他項等號右側表達式可省略,復用前面一項的表達式及其類型 。

常量生成器 iota

  • iota是常量生成器,用于創建一系列相關值,在常量聲明中,它從 0 開始取值,逐項加 1 。

應用示例

type Weekday int
const (Sunday Weekday = iotaMondayTuesdayWednesdayThursdayFridaySaturday
)
  • 枚舉類型定義:以time包中Weekday類型定義為例,聲明每周 7 天為Weekday類型常量,從Sunday開始,Sunday值為 0 ,Monday值為 1 ,依此類推 。
type Flags uint
cosnt (FlagUp Flags = 1 << itoaFlagBroadcastFlagLoopbackFlagPointToPointFlagMulticast
)func IsUp(v Flags) bool		 { return v&FlagUp == FlagUp }
func TurnDown(v *Flags)		 { *v &^= FlagUp }
func SetBroadcast(v *Flags)	 { *v |= FlagBroadcast }
func IsCast(v Flags) bool	 { return v&(FlagBroadcast|FlagMulticast) != 0}
  • 位標志定義:借助net包代碼,定義Flags類型常量,如FlagUp = 1 << iota ,隨著iota遞增,每個常量按1 << iota賦值,等價于 2 的連續次冪,用于表示不同的位標志,如FlagUp(向上 )、FlagBroadcast(支持廣播訪問 )等 ,還有相關函數用于判定、設置或清除這些位標志 。
const (_ = 1 << (10 * itoa)KiBMiBGiBTiBPiBEiBZiBYiB
)
  • 冪值定義:聲明表示 1024 的冪的常量,如const { _ = 1 << (10 * iota); KiB; MiB; … }iota遞增,對應值為 1024 的不同冪次 。

局限性

  • 由于 Go 語言不存在指數運算符,iota無法直接生成 1000 的冪(如KBMB ) 。

無類型常量

  • Go 語言中許多常量不從屬具體類型,編譯器將其表示為精度更高的值(算術精度可達 256 位 ),有 6 種無類型常量,即無類型布爾、無類型整數、無類型文字符號、無類型浮點數、無類型復數、無類型字符串 。

優勢

  • 可暫時維持高精度,能用于更多表達式且無需轉換類型 。如計算中值過大無法用常規整型存儲的常量,可參與運算;math.Pi作為無類型常量可用于需浮點值或復數的地方,若一開始確定類型(如float64 ),會導致精度下降 。

  • 類型推斷:常量字面量類型由語法決定,如0(無類型整數 )、0.0(無類型浮點數 )、0i(無類型復數 )、'\u0000'(無類型文字符號 ) 。常量除法中,操作數寫法影響結果類型(如整數除法結果可能是整型,浮點數除法結果是浮點型 ) 。

  • 類型轉換:無類型常量聲明為變量或給變量賦值時,會隱式轉換成變量類型 。顯式或隱式轉換時,目標類型要能表示原值,實數和復數允許舍入取整 。變量聲明未顯式指定類型時,無類型常量會隱式轉換為變量默認類型 。無類型整數可轉成int ,無類型浮點數和復數分別轉成float64complex128 。要將變量轉成不同類型,需顯式轉換無類型常量或在聲明時指明類型 。

接口值與默認類型

  • 將無類型常量轉換為接口值時,其默認類型決定接口值動態類型,如fmt.Printf("%T\n", 0)輸出intfmt.Printf("%T\n", 0.0)輸出float64 等 。

浮點型 ) 。

  • 類型轉換:無類型常量聲明為變量或給變量賦值時,會隱式轉換成變量類型 。顯式或隱式轉換時,目標類型要能表示原值,實數和復數允許舍入取整 。變量聲明未顯式指定類型時,無類型常量會隱式轉換為變量默認類型 。無類型整數可轉成int ,無類型浮點數和復數分別轉成float64complex128 。要將變量轉成不同類型,需顯式轉換無類型常量或在聲明時指明類型 。

接口值與默認類型

  • 將無類型常量轉換為接口值時,其默認類型決定接口值動態類型,如fmt.Printf("%T\n", 0)輸出intfmt.Printf("%T\n", 0.0)輸出float64 等 。

參考資料:《Go程序設計語言》

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

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

相關文章

0x03.Redis 通常應用于哪些場景?

回答重點 1)緩存(Cache): Redis 最常用的場景是作為緩存層,以減少數據庫的負載,提高數據讀取速度。例如,常用的用戶會話數據和頁面渲染結果可以存儲在 Redis 中。2)分布式鎖(Distributed Lock): Redis 可以用作分布式鎖的實現,確保在分布式系統中資源的安全訪問,避免…

大數據學習筆記

文章目錄 1. 大數據概述1.1 大數據的特性1.2 大數據技術生態1.2.1 Hadoop 的概念特性1.2.2 Hadoop生態圈 — 核心組件與技術棧1.2.3 Hadoop生態演進趨勢 2. 數據處理流程與技術棧2.1 數據采集2.1.1 日志采集工具2.1.2 實時數據流2.1.3 數據遷移 2.2 數據預處理2.2.1 批處理2.2.…

Spring Boot 自定義商標(Logo)的完整示例及配置說明( banner.txt 文件和配置文件屬性信息)

Spring Boot 自定義商標&#xff08;Logo&#xff09;的完整示例及配置說明 1. Spring Boot 商標&#xff08;Banner&#xff09;功能概述 Spring Boot 在啟動時會顯示一個 ASCII 藝術的商標 LOGO&#xff08;默認為 Spring 的標志&#xff09;。開發者可通過以下方式自定義&a…

1. k8s的簡介

Kubernetes&#xff08;k8s&#xff09;簡介 1. 產生背景 隨著云計算和微服務架構的興起&#xff0c;傳統的單體應用逐漸被拆分為多個小型、松耦合的服務&#xff08;微服務&#xff09;。這種架構雖然提升了開發靈活性和可維護性&#xff0c;但也帶來了新的挑戰&#xff1a;…

OpenCV 圖形API(35)圖像濾波-----中值模糊函數medianBlur()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 使用中值濾波器模糊圖像。 該函數使用帶有 ksizeksize 開口的中值濾波器來平滑圖像。多通道圖像的每個通道都是獨立處理的。輸出圖像必須與輸入…

03 UV

04 Display工具欄_嗶哩嗶哩_bilibili 講的很棒 ctrlMMB 移動點 s 打針 ss 批量打針

PTA:古風排版

中國的古人寫文字&#xff0c;是從右向左豎向排版的。本題就請你編寫程序&#xff0c;把一段文字按古風排版。 輸入格式&#xff1a; 輸入在第一行給出一個正整數N&#xff08;<100&#xff09;&#xff0c;是每一列的字符數。第二行給出一個長度不超過1000的非空字符串&a…

每日一題(小白)暴力娛樂篇30

順時針旋轉&#xff0c;從上圖中不難看出行列進行了變換。因為這是一道暴力可以解決的問題&#xff0c;我們直接嘗試使用行列轉換看能不能得到想要的結果。 public static void main(String[] args) {Scanner scan new Scanner(System.in);int nscan.nextInt();int mscan.next…

邊緣計算場景下的模型輕量化:TensorRT部署YOLOv7的端到端優化指南

一、邊緣計算場景下的技術挑戰與優化路徑 在邊緣設備&#xff08;如Jetson系列&#xff09;部署YOLOv7需兼顧模型精度、推理速度與功耗限制三重約束。TensorRT作為NVIDIA官方推理加速庫&#xff0c;通過算子融合、量化壓縮和內存復用等優化技術&#xff0c;可將模型推理速度提…

rce漏洞學習

什么是rce漏洞 rce漏洞又稱遠程代碼執行漏洞&#xff0c;它允許攻擊者在目標服務器上遠程執行任意代碼或操作系統命令。rce漏洞通常出現在 應用程序提供給用戶執行命令的接口&#xff0c;例如網頁的ping功能也就是網頁的url欄&#xff0c;如果不對上傳的數據進行嚴格的管控就可…

VMware下Ubuntu空間擴容

目的&#xff1a; Ubuntu空間剩余不足&#xff0c;需要對Ubuntu進行擴容。 使用工具&#xff1a; 使用Ubuntu系統中的gparted工具進行系統擴容。 前提&#xff1a; 1、電腦有多余的未分配磁盤空間&#xff0c;比如我的Ubuntu磁盤G盤是200G&#xff0c;現在快滿了&#xff0c…

國產數據庫與Oracle數據庫事務差異分析

數據庫中的ACID是事務的基本特性&#xff0c;而在Oracle等數據庫遷移到國產數據庫國產中&#xff0c;可能因為不同數據庫事務處理機制的不同&#xff0c;在遷移后的業務邏輯處理上存在差異。本文簡要介紹了事務的ACID屬性、事務的隔離級別、回滾機制和超時機制&#xff0c;并總…

Dockerfile 學習指南和簡單實戰

引言 Dockerfile 是一種用于定義 Docker 鏡像構建步驟的文本文件。它通過一系列指令描述了如何一步步構建一個鏡像&#xff0c;包括安裝依賴、設置環境變量、復制文件等。在現實生活中&#xff0c;Dockerfile 的主要用途是幫助開發者快速、一致地構建和部署應用。它確保了應用…

青少年編程與數學 02-016 Python數據結構與算法 22課題、并行算法

青少年編程與數學 02-016 Python數據結構與算法 22課題、并行算法 一、GPU并行計算矩陣乘法示例 二、MPI并行計算allgather操作示例 三、Python中的并行計算多線程并行計算多進程并行計算 四、SIMD并行計算SIMD并行計算示例 總結 課題摘要: 并行算法是通過同時執行多個任務或操…

20250412 機器學習ML -(3)數據降維(scikitlearn)

1. 背景 數學小白一枚&#xff0c;看推理過程需要很多時間。好在有大神們源碼和DS幫忙&#xff0c;教程里的推理過程才能勉強拼湊一二。 * 留意&#xff1a; 推導過程中X都是向量組表達: shape(feature, sample_n); 和numpy中的默認矩陣正好相反。 2. PCA / KPCA PCAKPCA(Li…

宿舍管理系統(servlet+jsp)

宿舍管理系統(servletjsp) 宿舍管理系統是一個用于管理學生宿舍信息的平臺&#xff0c;支持超級管理員、教師端和學生端三種用戶角色登錄。系統功能包括宿舍管理員管理、學生管理、宿舍樓管理、缺勤記錄、添加宿舍房間、心理咨詢留言板、修改密碼和退出系統等模塊。宿舍管理員…

現代測試自動化框架教程:Behave接口測試與Airtest移動端UI自動化

前言 我發現每天還是陸陸續續有人在看我之前寫的自動化框架搭建的文檔&#xff1b;即使很早就有新的框架&#xff0c;更好的選擇出來了&#xff1b;所以特別寫了這一篇目前大廠也在使用的&#xff1b;日活400w有實際落地的自動化測試架構方案&#xff1b; 隨著測試技術…

.NET Core DI(依賴注入)的生命周期及應用場景

在.NET中&#xff0c;依賴注入&#xff08;DI&#xff0c;Dependency Injection&#xff09;是一種設計模式&#xff0c;它通過將依賴關系注入到類中&#xff0c;而不是讓類自己創建依賴項&#xff0c;來降低類之間的耦合度。這使得代碼更加模塊化、靈活和易于測試。在.NET中&a…

設計模式 --- 觀察者模式

觀察者模式是一種行為設計模式&#xff0c;它定義了對象之間的一對多依賴關系&#xff0c;當一個對象的狀態發生改變時&#xff0c;所有依賴它的對象都會得到通知并自動更新。 優點&#xff1a; ??1.解耦性強??&#xff1a; ??觀察者&#xff08;訂閱者&#xff09;與主…

PasteForm框架開發之Entity多級嵌套的表單的實現

你相信么,使用PasteForm框架開發&#xff0c;管理端居然不要寫代碼&#xff01;&#xff01;&#xff01; 一起來看看PasteForm是否支持多級表模式(外表) 需求假設 假如有這么一個需求&#xff0c;就是訂單表&#xff0c;包含了多級的信息&#xff0c;比如這個訂單包含了哪些…