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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 面试大杂烩
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长