V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bv  ›  全部回复第 3 页 / 共 5 页
回复总数  100
1  2  3  4  5  
如果是 HTTP 客户端可以改造的更简单一些,例如:

func Get(u string) (*http.Response, error) {
resp, err := http.Get(u)
if err != nil {
return nil, err
}

encoding := resp.Header.Get("Content-Encoding")
if encoding == "deflate" { // 代表 body 使用了 zlib 压缩
body := resp.Body
rc, exx := zlib.NewReader(body)
if exx != nil {
_ = body.Close()
return nil, exx
}
resp.Body = rc
}

return resp, nil
}
和 zlib 无关,只是流式解析没处理好而已。

package main

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

//goland:noinspection GoUnhandledErrorResult
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
}

wg := new(sync.WaitGroup)
wg.Add(1)
go func() {
defer wg.Done()
io.Copy(os.Stderr, zr)
zr.Close()
fmt.Printf("\noutput over\n")
}()

input.ReadFrom(bin2)

wg.Wait()
fmt.Printf("main over\n")
}

输出结果:
{"t":null,"s":null,"op":10,"d":{"heartbeat_interval":41250,"_trace":["[\"gateway-prd-us-east1-c-0bwh\",{\"micros\":0.0}]"]}}{"t":null,"s":null,"op":11,"d":null}
output over
main over
是这样吗?

input := new(bytes.Buffer)
output, _ := zlib.NewReader(input)
// 压缩的数据流往 input 里面写入。
// 从 output 读取解压后的数据流。
291 天前
回复了 newshbb 创建的主题 宽带症候群 QUIC 能够多大程度提高系统吞吐量
@Immunize #28 真的假的?有相关的测试文档没
你们上来就争论,却不跑一遍作者的示例代码。
Linux Ubuntu i5-8500 测试结果是:

go1.21.6 下确实如那篇文章所说 g 明显比 f 快。
go1.22rc2 下 g 和 f 效率几乎无差异。
问下 jooq 需要根据表结构生成代码,在那一块儿?怎么生成的?
掌握流量密码,撕比确实能招来一大堆回复。
根据实际情况,自定义这几个方法中的任意一个即可实现: https://github.com/golang/go/blob/master/src/crypto/tls/common.go#L569-L601
332 天前
回复了 liudon 创建的主题 Go 编程语言 golang 里 context 和 logger 绑定的问题
不要啥都往 context.Context 里面塞,塞一次 ctx 就多包裹一层。

1. 可以自定义 iris 自带的 logger 。

func main() {
app := iris.New()
logger := app.Logger()
logger.Printer.Output = os.Stderr

app.Get("/hello", func(ctx *irisctx.Context) {
log := ctx.Application().Logger()
log.Info("HELLO")
})
}

2. 使用依赖注入

type DemoAPI struct {
log *zap.Logger
}

func (a DemoAPI) Hello(ctx *irisctx.Context) {
a.log.Info("HELLO")
}
至于为什么这样设计,看看这个 issue 有没有你想要的答案 https://github.com/golang/go/issues/11862
应该是 Go 文件通配设计就是如此,可以参考: https://pkg.go.dev/path/filepath#Match

不过在 Java 中确实会有 ** 这种通配写法
@kawaiidora #31 一语中的
Linux 下也经常这样,好像是最近几个新版本 IDE 的问题,每次都得 File > Invalidate Cache... 才正常。
2023-11-15 09:11:02 +08:00
回复了 mokeyjay 创建的主题 程序员 等明天一觉醒来,时间戳就 17 开头了哦 🥰
1700010620070 岁月如梭,合影留念
2023-10-18 13:25:29 +08:00
回复了 dyllen 创建的主题 Go 编程语言 go 项目目录名称,如果要多个单词要不要用下划线分割?
礼物码是优惠券吗,能再给一张吗
2023-09-13 14:43:28 +08:00
回复了 shaoyie 创建的主题 Go 编程语言 [go]golang 的协程池本应该是这样的
@Nazz 代码就应该简单直接
没看到实际数据,但是按照 UTC 取,差 8 个时区应该就对啊,2023-09-01T15:00:00Z 就等于 2023-09-01T23:00:00+08:00
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2860 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 14:32 · PVG 22:32 · LAX 06:32 · JFK 09:32
Developed with CodeLauncher
♥ Do have faith in what you're doing.