& 和 && 的区别

& 符 大家经常使用,不过有些基础不牢的同学能会误用它。

一个&表示位运算,如果有运算 $a&$b,那么首先会将两个变量转换为2进制数,然后进行位于算。两个&&表示逻辑运算,首先判断&&左边是否为真,如果未假则不进行右边的运算,所以当我们进行 if判断是推荐大家使用&&。

PV操作P和V缩写词的来源

在我们学习信号量相关处理的时候,都会使用PV操作,大家也都明白P是-1,V是+1,但我们可能没有去了解过它们是什么缩写,今天在做扩展的时候正好用到信号量操作,索性就去溯本求源了。

PV操作信号量的处理相关,P表示通过的意思,V表示释放的意思。

P和V是来源于两个荷兰语词汇

P—— passeren,中文译为”通过”;

V—— vrijgeven,中文译为”释放”。

谈到PV操作绕不开一位著名的计算机大神—— Edsgar Wybe Dijkstra,中文名”埃德斯加·狄克斯特拉”,荷兰人,毕业于莱顿大学、剑桥大学。

为了在单处理器的情况下确定进程能否占有处理器,狄克斯特拉将每个进程分为“就绪”、“运行”和“阻塞”三个状态。

通过信号量来对进程的状态进行操作。

PHP 字符串的整数化探究

故事背景:上周在做共享内存相关的项目过程中,遇到了一个问题,函数的入参锁定为整形,而我想要保存的数据为字符型,这样就造成了冲突。

过程:于是我第一想到的就是使用md5函数,进行字符串的摘要操作。首先使用的是md5($str,true),这样先将字符串转换成16位字符串,然后进行强制转换使用base_convert(16,10)将16进制数转换为10进制数,最后用整形进行保存。

问题:首先我们知道md5这种hash函数是不可逆的,也就是说,我得到的值必须一开始就写入对应关系,否则取出的时候是无法还原的,其次md5这类hash函数会发生hash碰撞,导致我们的数据有误,所以为了避免这两种情况,我继续进行了深入的研究。

解决方案:使用bin2hex函数代替md5函数,这个函数也是可以将字符串转换成16进制数,然后我们再进行16进制转10进制进行存入。而当我们获取的时候可以使用hex2bin函数进行逆向转换,最终获得我们需要的数据,而且也很好的避免的hash冲突。

转载请注明出处,谢谢。