博客 / 列表

da_miao_zi - redigo連接池的源碼分析

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

redis , 源碼學習 , 源碼分析 , 連接池 , go

da_miao_zi - 氛圍編程Vibe Coding的梗圖

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

code , generative-ai , llm , 人工智能

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

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

命令行 , 歷史 , unix , Linux

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

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

網絡編程 , ping , icmp , 網絡傳輸協議 , c

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

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

編程技巧 , 編程思想 , 編程語言 , 編程風格

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

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

歷史 , HTTP , curl

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

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

rest-api , restful , Javascript , Json

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

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

php , c , php7

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

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

llm , 人工智能 , claude , Markdown

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

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

網絡

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

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

ping , icmp , 網絡 , 網絡傳輸協議

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

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

歷史 , 網絡

da_miao_zi - 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

python3.x , 版本 , 彩蛋 , Python

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

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

grep , unix , 正則表達式

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

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

php , md5 , 類型檢測 , 類型判斷 , Web

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

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

Kotlin , 優先級 , rust , ruby , 編譯原理

da_miao_zi - 媽媽,家裏為什麼會有台服務器呀?——偽裝成兒童繪本的Windows Home Server廣告

Windows Home Server 是微軟於 2007 年推出的一款專為家庭用户設計的操作系統,旨在集中管理家庭內多台電腦中的文件,方便家庭成員共享照片、音樂等內容。 有趣的是,微軟竟將 Windows Home Server 的宣傳廣告編成了一本兒童讀物,從娃娃抓起,向孩子們解釋為什麼爸爸要買台服務器放到家裏,裝上了服務器有什麼好處。 這本繪本中充滿了些許奇特的情節: 爸爸媽媽深愛彼此,

windows , microsoft

da_miao_zi - 在Unix V6的源代碼中還有一句“挑釁式”的註釋,是無禮的挑戰,還是……

“You are not expected to understand this. ” 這行有些“挑釁”意味的註釋就藏在 Unix 第 6 版的源代碼中,具體位置在源文件 /usr/sys/ken/slp.c 中的 swtch() 函數的底部,這部分代碼是進程調度機制的核心。 早年間,能見到這行註釋的人不是手邊有第 6 版的 Unix(1975 年的產物),就是讀過 John Lions 寫的《

調度器 , 歷史 , unix

da_miao_zi - Unix的催化劑·遊戲《太空旅行》代碼片段賞析:1.0要寫作“1;0200000;0”

1968 年,Ken Thompson 投入大量心血的項目被管理層終止,部門開始重組,開發環境一夜之間從“高速公路”變成了“泥濘小道”。想申請一台新機器繼續研發,被領導一口拒絕。可 Ken 並沒有因此停下手裏的活,還時刻惦記着那個親手編寫出來的宇宙飛行模擬遊戲:太空旅行(Space Travel)。 太空旅行(Space Travel)遊戲畫面 後來的故事,很多讀者或許已經聽過不止一次了。 Ke

asm , 歷史 , unix

da_miao_zi - C語言的”代碼化石“出土:1979年的英文文本判別器

各位參觀者請看, 圖中是一段出土自 Unix V7 系統“遺蹟”的 C 語言代碼,這段代碼可追溯至距今 40 餘年的 1979 年左右,作者是 Ian Darwin。它是早期 file 命令源代碼的一部分。 file 命令用於在不依賴文件擴展名的情況下判斷文件類型——當“打開方式不對”時,file 命令能告訴你文件中實際包含的內容。直到今天,大多數類 Unix 操作系統裏還能見到 file 命令

歷史 , unix , Linux , c

da_miao_zi - 用匯編語言編寫計算兩整數之和的程序(下)

本文節選自《計算機是怎樣跑起來的(第2版)》第 3 章“體驗彙編語言”的草稿。在翻譯本章時,我們發現原書所使用的軟件僅提供日文界面,並且介紹的是主要用於日本計算機相關考試的 CASLⅡ 彙編語言,其通用性相對較低。為了讓內容更廣泛適用,並便於讀者實踐操作,與作者及編輯老師商議後,決定採用更為通用的 NASM 彙編語言重新編寫本章,以提升學習體驗。 在 SASM 中查看寄存器和內存存儲單元

asm , 計算機基礎 , 計算機原理 , 源代碼

da_miao_zi - 用匯編語言編寫計算兩整數之和的程序(中)

本文節選自《計算機是怎樣跑起來的(第2版)》第 3 章“體驗彙編語言”的草稿。在翻譯本章時,我們發現原書所使用的軟件僅提供日文界面,並且介紹的是主要用於日本計算機相關考試的 CASLⅡ 彙編語言,其通用性相對較低。為了讓內容更廣泛適用,並便於讀者實踐操作,與作者及編輯老師商議後,決定採用更為通用的NASM 彙編語言重新編寫本章,以提升學習體驗。 通過前面的學習(用匯編語言編寫計算兩整數之

編程 , asm , 計算機基礎 , 計算機原理

da_miao_zi - 用匯編語言編寫計算兩整數之和的程序(上)

本文節選自《計算機是怎樣跑起來的(第2版)》第 3 章“體驗彙編語言”的草稿。在翻譯本章時,我們發現原書所使用的軟件僅提供日文界面,並且介紹的是主要用於日本計算機相關考試的 CASLⅡ 彙編語言,其通用性相對較低。為了讓內容更廣泛適用,並便於讀者實踐操作,與作者及編輯老師商議後,決定採用更為通用的 NASM 彙編語言 重新編寫本章,以提升學習體驗。 如何編程計算兩個整數的和呢?恐怕無論使用

asm , 計算機基礎 , 計算機原理

da_miao_zi - SQLite之父當年也不知道什麼是覆蓋索引

今天,對於大多數程序員,尤其是那些每天都在處理 CRUD 操作的小夥伴來説,覆蓋索引(Covering Index)簡直就是面試題中最基礎的存在了,早就成了那種“爛大街”的題目,甚至連應屆生都能輕鬆背出來那是什麼。 不過,説實話,在實際開發中,能用到幾次呢?寫一個SELECT * ...,馬上就“失效”了吧~😂 但你知道嗎?當年,就連 SQLite 的作者 D. Richard Hipp 也對這

MySQL , 數據庫性能優化 , 數據庫 , sqlite