原创 利用延時隊列實現自動定時重試 - 基於PHP實現

測試步驟 搭建代碼框架 創建測試項目的目錄 mq 從 https://github.com/php-amqplib/php-amqplib 下載AMQP庫(當然也可以通過 composer 安裝,這裏爲了簡單直接自己處理了),

原创 PHP 通過 AMQP 庫使用 RabbitMQ 的簡單示例Demo

測試步驟和項目結構 測試步驟 安裝 RabbitMQ 和 PHP 的步驟就不在這裏說了。測試步驟如下: 創建測試項目的目錄 mq 從 https://github.com/php-amqplib/php-amqplib 下載AM

原创 RabbitMQ 延遲隊列-基於PHP實現

安裝 RabbitMQ 延遲隊列插件 RabbitMQ 延遲隊列插件未安裝直接使用的話,會報錯: unknown exchange type 'x-delayed-message' 插件下載地址:https://www.rabb

原创 【算法與數據結構】查找算法語義約定及二分查找

對於有序數組,通常用二分查找(包括改進型的 Fibonacci 查找和插值查找)。 查找算法語義約定 一般簡單的查找算法,可以在查找失敗時直接返回 -1。但爲了讓函數更具有通用性(例如對於插入操作,需要定位到精確的位置),通常約定

原创 【算法與數據結構】雙端隊列示例

雙端隊列可以從兩側入隊和出隊: #include <stdio.h> #include <stdlib.h> struct dequeNode { int data; struct dequeNode *next;

原创 MySQL - 慢查詢日誌

開啓慢查詢日誌 通過 set 命令可以臨時開啓慢查詢日誌,MySQL 重啓後修改丟失。如果想要永久開啓,則需要修改配置文件,Linux 中是 /etc/my.conf 文件。 臨時開啓慢查詢日誌 mysql> set global

原创 MySQL - explain 輸出信息詳解

常用 SQL(假設表名是 student) 連接查詢、聯合查詢、子查詢: 查看錶結構: show create student; desc student; 增刪索引: 增加主鍵:alter table class add con

原创 MySQL 連接查詢、聯合查詢和子查詢

準備測試數據 create table class( cid int(10), cdesc varchar(20) ); create table student( sid int(10), name varchar(2

原创 【算法與數據結構】分治法和快速排序

快排思想: 從待排序數據中,選取一個數字做基準 pivot 把所有比 pivot 小的數據放在 pivot 左邊,大的放在右邊 對左右兩個子序列遞歸使用上面兩個步驟 子序列中僅有一個元素時,退出 C 代碼: #include

原创 【Linux 應用編程】IO 多路轉接 - epoll

跟 select、poll 的對比 epoll 性能更高,Nginx、redis 等流行的軟件,都是基於 epoll 實現的。epoll 優點有: 監聽描述符數量大於 1024 只返回準備好的描述符,不需要浪費時間遍歷 描述符集

原创 【算法與數據結構】字符串模式匹配 KMP 算法

語義 在一個很長的字符串 T 中,查找是否存在子字符串 P。例如搜索引擎收錄的大量網站數據,當用戶輸入關鍵字後,就會在這些數據中進行匹配,並返回合適的網站。 語義:假定字符串長度爲 j,則所有字符串都在 [0, j) 這樣的集合中

原创 【二叉樹】Python 從List創建二叉樹及4種遍歷的遞歸和非遞歸實現

這裏先對二叉樹的形式做個定義: class TreeNode: def __init__(self, val): self.val = val self.left = None

原创 【Linux 應用編程】IO 多路轉接 - select 和 poll

Linux 中,read 和 write 函數默認實現的是阻塞式的 IO。例如: while ((n = read(STDIN_FILENO, buf, BUFSIZ) > 0) { if (write(STDOUT_FILEN

原创 【算法與數據結構】分治策略與歸併排序

分治策略 對於所求的問題域,每次將其分爲大小相似的兩部分,然後再把每一部分當作最初的問題域再次分割,依次遞歸,直到得到基本問題(遞歸基),求解。然後,再逐步合併直到完成最初的問題域。 通常用遞歸的方式分割問題,例如這裏的歸併排序,

原创 C 語言二級指針的段錯誤

C語言中的指針變量 C 語言中,指針變量也是變量,只不過跟 char、int 型等基本類型變量不同,指針變量中保存的是其他變量的地址和類型。 通過這個地址,並根據類型來讀取指定長度的字節,就可以把這個變量解析出來。 int a =