原创 OSI七層模型、TCP/IP四層模型、五層事實模型

最近事情比較多,加之一些原因,很久沒寫博客了。今天幫朋友做面試的時候,遇到兩個小夥伴起了爭執——關於計算機網絡的參考模型,甲認爲tcp是五層,乙說是四層,我一時也不知道誰說的對,只是印象中記的兩者都正確,所以查閱資料做了個總結。 OS

原创 php利用文件鎖做守護進程腳本(可併發執行)

前幾天使用php多進程創建了三個子進程。本來起了三個進程好好的。第二天來到,運維說不知道爲何掛掉了一個,還剩了兩個進程。這就需要做一個監控,來一直監控着進程,掛掉一個就要再起一個,需要一直保持着固定數量的進程。原來這個監控是運維用shel

原创 MySql分區、分庫分表、主從複製總結

最近面試經常被問到mysql的高可用的相關問題,分區、分庫分表、主從複製被問起的最多,所以參考資料做一個總結。 分區操作: 工作原理:對用戶來說,分區表是一個獨立的邏輯鏈表,但底層的MySQL將其分成了多個物理子表(用戶看

原创 on duplicate key update 的用法及優缺點

項目中數據的操作有時候會令人頭大,遇到一個需求: 需要將數據從A數據庫的a數據表同步到B數據庫的b數據表中(ab表結構相同,但不是主從關係。。。just同步過去) 第一次同步過去,b表爲空,同步很簡單。 但是當a表中的某些數據更新且增加了

原创 docker-compose配置nginx+php

最近用其他人的docker-compose.yml文件,發現docker-php中缺少常用的擴展,在原基礎上面修改後,發現有的擴展莫名其妙的安裝不成功。所以就自己配置了一個文件,供以後使用參考。 文件夾結構(我已打包上傳:https://

原创 常用的算法(PHP 版)

以下是一些常見的算法,用PHP實現的,借錄到此,以便學習。 冒泡排序 function bubble_sort($arr) { $n=count($arr); for($i=0;$i<$n-1;$i++){

原创 docker常用命令及配置

最近使用了docker,像是發現了新大陸。。。真是簡潔好用的東西,爲啥原來沒發現。 docker的安裝不再贅述,在此記錄一下常用的命令,以便於將來查詢。 查看docker容器版本 --- docker version 查看docke

原创 utf8_unicode_ci和utf8_general_ci、utf8和utf8mb4的區別

一直以來,都不是十分明瞭MySQL中utf8_unicode_ci和utf8_general_ci這兩個排序規則的區別,因此查了下資料記錄一下。 ※ utf8_unicode_ci和utf8_general_ci對於中、英文來說基本上

原创 PHP的內存泄漏及解決方法

內存泄漏指的是在程序運行過程中申請了內存,但是在使用完成後沒有及時釋放的現象, 對於普通運行時間較短的程序來說可能問題不會那麼明顯,但是對於長時間運行的程序, 比如Web服務器,後臺進程等就比較明顯了,隨着系統運行佔用的內存會持

原创 PHP實現:壓縮文件流處理,並解壓

需求:將蘋果支付的訂單記錄處理,與本地數據庫對賬。 涉及到一個問題:請求蘋果的賬單,返回的是一個壓縮文件,解壓後纔是xls文件。 思路:將請求到的文件流置入一個zip文件,解壓這個文件後,將文件內容轉爲數組處理。 實現代碼(寫了個示例如下

原创 PHP中的精度計算及顯示問題

當小夥伴們剛接觸到計算的時候,特別是精度高的,例如帶有小數點的加減乘除,就很可能會遇到精度計算和顯示錯誤的問題。 1.做浮點型加減乘除計算的時候應該會遇到計算結果不準確,或者計算結果爲 -1.3322676295502E-15 這樣的值。

原创 Windows安裝Code Sniffer(+PHPStorm設置)

近期部門代碼風格規範,要求統一改爲PSR-2。使用Code Sniffer比較方便檢查代碼,電腦是Windows系統,貼出安裝步驟,以供參考。 第一種方式: 使用Composer全局安裝 composer global require

原创 PHP多進程併發執行(有守護監控功能)

使用php多進程來實現郵件發送,創建了三個子進程,因爲要不斷的從隊列中取出數據並執行發送,子進程是死循環邏輯。如果掛掉了一個,還剩了兩個進程。需要做一個監控,來一直監控着進程,掛掉一個就要再起一個,需要一直保持着固定數量的進程。在上篇博文

原创 php利用文件鎖來守護腳本進程(可併發執行)

前幾天使用php多進程來實現郵件發送(腳本從隊列取數據,然後發送),創建了三個子進程,因爲要不斷的從隊列中取出數據並執行發送,因此子進程是死循環邏輯。本來起了三個進程好好的。 第二天來到,運維說不知道爲何掛掉了一個,還剩了兩個進程。這就需

原创 Linux中ps和kill命令的常用方法

Linux ps命令用於顯示當前進程 (process) 的狀態。 Linux kill命令用於刪除執行中的程序或工作。 這裏主要說一下經常用到的命令使用方法。 ps: 1.根據文件名過濾進程 ps -aux | grep 文件名