安迪熊

技術、閱讀、生活


  • 首頁

  • 關於

  • 標籤

  • 分類

  • 站點地圖

  • 搜尋

[閱讀]人性的優點

發表於 2021-11-11 | 分類於 閱讀 |
字數統計: 1.3k

人性的優點


人性的優點,這本書的英文原名是”How to stop worrying & start living”,老實說,我也不知道為何中文會翻譯成”人性的優點”,不過總之,他是一本在講如何消除憂慮的書,和”人性的弱點”同個作者 - 戴爾・卡內基。

閱讀全文 »

[網路]解析第二層及第三層的網路封包結構

發表於 2021-10-29 | 分類於 網路 |
字數統計: 574

網路的IP位址讓我們路由到LAN(區域網路),而MAC位址讓我們找到了目標電腦
MAC作用在第二層 - 資料連結層,而IP作用在第三層 - 網路層,關於MAC和IP位址的詳細解說請參考這一篇

那麼,讓我們從第二層 - 資料連結層 開始吧!

閱讀全文 »

[網路]Socket - 網路程式的大門

發表於 2021-10-25 | 分類於 網路 |
字數統計: 1.1k

我們在寫網路相關的程式時,最底層就是與 socket 交互。socket 是專用於網路通訊的 system call。什麼是 system call 呢?我們知道作業系統有分 kernel 和 user space,從 user space 要進行 I/O 操作需要透過 system call 去呼叫 kernel space,因為只有 kernel space 才有權限進行 I/O 的操作。

在 Linux 中,使用 socket 宣告一個 object 會回傳一個 file descriptor。在 Linux 中,一切都是文件,連 socket object 也不例外,file descriptor 在這裡的作用就是指向那個文件的 descriptor。

閱讀全文 »

[Python進階]Python的記憶體垃圾回收機制

發表於 2021-10-20 | 分類於 python |
字數統計: 1.2k

我們知道,Python 應用在執行時,需要從記憶體中劃出一段空間來存放臨時變數,計算完後再將結果存放到永久儲存介質。如果臨時變數所需的空間過大,會導致 OOM (Out of Memory) 記憶體錯誤,程式可能會被作業系統終止。

對於伺服器應用來說,為了設計永遠不中斷的系統,記憶體管理變得非常重要,否則容易引發記憶體洩漏 (Memory Leak)。

什麼是記憶體洩漏?

我們的應用程式在執行過程中會不斷向作業系統申請記憶體並釋放記憶體。記憶體洩漏指的是程式沒有釋放已不再使用的記憶體,導致記憶體的浪費,而非被攻擊。

Python 的記憶體管理

那麼 Python 是怎麼處理的呢?需要工程師們手動申請變數記憶體並清除嗎?答案是:不需要,Python 會自動找出不再使用的變數並釋放記憶體。

閱讀全文 »

[閱讀]金錢超思考

發表於 2021-10-15 | 分類於 閱讀 |
字數統計: 2.4k

金錢超思考 - 5大金錢迷思 x 25道創造財富的關鍵思考


金錢超思考這本書不是一本教你投資致富的書,而是「如何思考金錢?」,這一個問題的背後,作者娓娓道來背後蘊藏的智慧
從出社會開始,邁入職場後都在比誰賺的多,然而我們對於金錢的追求與渴望到底是為了什麼?這又衍伸出更多的問題:我到底該把錢花在哪些地方?如何正確看待金錢?擁有很多金錢的意義是什麼?即使財務自由之後又如何?
讀完這本書後,我覺得在我們有限的時間及精力裡,賺更多的錢不是唯一,我們需要懂的如何花錢、賺錢和存錢,三者缺一不可,下面我將用條列式的方式,把書中的精華做一個摘要

閱讀全文 »

[Python進階]Python的GIL

發表於 2021-10-10 | 分類於 python |
字數統計: 875

GIL(Global Interpreter Lock)

Python 的 multi thread 讓人不明所以,為什麼我的電腦明明有四個 CPU,用 multi thread 性能卻沒有增長呢?我們先看一個例子

閱讀全文 »

[Python進階]Asyncio的Event loop

發表於 2021-10-08 | 分類於 python |
字數統計: 913

之前我們講過了 Python 的 Coroutine,提到了我們用的是 asyncio library。不同於 Coroutine 那一篇,這一篇我們注重於原理的理解。

我們知道,multi-threading 能夠使得效率及 CPU 使用率大大提高,那為什麼我們還需要 Asyncio (Coroutine) 呢?

  • 因為在 multi-threading 下,程式碼容易被作業系統打斷,因此可能會出現 race condition。
  • 另外,context switch 會造成性能損耗。如果 I/O 過多,不停的 context switch 會損失很多性能。

於是就有了 Asyncio。

閱讀全文 »

[Python進階]Python的並行計算 - Futures

發表於 2021-10-05 | 分類於 python |
字數統計: 846

無論是哪門程式語言,併發(Concurrent)和並行(Parallel)都是很常用且重要的知識點。舉個例子,像是爬蟲技術被廣泛運用在工業界的資料收集領域,其中的核心技術就是併發並行程式設計。

正確合理地使用併發和並行,無疑會讓我們的程式性能大幅提升。之前我們聊到過Python Coroutine,今天我們來聊聊Python的Futures。

閱讀全文 »

[閱讀]與成功有約:高效能人士的七個習慣

發表於 2021-10-03 | 分類於 閱讀 |
字數統計: 667

與成功有約:高效能人士的七個習慣

閱讀《高效能人士的七個習慣》讓我獲益匪淺。這本書架構清晰,條列式地列出了不同高效能人士的習慣。我閱讀的是英文版,這類書通常不會用太艱深的詞彙,因此不僅可以學習高效能人士的好習慣,還能提升英文閱讀能力。以下是我讀完後的總結:

閱讀全文 »

[Python進階]Python的coroutine

發表於 2021-09-29 | 分類於 python |
字數統計: 1.2k

Coroutine(協程)和我們常聽到的 multithread(多執行緒)、multiprocess(多進程)一樣,都是一種併發(concurrent)方式。需要注意的是,併發和併行(parallel)不同,併發是快速的上下文切換,讓使用者感覺程式同時在執行,而併行是指不同 CPU 同時執行多個任務。

閱讀全文 »
<1…567>

68 文章
7 分類
59 標籤
© 2024 Kaichia Chen