解决方案——异步操作
在实际生产中,我们无法将所有的操作都同步得到结果,典型的有两类:定时任务与耗时任务的异步操作。这篇文章讲的主要是如何处理这俩个问题
在实际生产中,我们无法将所有的操作都同步得到结果,典型的有两类:定时任务与耗时任务的异步操作。这篇文章讲的主要是如何处理这俩个问题
这里说的不可靠的数据来源包括三个来源:请求参数、API返回、数据库。不可靠的数据在这里指的是没有按照约定赋值的数据。这个问题与无处不在的参数校验这个问题是相关的。
写程序三个步骤:参数校验,程序执行,回写结果(返回结果)。应该有不少人像我一样不喜欢将一大堆的参数校验与业务代码混杂在一起。这个问题和另一个问题不可靠的数据来源是相关联的。
批量替换
UPDATE 表名 SET 字段 = REPLACE(字段, '待更新的内容','替换值');
显示正在处理的连接
show processlist
计算时间差
TIMESTAMPDIFF(HOUR,'2020-12-13 20:10:22','2020-12-14 20:10:22') == 24
最新与最旧:
SELECT MAX(modify_time) AS 最新,MIN(modify_time) AS 最旧 FROM xxxxx
最后一个主键:
LAST_INSERT_ID()可以获取上个自增的主键。
BIT_COUNT(),BIT_OR(),BIT_AND():
BIT_COUNT()可以计算二进制1的数量:BIT_COUNT(3)就等于2;BIT_OR(3)就等于3,这个函数会被循环应用,初始与结果首行保持一致;BIT_AND(3)就等于3,这个函数会被循环应用,初始与结果首行保持一致; 在MySQL参考文档中有个巧妙的应用:SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1 GROUP BY year,month;这个语句可去重对同一个月的不同day进行计数。
旋转中心点为盒子中心点,缩放相对于左上角缩放。这样的思路会引起图像在旋转后做缩放操作时导致图像位移。以下是解决方式: