天天看头条,天天看到有人因为各种各样的原因而死亡,感觉掌握一些生命安全的常识实在是太重要了。
本着自己再学习一遍的想法,翟码农顺便也汇总在一起分享给大家。
一对夫妻参加同学婚礼,入住同学家人安排的房间,房间热水器没有安装烟道,结果晚上洗澡无意关闭了窗户,第二天早上两人都没能出门。参加同学婚礼,变成了自己的葬礼。
那些洗澡发生意外的大多不外乎这两种原因:一氧化碳中毒和触电。
一氧化碳中毒,基本都是由于热水器的天然气不充分燃烧产生的一氧化碳所致。
当我们在一个陌生环境时,遇到洗澡间装有热水器的时候,一定要多留个心眼。
如果是燃气式的,就千万别因为怕冷而把窗户关紧,尽量速战速决。
如果是储水式的,水烧好了,就把电源关掉。尤其是那种破旧小区、电路不给力的那种,更是要留心,避免发生触电。
民以食为天。但如果好些常识不知道,很可能就会发生悲剧惨剧。
2.1一农民妇女在厨房压猪蹄,结果砰的一声,猪蹄全飞,高压锅盖还给厨房屋顶捅了个天窗。
高压锅,这玩意儿发起威来,能量真的是超乎你的想象。
所以一定不要买杂牌,不要贪便宜。揭盖,一定要记得先放气。不然你废九牛二虎之力的后果,就是锅盖直接反弹到你脑门。能飞上天捅破屋顶,类比一下,结果就可想而知了。
工作项目中,传感器采集数据的存储是在每100毫秒的定时计划任务中完成的。这一步,是通过swoole中的tick方法实现的。
由于数据还同时往合作方系统的mq有发送,现在合作方感觉数据量太大,认为完全无此必要,设置成每隔几秒几分钟发送一次就好。
所以就诞生了本文要实现的任务:将定时任务的间隔时间,改成后台可以配置的方式。
这样一来,到底是要几秒,还是要几分钟,以后我们根据人家要求直接去后台改配置即可,就不用再去改代码。
本文翟码农主要分享实现思路,所以下面的代码可能有错误,敬请注意。
原本定时任务的实现大致如下:
$server = new swoole_websocket_server($ip,$port); $server->set([ 'reactor_num' => 4, 'worker_num' => 5 ]); $server->on('WorkerStart',function (swoole_websocket_server $server, $worker_id){ if(0 == $worker_id){ $server->tick(100, function(){...}); } }
雨打梨花深闭门,忘了青春,误了青春。此句出自于明代诗人唐伯虎之手,全诗如下:
《一剪梅·雨打梨花深闭门》
雨打梨花深闭门,忘了青春,误了青春。
赏心乐事共谁论?花下销魂,月下销魂。
愁聚眉峰尽日颦,千点啼痕,万点啼痕。
晓看天色暮看云,行也思君,坐也思君。
译文:
深闭房门隔窗只听雨打梨花的声音,就这样辜负了青春年华,虚度了青春年华。纵然有欢畅愉悦的心情又能跟谁共享?花下也黯然神伤,月下也黯然神伤。
整日里都是眉头紧皱如黛峰耸起,脸上留下千点泪痕,万点泪痕。从早晨到晚上一直在看着天色云霞,走路时想念你啊,坐着时也是想念你!
此诗一看就是写闺怨的,但如果抛开闺女这一对象,诗句所描述的情感,仿佛就是如今的你。
青春?都说青春像一场烟火,只可惜已不大记得那场烟火的灿烂,只知道是已经消失在了黑夜里了的。
如果说青春里,真的有热烈地恋过谁爱过谁,那倒也不算辜负了青春。可惜生活不是电影,青春期里的你,或许根本就生涩到没一丝丝开窍。
如今回首,也只能感慨“忘了青春,误了青春”。
结束学海生涯进入社会后,就开始与朋友天各一方。慢慢的,投缘的同事也开始都有了自己要关心的人,有自己要关注的事,再来一场聚会,也没得从前那么简单方便了。
写程序时,if语句随处可见。
有时,我们写if语句时,只知道在A条件下要做B动作,不然就做C动作。我们会如下写:
if( A ){ do B; }else{ do C; }
此种情况,我们并无需思考else对应的条件逻辑是什么。
当A条件很简单时,例如就一个表达式时,例如判断一个变量是否等于某个值:$a == 3,这种情况只要大脑没进水,就知道else走的是$a变量不等于3的逻辑。
但本文翟码农要分享的是,当A条件很复杂时,在else里要继续做if判断(即涉及到嵌套if了),该如何理清else对应的逻辑。
例如,当A条件为(Ea && Eb ) || Ec )时, 该如何确定else对应的逻辑?这里Ea,Eb,Ec代表3个判断条件。
有时候头脑清醒,你可能还能想清楚。但疲累异常时,你很可能就实在想不清楚,到底哪些情况,会走else语句块。
方法就是:利用集合思想。
上面的(Ea && Eb ) || Ec )条件表达式,我们可以转为(Ea ∩ Eb) U Ec这样的集合表达式。如此一来,else走的逻辑就是:^( (Ea ∩ Eb) U Ec )。
之前在头条里偶然刷到《请回答1988》里德善被家人忽视的情节视频,这次出差高铁上12小时,正好无聊在爱奇艺里看到了这个剧。
这是一部关于双门洞里四个家庭的生活故事——从1988年到2000多年。里面关于父爱、母爱、友情、爱情的细节真是无处不有,演员演技也都好给力,真是很能骗人眼泪呢。
从一开始妈妈叫喊回家吃饭、德善一群玩伴整齐地坐在阿泽房间一起看电影的画面,再到结尾双门洞人去楼空巷静的画面,让人真是感慨过去的那些美好时光啊。
从前的桃李春风,变成了如今的江湖夜雨。从前的和睦邻居,变成了如今天各一方的羁旅。从前门前院后的欢声笑语,变成了如今来去匆匆而沉默少语的身影。即使是谈到从前的月色,似乎感觉也会显得比如今更加朦胧而又柔情。就如这双门洞,初始烟火气十足,落尾却尽显空荡荒凉。这一切的刽子手,都是时光,那抓不住又留不下的时光。
如果没有时光,时代就不会发展,我们也不会长大,双门洞的画面或许就是一眼温情一生的天堂。可惜这个如果,断然是没有的,双门洞的离散,也是必定的结局。
也许正是因为时光易逝,我们才会叹惋和感伤,我们才会知道去关心爱护自己所爱的人。所以看了《请回答1988》,虽然看的是双门洞的那段时光,却也是我们那些逝去的青春时光。
范仲淹的《苏幕遮·怀旧》全词如下:
《苏幕遮·怀旧》
碧云天,黄叶地,秋色连波,波上寒烟翠。
山映斜阳天接水,芳草无情,更在斜阳外。
黯乡魂,追旅思,夜夜除非,好梦留人睡。
明月楼高休独倚,酒入愁肠,化作相思泪。
翟码农欣赏此诗,主要就在于头两句的美景描写。
也许真实的情景并不美,但读起来,就让人感觉美。
碧云天,什么样的天,还有绿色的云?
经百度,才知道碧这个字,除了我们所理解的“青绿色”之外,还有青白色、浅蓝色之意。如此说来,浅蓝色跟云搭配就没有什么难以理解的了。
一天天的踩坑,时间就是这么不够用的。
工作这么多年,一直没用虚拟机过。这次由于工作需要,需要将环境都预先在虚拟机里搭建好。
这次虚拟机安装,不是与系统版本冲突就是各种问题,暂就不提了。主要就记录下费时较多印象较深的一些问题。
标题里错误原因,请看文章里第4个问题。
本文虚拟机软件:Vmware。
以前遇到这种问题,都是缺啥补啥。这次从100到140版本,我都已经拷贝到C:\Windows\SysWOW64文件夹里进去了。
卸载又重装,折腾了三四次,仍然还是报这种少了文件的错误。
经过百度尝试,下载DirectX工具进行修复,修改C++ Redistuibute系列,最终解决。
从本机拷贝文件到虚拟机,安装Vmware Tools就可以直接复制往虚拟机里粘贴了。
开始拷贝一些文件还很快,后面遇到项目代码,可能是Vendor文件过于繁多的缘故,四五百兆的代码,一动就是要三四十分钟,有时还拷贝一大部分,结果给你抛个“没有权限生成目录”的啥错误提示。把代码压缩了,能很快复制过去,可是在虚拟机里提取又却很慢,有时也会失败导致根本不能解压。
vue中v-model变量的绑定,要求变量需要先有在data里声明过。
当遇到v-for遍历数据时,v-model里变量就需要每一次都不一样。直接用后端唯一性数据作为变量,虽然保证了for遍历后,v-model绑定的变量都不一样,但是这些变量并没有在data里有声明,所以也会报错。
解决方法就是:
现在data里定义一个变量,然后在created方法里获取后端接口数据时,再初始化每一个v-model要绑定的变量。
例如,后端接口有个唯一性id数据。
先在data里定义个变量:
info_arr: []
然后created方法里调用后端接口,遍历接口结果,初始化数据:
created: function(){
backend_api({
}).then( (res) => {
res.data.data.forEach( item=> {
this.$set(this.info_arr, "info_" + item.field_name, '');
});
})
}
最后在页面v-for里,v-model动态绑定变量,你就可以如下这样用了:
文章标题里这句诗,出自于宋朝周邦彦的《苏幕遮》这首词,全词如下:
《苏幕遮·燎沉香》
燎沉香,消溽暑。鸟雀呼晴,侵晓窥檐语。叶上初阳干宿雨、水面清圆,一一风荷举。
故乡遥,何日去。家住吴门,久作长安旅。五月渔郎相忆否。小楫轻舟,梦入芙蓉浦。
一句诗,好不好,有时候尽管读者说不出个所以然,但也是能感觉到的。
一句诗,一旦和读者以前所见心中所想关联起来,就自然而然的让读者轻松地记住了它。本文要说的这句诗,翟码农认为好就好在这里。
叶上初阳干宿雨,水面清圆,一一风荷举。这句诗一念完,朝阳升起,水面如绿色圆盘似的荷叶一片一片漂浮着,泛着些许晶莹的雨水,其中一些出水的荷花,亭亭玉立,在风中曼妙起舞,就犹如这样的一幅似曾相似的画面感跃如脑海。
要能达到感觉相通的这般境界,诗句的每一个字都少不了要下苦功夫。
同样写荷花,你读“接天莲叶无穷碧,映日荷花别样红”,你就会感到这句诗所给的画面,是一种千千万万荷叶耸立着簇拥着的画面,给人一种蓬勃的生命力的感觉。跟本文里的这句诗比较,稍加体会就感觉本诗里的夏季,相较于《晓出净慈寺送林子方》的夏季,气候要凉快一些。事实上,从诗词里的时间也是可以看出来的。“毕竟西度湖六月中”提的是六月,而本诗里却是五月,可见古人文采真是绝伦,才造就了如此精妙的诗词。
一秒钟800条的采集数据往redis队列里丢,翟码农取出消费,多进程,lrange+ltrim每次500条,redis pipe管道全用上了,还是消费不过来。
之前处理一条数据产生5条警告数据,生成与消费两边速度相当。但当一条数据产生50多条警告时,消费就明显吃力。
为了更好的优化代码,打日志后发现其中有个redis 的incr命令方法严重影响到了性能。
当时多进程运行下,$id = $redis->incr($key)这一行代码耗时240毫秒,如果直接换成$id=1,就是微秒级了。
不难理解,redis由于是单线程的,在对$key进行自增时,防止多进程下生成相同id值,redis必然会对$key进行加锁,如此就相当于每个进程必须等待上一个进程处理自增结束后,才可开始自己的自增操作。
所以实在对代码感到无能为力时,就按这种傻瓜方法来吧,每段都加上时间耗时的计算日志,这样子也不用劳神苦思的想了,直接看耗时结果来找问题。
本文为翟码农个人博客里有关开发经验总结的原创文章,转载请注明出处:http://www.zhai14.com/blog/watch-the-command-of-incr-in-redis-when-run-multiple-process-program.html