原创 master-worker常駐型程序代碼修改哪些需要重啓master或者worker

之前在yii的項目裏用redis作爲消息隊列,現在很多任務需要延遲需求,於是把之前redis的消息隊列替換成了rabbitmq 於是使用yii的yii2-queue這個組件 但是由於提供的yii queue/listen是個單進程的消費,而

原创 nginx 負載均衡

upstream 配置 在http模塊upstream app { server 192.168.0.250:8081 weight=5; server www.cn; server unix:/

原创 redis事務,分佈式鎖

事務:一組命令集合 主要命令multi 和exec multi set a 1 sadd s1 a ...... exec 錯誤處理 (1)語法錯誤 127.0.0.1:6379> multi OK 127.0.0.1:6379>

原创 php7新特性一覽

1.太空船操作符 用於比較2個表達式,例如當\(a小於,等於或大於\)b時,分別返回-1,0,1 php echo 1 <=> 1; //0 echo PHP_EOL; echo 1 <=> 2; //-1 echo PHP_EOL;

原创 插入排序,選擇排序

1.插入排序 4 2 5 1 6 3 選定4, [0,0]這個區間是已處理的有序區間 現在遍歷[1,5]這個區間,逐漸插入已處理的有序區間 把2拿出來 與[4]比較,發現<4 ,把4挪到它後面的位置處 _ 4 5 1 6 3

原创 歸併排序

歸併排序的時間複雜度任何情況下都是 O(nlogn),看起來非常優秀。(即便是快速排序,最壞情況下,時間複雜度也是 O(n2)。) 但是,歸併排序並沒有像快排那樣,應用廣泛,這是爲什麼呢?因爲它有一個致命的“弱點”,那就是歸併排序不是原地

原创 HyperLogLog(不精確的去重計數方案)

pfadd 用法和sadd一樣 pfcount 用法和scard一樣 127.0.0.1:6379> get lan (nil) 127.0.0.1:6379> pfadd lan js (integer) 1 127.0.0.1:6379

原创 nginx代理

正向代理:代理對象是客服端反向代理:代理對象是服務端區別所代理的對象不一樣 #配置語法 Syntax: proxy_pass URL; Default:- ContextLlocation,if in location,limit_

原创 redis與lua

內容大綱 redis裏使用eval和evalsha redis管理Lua腳本  php裏使用redis的lua腳本 在redis裏使用lua腳本的好處 1.Lua腳本在Redis中是原子執行的,執行過程中間不會插入其他命令2.Lua腳本可以

原创 單鏈表LRU

單鏈表實現lru 越靠近鏈表尾部的節點是越早之前訪問的 當有一個新的數據被訪問時,從鏈表頭開始順序遍歷鏈表 1.如果此數據之前已經被緩存在鏈表中 遍歷得到這個數據對應的節點,並將其從原來的位置刪除,然後再插入到鏈表的頭部 2.沒在緩

原创 單鏈表字符串判斷迴文

思路 使用快慢兩個指針找到鏈表中點,慢指針每次前進一步,快指針每次前進兩步 在慢指針前進的過程中,同時修改其 next 指針,使得鏈表前半部分反序。 最後比較中點兩側的鏈表是否相等 c版本代碼見 https://github.com/

原创 單鏈表反轉

具體代碼 https://github.com/hkui/algo_practice/blob/master/c/linklist/reverse_single_list.c

原创 進程終止,環境表以及在內存中佈局和非局部跳轉

進程ID:每個linux進程都一定有一個唯一的數字標識符,稱爲進程ID(總是一個非負整數) 進程終止:正常終止: 1.從Main返回(return) 2.調用exit (標準庫) 3.調用_exit或_Exit (內核提供) 4.最後一個

原创 redis位圖

<?php function frstr($str){ return str_pad($str,8,'0',STR_PAD_LEFT); } $php=''; $p= frstr(decbin(ord('p'))); $h=

原创 堆實戰(動態數據流求top k大元素,動態數據流求中位數)

動態數據集合中求top k大元素 第1大,第2大 ...第k大 k是這羣體裏最小的 所以要建立個小頂堆 只需要維護一個大小爲k的小頂堆 即可 當來的元素(newCome)> 堆頂元素(smallTop),說明進來的元素有和堆頂競爭的資格