05 2023 档案
摘要:从C#List的源码看,Remove()方法会触发数组的位移,如果在循环中调用会十分费: for(int i=0;i<arr.Count;i++) { if(arr[i].IsNull()) { arr.Remove(arr[i]); } } 这个时候可以使用RemoveAll(),性能好很多。原理
阅读全文
摘要:Lua栈是宿主语言(对于官方Lua来说是C语言,对于本书来说是Go语言)和Lua语言进行沟通的桥梁。 Lua的数据类型和值 在lua代码里,变量是不携带类型信息的,变量的值才携带类型信息。换句话说,任何一个lua变量都可以被赋予任意类型的值。 在语言层面,Lua一共支持8种数据类型,分别是nil、布
阅读全文
摘要:主要是为了保证负数和正数的二进制数据一致 当byte要转化为int的时候,高的24位必然会补1,这样,其二进制补码其实已经不一致了,&0xff可以将高的24位置为0,低8位保持原样。这样做的目的就是为了保证二进制数据的一致性。
阅读全文
摘要:高级编程语言虚拟机是对真实计算机的模拟和抽象。按照实现方式,虚拟机大致可以分为两类:基于栈(Stack Based)和基于寄存器(Register Based)。 Lua虚拟机则是基于寄存器的虚拟机(实际上Lua在5.0版之前使用的也是基于栈的虚拟机,不过从5.0版开始改成了基于寄存器的虚拟机)。
阅读全文
摘要:C#-关于GetHashCode的使用准则(转载+翻译)。 - 知乎 (zhihu.com) 作用:优化查找是否相等的操作,将object通过hashcode(可自定义计算的整数)分成不同的容器存储,这样查找的时候只需要找到对应的容器遍历而不是遍历整个容器。 hashcode相等的object不一定
阅读全文