Go问答技术文章
-
Go roaring 的 Bitmap.And/Or 会把结果写回当前对象,而 roaring.And/Or 返回新的位图。本文用集合示例、共享指针风险和回归清单说明如何选择,避免重构时误改输入集合。317 收藏 -
解释Go snowflake修改Epoch后旧编号时间偏移的原因,区分Node生成状态与全局解码配置,并给出显式历史格式解码器和保留纪元、分版本迁移的方案。135 收藏 -
Go snowflake 的 NodeBits 与 StepBits 共享 22 位预算。本文用节点数量和单节点毫秒级突发量拆解容量分配,并说明自定义位数的初始化顺序、节点编号和时钟注意事项。172 收藏 -
Go 的 snowflake.ID 进入 JavaScript 时,真正危险的不是 ID 生成,而是把 64 位标识当成 JSON 数字交给 Number。本文解释默认 JSON 行为、2^53-1 安全边界,以及字符串和 BigInt 的稳妥接口方案。193 收藏 -
从 BitsSequence、BitsMachineID 和 TimeUnit 三个参数出发,计算 Go sonyflake 的单窗口容量、理论发号速率与生命周期,给出配置示例和参数取舍方法。351 收藏 -
说明 sonyflake 的时间、序列号和机器编号如何共同组成唯一 ID,解释默认私有 IP 低位的部署风险,并给出 MachineID 与 CheckMachineID 的启动检查思路。320 收藏 -
Go ksuid 的 KSUID 时间部分适合做按生成时间的大致排序线索,但只有秒级粒度且依赖生成机时钟,不能直接替代业务事件的精确发生时间。本文说明 Time 与 Timestamp 的区别,并给出事件时间单独落库的建模方式。191 收藏 -
KSUID默认生成方式使用秒级时间戳,同秒排序由随机载荷决定。本文用确定性构造解释比较结果,给出独立业务序号的排序示例,并说明游标兼容、时钟与Sequence的适用边界。200 收藏 -
KSUID由大端时间戳和随机载荷组成,27字符Base62文本保留了固定二进制值的字典序。本文用Go示例说明文本排序、字节排序与大致生成时间的关系,并解释时钟偏差、同一时间戳和游标截断的边界。426 收藏 -
Go oggvorbis.Reader.Read 返回的是按声道交错排列的 float32 样本值。本文用双声道示例说明如何按 L0、R0、L1、R1 拆分左右声道,并处理短读、EOF、声道数和完整帧边界。438 收藏 -
Go oggvorbis 可以从任意 io.Reader 解码,但 Length、Position 和 SetPosition 依赖底层 io.Seeker。本文对比流式输入与可定位输入,解释 Read 返回值、样本单位和 ReadAll 的内存边界。200 收藏 -
oggvorbis的Length和Position以采样帧计数,Read返回值则是交错float32元素数量。本文给出多声道单位换算、进度快照示例,以及未知长度、缓冲区和定位的边界处理。476 收藏 -
Go flac 的 StreamInfo.NSamples 表示每个声道的时间轴样本数,不是所有声道采样值的总和。本文区分 NSamples、NChannels、BlockSize 与 Subframe.NSamples,说明统计时长、展开缓冲区和逐帧计数的正确口径。240 收藏 -
Go flac 的Num在固定块与可变块模式下分别表示帧序号和首样本编号。本文说明名义块长换算、多声道时间轴与v1.0.14短尾帧边界。416 收藏 -
Go flac 读取 FLAC 时,StreamInfo 和其它元数据块属于流描述信息,音频帧才承载连续采样数据。本文按 Parse/ParseFile、New/Open、Next/ParseNext 的职责拆开说明选择方法。389 收藏