原创 一步一步學linux操作系統: 08 多線程與互斥鎖、條件變量

爲什麼要有線程? 對於任何一個進程來講,都默認有一個主線程的。 線程是負責一行一行執行二進制指令 進程相當於一個項目,而線程就是爲了完成項目需求,而建立的一個個開發任務。 相對於線程 1、創建進程佔用資源太多 2、進程之間的通信需

原创 一步一步學linux操作系統: 06 系統調用

linux內核源碼 http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v4.x/ 使用的是 linux-4.13.16 glibc源碼 http://ftp

原创 一步一步學linux操作系統: 07 進程與程序運行

代碼實現用系統調用創建進程 開發套件安裝,yum -y groupinstall "Development Tools" process.c文件,用一個函數封裝通用的創建進程的邏輯 #include <stdio.h> #incl

原创 劍指offer 面試題4:二維數組中的查找【C++版本】

題目總結與代碼歸檔: 【劍指offer-2】題目目錄【C++版本】 GitHub代碼路徑: GitHub 面試題4 二維數組中的查找 題目: 在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下的遞增的順序

原创 網絡編程學習: 06 本地套接字

關鍵詞總結:本地套接字 代碼路徑見Github 專欄代碼 本地套接字概述 本地套接字是一種特殊類型的套接字,和 TCP/UDP 套接字不同。TCP/UDP 即使在本地地址通信,也要走系統網絡協議棧,而本地套接字,嚴格意義上說提供了

原创 分佈式系統學習:07 分佈式系統關鍵技術:洞悉PaaS平臺的本質

軟件工程能力 分佈式軟件工程能力主要體現在:提高服務的 SLA、能力和資源重用或複用、過程自動化。這三個本質與分佈式的技術點是高度一致的,也就是下面這三個方面的能力。 分佈式多層的系統架構 服務化的能力供應 自動化的運維能力

原创 網絡編程學習: 05 UDP相關簡介

關鍵詞總結:UDP 代碼路徑見Github 專欄代碼 UDP 是一種“數據報”協議,而 TCP 是一種面向連接的“數據流”協議。 TCP 是一個面向連接的協議,TCP 在 IP 報文的基礎上,增加了諸如重傳、確認、有序傳輸、擁塞控

原创 網絡編程學習: 04 套接字讀寫與緩衝區

關鍵詞總結:發送數據(write、send、sendmsg)、讀取數據(read) 代碼路徑見Github 專欄代碼 發送數據 常用的發送數據的三個函數write、send 和 sendmsg,見參考資料鏈接 ssize_t wr

原创 分佈式系統學習:15 彈力設計篇:熔斷設計

關鍵詞總結:熔斷設計、熔斷設計的重點 熔斷設計 分佈式系統設計中,重試時如果錯誤太多,或是在短時間內得不到修復,應該開啓熔斷操作,尤其是後端太忙的時候,使用熔斷設計可以保護後端不會過載。 熔斷器模式:1、可以防止應用程序不斷地嘗試

原创 一步一步學linux操作系統: 03 計算機工作模式與x86架構簡介

計算機的工作模式 如上圖: CPU(Central Processing Unit,中央處理器),計算機最核心部件 總線(Bus),用於CPU 和其他設備連接,分爲 **地址總線(Address Bus)**和 數據總線(Da

原创 分佈式系統學習:05 分佈式系統關鍵技術:服務調度

服務調度上的一些關鍵技術,主要有以下幾點 服務關鍵程度 服務依賴關係 服務發現 整個架構的版本管理 服務應用生命週期全管理 服務關鍵程度和服務的依賴關係 服務關鍵程度: 梳理和定義服務的重要程度,這需要對業務的深入理解,才能定

原创 一步一步學linux操作系統: 05 內核初始化

內核初始化中幾個重要的 init 內核下載 http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v4.x/ 內核的啓動從入口函數 start_kernel()

原创 分佈式系統學習:04 分佈式系統關鍵技術:全棧監控

全棧監控的重要性 全棧系統監控,就像是我們的眼睛,沒有它,我們就不知道系統到底發生了什麼,我們將無法管理或是運維整個分佈式系統。所以,這個系統是非常非常關鍵的。 在分佈式或 Cloud Native 的情況下,系統分層多,服務各種

原创 劍指offer 面試題5:替換空格【C++版本】

題目總結與代碼歸檔: 【劍指offer-2】題目目錄【C++版本】 GitHub代碼路徑: GitHub 面試題5 替換空格 題目: 請實現一個函數,把字符串中的每個空格替換成“%20”,例如,輸入”We are happy.”

原创 劍指offer 面試題7:重建二叉樹【C++版本】

題目總結與代碼歸檔: 【劍指offer-2】題目目錄【C++版本】 GitHub代碼路徑: GitHub 面試題7 重建二叉樹 題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都