避难在人生海海

一、走进避难所

一晃好多年,没有看过一本完整的非功能性小说,飞驰的生命根本就慢不下来。突如其来的武汉肺炎,给这个高速运转的国家机器暂时断了电,个人也得以踩住刹车,让时光慢下来。是在劫难逃,又何尝不是祸福与共。

外部环境慢下来很不容易,但是一旦慢下来,就是确定持久的。个人内心静下来很容易,安静的世界一丁点响动又会打破这种静,躁起来也就容易。我记得毛姆说阅读是一座随身携带的避难所,找到这样的避难所未必容易。

第一次知道麦家是在高晓松的节目上,第一次遇到《人生海海》是在西西弗书店。两个原因对这本书有亲近感,一个原因当时放弃了。麦家这两个字和书腰上的这句话:”人生海海,潮落之后是潮起,你说那是消磨、笑柄、罪过,但那就是我的英雄主义“都格外喜欢。55的价格,让人感叹,书啥时候都贵到这个地步了。现在想想大概还是因为花了钱,后续也没有额外的时间追加投入,便觉得不值得。这次刚好有了时间,也有钱,就买了来,躲在里面。
继续阅读

Linux内存管理笔记

第一部分 为什么要进行内存管理

Linux操作系统支持多进程,每个进程都需要占用一定内存,而内存是有限的,所以需要内存管理,把有限的内存及时有效的分配给多个进程。

第二部分 内存管理的方法

一、内存管理方法汇总
内存管理的方法很多,经过了很多次的演变。有单一连续分区、固定分区、动态分区、页式存储管理、段式存储管理、段页式存储管理。这些方法的差异可参考《内存管理:分页,分段,段页结合》。每种方法的简单介绍可参考《面试题总结之windows/linux内存管理》《操作系统知识回顾(5)-内存管理
继续阅读

存储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);
}

继续阅读

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万)的时候,差异并不大。
继续阅读

位运算符及PHP中位运算的应用笔记

一、逻辑运算符

正式说位运算符之前,先简单提一下逻辑运算符。分3个角度:
0、数学上
记得高中数学讨论复合命题的时候,使用过基本的逻辑运算符
“非”(¬)、”与”(∧)、”或”(∨)、”条件”(→)以及”双条件”(↔)

大学离散数学中讨论复合命题的时候,出现过异或逻辑符
p ⊕ q p 异或 q p、q 真值相同为假,相异为真
继续阅读

Redis Cluster原理笔记

第一部分 Cluster简介

redis从3.0版本开始支持Cluster。Redis Cluster是一个高性能高可用的分布式系统,可以在多个redis节点间共享数据。

第二部分 Cluster原理

redis cluster引入哈希槽(hash slot),实现数据自动分片,即实现分布式功能。同时采用主从复制模型,实现高可用。
继续阅读

Redis集群配置笔记

Redis单实例安装这里就不介绍了,如有需要可查阅本站之前的文章《Redis及PHP Redis扩展安装笔记》。这里假设Redis已经安装,并使用默认端口配置好,能正常使用。

第一部分 集群搭建

一、前置声明
0、环境说明

OS:    CentOS release 6.9
Redis: redis_version:4.0.2
Server IP: 10.235.25.241

继续阅读