成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP實(shí)現(xiàn)數(shù)據(jù)隊(duì)列

Airy / 1955人閱讀

摘要:參考地址隊(duì)列創(chuàng)建隊(duì)列元素將數(shù)據(jù)加入隊(duì)列隊(duì)列消費(fèi)隊(duì)列的第一個(gè)元素隊(duì)列是否為空隊(duì)列大小

/**
 * Class Queue
 *
 * 參考地址:https://www.jianshu.com/p/ca1bb95ada76
 */
class Queue {

    /**
     * 隊(duì)列l(wèi)ist
     *
     * @var array
     */
    protected $items = [];

    /**
     * 創(chuàng)建隊(duì)列元素
     *
     * @param $element
     * @param $priority
     * @return array
     */
    public function queueElement($element, $priority) {
        return [
            "element" => $element,
            "priority" => $priority
        ];
    }

    /**
     * 將數(shù)據(jù)加入隊(duì)列
     *
     * @param $element
     * @param null $priority
     * @return array
     */
    public function enqueue($element, $priority = NULL) {

        $queueElement = $this->queueElement($element, $priority);

        if ($this->isEmpty() || $priority === NULL) {
            array_push($this->items, $queueElement);
        } else {
            $add = false;
            foreach ($this->items as $key => $value) {

                if ( $priority < $value["priority"] ) {
                    array_splice($this->items, $key, 0, [$queueElement]);
                    $add = true;
                    break;
                }
            }

            if (! $add) {
                array_push($this->items, $queueElement);
            }
        }

        return $queueElement;
    }

    /**
     * 隊(duì)列消費(fèi)
     *
     * @return mixed
     */
    public function dequeue() {

        return array_shift($this->items);
    }

    /**
     * 隊(duì)列的第一個(gè)元素
     *
     * @return mixed
     */
    public function front() {
        return $this->items[0];
    }

    /**
     * 隊(duì)列是否為空
     *
     * @return bool
     */
    public function isEmpty() {
        return !!! count($this->items);
    }

    /**
     * 隊(duì)列items大小
     *
     * @return int
     */
    public function size() {
        return count($this->items);
    }
}

$queue = new Queue();

$queue->enqueue("abc", 10);
$queue->enqueue("def", 5);
$queue->enqueue("hig", 12);
$queue->enqueue("ijk", 3);

$size = $queue->size();

for ($i = 0; $i < $size; $i++) {
    $item = $queue->dequeue();
    print_r($item);
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31597.html

相關(guān)文章

  • 自己實(shí)現(xiàn)異步執(zhí)行任務(wù)的隊(duì)列(二)

    摘要:六隊(duì)列具體實(shí)現(xiàn)三寫執(zhí)行隊(duì)列的程序根據(jù)設(shè)計(jì),執(zhí)行隊(duì)列的程序文件是,它的主要功能是把任務(wù)從隊(duì)列表里取出來,并且在后臺(tái)執(zhí)行。八服務(wù)器部署一配置咱們執(zhí)行隊(duì)列的程序都寫好了,這個(gè)程序怎么觸發(fā)呢,當(dāng)然就要用到的定時(shí)任務(wù),每隔一定的時(shí)間,執(zhí)行一次。 六、隊(duì)列具體實(shí)現(xiàn)三:寫執(zhí)行隊(duì)列的程序 根據(jù)設(shè)計(jì),執(zhí)行隊(duì)列的程序文件是 do_queue.php , 它的主要功能是把任務(wù)從隊(duì)列表里取出來,并且在后臺(tái)執(zhí)行...

    zr_hebo 評(píng)論0 收藏0
  • Redis 實(shí)現(xiàn)隊(duì)列

    摘要:場(chǎng)景說明用于處理比較耗時(shí)的請(qǐng)求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會(huì)出現(xiàn)超時(shí)高并發(fā)場(chǎng)景,當(dāng)某個(gè)時(shí)刻請(qǐng)求瞬間增加時(shí),可以把請(qǐng)求寫入到隊(duì)列,后臺(tái)在去處理這些請(qǐng)求搶購場(chǎng)景,先入先出的模式命令或往列表右側(cè)推入數(shù)據(jù)客戶端阻塞直到隊(duì)列有 場(chǎng)景說明: 用于處理比較耗時(shí)的請(qǐng)求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會(huì)出現(xiàn)超時(shí) 高并發(fā)場(chǎng)景,當(dāng)某個(gè)時(shí)刻請(qǐng)求瞬間增加時(shí),可以把請(qǐng)...

    PascalXie 評(píng)論0 收藏0
  • Redis 實(shí)現(xiàn)隊(duì)列

    摘要:場(chǎng)景說明用于處理比較耗時(shí)的請(qǐng)求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會(huì)出現(xiàn)超時(shí)高并發(fā)場(chǎng)景,當(dāng)某個(gè)時(shí)刻請(qǐng)求瞬間增加時(shí),可以把請(qǐng)求寫入到隊(duì)列,后臺(tái)在去處理這些請(qǐng)求搶購場(chǎng)景,先入先出的模式命令或往列表右側(cè)推入數(shù)據(jù)客戶端阻塞直到隊(duì)列有 場(chǎng)景說明: 用于處理比較耗時(shí)的請(qǐng)求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會(huì)出現(xiàn)超時(shí) 高并發(fā)場(chǎng)景,當(dāng)某個(gè)時(shí)刻請(qǐng)求瞬間增加時(shí),可以把請(qǐng)...

    lifesimple 評(píng)論0 收藏0
  • Redis 實(shí)現(xiàn)隊(duì)列

    摘要:場(chǎng)景說明用于處理比較耗時(shí)的請(qǐng)求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會(huì)出現(xiàn)超時(shí)高并發(fā)場(chǎng)景,當(dāng)某個(gè)時(shí)刻請(qǐng)求瞬間增加時(shí),可以把請(qǐng)求寫入到隊(duì)列,后臺(tái)在去處理這些請(qǐng)求搶購場(chǎng)景,先入先出的模式命令或往列表右側(cè)推入數(shù)據(jù)客戶端阻塞直到隊(duì)列有 場(chǎng)景說明: 用于處理比較耗時(shí)的請(qǐng)求,例如批量發(fā)送郵件,如果直接在網(wǎng)頁觸發(fā)執(zhí)行發(fā)送,程序會(huì)出現(xiàn)超時(shí) 高并發(fā)場(chǎng)景,當(dāng)某個(gè)時(shí)刻請(qǐng)求瞬間增加時(shí),可以把請(qǐng)...

    LoftySoul 評(píng)論0 收藏0
  • 實(shí)戰(zhàn)PHP數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)之隊(duì)列

    摘要:環(huán)形隊(duì)列為充分利用向量空間,克服假溢出現(xiàn)象的方法是將向量空間想象為一個(gè)首尾相接的圓環(huán),并稱這種向量為循環(huán)向量。雙端隊(duì)列截止目前我們所實(shí)現(xiàn)的隊(duì)列都是在隊(duì)尾入隊(duì),隊(duì)首出隊(duì)的結(jié)構(gòu)。 什么是隊(duì)列 隊(duì)列是另外一種遵循先進(jìn)先出原則的線性數(shù)據(jù)結(jié)構(gòu)。隊(duì)列有兩端可供操作,一端出隊(duì),一端入隊(duì)。這個(gè)特點(diǎn)和棧不同,棧只有一端可以用來操作。入隊(duì)總是在后端,出隊(duì)在前端。 常見操作 enqueue -> 入隊(duì) d...

    cnio 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<