好文分享 — How Python Asyncio Works: Recreating it from Scratch
相信許多人其實對於 asyncio 還處於一知半解的狀態,個人認為原因有幾個: Python 是在 3.4 之後才推出 asyncio 模組,相較於 multiprocessing, threading 等模組來的晚一些,多數人會傾向使用熟悉的技
Posted on May 17, 2024 by Amo Chen ‐ 1 min read
相信許多人其實對於 asyncio 還處於一知半解的狀態,個人認為原因有幾個: Python 是在 3.4 之後才推出 asyncio 模組,相較於 multiprocessing, threading 等模組來的晚一些,多數人會傾向使用熟悉的技
Posted on May 17, 2024 by Amo Chen ‐ 1 min read
個人蠻喜歡這種不用扯到太多數學,但又能夠把深奧的事物講得夠淺顯明白的文章,畢竟不是每個人都能像海豚一樣在數學公式的大海之中恣意遨遊,所以如何
Posted on May 16, 2024 by Amo Chen ‐ 2 min read
你知道台灣有可以免費使用的繁體中文大語言模型嗎? TAIDE 是由國科會、國家實驗研究院以及數位發展部、中研院以及各領域專家們,所協力推出的繁體中文語言
Posted on May 14, 2024 by Amo Chen ‐ 1 min read
影片所介紹的電腦鼠,又稱為 mircomouse (有興趣的人可以搜尋 micromouse)。 雖然以前看過 micromouse 的比賽影片,但當時並沒有深思背後的演算法原理,只是當作
Posted on May 13, 2024 by Amo Chen ‐ 1 min read
在學習網路程式設計時,每個人都遇過怎麼讓 sever 可以盡可能地處理更多連線的課題,要達到這個目的,多數人直覺應該會想到運用多執行緒、多 processes 的架構,為每個連線建立 1 個新的執行緒或 process 處理,但是這種方法在處理大量連線時,就顯得捉襟見肘,單就多執行緒的解決方案來說,隨著連線數上升,首先就會遇到 CPU context switch 所造成的效能問題,更遑論多 processes 架構會需要使用比多執行緒架構更多資源的問題。
但現代有很多應用僅用單執行緒就能夠處理龐大的連線數,包含 Nginx, Redis 等知名開源軟體,這些軟體是怎麼做到的呢?這就需要談到 1 種稱為 I/O multiplexing 的技術!
本文將教導 1 種稱為 I/O multiplexing 的技術,該技術能夠讓單執行緒處理多個連線,將效能壓榨出來!
p.s. 這個技術還可以與多執行緒、多 processes 架構混用
Posted on May 12, 2024 in Python 程式設計 - 中階 by Amo Chen ‐ 15 min read
Nginx 的 worker_processes 其實每 1 個都是 single-threaded process 。 Nginx 之所以採用 single-threaded processes 還能這麼高效能,這其中用了不少技術,其中 1 個稱為 multiplexing 。 相信很多人看到這個單字就不想深究了,但其實它只
Posted on May 10, 2024 by Amo Chen ‐ 1 min read
React 是目前前端 3 大框架之一,應該也是市佔最大的前端框架。 p.s. 通常市佔越大,也代表越容易有工作機會 如果有興趣學習 React 的話,推薦可以先看看 “Every
Posted on May 9, 2024 by Amo Chen ‐ 1 min read
開發 TCP/IP 應用服務的人應該都知道通訊埠(port),譬如 HTTP server 通常都使用 80 port, HTTPS 則通常使用 443 port, SMTP 協定則使用 25 port 等等。 通訊埠的範圍為 0 - 65535, 其中通訊埠 0
Posted on May 8, 2024 by Amo Chen ‐ 1 min read