作者归档:salmonl
进程和线程三(Linux进程间通信)
一、前言
在讨论进程间通信的时候,我们有一个前置条件,就是先要弄明白进程的概念,进程地址空间的概念,进程的数据结构。务必务必要弄清楚后在继续,读者可查阅本站相关的内容,或其他资料。
二、为什么要进行进程间通信
0、什么是进程间通信
进程间通信即通常所说的IPC(Inter Process Communication), 用户态的进程之间如何进行同步和交换数据的机制。进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区, 进程B再从内核缓冲区把数据读走, 内核提供的这种机制称为进程间通信。
1、为什么要进行进程间通信
每个进程各自有不同的进程地址空间, 任何一个进程的全局变量在另一个进程中都看不到。
继续阅读
密码保护:进程和线程二(数据结构)
避难在人生海海
一、走进避难所
一晃好多年,没有看过一本完整的非功能性小说,飞驰的生命根本就慢不下来。突如其来的武汉肺炎,给这个高速运转的国家机器暂时断了电,个人也得以踩住刹车,让时光慢下来。是在劫难逃,又何尝不是祸福与共。
外部环境慢下来很不容易,但是一旦慢下来,就是确定持久的。个人内心静下来很容易,安静的世界一丁点响动又会打破这种静,躁起来也就容易。我记得毛姆说阅读是一座随身携带的避难所,找到这样的避难所未必容易。
第一次知道麦家是在高晓松的节目上,第一次遇到《人生海海》是在西西弗书店。两个原因对这本书有亲近感,一个原因当时放弃了。麦家这两个字和书腰上的这句话:”人生海海,潮落之后是潮起,你说那是消磨、笑柄、罪过,但那就是我的英雄主义“都格外喜欢。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); }
无法访问此网站
这是个很经典的现象,访问某个站点,提示无法访问此网站:
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万)的时候,差异并不大。
继续阅读