redis除了是很强大的存储/缓存工具之外,还可以实现分布式锁。
下面我们来看看到底怎么样用redis来实现分布式锁。
redis除了是很强大的存储/缓存工具之外,还可以实现分布式锁。
下面我们来看看到底怎么样用redis来实现分布式锁。
从最早的Twitter、Facebook,到后来的微信朋友圈、信息流咨询,这些产品其实都是常见的FEED流系统。
那么今天思考一下,如何实现一个中小型FEED流系统。
通常使用缓存的情况下,如果先删缓存,再更新数据库,有这样一个场景:
单库情况下,服务层在进行长时间的逻辑计算,在这个过程中,可能读到旧数据入缓存。
主从库+读写分离情况下,在主从同步延时过程中,可能读到旧数据入缓存。
经典问题——三针重叠问题。
在时针走满一圈的情况下,也就是12小时内,时针、分针、秒针会重合多少次?
分析一下:秒针60s走完一整圈,每秒的旋转角度是6度,分针速度是秒针的1/60,每s的旋转角度是1/10度,时针速度是分针的1/12,每s的旋转角度是1/120度。那么就需要计算出12个小时的时间内,也就是12*3600秒内,每秒钟三个指针的位置即可。如果度数相同,那么就认为三针重合。
PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。
项目的目的在于:通过框架作者或者框架的代表之间讨论,以最低程度的限制,制定一个协作标准,各个框架遵循统一的编码规范,避免各家自行发展的风格阻碍了 PHP 的发展,解决这个程序设计师由来已久的困扰。
从来没有开发过弹幕系统,今天在被问到这个问题的时候有点不知所措,以为是传统的像 BiliBili 这样的弹幕视频网站一样,从存储系统中拉取已有弹幕数据交付给前端按时间顺序显示就好,但是事后重新思考这个的问题的时候,发现不对——绝对不是这么简单。当时我应该误解了对方的意思,没有及时作出沟通,一下子就懵了。
面试官想考察我的真正场景是——如何设计一个直播平台的弹幕系统。
晚上回来赶紧再复盘一下这个问题。
有这样一个题目:应该是大学时代的经典算法题了——小孩上楼梯。
有个小孩正在上楼梯,楼梯有s阶台阶,小孩一次可以上1阶或2阶。实现一个算法,计算小孩有多少种上楼梯的方式。输入n,返回一个整数。
稍微想了一下,这个题目可以用递归来解决。根据题目的规则,最后一步只有两种走法:要么走1阶,要么走2阶。所以可以得出这么一个递归公式:f(s) = f(s-1) + f(s-2)
。好像就是一个斐波那契数列公式?
工作以来一直都是用的PHP,不过其实我还会写Python,Ruby,就是没有用在公司的项目上。
没关系,我一样写得很溜。
最近又开始接触Go了,应该是很早就已经开始接触Go了,看了一些教程之后,我真的想说:真的很棒!
秒杀是一个非常常见的应用场景了,我也做过一些秒杀类的需求。
做过这么多同类型的需求之后,我查阅了一些资料,总结了一下在设计一个秒杀系统中,可能会用到的一些知识点。
在经历了 macOS 上的 homebrew 升级之后,imap 就不再是 homebrew 的 PHP 里默认安装的扩展了,这样如果你在 composer.json 中引用了一个需要用到 imap 扩展的库,那么久没有办法更新 composer 库,这样着实让人内伤。
所以今天就来解决这个问题。