V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  guonaihong  ›  全部回复第 17 页 / 共 23 页
回复总数  458
1 ... 9  10  11  12  13  14  15  16  17  18 ... 23  
2019-10-31 12:40:20 +08:00
回复了 guonaihong 创建的主题 程序员 golang 二次开发链式库省事方法
@TypeErrorNone 看来 ten 兄对 go 也和熟悉。帮看看我的方法可还有提升的地方?
2019-10-23 18:35:23 +08:00
回复了 Renco 创建的主题 程序员 一般项目中使用的文件服务系统是怎么实现的, FTP 这种吗
海量小文件用的 seaweedfs。
2019-10-23 18:26:58 +08:00
回复了 javapythongo 创建的主题 Go 编程语言 一个 golang 实现的时间轮
可以加个性能压测,放到 readme.md 里面。这样会有更多人关注。
2019-10-22 19:08:08 +08:00
回复了 guonaihong 创建的主题 程序员 golang cgo 小心 C.Bytes 函数
@reus 用 append 还要依赖传参 空间是否够。觉得这个方式不是最优,可以用类型转换。
2019-10-22 18:39:00 +08:00
回复了 guonaihong 创建的主题 程序员 golang cgo 小心 C.Bytes 函数
@fuis "为啥 C.Bytes 就节约内存了,没看懂"。
如果 C.Bytes 可以用,只是把内存分配的过程从两次变为 1 次。你可以看下

改进方法([]byte 到*C.char) --->(1 次分配内存)
极致省内存方法(不推荐) ---->(0 次分配内存)

这两个标题下面的方法,把内存分配从 1 次,变为 0 次。当然推荐 1 次的方法,不容易出错。

## 内存两次分配的原因如下

要把 go 里面的[]byte 转成 c 里面的 char *。常规做法有两步[]byte-->string-->char *。每一步都有 malloc 内存的操作。

* 第一步 []byte--> string。(需要重新分配内存, 比如 string(bytes 类型的变量))
* 第二步 string --> char *。(需要重新分配内存,C.CString(s))
2019-10-22 13:05:57 +08:00
回复了 guonaihong 创建的主题 程序员 golang cgo 小心 C.Bytes 函数
@reus 加 0 的思路是好的。但是 append 发现空间不够还是会重新 malloc 内存。可以控制[]byte,留空一位专门放 0。
打印下面的代码证实, append 重新分配内存。
```go
package main

import "C"

import "fmt"

func main() {
b := []byte("我是小妖怪,逍遥又自在,杀人不眨眼,吃人不放盐。")
b1 := append(b, 0)
cstr := C.CBytes(b1)
fmt.Printf("b(%p):append address(%p):cbytes(%p)\n", b, b1, cstr)
}

```
2019-10-22 10:08:39 +08:00
回复了 guonaihong 创建的主题 程序员 golang cgo 小心 C.Bytes 函数
@fuis 在 go 里面 []byte 到 string 是有一次内存拷贝的。想把 go 里面的[]byte 转成 c 的*C.char 常见做法有两次拷贝
[]byte-->string-->*c.char

本来想用 C.Bytes 节约[]byte->string 的一次拷贝,发现没加'\0‘。后面用强制类型转化搞定了。
package main

import (
"fmt"
)

func main() {
s := "wowowo"
b := []byte(s)
fmt.Printf("%p:%p\n", &s, b)
}
2019-10-22 09:59:20 +08:00
回复了 guonaihong 创建的主题 程序员 golang cgo 小心 C.Bytes 函数
@reus 你的入参是[]byte。[]byte 到 string 要拷贝一次内存的。
2019-10-21 14:24:26 +08:00
回复了 guonaihong 创建的主题 程序员 golang 检测 cgo 内存泄露
@NoobPhper go1.14 版本?那还要等大半年。还挺期待的。
2019-10-19 19:05:56 +08:00
回复了 guonaihong 创建的主题 程序员 golang: 从 Uber Go 风格指南,摄取 API 设计营养
@love js 是挺不错的语言。我后面也打算玩下。
@Daath 厉害厉害,可否分享下 nginx 的做法。。。
2019-10-17 23:05:14 +08:00
回复了 upday7 创建的主题 Go 编程语言 Go 到底优势是在哪里?
看目标人群,如果以前用 c 不停 malloc, free 内存。用了 go 之后感觉真爽。。。很多函数名和系统调用相同, 也会有一种新切感。
@sunny352787 哈哈。。sunny 兄让我不知道说什么好。难道一篇让人开箱即用的技巧。非要扯得高深点才好。非要告诉别人 http 除了是基于 tcp 的。http2 加入 tcp 多路复用,优化 http1.1 pipeline 的问题。http3 将要 使用 udp,解决 tcp 协议栈在内核开销大的问题。这种一堆细节,除了抬高自己,对读者没有任何好处。我喜欢站在大众读者角度,讲些开箱即用的东东。。。尽理追求复杂的事情说简单,简单的东西直接使用。。。 如果你觉得不舒服,我下一篇尽量用更平谈的标题。我无意在这种小事上继续讨论,这种非技术的讨论实在没意思。你下个回答,我也不回答了(特此说明)。
@sunny352787 我想分享的是在工作中可以使用的套路。而不是玩具代码做法。如果一个方式自己都半生不熟。误导别人就不好了。
@sunny352787 以后再分享吧,最近打算玩下 rust,挺花时间的。
2019-10-17 20:54:46 +08:00
回复了 guonaihong 创建的主题 程序员 golang: 从 Uber Go 风格指南,摄取 API 设计营养
@love 可否推荐个开发普通业务不错的语言,以后玩下。
@scukmh 谢了,我试下。
@scukmh @sunny352787 @xmge @reus 好了。
@reus hijacker 不适用 http2。
@xmge 还没写完。。。
1 ... 9  10  11  12  13  14  15  16  17  18 ... 23  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5616 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 02:38 · PVG 10:38 · LAX 19:38 · JFK 22:38
Developed with CodeLauncher
♥ Do have faith in what you're doing.