c++虚函数指针

Posted by 夏泽民

虚函数的实现是,内存中首个4BYTE包含的是指向虚函数表的指针,然后再在表中包含指向实现该虚函数的实际内存地址



string rune 和 byte

Posted by 夏泽民

range 作用于字符串,返回的k和v,v是rune类型,rune是uint32的等价类型。 其中的k不是rune数组的下标,而是byte数组的下标,所以i是不连续的 对于中文字符,rune类型就是其Unicode编码。



kafka 通过时间获取偏移量

Posted by 夏泽民

confluent-kafka-go producter一个实例占用内存22M,所以尽量使用单例,另外不要用它默认的初始化channel参数1000000



interface

Posted by 夏泽民

go语言接口有两种表现形式,对应到底层实现也是用两种不用的数据结构表示的。对没有定义方法的接口,底层用 用eface结构表示,对定义的有方法的接口,底层用iface结构表示。这里两种结构定义在 runtime/runtime2.go中 eface和iface都占16字节,eface只有2个字段,因为它代表的是没有方法的接口,只需要存储被赋值对象的类型和数据即可,正好对应到这里的_type 和 data字段。iface代表含有方法的接口,定义里面的 data字段也是表示被存储对象的值,注意这里的值是原始值的一个拷贝,如果原始值是一个值类型,这里的data是执行的数据时原始数据的一个副本。 // 空接口,表示不含有method的interface结构 type eface struct { // 赋值给空接口变量的类型型,_type是基础数据类型的抽象 _type *_type // 指向数据的指针,对于值类型变量,指向的是值拷贝一份后的地址 // 对于指针类型变量,指向的是原数据地址 data unsafe.Pointer }



curl 各阶段耗时

Posted by 夏泽民

curl -X GET -w “\ntime_namelookup:%{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n” xxxx



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required