切片(Slice)
数据结构slice是一个动态数组,切片中的元素存放在一块内存地址连续的区域,使用索引可以快速检索到指定位置的元素,以下的数据结构也称为Slice Header。
123456789//package:Go SDK 1.22.0/src/runtime/slice.gotype slice struct { // 指向起点的地址 array unsafe.Pointer // 切片长度 len int // 切片容量 cap int}
array:指向了内存空间地址的起始位置,slice数据存放在连续的内存空间中,根据索引 index,在起点的基础上进行地址偏移,从而定位到目标元素。
len:slice的长度,指的是逻辑意义上,slice 中实际存放了多少个元素。
cap:切片的容量,指的是物理意义上为slice分配了足够用于存放多少个元素的空间,cap永远大于等于len。
slice是引用传递还是值传递引用传递:是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
值传递:是指在调用函数时将实 ...
HTTP—状态码
请求错误(4XX)这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个 HEAD 请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。
429 Too Many Requests应用场景:限流器如果一个请求被限流,API会给客户端返回HTTP响应码429(请求过多)。根据应用场景我们有可能会把超过阈值的请求放入队列,之后再处理。比如,一些订单请求因为系统过载被限流了,我们可以保存这些订单以便稍后处理。
限流器返回的HTTP头客户端通过HTTP头在请求被拦截之前知道允许通过的请求数还剩多少
X-RateLimit-Remainging:在当前时间窗口内剩余的允许通过的请求数量
X-RateLimit:客户端在每个时间窗口内可以发送多少个请求
X-RateLimit-Retry-After:在被限流之后,需要等待多少秒才能继续发送请求而不被拦截
MySQL-时间相关函数
DATEDIFF语法1DATEDIFF(date1,date2)
参数说明:
date1: 比较日期1date2: 比较日期2
DATEDIFF函数返回date1 - date2的计算结果,date1和date2两个参数需是有效的日期或日期时间值;如果参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算)
示例12345678SELECT DATEDIFF('2022-04-30','2022-04-29');# 结果:1SELECT DATEDIFF('2022-04-30','2022-04-30 14:00:00');# 结果:0SELECT DATEDIFF('2017-06-25 09:34:21', '2017-06-15');# 结果:10
MySQL-窗口函数
概念窗口的意思是将数据进行分组,每个分组即是一个窗口,这和使用聚合函数时的group by分组类似,通过 over 关键字和 partition by 关键字来定义分组,但与聚合函数不同的地方是:
聚合函数(例如:sum/avg/min/max)会针对每个分组(窗口)聚合出一个结果(每一组返回一个结果)。窗口函数会对每一条数据进行计算,并不会使返回的数据变少(每一行返回一个结果)。
窗口函数会逐行计算,其重点是计算当前行与窗口内其他成员之间的关系,例如:组内排序,累积分布等。
123[你要的操作] OVER ( PARTITION BY <用于分组的列名> ORDER BY <按序叠加的列名> ROWS <窗口滑动的数据范围> )
<窗口滑动的数据范围> 用来限定[ 你要的操作] 所运用的数据的范围,具体有如下这些:
123456当前行 - current row之前的行 - preceding之后的行 - following无界限 - unbounded ...