原创 symfony源碼分析之容器的生成與使用

symfony 的容器是有一個編譯過程的,框架初始化的時候會執行Symfony\Component\HttpKernel\Kernel::initializationContainer ,這個方法會對代碼進行檢查,看是否需要生成新的容器代碼

原创 php的mcrypt擴展已廢棄問題解決

php 的 mcrypt_ 函數簇在 7.1.0 版本中開始 deprecated,並在 7.2.0 版本中徹底廢棄。如果當前項目存在mcrypt_ encrypt這種函數又想更新php到最新版本官方推薦使用openssl_encrypt/

原创 Innodb中的事務隔離級別和鎖的關係

前言:我們都知道事務的幾種性質,數據庫爲了維護這些性質,尤其是一致性和隔離性,一般使用加鎖這種方式。同時數據庫又是個高併發的應用,同一時間會有大量的併發訪問,如果加鎖過度,會極大的降低併發處理能力。所以對於加鎖的處理,可以說就是數據庫對於事

原创 MyISAM和InnoDB索引實現對比

MyISAM索引實現MyISAM引擎使用B+Tree作爲索引結構,葉節點的data域存放的是數據記錄的地址。如圖: 這裏設表一共有三列,假設我們以Col1爲主鍵,則上圖是一個MyISAM表的主索引(Primary key)示意。可以看出My

原创 十個經典的C開源項目代碼

開源世界有許多優秀的開源項目,我選取其中十個最優秀的、最輕量級的C語言的項目,希望可以爲C語言開發人員提供參考。十個最值得閱讀學習的C開源項目代碼 Webbench Tinyhttpd cJSON CMockery Libev Memca

原创 回溯算法

百度百科解釋: 回溯算法實際上一個類似枚舉的搜索嘗試過程,主要是在搜索嘗試過程中尋找問題的解,當發現已不滿足求解條件時,就“回溯”返回,嘗試別的路徑。回溯法是一種選優搜索法,按選優條件向前搜索,以達到目標。但當探索到某一步時,發現原先選擇並

原创 symfony源碼分析之框架主流程

這是基於 symfony3.3.0版本的源代碼分析,主要包含以下部分:框架主流程容器生成及使用路由生成配置文件加載事件委派在對源代碼進行分析的時候,使用phpstrom配合xdebug擴展進行斷點調試,對代碼分析以及梳理起到了很大的幫助。1

原创 字符串kmp算法詳解

之前要研究aho-corasick算法 拖了好久  感覺自己博客要開始了!!aho-corasick算法依賴2元素:1.Trie樹解析,1個月前就已經寫過博客分析過了。2.KMP算法此文重點介紹字符串KMP算法:一開始說說普通模式算法("B

原创 php實現事件綁定

最近跟蹤yii源碼  裏面涉及到了綁定事件行爲之類,於是自己手寫了一個最簡單的事件綁定實現class EventHandle { private static $_map = array(); //類似jquery綁定事件 pu

原创 rabbit以及php amqp擴展使用

一定要注意php安裝AMQP的版本,版本不同使用的方法不一樣。在官方網站就有2個版本的AMQP第一版本:xxx,詳細的url找不到了第二版本:http://docs.php.net/manual/da/book.amqp.php千萬不要出現

原创 rabbitmq延遲隊列之php實現

延遲任務應用場景場景一:物聯網系統經常會遇到向終端下發命令,如果命令一段時間沒有應答,就需要設置成超時。場景二:訂單下單之後30分鐘後,如果用戶沒有付錢,則系統自動取消訂單。實現方案定時任務輪詢數據庫,看是否有產生新任務,如果產生則消費任務

原创 wireshark使用方法總結

Wireshark基本用法抓取報文:  下載和安裝好Wireshark之後,啓動Wireshark並且在接口列表中選擇接口名,然後開始在此接口上抓包。例如,如果想要在無線網絡上抓取流量,點擊無線接口。點擊Capture Options可以配

原创 深入淺出開源性能測試工具 Locust (使用篇 1)

在《【LocustPlus序】漫談服務端性能測試》中,我對服務端性能測試的基礎概念和性能測試工具的基本原理進行了介紹,並且重點推薦了Locust這一款開源性能測試工具。然而,當前在網絡上針對Locust的教程極少,不管是中文還是英文,基本都

原创 Trie樹解析

理論解釋Trie樹,當然是一種樹形結構,樹的節點(除了根節點)上都保存了一個字符,葉子節點會多一個標誌,標誌當前節點爲葉子節點,我下面實現的方案是給結構體加了count屬性,如果爲葉子節點,count屬性大於0。圖片畫的比較醜,請見諒。這個

原创 動態規劃之揹包問題實現php

最近在研究動態規劃算法,剛好看到揹包問題。看到網上講解這方面問題很多,感覺都有點不明白,後面細思苦想好久,終於理解這個思路。於是寫下個人見解以及解題思路。揹包問題描述如下:有編號分別爲a,b,c,d,e的五件物品,它們的重量分別是4,2,6