原创 HTTP協議常見知識點

1 Http與Https的區別: http與https都是應用層協議,通常http默認端口是80,https默認端口是443。https有加密證書。 2 URI和URL的區別: URL是協議的統一資源定位符,通常的格式是:協議+主機ip+

原创 php多進程ipc

php多進程ipc 由於php沒有多線程機制,在一些cpu密集型任務時,只能起多進程操作,於是要考慮進程間通信等場景。 php已有方式包括:管道、消息隊列、共享內存、socket,如下重點探究文件與共享內存 <?php const

原创 Php swoole協程揭祕

首先需要明白併發與並行的區別,併發是隻多個任務在一段時間內交替執行,並行是多個任務可以在同一時刻同時執行。同一時刻可以執行的任務數取決於cpu的核數。sysctl -n machdep.cpu.core_count。 接着討論一個問題

原创 編譯安裝lnmp

很多PHP工程師沒有做過編譯安裝的工作,經過一段探究,今天寫個小博客。 一  源碼編譯安裝PHP 1 下載PHP7.0源碼包7.0.13tar.gz 2 tar -zxvf 源碼包 3 切換到源碼包目錄執行: ./configure --

原创 只有程序員看的懂面試聖經|如何拿下編程面試

當我最初開始參加編程面試的時候,我所有最心儀的公司都忽視了我。現在回頭看那個時候,我發現自己當時去參加面試都完全沒做任何準備。雖然已經有許多博客文章

原创 Linux網絡總結之七-IO複用模型之select模型

前面提到的迭代式服務器與併發服務器都不能從根本上解決大量客戶端連接通信的問題,因此爲了實現海量客戶端連接通信,Linux內核引入了I/O複用模型。分別是select、poll、epoll。 在前面我們分析

原创 一個碼農的7年學生生涯

我是一名剛剛畢業的2018屆計算機碩士研究生,剛剛在公司的電話亭睡起來,回想起以前的事情,突然決定寫點東西出來。 跟計算機的結緣要始於7年前。當年一心想報的是石油工程專業,最後因爲分數的原因被調劑到了計算機專業,當年的計算機專業還是被教育

原创 Linux網絡總結之一-應用層協議

通常情況下網絡體系結構包括:應用層,傳輸層,網絡層,數據鏈路層四層結構。 應用層 傳輸層 網絡層 數據鏈路層 這部分我們重點學習應用層相關協議,應用層直接和網絡應用程序交互,是網絡體系中最頂層的結構,由用

原创 Linux網絡總結之二-TCP協議概述

TCP協議是一款傳輸層協議,也是網絡中最重要的一款協議。這部分我們重點探究網絡傳輸層協議TCP協議的頭部。 一 TCP固定頭部結構   TCP固定頭部如圖所示: 16位源/目的端口號,報文來自哪個端口,要

原创 Linux網絡總結之六-服務器機制與網絡編程

一 迭代服務器 在客戶端-服務器模式中,通常我們採用迭代式服務器,即一個進程處理一個客戶端,又因爲send與recv函數都是阻塞的,所以當有新的客戶連接進來時,傳統的迭代式服務器是無法及時作出響應的。 如

原创 Linux內存管理系列之三-slab緩存機制

在計算機體系結構中,讀寫速度排序如下:CPU>CPU緩存>物理內存>物理磁盤。因此在處理物理內存時,CPU緩存往往能夠起到提高速度的作用。這部分我們重點研究夥伴系統與slab機制。 一  CPU三級緩存

原创 Linux內存管理系列之四-進程地址空間

前面3節重點講解了在內核如何分配內核空間內存,而進程的用戶空間的內存同樣受到內核的控制,用戶空間的地址內存稱爲進程地址空間。Linux採用虛擬內存技術使得系統可以同時運行多個內存,而且每一個進程的地址空間

原创 Linux網絡總結之四-TCP超時重傳與擁塞控制

一 超時重傳 前面我們探討了TCP連接超時的問題,這是在TCP連接建立之前的可靠性機制,那麼TCP是如何在連接建立之後維護可靠性傳輸的呢?這裏我們就要探討一下超時重傳機制。 超時重傳往往發生在網絡異常的情

原创 Linux網絡總結之五-TCP連接中的系列函數

這部分我們研究TCP連接建立與關閉過程中各個API函數的作用與特性。 首先我們看TCP過程的圖示如下:   TCP通信時socket之間的通信,所以首先要在內核空間創建socket描述符,其函數如下 :i

原创 linux 磁盤同步IO: sync、fsync與fdatasync

傳統的UNIX實現在內核中設有緩衝區高速緩存或頁面高速緩存,大多數磁盤I/O都通過緩衝進行。當將數據寫入文件時,內核通常先將該數據複製到其中一個緩衝區中,如果該緩衝區尚未寫滿,則並不將其排入輸出隊列,而是