本人普通後端開發,對 網絡編程 和 Unix 系統編程有濃厚興趣。css
Github:zhenbianshuhtml
微博:枕邊書_5277java
// 我的網站:枕邊書: http://www.alwayscoding.net/mysql
博客所有原創,持續更新中,歡迎交流關注。linux
文章首發於 github.io:枕邊書 ,也會在那裏更新一些工做和學習的心得。nginx
2017年11月27日 Gotorch - 多機定時任務管理系統git
cron 在單機上應用很方便,但是在多臺機器、任務繁多的狀況下,想把任務管理得層次分明就不是一件簡單的事了。我來安利一個本身用 Go 實現的 cron plus,文章主要介紹實現思想和各功能的技術要點。程序員
2017年3月14日 用C寫一個web服務器(一) 基礎功能github
爲了深入理解 nginx 服務器工做原理,用 C 仿寫一個簡化版的 web 服務器,本次更新實現了一個服務器的最基本功能,但願在優化完善的過程當中可以有所收穫。web
2017年3月23日 用C寫一個web服務器(二) IO多路複用之epoll
本次更新對服務器添加了I/O多路複用的 epoll 模式,本文經過服務器優化實例來介紹 epoll 事件通知機制的基本知識和其應用方法。
2017年4月18日 用C寫一個web服務器(三) Linux下用GCC進行項目編譯
本文主要總結一下如何在linux下如何使用GCC完整編譯一個C項目,介紹一下動態和靜態庫的編譯方式和使用方法,另外介紹cmake工具的CMakeLists文件的簡單寫法。
2017年6月7日 用C寫一個web服務器(四) CGI協議
本文主要經過 C 服務器 CGI 協議的實現,講解了 CGI 協議的通常內容,順便還補充了一些PHP的SAPI和PHP-FPM的知識。
2017年7月31日 PHP 調用 Go 的正確方式 - Unix Domain Sockets
本文經過 PHP 調用 Go 服務的實例的實現,介紹一種不一樣語言進程間通訊的方式:Unix Domain Sockets,它能夠快速高效地實現進程間的數據、信息交互,並且不須要鎖等複雜操做,可謂是進程間通訊的利器。
2017年2月20日 從併發處理談PHP進程間通訊(一)外部介質
任何一個完備的後端語言都應該有支持進程間通訊(IPC)的方法,本文依舊經過併發循環ID生成器來說 PHP 中對System V IPC包裝的函數族,描述信號量,共享內存的簡單用法。
2017年2月13日從併發處理談PHP進程間通訊(二)System V IPC
後端開發的併發編程中,進程間通訊是一個永遠也繞不開的問題,本文經過一個 「併發生成循環ID」 的需求的多種實現來說解如何經過外部介質進行進程間通訊。本文介紹的外部通訊方式有 文件、mysql、redis。
2016年7月18日 初探PHP多進程
咱們都知道PHP是單進程單線程執行的,PHP處理多併發主要是依賴服務器或PHP-FPM的多進程及它們進程的複用,但PHP實現多進程也意義重大,尤爲是在後臺Cli模式下處理大量數據或運行後臺DEMON守護進程時,多進程的優點不用多說。
2017年1月15日再談加密-RSA非對稱加密的理解和使用
隨着硬件的快速發展,加解密帶來的資源消耗已經愈來愈微不足道了,對於IT行業,加解密特別是非對稱加密必定會愈來愈重要,本文不談枯燥的算法,聊一聊非對稱加密的相關知識、RSA加密算法的數字證書操做,也會附帶一些其餘相關知識和使用心得。
2016年7月11日PHP的openssl加密擴展使用小結
互聯網的發展史上,安全性一直是開發者們至關重視的一個主題,爲了實現數據傳輸安全,咱們須要保證:數據來源(非僞造請求)、數據完整性(沒有被人修改過)、數據私密性(密文,沒法直接讀取)等,本文介紹了加密基礎、PHP使用openssl進行常見加密操做。
2017年5月7日 空間索引 - 各數據庫空間索引使用報告
本文主要介紹 Redis、MongoDB、PostgreSQL 和 MySQL 數據庫空間索引安裝配置和使用時須要注意的點,並選取了120萬數據對這些數據庫的空間索引進行了測試,簡單總結了各數據庫空間索引的性能和特點以及使用場景。
2017年5月16日 空間索引 - GeoHash算法及其實現優化
本文介紹了空間索引之 GeoHash 索引的原理,並參考 Redis GEO 系列函數的實現,使用sorted set 優化了 GeoHash 的效率和精度,並附上PHP實現。
2017年6月22日 空間索引 - 四叉樹
本文經過C語言的四叉樹實例,介紹了四叉樹的實現過程(主要是插入和查詢),另外介紹了四叉樹的邊界點問題及解決方案,並將四叉樹和GeoHash在實現空間索引的原理上作了對比。
網頁實時聊天
2017年12月4日 多線程編程 - PHP 實現
恰當地使用多線程可以大大提高程序效率,本文對比多進程介紹了下多線程的優點和適用場景,提出了一種巧用方案,並使用 PHP 代碼實現了多線程的常見用法。
2015年11月14日 網頁實時聊天之js和jQuery實現ajax長輪詢
衆所周知,HTTP協議是無狀態的,因此一次的請求都是一個單獨的事件,和先後都沒有聯繫。因此咱們在解決網頁實時聊天時就遇到一個問題,如何保證與服務器的長時間聯繫,從而源源不段地獲取信息。本文介紹如何使用長輪詢的增強版-長輪詢來進行網頁實時聊天。
2016年11月14日 PHP中的回調函數和匿名函數
回調函數、閉包在JS中並不陌生,JS使用它能夠完成事件機制,進行許多複雜的操做。PHP中卻不常使用,今天來講一說PHP中中的回調函數和匿名函數
2016年11月14日 PHP中的回調函數和匿名函數
回調函數、閉包在JS中並不陌生,JS使用它能夠完成事件機制,進行許多複雜的操做。PHP中卻不常使用,今天來講一說PHP中中的回調函數和匿名函數。
2015年11月6日 PHP正則中的捕獲組與非捕獲組
今天遇到一個正則匹配的問題,突然翻到有捕獲組的概念,手冊上也是一略而過,百度時無心翻到C#和Java中有對正則捕獲組的特殊用法,搜索關鍵詞有PHP時居然沒有相關內容,本身試了一下,發如今PHP中也是可行的,因而總結分享一下。
2015年11月5日 PHP遞歸建立多級目錄(一道面試題的解題過程)
一道「建立多級目錄」面試題解法不斷優化的過程。
2016年3月28日 搭建本身的PHP框架心得(一)
說到寫PHP的MVC框架,你們想到的第一個詞--「造輪子」,是的,一個尚未深厚功力的程序員,寫出的PHP框架確定不如那些出自大神們之手、通過時間和各類項目考驗的框架。但此次造輪子的目的不是爲了造輪子,而是爲了在造輪子的過程當中熟悉其工藝,總結輪子特色,更好的使用輪子。
2016年4月4日 搭建本身的PHP框架心得(二)
接着完善本身的PHP框架,本次更新,更新了函數規範上的一些問題,如將函數儘可能的獨立化,每個函數儘可能只單獨作好一件事情,儘可能減小函數依賴。還對框架的總體優化了一下,添加了SQ全局類,用以處理全局函數,變量。
2016年6月27日 搭建本身的PHP框架心得(三)
接着完善本身的PHP框架,本次更新的主要內容有: 介紹了異常處理機制 完善了異常和錯誤處理 數據表跟Model類的映射。
2016年1月13日 yii2開發後記
前些天準備寫一個本身的博客CMS,考慮PHP框架的時候想到了聽說很是強大的yii,接觸yii時發現有2.0版本,果斷嘗最鮮的。使用期間踩了不少坑,本文是對yii2使用的一個總結。
2018年1月3日 經過2-3-4樹理解紅黑樹
紅黑樹是很是經典且實用的數據結構,本文經過它的等同——2-3-4樹,避開顏色因素的影響,以一種更簡單的方式介紹了紅黑樹插入刪除操做的實現。文章附帶 PHP 和 Java 版紅黑樹源碼。
2017年7月17日 小時到分鐘 - 一步步優化巨量關鍵詞的匹配
60萬 條短消息記錄,5萬 關鍵詞,看我如何一步步地將耗時 10小時 的做業優化到 10分鐘 之內。優化過程當中的心得、坑和結論方法,但願能你們一些啓發。
2016年3月13日 PHP實現堆排序
百度百科的堆排序居然沒有PHP版本的,做爲世界上「最」好的語言,這太掉份了,因而我幫它補上。
2015年12月19日 分佈算法之一致性哈希算法
在進行大型網站的web開發時,分佈式這個詞常常出如今咱們面前。究其根源,都要理解分佈式算法,接下來以緩存服務器的負載均衡來談一下一致性哈希算法。
2015年10月31日 用memoization優化遞歸算法[JS/PHP實現]
遞歸函數,經過把一個大而複雜問題簡化爲許多但規模較小的問題,以同一個類似模式來計算,下降了解題的難度;memoization的思想是經過定義一個數組,用來存放計算過的數據,在須要的時候直接從數組中取出,而沒必要再次計算,從而省去大量沒必要要的動做。本文介紹使用memoization思想優化遞歸效率。
2017年9月6日 設計模式,Let's 「Go」!(下)
文章經過用Go語言實現的設計模式,總結了各模式的特色和使用場景,並配以現實生活中的實例,幫助理解設計模式。本篇包括:責任鏈模式、蠅量模式、解釋器模式、中介者模式、備忘錄模式、原型模式和訪問者模式;
2017年8月29日 設計模式,Let's 「Go」!(中)
文章經過用Go語言實現的設計模式,總結了各模式的特色和使用場景,並配以現實生活中的實例,幫助理解設計模式。本篇包括:模板模式、迭代器模式、組合模式、狀態模式、代理模式、橋接模式和建造者模式;
2017年8月21日 設計模式,Let's 「Go」!(上)
PHP程序員閱讀Java語言實現設計模式的書,而後用Go語言實現。配以現實生活中的實例,幫助理解設計模式。本篇包括:策略、觀察者、裝飾者、工廠、單例、命令、適配器、外觀。
2018年4月9日 一鍵部署進化史
爲了解決調試不便的問題,先是同步工具由 nc 轉到 rsync,再修改 rsync 源碼添加回調參數,最後添加 docker 重啓完成的通知信息,成功完成一鍵部署系統。
2017年10月17日 Linux 「體檢」 指標
在「求佛保佑服務器不宕機」、「殺程序員祭天」的環境下,程序員天天可謂是戰戰兢兢,接到電話和短信都嚇得瑟瑟發抖,爲了咱們的安全,及時發現服務器運行問題已不只僅是運維的問題了。本文總結了常見的服務器監控指標,但願各位開發人員都搞一個腳本運行着以保障本身的生命安全。
2017年9月11日 擴充你的工具箱 - 大行文件的處理
前幾天,從 DBA 手裏接到一個 Redis RDB 文件,裏面是 15G 約 660萬 的 Redis 鍵值對數據,想經過這些數據提取出當前 Redis 的 Key 和這些 Key 的類型。其文件的每行結構相似於: KEY: IAmATestKey || TYPE: STRING || ex...
2017年7月11日 Linux - 請容許我靜靜地後臺運行
常在 linux 下玩耍的開發者確定會常常遇到須要對進程調度的狀況,也會遇到一些其中的小情況,本文介紹了幾個能夠在 linux 方便安穩運行後臺程序的命令、經常使用的做業調度命令及 Daemon 進程的特色及建立,也解決了幾個常見的小問題。
2016年9月13日 shell實現SSH自動登錄
使用 expect 和 alias 實現ssh一鍵登錄~~
2015年12月13日 linux的「自動化」
linux系統的web網站在運營狀態時,咱們常須要對網站進行維護,例如查看資源剩餘並作出響應、日誌分割、數據整理,在特定狀態執行特定任務等等,這些都會須要linux能實現自動執行某些任任務。本篇博文介紹如何進行常見的linux自動化任務。
2015年11月27日 LINUX下的PHP
因爲linux系統的穩定性,大部分的PHP服務器都被部署在linux上,並且像redis等擴展在linux能獲得更好的支持,因此對於PHP程序員來講,使用linux的功底也至關重要,本文總結一下我從一開始在linux下安裝配置PHP的心得。
2017年11月6日 使用PostgreSQL進行中文全文檢索
全文檢索應該算是一個挺廣泛的需求了,雖然有 ES 這種搜索引擎,但爲了數據的靈活性,關係型數據庫更爲適合。本文記錄了 PostgreSQL 進行全文搜索時的配置步驟,總結了幾個優化點,同時填了幾個常常遇到的坑。
2017年10月9日 Redis 「瘦身」 指南
隨着業務發展和數據積累,你的 Redis 服務器變得愈來愈臃腫了,甚至內存爆滿影響了業務,那麼它是如何一步一步走到這個地步,又如何解決呢?但願本文能幫助到你。
2015年11月22日 JS實現別踩白塊小遊戲
本文主要應用JS對DOM和數組的操做來實現一個「別踩白塊」的小遊戲,原創想法,附源碼和設計思路。
2018年4月2日 JavaScript Alert 函數執行順序問題
文章簡單地介紹了 javaScript 的 alert 函數在遇到異步代碼時的執行順序問題,分析了問題致使的緣由,並提出替換 alert 和 使用 setTimeout 轉異步兩種解決方案。
後端
2017年11月2日 代碼重構之旅(二)漸進式遷移方案
本文介紹瞭如何使用 Nginx 路由重寫功能搭配 Linux 連接,再加上項目內部路由達到代碼的漸進式遷移,在新舊項目之間實現無縫切換。
2017年11月2日 代碼重構之旅(一)項目結構
項目遷移過程當中,項目代碼結構的確認是頭等大事,本文聊聊我在進行老項目重構時進行代碼結構設計中的問題和思考。
2016年12月12日 WEB開發中的字符集和編碼
咱們都知道計算機是以二進制存儲和運行的,那麼它是怎麼把二進制數據轉換爲各類文字的呢? 還有咱們經常使用的各類字符集,經常使用的編碼轉換,都是怎麼進行的呢? 本博文是對咱們經常使用的字符集和編碼的一個小總結,小科普。我相信讀完本文,您應該對 字符集和常見編碼方式 有個差很少的認識了。
2018年3月5日 從 PHP 到 Java
最近主要編程語言從 PHP 轉到了 Java,一個多月的經歷對我頗有意義,因此寫文章記錄一下經歷,再分享一下最近學習 Java 的心得體會。
2017年03月30日 個人支付總結(一) 基礎概念
我作支付總結的第一篇,介紹了一些支付概念和數據設計。
2017年04月04日 個人支付總結(二) 系統設計
本文簡單地介紹了支付總體流程和各模塊的設計要點。
2017年04月04日 個人支付總結(三) 常見問題
支付系統的要求:安全、高效。安全是基本,高效是追求。 要達成兩個目標,不免會遇到各類坑,本文挑幾個典型的問題來說述,並附上簡單的應對方案