memcache 一般用於快取服務。但是很多時候,比如乙個訊息廣播系統,需要乙個訊息佇列。直接從資料庫取訊息,負載往往不行。如果將整個訊息佇列用乙個key快取到memcache裡面.
對於乙個很大的訊息佇列,頻繁進行進行大資料庫的序列化 和 反序列化,有太耗費。下面是我用php 實現的乙個訊息佇列,只需要在尾部插入乙個資料,就操作尾部,不用操作整個訊息佇列進行讀取,與操作。但是,這個訊息佇列不是執行緒安全的,我只是盡量的避免了衝突的可能性。如果訊息不是非常的密集,比如幾秒鐘才乙個,還是可以考慮這樣使用的。
如果你要實現執行緒安全的,乙個建議是通過檔案進行鎖定,然後進行操作。下面是**:
複製** **如下:
class memcache_queue
$this->memcache = $memcache;
$this->name = $name;
$this->prefix = $prefix;
$this->maxsize = $maxsize;
$this->front = 0;
$this->real = 0;
$this->size = 0;
} function __get($name)
function __set($name, $value)
function isempty()
function isfull()
function enqueue($data)
$this->increment("size");
$this->set($this->real, $data);
$this->set("real", ($this->real + 1) % $this->maxsize);
return $this;
} function dequeue()
$this->decrement("size");
$this->delete($this->front);
$this->set("front", ($this->front + 1) % $this->maxsize);
return $this;
} function gettop()
function getall()
function getpage($offset = 0, $limit = 0)
$keys = $this->getkeybypos(($this->front + $offset) % $this->maxsize);
$num = 1;
for ($pos = ($this->front + $offset + 1) % $this->maxsize; $pos != $this->real; $pos = ($pos + 1) % $this->maxsize) }
return array_values($this->memcache->get($keys));
} function makeempty()
$this->delete("real");
$this->delete("front");
$this->delete("size");
$this->delete("maxsize");
} private function getallkeys()
$keys = $this->getkeybypos($this->front);
for ($pos = ($this->front + 1) % $this->maxsize; $pos != $this->real; $pos = ($pos + 1) % $this->maxsize)
return $keys;
} private function add($pos, $data)
private function increment($pos)
private function decrement($pos)
private function set($pos, $data)
private function get($pos)
private function delete($pos)
private function getkeybypos($pos) }
高斯消元演算法實現(Java)
1 選擇主元 即選擇對角元素,保證其為所在列的最大,避免大數除以小數出現溢位,其實是避免其值為0 2 當前主元不為最大值,交換兩行 3 判斷主元是否為0,若是則不是唯一解 4 逐行消元 5 對角線元素歸一化 6 回代消除對角線之上的元素。這個是主方法,主要是使用一維陣列實現,對應的方法引數要給出方程...
程式設計實現高斯消元法
計算機計算線性方程組的解一般是用高斯消元法完成的.我寫了乙個簡單的程式,輸入乙個 n n 1 的增廣矩陣,求解各未知數的值.只能解答兩種情況 1.線性方程組有唯一解 2.線性方程組無解 時間複雜度為o n 3 include include const double esp 1e 8 using n...
高斯消元法的MPI實現
數學上,高斯消元法 或譯 高斯消去法 是線性代數規劃中的乙個演算法,可用來為線性方程組求解。但其演算法十分複雜,不常用於加減消元法,求出矩陣的秩,以及求出可逆方陣的逆矩陣。不過,如果有過百萬條等式時,這個演算法會十分省時。一些極大的方程組通常會用迭代法以及花式消元來解決。當用於乙個矩陣時,高斯消元法...