php系列----->通过PHP数组实现简单的顺序栈
废话少说,上代码(talk is easy,show me the code): <?php class SimpleStack { private $_stack = []; private $_size = []; public function __construct($size = 10) { $this->_size = $size; } // 获取栈顶元素 public function pop() { // 空栈 if (count($this->_stack) == 0) { return false; } return array_pop($this->_stack); } // 推送元素到栈顶 public function push($value) { // 满栈 if (count($this->_stack) == $this->_size) { return false; } array_push($this->_stack, $value); return true; } public function isEmpty() { // 是否是空栈 return current($this->_stack) == false; } public function size() { return count($this->_stack); } } $stack = new SimpleStack(15); var_dump($stack->isEmpty()); # true $stack->push(111); $stack->push('学院君'); var_dump($stack->pop()); # 学院君 var_dump(count($stack->size())); # 1
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
源码分析 RocketMQ DLedger 多副本之 Leader 选主
本文将按照《RocketMQ 多副本前置篇:初探raft协议》的思路来学习RocketMQ选主逻辑。首先先回顾一下关于Leader的一些思考: 节点状态需要引入3种节点状态:Follower(跟随者)、Candidate(候选者),该状态下的节点会发起投票请求,Leader(主节点)。 选举计时器Follower、Candidate两个状态时,需要维护一个定时器,每次定时时间从150ms-300ms直接进行随机,即每个节点的定时过期不一样,Follower状态时,定时器到点后,触发一轮投票。节点在收到投票请求、Leader的心跳请求并作出响应后,需要重置定时器。 投票轮次TeamCandidate状态的节点,每发起一轮投票,Team加一。 投票机制每一轮一个节点只能为一个节点投赞成票,例如节点A中维护的轮次为3,并且已经为节点B投了赞成票,如果收到其他节点,投票轮次为3,则会投反对票,如果收到轮次为4的节点,是又可以投赞成票的。 成为Leader的条件必须得到集群中初始数量的大多数,例如如果集群中有3台,则必须得到两票,如果其中一台服务器宕机,剩下的两个节点,还能进行选主吗?答案是可以...
- 下一篇
php系列----->通过PHP数组实现队列
废话少说,上代码(talk is easy ,show me the code): <?php /** * 通过 PHP 数组实现的队列 */ class SimpleQueue { private $_queue = []; private $_size = 0; public function __construct($size = 10) { $this->_size = $size; } // 入队 public function enqueue($value) { if (count($this->_queue) > $this->_size) { return false; } array_push($this->_queue, $value); } // 出队 public function dequeue() { if (count($this->_queue) == 0) { return false; } return array_shift($this->_queue); } public function size...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程