月度归档:2020年01月

存储PHP Array到Memcached和Redis中

优化代码的时候,需要增加这么一个逻辑,先从MC中取,取不到从Redis中取。通过Cron来更新MC和Redis中的内容。

简单看了下代码库中有封装好的方法,大致逻辑如下。

public static function set($key, $param, $value, $is_long = true)
{
	$mc = Comm_Mc::init();
	
	$mc->setData($key, $param, $value);
	$redis = Comm_Redis::init($is_long, true);
	$redis_key = self::$prefix . $key . '_' . implode('_', $param);
	$redis->set($redis_key, $value);
}

继续阅读

PHPer面试攻略

第零部分 技术路上的感悟

0、知识点多而杂(头疼),有些需要深入理解原理,有些需要记忆。

1、对一些人来说,技术不是最好的路,技术不是最坏的路,技术是唯一的路。持续的往前走,不断的学,反反复复,复复反反。

2、有些语音离数据结构和算法更近,比如Java中的很多Hash结构是通过红黑树实现的。这样的更容易有亲近感。深刻的记得,工作第二年的时候,听技术经理讨论红黑树,就跟一个初中生听别人讨论高等数学一样。

3、面试的时候,知识结构不全面的人,容易顾此失彼,发挥会不稳定,就会体现所谓的运气。选择少的人,容易患得患失,好不容易获得的一个offer, 出现了一一些波折,就会夙兴夜寐的感叹。

4、以前很天真,想着在一家公司工作3年后,换一份工作,期间休息2个月(不是工作最重要,是钱最重要,生而为人不应该只有工作)。工作6年了,还未实现。尽力往这个方向靠。

5、对于作者,摔一跤摔得在重,也是摔在生活的垫子上,都是素材;对于程序员,MacTalk说编程语言就像是青龙偃月刀之于关羽,花再多的时间也在所不惜。通俗一点说就是,每一步都算。

围绕LNMP展开

第一部分 PHP

0、变量类型, PHP5和PHP7的区别。《PHP7和PHP5区别》《PHP生命周期5个阶段
1、数组底层。《PHP数组底层实现
2、魔术方法。《PHP魔术方法笔记
3、GC 《GC及PHP GC学习笔记
4、框架加载流程和原理
单入口、ORM
Yaf加载机制调研
继续阅读

for循环关于对象长度优化思考

一、for循环对象长度两种写法

最近看到很多代码,各种语言,在写for循环的时候并没有把长度提取出来,而是每次遍历的时候进行计算。

$str = 'bye 2019, hi 2020!';
for ($i = 0; $i < strlen($str); $i++) {
    // do something
}

这种写法在初入行的时候,总是被教育性能低,要把长度提取出来。这个在诸多代码优化中总是排名榜首。

$str = 'bye 2019, hi 2020!';
$len = strlen($str);
for ($i = 0; $i < $len; $i++) {
    // do something
}

之前在大脑中空想,认为确实应该提取出来,省的每次遍历调用函数。最近正好有空,测试了以下,跟想象的差距很大。两种写法在数据量级小(小于10万)的时候,差异并不大。
继续阅读