记一次关于go resp.Body.Close()和defer相关的问题探究
事情的起因是,我看到一段类似于下面的代码我当时在思考,这里defer闭包捕获到的变量是引用传入还是值传入,如果是引用传入,则两次defer close的都将会是同一个resp.Body,这样就会导致其中有一个Body不会被关闭从而导致内存泄漏。如果是值传入,这里则不会有问题,因为即使resp是指针,也会复制一个对应的变量,然后指向的是对应的值。然后为了能够准确的判断到底是哪种,首先得查看ht...
事情的起因是,我看到一段类似于下面的代码我当时在思考,这里defer闭包捕获到的变量是引用传入还是值传入,如果是引用传入,则两次defer close的都将会是同一个resp.Body,这样就会导致其中有一个Body不会被关闭从而导致内存泄漏。如果是值传入,这里则不会有问题,因为即使resp是指针,也会复制一个对应的变量,然后指向的是对应的值。然后为了能够准确的判断到底是哪种,首先得查看ht...
LRU的思路很简单,说白了就是用哈希表和双向链表来实现,当访问到存在于缓存中的节点时,将其置换到链表尾部即可,而当LRU缓存中保存的数据达到容量后,需要将...
防抖函数export function debounce<T extends (...args: any) => any>(fn: T, delay = 500) { // timer 是在闭包中的 let timer: any; return function (this: unknown, ...args: any[]) { if...
前言今天刚好看到3Blue1Brown的卷积视频视频然后看到做卷积的快速算法涉及到了FFT,于是就研究了半天FFT到底是什么引入首先说明一下卷积是在做什么...
适用场景树状数组是一种适用于多次单点修改统计区间和问题的数据结构。基本思想Binary Indexed Tree 求和的基本思想在于,给定需要求和的位置 i ,例如 13 ,我们可以利用其二进制表示法来进行分段(或者说分层)求和:13 = 2^3 + 2^2 + 2^0,则prefixSum(13) = RANGE(1, 8) + RANGE(9, 12) + RANGE(13, 13) (...