原创 教你從零開始寫一個哈希表--哈希函數

   在這一節,我們來編寫哈希函數。 我們選擇的哈希函數應該具有(以下特性): 把字符串作爲輸入,返回0到m(我們設計的桶數組的長度)的數字; 對於一組平均的輸入返回分佈比較均勻的桶索引。如果我們的哈希函數不是均勻分佈的,它可將會把

原创 教你從零開始寫一個哈希表

  哈希表是最有用的數據結構之一。它的快速和可擴展的插入、查詢以及刪除特性,使得它跟許多的計算機科學問題有關聯。   在這個教程中,我們用C語言實現了開放尋址和再哈希的(方式解決衝突的)哈希表。通過學習這個教程,你將會掌握: 理解基

原创 教你從零開始寫一個哈希表--調整大小

  此時,哈希表已經有一定數量的桶了。隨着越來越多的鍵值對插入,哈希表將會滿負荷。這個問題很大,主要從兩方面考慮: 高概率的衝突下,哈希表的性能急劇下降; 當前的哈希表只能存儲固定數量的鍵值對。如果用戶嘗試着去存儲的需求超過這個數值

原创 PHP後綴表達式的實現

背景   在電商的一個場景中,商品的價格計算表達式是配置出來的。   那麼價格計算表達式如何執行呢?在PHP裏面,可以調用eval()函數,將代碼作爲參數來得到結果。   但是,有個問題。如果表達式配置錯誤,eval函數無法捕捉任何的

原创 Redis使用場景覆盤

生成自增id   當我們做了分庫、分表時,數據庫的自增id功能就不可用了。此時我們需要一個數據庫無關的id生成接口。   另外,數據庫自帶的id自增功能在許多場景下也是合適的。比如,爲了防止爬蟲遍歷,或者爲了防猜,往往需要一些分佈比較

原创 碼分複用

 重載是某些現代編程語言的一個重要特性。  在c++裏面,重載指的是函數由於具有不同的簽名可以擁有不同的實現。  從直觀的角度來講,就是同一個符號有着不同的含義。  我們回憶一下,通信原理中的一些類似的概念,碼分複用、波分複用、頻分複

原创 PHP數據導出功能優化案例

  本文以一個Excel表單導出功能的演化路線爲示例,分享導出任務的通用模式、Reactor和Worker分離的思路等經驗。 演示代碼請移步Github:PHP-export-optimize 版本1:快速上線   爲了快速上線,代碼

原创 PHP面試總結

PHP面試總結  2017年,對PHPer來說,註定是不平常的一年。  Nodejs在前端開發,佔據天然的語言優勢。Go語言的協程在併發方面嶄露頭角。PHP在web開發的空間受到了較大的衝擊。年度編程排行榜中,PHP已經風光不再了

原创 PHP還是世界上最好的語言嗎?

最近看到了一個問題:PHP還能火多久? 我看到了PHPer的焦慮和不安。我並不是要在這裏班門弄斧,而是想站在一個普通開發者的角度梳理了一下個人對PHP的看法。 那是最好的時代,那也是最壞的時代!  由於PHP不能常駐內存(不討論s

原创 代碼重定向

  我們平常說的重定向,是指網址重定向。   比如,當年的京東網址是360buy.com,後來升級成了jd.com。不知道的用戶肯定還記着舊的網址,那怎麼辦呢?我們就把訪問360buy.com的用戶重定向到jd.com。   在代碼維

原创 爲什麼你應該完全切換到Kotlin?

是時候開始使用現代的編程語言了!  我想告訴你一門叫做Kotlin的新的編程語言,以及爲什麼你應該爲你的下一個項目考慮它。我過去鍾愛於Java。但是去年,我發現我無論什麼時候我都在儘可能的用Kotlin進行編程。基於這一點,我真的想不

原创 PHP Con 2017 見聞

第一印象:逼格更高了,騰訊系更多了。 高頻詞:swoole 關鍵詞:PHP7、創業團隊、MySQL、高併發、微服務、開發框架等。  PHP 7 的性能大大的提升了。但是PHP屆的焦慮也更多了。PHP能火多久?性能比不上Ja

原创 Go語言RESTful API開發實戰

如今微服務、無服務器架構大行其道。而API開發是這些話題的主角。 Go語言開發效率要比Java Spring要快一些,性能上比PHP高出一個數量級。尤其是Go語言在併發方便非常的優秀,是2017年值得關注的一門語言。 本文通過一