Stories

List
Create Time

redigo連接池的源碼分析

redigo連接池的源碼分析 今天我們來看一看redigo(https://github.com/gomodule/redigo)是如何實現連接池的。 概述 連接池部分的代碼在redis/pool.go中,相關結構體和接口的UML圖如下圖所示 Pool結構體定義了連接池的屬性和行為,包括以下主要參數: Dial func() (Conn, error):指向用於新建連接的函數,由redigo

Create Time

氛圍編程Vibe Coding的梗圖

今年 2 月初,OpenAI 聯合創始人、前特斯拉 AI 負責人 Andrej Karpathy 於社交平台上提出了氛圍編程 Vibe Coding 這一概念。僅僅過了一個多月,這一術語就迅速席捲了開發者社區。 最近,Karpathy 又在社交媒體上分享了他的最新嘗試:“剛用‘氛圍編程’搞定了一個完整的 iOS 應用!雖然之前完全沒碰過 Swift,但也就 1 個多小時吧,這個 app 就已經能在

Create Time

”新建文件”只是早期Unix上touch命令的副作用?程序別掛掉就行

在西斯廷教堂的天頂上,米開朗基羅留下了人類藝術史上最具張力的名作——《創造亞當》。畫面中,上帝在天使的簇擁中俯身而下,手指即將觸碰到大地之上的亞當。這一指尖交會的瞬間,凝結了“以神之手創造人類”的想象,也象徵着生命、自由意志、甚至靈魂的誕生。 看到這幅畫的時候,我腦中突然冒出一個念頭:*nix系統裏的touch命令,會不會也是受此啓發?在操作系統的世界裏,用户就是數字造物主,只需手指一點,“to

Create Time

ping命令第1版主流程的源碼分析

我們知道,ping 命令是通過 ICMP(Internet Control Message Protocol,互聯網控制消息協議)來檢測網絡連通性和延遲的。執行 ping 命令的主機(源主機)會向目標主機發送 ICMP Echo Request 報文,目標主機收到該報文後,應響應 ICMP Echo Reply 報文。 如果源主機能夠收到目標主機返回的 ICMP Echo Reply 報文,就説明

Create Time

小眾語言的巧思:F#為基礎類型添加了單位

在 F# 中,單位類型(Units of Measure) 是一種用於在類型層面標註物理單位的語言特性,能夠顯著提升代碼的安全性和可讀性。 這項特性的核心優勢在於能夠防止物理單位混用引發的錯誤,例如: 不小心將“千克”和“斤”混用 NASA 火星氣候軌道器的災難性事故:混淆了英制單位(磅力)和公制單位(牛頓),導致經過近 10 個月的長途跋涉後,上億美元的探測器在接近火星時解體 加拿大航空

Create Time

難以想象!cURL的前身竟是如此粗糙的300多行代碼?

今天,cURL 無疑是全球最受歡迎的網絡工具之一,下載量突破百億次,幾乎每個開發者的工具箱裏都少不了它。無論是大型項目,還是寫着玩的小腳本,往往都要依賴 cURL 來進行數據傳輸。據説 NASA 使用了 cURL 進行火星探測器數據傳輸!這讓 cURL 成為第一個在地球外運行的開源軟件。 但你知道嗎?cURL的作者,瑞典軟件工程師 Daniel Stenberg,最初只是需要一個簡單的小工具,能夠

Create Time

”JSON 不符合標準,我們不能用“

”JSON 不符合標準,我們不能用。“ 如果聽到有人這麼説,你會不會覺得匪夷所思。 即使從未聽説過 IETF 的 RFC 4627、RFC 8259, Ecma International 的 ECMA-404 這些所謂官方的標準,我們也會默默認為 JSON 就是一種事實上的標準,既可用於系統間的數據傳輸,又可作為數據的存儲格式,甚至可以當作配置文件的格式。 數以千計的 Web API 都會以 J

Create Time

PHP核心開發者Nikita的首次提交,就實現了個寂寞啊

Nikita Popov 曾是 PHP 社區中備受尊敬的核心開發者之一。幾年間,他深度參與了性能優化工作,一邊不斷實現新功能,一邊修復歷史遺留的大量錯誤,是把 PHP 從“老舊腳本語言”推動為“現代編程語言”的關鍵人物之一。 Nikita 可謂年輕有為,據説還在高中時期就開始參與 PHP 開發,首次貢獻是在 PHP 5.5 版本中。 我們不禁好奇,這位才華橫溢的開發者第一次會向 PHP 代碼庫提

Create Time

Markdown算編程語言嗎?由SuperClaude的自定義工具引發的思考

沒有 if 或 while,只能用來寫文檔的 Markdown 算編程語言嗎? 先別急着回答。讓我們先來想象一下,當你在寫代碼時,身邊突然多了一羣虛擬隊友——她們不僅能幫你補全代碼、隨時完善文檔,還能化身為架構師、安全專家、前端工程師或火眼金睛的 QA,給出專業意見——會是怎樣一種體驗呢?説不定還能變身為虛擬的程序員鼓勵師呢。 這正是 SuperClaude Framework 想為開發者帶來的體

Create Time

IT技術圈術語中的低俗詞語①:promiscuous

IT技術圈的術語(黑話)自有其傳承。早期黑客文化中,諷刺與反叛幾乎是一種身份象徵,不正經,才夠格。調侃、低俗乃至粗口風格的俚語成為黑客社羣的通用術語,其中一些詞語還沉澱到了官方文檔和源代碼中。 今天要和大家分享的“低俗術語”是“promiscuous”,出自 Linux 的系統內核日誌。 如下圖所示,為了捕獲出入網卡的數據包,運行 tcpdump 命令後,網卡就會進入“promiscuous m

Create Time

IT術語中的低俗詞語②:早期ping命令源代碼中的quickie

IT 術語(黑話)自有其傳承。早期黑客文化中,諷刺與反叛幾乎是一種身份象徵,不正經,才夠格。調侃、低俗乃至粗口風格的俚語成為黑客社羣的通用術語,其中一些詞語還沉澱到了官方文檔和源代碼中。 今天要和大家分享的低俗 IT 術語是“quickie”,出自早期 ping 命令的源代碼。 一夜之間,ping 誕生了 1983 年年底,就職於美國彈道研究實驗室的 Mike Muuss 時年 25 歲,為了解

Create Time

1982年:Osborne電腦的戰地新聞競速之旅

1982 年,阿富汗,庫納爾省。 夜色籠罩山谷,空氣被迫擊炮的轟鳴撕裂,尖鋭的呼嘯聲劃破夜空,炮彈落在山坡上,炸起火光與碎石。游擊隊員們伏在亂石之間,對山脊上的敵方陣地拼命還擊。子彈擊中岩石,叮噹作響。 而我只能死死趴在地上。此刻我突然覺得,就算這趟任務的報酬再高,也不值當拿命去換。但別無退路,只能深吸一口氣,強迫自己像個記者那樣——從懷裏摸出筆記本,在炮火聲中匆匆記下隻言片語。 Osborne

Create Time

Python 3.14版本的彩蛋

使用 3.14 版本的 Python 創建一個虛擬環境,會看到在虛擬環境的 bin 目錄中,不僅有 python3、python3.14 等常規文件,竟然還存在一個特殊的文件 𝜋thon。 /tmp/venv/bin$ ll total 72 ... -rwxr-xr-x 1 user user 290B Mar 5 10:57 pip3.14* lrwxr-xr-x 1 user

Create Time

grep命令真的是一夜間就寫好了?grep為什麼叫grep?

大家好,今天聊一個程序員都繞不開的命令:grep。 只用過 findstr 或 Select-String 的 Windows 寶子們可以下車嘍,拜拜~ 説起 grep,大多數程序員腦海裏浮現的應該是終端上的一行命令,或單獨使用,或接入管道(|),或多次“自身接龍”(... | grep ... | grep ...),然後一堆結果就“唰”地跳出來。既可用於日誌分析,又能用來搜索代碼,gre

Create Time

PHP又出Bug了?md5('240610708')竟然等於 md5('QNKCDZO')!

如下圖所示,'240610708' 和 'QNKCDZO' 是兩個完全不同的字符串,它們的 MD5 哈希值自然也不相同。可為什麼明明不同,PHP 還會認為這兩個哈希值相等呢?更離譜的是,從 2004 年底的 PHP 4.3.10 版本開始,這個“問題”至今一直存在,所有後續版本都會認為它們是相等的! 難道是 PHP 又出 bug 了?還是這背後另有隱情?讓我們一探究竟! 這看起來的確像是 PHP

Create Time

從負數絕對值的計算來看Ruby的一個“奇葩”行為

計算一個數的絕對值是非常基礎的操作,幾乎所有主流的編程語言都內置了相應的函數或方法。 在 PHP、Python、SQL 等語言中,直接調用 abs() 函數即可,例如 abs(-1)。到了 Java、C# 這類面向對象的語言中,abs() 通常是 Math 類的靜態方法,調用時要加上前綴 Math.,即 Math.abs(-1)。 Go 語言就要稍微麻煩一點了,因為 math 包中的 Abs()