V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  guonaihong  ›  全部回复第 17 页 / 共 24 页
回复总数  470
1 ... 9  10  11  12  13  14  15  16  17  18 ... 24  
2019-11-12 11:05:29 +08:00
回复了 guonaihong 创建的主题 程序员 golang: 流式 http client 新特性提前预览
@richzhu 流式 http client。就像使用 shell 一样,大水管接小水管,可以组合出强大的功能。RESTful 接口开发可以使用。 下个版本还会集成 benchmark 功能。未来主要用在 RESTful 接口开发,benchmark。和全链路压测平台的前端。
2019-11-12 10:59:36 +08:00
回复了 guonaihong 创建的主题 程序员 golang: 流式 http client 新特性提前预览
@optional 链式是实现方式,流式是设计理念。
@dafengqi panic 为啥哭?写了 5 年基本不用 panic。
2019-11-06 13:55:49 +08:00
回复了 guonaihong 创建的主题 Rust rust:读文件报错! stream did not contain valid UTF-8
@gfreezy 谢了,read_until 可以满足我的需求。
2019-11-06 13:01:28 +08:00
回复了 guonaihong 创建的主题 Rust rust:读文件报错! stream did not contain valid UTF-8
@PeterD ok。没有 std 方法,我先自己造个。谢谢了。。。
2019-11-06 12:47:02 +08:00
回复了 guonaihong 创建的主题 Rust rust:读文件报错! stream did not contain valid UTF-8
@PeterD 谢谢回答,对于二进制文件,也想每次取一行,如何做呢?
2019-11-05 13:38:24 +08:00
回复了 guonaihong 创建的主题 Rust rust: u8 slice 转 str 方式可对?
@lyy16384 谢了。
2019-11-05 12:31:45 +08:00
回复了 NGPONG 创建的主题 程序员 Github 个人版 有什么办法能够做到对 master 分支的 push 保护吗
@NGPONG 只保留 master,dev 分支是临时的,开发完。--->发起 pull reqeust--->merge。然后就把 dev 分支给删除掉。
2019-11-05 09:07:26 +08:00
回复了 NGPONG 创建的主题 程序员 Github 个人版 有什么办法能够做到对 master 分支的 push 保护吗
我现在的做法和一楼的类似。在 dev 分支上开发,完了,发 pull request。代码经过 travis-ci.orgcodecov.io 过一遍,指标没问题就合并自己的 pull request。

有兴趣可以看下我的 commit 记录。https://github.com/guonaihong/gout

现在这种现在用着挺爽的。不用担心 master 分支被破坏。
2019-11-04 21:37:13 +08:00
回复了 guonaihong 创建的主题 程序员 golang 二次开发链式库省事方法
@reus 厉害厉害,可否帮我看下,上面可有能优化的地方。
2019-11-02 22:26:35 +08:00
回复了 petelin 创建的主题 Go 编程语言 go 好像没办法实现一个支持递归的装饰器
@petelin 打不开,可否直接贴下代码。
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 要拷贝一次内存的。
1 ... 9  10  11  12  13  14  15  16  17  18 ... 24  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   886 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 21:34 · PVG 05:34 · LAX 14:34 · JFK 17:34
Developed with CodeLauncher
♥ Do have faith in what you're doing.