利用msg_id应对通知业务的去重设计

利用msg_id应对通知业务的去重设计
情景 在许多常见场景如支付回调的消息通知,需保障消息可靠性,实行消息至少传达一次的策略,即通知时根据业务方响应的状态码、返回码、响应时间来判定业务有效性,如未响应正常的业务状态,通知服务应重新通知。 msg_id的应用及生成 中大型厂商在做消息通知时都会附带msg_id参数,以此便于业务方回溯、去重 msg_id生成方法没有明确规定,一般需符合以下特点: ...

阅读全文>>

阅读全文...

大小端字节序释义

大小端字节序释义
经常把字节序搞懵,这里记录一下: 小端字节序(big endian),又称主机字节序(低位在前,高位在后) 因为计算机电路设计优先从低位开始处理效率高,所以又称主机字节序。 $data = pack('L*', 256); // 生成无符号长整型(32位,小端字节序)数据 for ($i = 0; $i < strlen($data); $i++) { echo bin2he...

阅读全文>>

阅读全文...

Mysql 中 MyISAM 和 InnoDB 的区别

Mysql 中 MyISAM 和 InnoDB 的区别
作者:oscarwin 链接:https://www.zhihu.com/question/20596402/answer/211492971 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 区别: 1. InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 I...

阅读全文>>

阅读全文...

乐观锁和悲观锁

乐观锁和悲观锁
前言 乐观锁和悲观锁问题,是出现频率比较高的面试题。本文将由浅入深,逐步介绍它们的基本概念、实现方式(含实例)、适用场景,以及可能遇到的面试官追问,希望能够帮助你打动面试官。 目录 一、基本概念 二、实现方式(含实例)       1、CAS(Compare And Swap) &nbs...

阅读全文>>

阅读全文...

php使用redis的有序集合zset实现延迟队列

php使用redis的有序集合zset实现延迟队列
延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息。 延迟队列的应用场景: 1、新用户注册,10分钟后发送邮件或站内信。 2、用户下单后,30分钟未支付,订单自动作废。 我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,把消息处理时间作为score,每次通过zRangeByScore获取一条消息进行处理。 ...

阅读全文>>

阅读全文...

PHP简写IF判断容易犯的低级问题

PHP简写IF判断容易犯的低级问题
今天小V在写一个业务的时候,发现条件老是能成立!后来发现是我犯了一个低级错误。 因为我习惯简写表达式,如: $a=-1; if($a){ //... } 发现条件能成立,我还一直以为负数属于false,汗,这是因为非0为true 总结:变量存在且其值为""、0、"0"、NULL、、FALSE、 array()、以及没有任何属性的对象都视为...

阅读全文>>

阅读全文...

记imagepng在lnmp环境中无法输出保存图片问题

记imagepng在lnmp环境中无法输出保存图片问题
在网上查阅了很多资料说: 去除BOOM头 用ob_clearn();清除缓存 以上几个都没用,后来突然想起是不是没有权限生成文件?! 然后ssh登录终端,用chown命令修改目录属主就正常了 = = chown -R www:www ./gd

阅读全文>>

阅读全文...

移动交互大屏项目总结

移动交互大屏项目总结
背景: 某单位想实现党建为主题的移动交互大屏项目,用于深化加强新信息化党建建设。 目标: 展示区域分为8个展示位,由pad控制屏幕移动到某个展示位,并实现移动到每个展示位时显示对应的展示内容。 使用技术: PHP、Python、易语言、HTML 架构想法: 1、pad发送TCP指令到控制器(有提供TCP端口接收控制指令)...

阅读全文>>

阅读全文...