go中的切片有两个特性: 底层的数据结构是数组 type slice struct { array unsafe.Pointer len int cap int } 包括从切片和数组派生出来的切片都是公用一个底层数组的 当往切片append的元素超过容量时,即len(s) < cap(s)时,底层的数组会重新分配一个容量更大的数组. make构造出来的切片,已经预先填充了len个零值元素了. 总而言之,对切片的更改都会影响到底层的数组结构,因此需要慎重. 动手做个实验: package main…
1,当心ISNULL函数对你的逻辑引起BUG 有人喜欢或者习惯于(并不代表我推荐,甚至这种写法没有任何好处)用ISNULL处理变量这种方式写查询 比如:select * from TestISNULL where name = ISNULL(@name,name) @name相当于传入到存储过程中的参数,如果@name为null, 相当于:select * from TestISNULL where name = name,看起来恒成立,是真的吗? 目的是在@name为null的时候,这个查询条…
开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素. 不知不觉中,有些陷阱,不知你有没有犯. 一.漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下标方式遍历集合,在遍历过程中删除元素,你可能会遗漏了某些元素.说那么说可能也说不清楚,看以下示例: import java.util.ArrayList; import java.util.List; public class ListTest_Unwork { public static void…