Go tips-笔记: string 36-41 mistakes
笔记
在 Go 中,string是一种不可变的数据结构,包含以下内容:
- 指向不可变字节序列的指针,指向一个byte类型的数组
- 此序列中的总字节数
string在Go中的内部结构是reflect.StringHeader
位于reflect/value.go
// StringHeader is the runtime representation of a string.
// It cannot be used safely or portably and its representation may
// change in a later release.
// Moreover, the Data field is not sufficient to guarantee the data
// it references will not be garbage collected, so programs must keep
// a separate, correctly typed pointer to the underlying data.
type StringHeader struct {
Data uintptr
Len int
}
//uintptr an unsigned integer large enough to store the uninterpreted bits of a pointer value
Go tips-笔记: 控制语句 30-35 mistakes
Go tips-笔记: 数据类型 17-29 mistakes
Go tips-笔记: 代码和项目组织 1-16 mistakes
引言
从错误中学习效率更高,而且从错误失败的场景下学习,往往比直接交代正确性的理论知识,没有上下文的结果去 记忆巩固知识,在错误失败场景下往往印象更深刻;可以帮助更好地避免错误并做出更明智、更有意识的决定,因为现在了解了错误背后的基本原理,有种该死的,恍然大悟的感觉,拨开雨雾见月明;
涵盖了可能导致各种软件错误的案例,包括数据竞争、泄漏、逻辑错误和其他缺陷。虽然准确的测试应该是尽早发现此类错误的一种方式,但有时可能会因为时间限制或复杂性等不同因素而错过案例。因此,使用Golang开发,确保避免常见错误至关重要。
有些坑可能曾经踩过,通过这些mistakes产生共鸣,加深印象,同时可以继续追加一些新的坑来填充,比如系统性能调优,包括IO, 网络,数据编解码压缩,分布式系统,业务系统组织架构,逐步学习实践试错过程。学习笔记开个头。
设计-直播间赠送礼物功能
背景
直播线上互动,已成为当下生活的一部分,特别是受疫情影响,成为互联网的主要流量入口;研究了下各个平台直播间送礼物的功能,发现大同小异,在礼物分组,一些定制化的礼物有区分,整体交互流程大致相同,主要是直播间主播上播,用户通过礼物打赏给主播们(一个直播间可能有多名主播在互动),礼物是通过虚拟币(**币) 换算,早期互联网用户线上互动礼物,玩家最多的应该是QQ币了,只不过以前的打赏赠送场景是在web2.0刚开始的时候,交互的大多是文字和图片,相关产品场景,虚拟空间(个人空间,博客,种菜等娱乐互动场景);随着底层网络基建的发展,4G之后出现了大量的视频网站,用户可以录一些视频内容来互动;到后来音视频流媒体的发展,相关的在线直播间开始涌现,用户之间享受一波直播红利带来的互动,当然影响相对于前面的形式更加实时和直接;现在的5G和未来6G,以及物联网都会给直播形式带来新的互动场景,比如:虚拟会场,人机互动;其中早期培养起来的打赏送礼行为功能经常用于有主播的娱乐互动直播中,也是增值盈利的一部分;
tips: 除了送礼功能,根据不同直播场景,还有语音视频连麦,电商带货商品,没有主播,节目直播/转播,会议直播,自习室,基本的点赞,计数,聊天基础服务功能;还有些抽奖功能,答题功能(教育类直播居多),投票,红包这些功能服务可在开播时设置,是否启用;有用户基础的流量平台可能还会以竞价排名的方式推荐一波;这些功能可以作为一个可管理的插件,通过组合的方式应用于直播中,方便管理,后续可以添加新功能满足某类型直播场景。
让ML跑起来
介绍
上文提到通过用户的行为数据存放在S3中,这些数据包括结构化和非结构化数据,怎么让这些数据变得有价值呢?一种是人为进行数据挖掘,对相关指标转化率进行评估;还有一种是通过这些数据来训练模型,然后将预测模型用于生产环境中进行A/B测试,选出适合的模型,这个模型需要不断更新迭代,并且自动化半自动化运行起来;