V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lesismal  ›  全部回复第 10 页 / 共 60 页
回复总数  1200
1 ... 6  7  8  9  10  11  12  13  14  15 ... 60  
@body007 这不是啥复杂问题,只是个简单的用法错误,没必要用“方案”这么重的词来形容。。
BTW ,OP 自己的 python 代码里用的就是同一个 deobj = zlib.decompressobj(),go 里用了不同的 zlib reader 读取两个片段、第二个片段没有 header 、当然就出错了
上接: https://www.v2ex.com/t/1024087#reply11


package main

import (
"bytes"
"compress/zlib"
"fmt"
"os"
)

func main() {
bin1, _ := os.Open("1.bin")
defer bin1.Close()
bin2, _ := os.Open("2.bin")
defer bin2.Close()

input := new(bytes.Buffer)
input.ReadFrom(bin1)
zr, err := zlib.NewReader(input)
if err != nil {
fmt.Printf("zlib error: %v\n", err)
return
}

defer zr.Close()

buf := make([]byte, 1024)
n1, err := zr.Read(buf)
fmt.Println("read 1 over:", n1, err)
fmt.Println("buf 1:", string(buf[:n1]))
input.ReadFrom(bin2)
n2, err := zr.Read(buf[n1:])
fmt.Println("read 2 over:", n2, err)
fmt.Println("buf 2:", string(buf[n1:n1+n2]))
}


output:

read 1 over: 124 <nil>
buf 1: {"t":null,"s":null,"op":10,"d":{"heartbeat_interval":41250,"_trace":["[\"gateway-prd-us-east1-c-0bwh\",{\"micros\":0.0}]"]}}
read 2 over: 36 <nil>
buf 2: {"t":null,"s":null,"op":11,"d":null}
@rekulas
#4 看了下,你自己的代码里的错误主要是因为用不同的 zlib.NewReader 去读两个片段、因为只有第一个片段包含头部信息、而每个 zlib Reader 必须先读一个 header 才行,所以当你第二个新的 zlib.NewReader 去读不包含 header 的第二个片段的时候就出错了

只 zlib.NewReader 一次,用这个 reader 去读每次收到的数据片段就可以了。把 bv 的代码稍微改下顺序就 ok 了,具体代码稍等我贴到你原帖去
252 天前
回复了 GunsRose 创建的主题 问与答 邻居早上扰民怎么办?
@lesismal
#70 刚开始没注意 OP 说声音太大,以为钢琴应该没太大声音、毕竟不是自己屋里。
如果声音特别大,说明楼的隔音也不行、可能质量本身就不够硬,还是建议搬家吧,万一哪天楼质量问题上热搜。。
我委婉点评价吧:用消息队列实现 RPC 真的是我见过的最差的设计之一了。。
252 天前
回复了 GunsRose 创建的主题 问与答 邻居早上扰民怎么办?
这个时段不能算扰民了,OP 参考下小学上课时间、很多行业的早班时间。

程序员职业特殊自己作息跟主流人群不一样,咱们才是非主流人群。
建议搬家或者自己调整作息,不要反过来给主流正常人的作息扣扰民的帽子,也别去解决别人正常作息来让自己舒服,否则就太不讲道理了
254 天前
回复了 junwind 创建的主题 git 大家好, mac 上有哪款 git GUI 工具好用呢?
Windows 虚拟机与主机磁盘映射/共享,Windows 里 TortoisGit+Beyond Compare
254 天前
回复了 anUglyDog 创建的主题 程序员 程序员第二门语言
> 可以看看 七周七语言

@henix 这书蜻蜓点水了多语言、但相当于啥都没讲,我把它归类为水货
寄给 笔记本维修斯 ,运气好还能上视频
深圳+1
256 天前
回复了 sysbug 创建的主题 问与答 和女朋友的聊天记录误删了…
聊天记录多数用于翻旧账的证据,少量用于怀旧恩爱
要是我,建议对方也删掉
如果不考研,并且想坚持 c++,从赚钱、找工作的角度讲,找量化的吧。
除了量化基础待遇和天花板都比较高,其他领域基本没有了。做游戏发财都是靠运气、项目牛逼、你积累到牛逼的技术并且职位级别够高才行,游戏行业技术难度大、相对于 IT 互联网那些基础待遇太低了。其他领域的,c++往深入做的主要是嵌入式、图形学、数据库、算法之类的,也都是需要积累多年才能精深,基础待遇也都不高。例如老罗当年做锤子手机号称年薪百万招技术总监,软硬件嵌入式多年的高水平的人才行,然而年薪百万跟 IT 互联网领域比起来、不过相当于当年阿里的水货专家 P7 的工资水平,实在是不挣钱。

如果不坚持 c++,就 go+rust 吧,学 c++比它俩费劲多了,既然 OP 大二就能能把 c++玩得比较明白了想必天资还是很不错的,应该是高考没发挥好、或者高中没好好学习到了大学才开始发奋图强、否则不应该只是 211 ,如果是这样,随便花点功夫把 go+rust 双休了。

别听楼上那些人乱说什么找不到工作之类的,应届生找不到工作那都是对于弱者而言的,那些不学习打游戏浪费青春的找不到工作很正常。
至少大学、应届毕业前几年,强者靠自己的逻辑钻技术就能够很可以了。
257 天前
回复了 struggletoday 创建的主题 职场话题 应聘顺丰收派员后,混沌的一周
@f2kandlove 逢人劝了多年,劝了也白劝。唯有洁身自好,与烟酒槟郎赌毒不共戴天。

OP 文笔清晰,行云流水,略带诙谐,赞!
258 天前
回复了 NX2023 创建的主题 Go 编程语言 Go1.22: fastrand 变成 slowrand 了
kitex-benchmark 后来按默认的脚本也跑不起来,不知道现在能不能跑了,kitex 代码太复杂我表示“看不懂”,所以不玩了,还是玩我自己的吧

连同 grpc ,都挺难用的
先生千古!
1 ... 6  7  8  9  10  11  12  13  14  15 ... 60  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2620 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 00:17 · PVG 08:17 · LAX 16:17 · JFK 19:17
Developed with CodeLauncher
♥ Do have faith in what you're doing.