原创 PHP內核分析-變量+引用+寫時複製+變量分離

變量 PHP5 變量的內部實現       變量存儲結構: typedef struct _zval_struct zval; ... struct _zval_struct { /* Variable information

原创 設計模式_builder變種模式使用實例-SQL構造器

把一條基本的SQL語句(不包括子句)抽象成一個類,這裏的SQL類由select的`fields`, from的`table`, join`table`on`condition`, where的`condtion`, order by的`f

原创 記一次大數整除

除法其實也是減法(應該可以這樣說),那麼大數除法中,該如何判斷一個大數能否被其它數整除呢?(這裏說的數指自然數) 比如 a(=100000000000000000000000),就不能被 b(=333)整除,(但是計算機硬件不支持這次計算

原创 素數的判斷方法/go實現

這篇文章會介紹三種判斷素數的方法,其中對第一、二種簡單介紹,第三種會詳細介紹。 特別說明一下, 1不是素數,2是素數。 方法一(也是最容易理解的方法):、     若一個數n(n > 2)不爲素數,則自然數集合 => {[2, ]區間}中

原创 數學之美-拼圖

質數一個很重要的特點:`除了1和它自身外,不能被其他自然數整除` 擴展 (1)質數m, n相乘得到s的話,s便不再是質數,但是其因數也是唯一確定,即:1, s, m, n (2)質數集合S => {a0, a1, ..., an} 中任意

原创 記一次補碼的分析總結

補碼的運用意義 (1) 區分正負數 (2) 在固定bit位數下,按照進行加法規則進行運算且計算結果能正確表示,並且在加法基礎上支持其它運算(減法、乘法、除法等) 補碼的一些理解 補碼更像是一種數值轉換規則,"補"僅是針對與負數而言。(通過

原创 session管理組件實現[go實現]

回想起MySQL中輔助索引和聚簇索引的關係和php7.0版本中Array的底層數據結構實現,session的底層數據結構也以類似的數據結構組合模式進行session會話的管理,所以用到的核心數據結構爲最小堆+Map。使用最小堆的目的是爲了

原创 [封裝]實戰gorm

由於gorm不僅支持數據庫讀寫操作,且以面向對象的編碼方式實現數據庫讀寫。本片文章從實際開發中所遇問題和新的需要,對gorm進行一次封裝操作,以此來加快開發速度。 首先介紹代碼架構: |----------------------- |

原创 白盒用例測試程序/go實現

簡單介紹一下白盒測試:     源碼公開,清楚傳參、返回值和處理邏輯; 我們在測試一個方法或者接口時,通過傳入合法或者非法的參數,並且抽選一些具有代表性的值作爲測試用的合法傳參,通過模仿正常請求,檢測方法或接口內部的異常。 週末沒事,又想

原创 八皇后-go實現

八皇后遊戲規則說明:     在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。(百度百科) 延申到n皇后,規則已知,算法的空間複雜度爲O(n^2), 空間複雜度爲O

原创 數學之美-唯一ID生成算法

一切的合理性都可以通過數學來解釋(自己瞎編的),今天就用數學給大家變個戲法,實現一個唯一ID生成器;而用到的數據知識包括排列組合+質數特性應用:     先給出一個數學定義:在一個質數集合中隨意取出2n個質數,讓他們兩兩相乘然後加和得m,

原创 堆排序的實現原理分析(剖析上浮下沉操作, 讓你重新認識堆排序)

    網絡上關於堆排序的算法博客多是給圖給真相(因爲翻了很多文章還是不清楚,堆排序的過程是什麼?所以自己來搞),今天我介紹一下我對堆排序的理解及實戰分析。     先介紹一下堆:它分最大堆和最小堆,二者的不同就是父節點和子節點的關係;最

原创 記一次算法優化

這段時間刷了刷letcode,編程的樂趣可能就是`它就在那兒,而你要征服它`(哈哈哈),刷過一道題時,會有種莫名其妙的快感! 本篇文章記錄了我刷的一道算法題並經歷不斷優化和改進且最終"攀頂"的歷程。 題目優先:letcode-44_通配符

原创 一次場景模擬/go實現

    無論是生產者還是消費者各自是獨立的,但彼此又相關聯。今日我用go語言模擬一個併發的生產和消費場景。     背景是這樣的:     ```     有一個生產飲料的工廠, 工廠裏有2個生產機器, 每生產一個產品要花費1h,生產的產

原创 【分享】 使用堆作爲底層數據結構來優化”紅包分配算法“

    我之前的博客中用c語言寫了一個紅包均分算法,用到的數據結構是鏈式數組,今日用堆改進此算法-相較穩定的紅包算法實現/c語言實現,使用的語言是Go語言。    核心算法相同(不瞭解的同學可以點擊上面鏈接閱讀),所以直接上代碼: //