Golang中unbuffered與buffered channel差異
在 Golang 中,channel 是用來在 goroutine 之間傳遞數據的核心工具。依據其緩衝行為,channel 分為 unbuffered channel 和 buffered channel。這兩者的差異主要體現在數據的傳遞方式及阻塞行為上。
一、Unbuffered ChannelUnbuffered channel 沒有緩衝區,因此傳遞數據時,發送者和接收者必須同步配對,也就是說,發送操作(send)會阻塞,直到接收者準備好接收數據為止。
特點
發送方和接收方必須同時就緒。
適用於 goroutine 之間的直接同步。
範例:Unbuffered Channel12345678910111213141516171819package mainimport ( "fmt")func main() { ch := make(chan int) // 創建一個無緩衝的 channel go func() { fmt.Println("Goroutine: 發送數據") ch <- 42 // 阻塞,直 ...
TypeScript泛型的使用
TypeScript(TS)是一種靜態型別的超集合語言,旨在增強 JavaScript 的可維護性和可讀性。在 TS 中,泛型(Generics) 是一個強大而靈活的特性,允許我們在編寫函數、類別或接口時,不必預先定義型別,而是將型別作為參數來使用,進而實現更加靈活和可重用的代碼結構。
什麼是泛型?泛型可以理解為「型別變數」,它允許開發者在編寫代碼時不指定具體型別,而是在使用時再決定具體型別。這使得代碼能適應更多場景,而不失去型別檢查的優勢。
泛型的基本語法泛型使用尖括號 <T> 來表示,其中 T 是型別參數的名稱,可以是任何有效的標識符。
123function identity<T>(value: T): T { return value;}
使用泛型函數在上述範例中,我們定義了一個泛型函數 identity,它接收任意型別的值並返回相同型別的值。使用時可以顯式地指定型別,或讓編譯器自動推斷。
12345// 顯式指定型別const result1 = identity<string>("Hello, Type ...
Golang指針「*」「&」說明與範例介紹
在 Go 語言中,指針(Pointer)是一個重要的概念,它能讓我們直接操作記憶體位址。本文將詳細介紹指針的兩個重要運算符:* 和 &,並透過實際範例來說明它們的使用方式。
什麼是指針?指針就是儲存另一個變數的記憶體位址的變數。想像一下,如果變數是一個儲存數據的盒子,那麼指針就是指向這個盒子的標籤,告訴我們盒子在哪裡。
取址運算符「&」基本概念& 運算符用於獲取變數的記憶體位址。當我們在變數前面加上 &,就能得到該變數在記憶體中的位址。
使用範例123456var number int = 42var pointer *int = &number // 創建一個指向 number 的指針fmt.Println("number 的值:", number) // 輸出:42fmt.Println("number 的記憶體位址:", &number) // 輸出:0xc0000b4008(位址會因執行環境而異)fmt.Println("pointer 儲存的位址:" ...
Golang 宣告變數方法
簡單說明Golang宣告方法,以及比較特別的地方。
1. 宣告變數1234var a intvar b stringvar c boolvar d float32
2. 宣告變數並賦值1234var a int = 1var b string = "Hello"var c bool = truevar d float32 = 1.1
3. 宣告變數並賦值 (型態自動推斷)1234var a = 1var b = "Hello"var c = truevar d = 1.1
4. 宣告變數並賦值 (簡短宣告)1234a := 1b := "Hello"c := trued := 1.1
5. 宣告多個變數1234var a, b, c intvar d, e, f stringvar g, h, i boolvar j, k, l float32
6. 宣告多個變數並賦值1234var a, b, c int = 1, 2, 3var d, e, f string = "Hello", " ...
2024日本東京8日遊紀錄與心得
前言終於又再次去日本啦!!幾年前第一次去日本,因為完全不會日文,所以是跟團去的,導遊去哪就去哪,沒辦法只挑選自己喜歡的去,而且因為不懂語言,所以甚麼都看不懂,遊玩體驗就會有點落差。這次就不一樣了,我們是自由行,行程任君挑選、日文也看得懂了,遊玩體驗真的大大提升。👍👍
這次我們的行程是八天七夜東京之旅(也可以說是宅宅之旅😂),由於是第一次自由行,所以做了不少功課,像是更新護照、提早好幾個月訂飯店與機票、註冊 Visit Web Japan 快速通關、購買剛好符合託運尺寸的行李箱 XD、規劃行程、預定餐廳、辦理西瓜卡與各種交通與景點票券、ESIM、了解日本當地習慣與注意事項、了解機場流程與動線、了解交通方法等等,其餘就是偏向個人習慣的準備,真的是一大堆事情要準備,學到了好多出國的知識。雖然要準備事情很多,感覺很累,但是就是有充分的準備,這次旅行相當的順利,也讓我們玩得很開心。
接下來就來分享我們這次都去哪裡玩、逛了哪些著名的商家、以及吃了哪些料理吧!注意:文章圖片有露臉人物有經過馬賽克處理,請見諒。
Day 1
由於第一次自由行,我們選擇比較新且服務較好的航空「星宇航空」。到成田機場 ...
PHP FTP用法
PHP中使用FTP的方法,這邊分享一些常用的FTP操作,如連線、上傳、下載、列出檔案、刪除檔案、建立目錄、刪除目錄等。
FTP 連線1234567891011121314151617$ftp_server = ""; // FTP Server IP$ftp_user = ""; // FTP User$ftp_pass = ''; // FTP Password// 連線$conn_id = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");// 登入if (ftp_login($conn_id, $ftp_user, $ftp_pass)) { echo "Connected as $ftp_user@$ftp_server\n";} else { echo "Could not connect as $ftp_user\n";} ...
《觸動人心的柔話術》讀後心得感想
「在家中吵架的目標是什麼?大部分人認為是要吵贏,但如果你這樣想的話,那你就是頭殼壞了。」這是本書中令我印象最深刻的一段話。
這句話讓我回想起以往不只在家裡還有生活中的各種紛爭,現在仔細回想就會發現,其實不少紛爭的目的都是為了證明自己是對的或是嚥不下這口氣而已,而不是為了解決問題。這樣的吵架是毫無意義的,只會讓雙方更加固執,最終可能導致關係的破裂。
前言個人在溝通上比較不善長,而且會直接表達自己的想法,導致有時候會與人發生衝突,並且傷害到他人,事後才懊悔,當初如果這樣…講的話會不會比較好,但說出去的話,就像覆水難收,因此我開始尋找一些書籍來幫助我改善這個問題,這本《觸動人心的柔話術》就是我在網路上看到推薦後,便立刻購買的,希望這本書可以幫助我改善這個問題。
什麼是「柔話術」?在說介紹書之前,我想先介紹什麼是「柔話術」,簡單來說就是用柔道的方式溝通,而不是像是空手道一樣直接對抗,柔道是一種運用對方的力量來制服對方的技巧,而柔話術也是一樣的道理,化解對方的話語與情緒,來達到溝通的目的。具體來說就是,透過柔和的語氣、選擇適當的字眼,讓對方感受到你的關心與尊重,進而達到溝通的目的。柔話術不是 ...
認識 SQL JOIN 關聯查詢
在資料庫查詢中,JOIN操作是一個非常重要的技術,可以幫助我們從多個表中擷取所需的數據,並實現數據的關聯查詢。在本文中,會以MySQL方法為主,介紹什麼是JOIN操作,以及如何在SQL查詢中使用它。
什麼是JOIN?在資料庫中,我們通常會有多個表,每個表中包含不同的數據。當我們需要從多個表中擷取數據時,就需要使用JOIN操作。JOIN操作是一種關聯查詢的技術,可以幫助我們將兩個或多個表中的數據進行關聯,並返回符合條件的數據。通過JOIN操作,我們可以實現數據的關聯查詢,從而獲取更全面的數據信息。
JOIN的種類在SQL語言中,JOIN操作有多種不同的種類,主要包括以下幾種:
INNER JOIN:內連接,返回兩個表中符合條件的數據(交集的概念)。沒有符合條件的數據將不會返回。
LEFT JOIN:左外連接,返回左表(SQL語句中先寫的表)中所有的數據,以及右表中符合條件的數據。如果右表中沒有符合條件的數據,則返回NULL。
RIGHT JOIN:右外連接,返回右表(SQL語句中後寫的表)中所有的數據,以及左表中符合條件的數據。如果左表中沒有符合條件的數據,則返回NULL。
FU ...
認識 SQL 子查詢(Subquery)
在資料庫查詢中,子查詢(Subquery)是一個非常有用的技術,可以幫助我們編寫更複雜的查詢,並從多個表中擷取所需的資料。在本文中,會以MySQL方法為主,介紹什麼是子查詢,以及如何在SQL查詢中使用它。
什麼是子查詢?子查詢是一個SQL查詢,它嵌套在另一個查詢中。子查詢可以返回一個值、一個列或一個資料集,並且可以用於WHERE、FROM、SELECT、JOIN等子句中。子查詢通常用於從多個表中擷取資料,或者在查詢中使用聚合函數。
如何使用子查詢?以下是一個簡單的例子,展示如何在SQL查詢中使用子查詢:
123SELECT column1, column2FROM table1WHERE column1 = (SELECT column1 FROM table2 WHERE column2 = 'value');
在這個例子中,我們在table1中查詢column1和column2的值,並使用子查詢從table2中擷取column1的值。子查詢的結果將用於WHERE子句中,以過濾table1的結果。
子查詢的優點子查詢有以下幾個優點:
提高查詢的靈活性:子查詢可 ...
單一登入(SSO):簡化您的網路體驗
在今天的數位時代,我們每天都要處理多個在線平台和網站,包括社交媒體、電子郵件、雲端存儲等等。這樣的多重登入程序不僅繁瑣,還容易導致安全問題。但是,有一種名為單一登入(Single Sign-On,SSO)的技術可以解決這些問題,並為用戶提供更簡單、更安全的網路體驗。
什麼是單一登入?單一登入(SSO)是一種身份驗證技術,允許用戶通過一組憑證(例如用戶名和密碼)登入多個相關的網站或應用程式。換句話說,一旦您登入了其中一個服務,您就可以無需再次輸入憑證,自動訪問其他相關的服務,無縫地進行切換。
SSO的工作原理SSO的工作原理相對簡單,它基於一個名為「權威方」的服務來管理用戶身份驗證。當用戶嘗試登入一個相關的服務時,該服務將請求傳送給權威方進行身份驗證。如果用戶已經在權威方登入,它將通過,並將授予訪問該服務的權限,而無需再次輸入憑證。
SSO的好處用戶便利性:最明顯的好處是提高了用戶的便利性。用戶無需記住多個不同的登入憑證,大大簡化了登入程序,節省了時間和精力。
提高安全性:雖然有人可能認為將所有憑證集中在一個位置會增加風險,但實際上,SSO可以提高安全性。透過SSO,管理者可以實施更強大 ...