原创 [leetcode] 單調棧

本文總結單調棧算法。 原問題 學習一個算法,我們需要清楚的是:這個算法最原始的問題背景是什麼樣的? 下一個更小元素 給定一個數組 nums,返回每個元素的下一個更小的元素的下標 res,即 res[i] 記錄的是 nums[i] 右端第一個

原创 [Kick Start] 2021 Round A

題目:2021 Round-A . K-Goodness String 簽到題,計算當前字符串的 K-Goodness Score ,然後與給出的 K 做差即可。 #include <iostream> #include <string>

原创 [UNP] TCP 多進程服務器

📖 UNP Part-2: Chapter 5. TCP Client/Server Example 的讀書筆記。 閱讀本文前,建議先閱讀多線程服務器的實現,熟悉常見的 TCP 網絡通信 API 的基本使用。 本章的主要內容是基於 TCP

原创 [UNP] IO 複用

📖 UNP Part-2: Chapter 6. I/O Multiplexing: The select and poll Functions 的讀書筆記。 在 這篇博客 的最後,我們對文章中的服務器-客戶端模型保留了這麼一個問題:客戶

原创 多線程服務器的實現

本文基於 C 標準庫提供的網絡通信 API,使用 TCP ,實現一個簡單的多線程服務器 Demo 。 首先要看 API,這是一項十分無聊的工作,我看的頭都暈了 🤒️ 。 API 字節序轉換 函數原型: #include <arpa/inet

原创 [APUE] 進程控制

📒 APUE 一書的第八章學習筆記。 進程標識 大家都知道使用 PID 來標識的。 系統中的一些特殊進程: PID = 0: 調度進程,也稱爲交換進程 (Swapper) PID = 1: init 進程,自檢結束後由內核調用,讀取與系統

原创 [CPP] new 和 delete

參考: [1] https://www.cnblogs.com/wangpei0522/p/4476470.html [2] https://stackoverflow.com/questions/8940090/is-it-safe-o

原创 PV 操作實現多任務同步

一篇 naive 的短文。 PV 操作實際上指的是 信號量 的 2 種基本操作,在 POSIX 的實現中,P 操作對應 sem_wait,而 V 操作對應 sem_post 。 假設有 5 個進程/線程,其運行的先後次序必須要滿足以下依賴關

原创 [APUE] 進程環境

📓 APUE 一書的第七章學習筆記。 進程終止 有 8 種方式可以使得進程終止,5 種爲正常方式: Return from main Calling exit() Calling _exit or _Exit Return of the

原创 [CPP] STL 簡介

STL 即標準模板庫(Standard Template Library),是 C++ 標準庫的一部分,裏面包含了一些模板化的通用的數據結構和算法。STL 基於模版的實現,因此能夠支持自定義的數據結構。 STL 中一共有 6 大組件: 容

原创 [APUE] 文件 I/O

文件操作相關 API:open, read, write, lseek, close. 多進程共享文件的相關 API:dup, dup2, fcntl, sync, fsync, ioctl. 文件操作 API open and opena

原创 [CPP] 智能指針

介紹 C++ 的智能指針 (Smart Pointers) 相關 API。 C++ 中的智能指針是爲了解決內存泄漏、重複釋放等問題而提出的,它基於 RAII (Resource Acquisition Is Initialization),

原创 pthread 屏障

屏障 (Barrier) 允許每個線程都處於等待狀態,直到所有的合作線程都達到某一執行點,然後從該點繼續執行。pthread_join(tid) 就是一種最簡單的「屏障」行爲,允許當前線程等待 tid 線程的完成。 Barrier 的範圍更

原创 pthread 讀寫鎖

pthread 讀寫鎖 (Read Write Lock, rwlock) 把對共享資源的訪問者分爲讀者和寫者,讀者僅僅對共享資源進行讀訪問,寫者僅僅對共享資源進行寫操作。 如果使用互斥量 mutex,讀者和寫者都必須獨佔 mutex 以獨

原创 pthread 自旋鎖

自旋鎖 (Spin Lock) 與互斥量類似,但它並不會使得線程進入阻塞狀態,而是在獲得自旋鎖之前使線程處於忙等狀態 (aka, 自旋狀態)。那麼,自旋鎖存在的意義是什麼? A spin lock could be used in sit