V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  xujiajun001  ›  全部回复第 3 页 / 共 3 页
回复总数  58
1  2  3  
@Damnever 你好 你在我项目中提交的 issue 我已经回复你了,不好意思现在才回你。我其实在代码中使用了 unmmap,我的依据是 https://linux.cn/man2/mmap.2.html 提到这样一句话 The file may not actually be updated until msync(2) or munmap(2) are called,按照他这么说,只调用 unmap 实测发现数据是更新的, 难道我理解错了。
@woniuge 没事 谢谢关注
@woniuge 这位兄弟 有心了 谢谢帮我在看代码。欢迎提交给我 PR,这样我会第一时间看到。

关于第一个问题,你说道:“不必要的 string 转换,可以直接这样写 if segment[0] == ':' {....}” ,我表示不认同。如果不加 string,会有问题的,因为 segment[0] 和 ":" 类型都不一样

关于第二个问题,其实是个人喜好代码风格不同,我比较倾向于少用 else。但我表示认同写的代码存在冗余,但不是“多余”,我已经改了 https://github.com/xujiajun/gorouter/blob/master/router.go#L149-L155
xujiajun

谢谢
@dangerwolf 嗯 。如果你要用 xujiajun/gorouter,你只要再找一个支持数据的操作库( ORM 或者 SQL builder 或者你自己封装), 你可以试试我这个库,比 orm 简单,可以直接输出 json,是个 sql builder: https://github.com/xujiajun/godbal
@dangerwolf 你好,这个是单纯的 router,要直接输出 json,你指的是业务逻辑的数据库的交互吧。这个我这边也开发一个库,是个支持 mysql 的 sqlbuilder,地址: https://github.com/xujiajun/godbal,这个库可以直接操作数据库,你可以看下这个库里面的 examples,支持直接输出 json,配合 xujiajun/gorouter 一起使用。
@EchoUtopia 很好的建议。这个问题我有考虑过,目前设计的是先进先出原则. 把权力开放给使用者,所以在设计路由的时候,设计者自己要注意。尽量不要设计成 :name, {name:regexp}这种差不多的路由
@EchoUtopia 你说只能使用这三种 :name 两个一样的?是不是你写错了?欢迎去我的项目里面提 issure 哦。这样方便我统一处理,thanks。https://github.com/xujiajun/gorouter
2018-11-01 09:19:36 +08:00
回复了 mokeychan 创建的主题 Go 编程语言 <取经>如何学习 GO 语言
分享下我的学 GO 经历,学一遍(大概就行): https://tour.golang.org ,就差不多了 ,再买几本 GO 的书,强化下知识,推荐《 GO 实战编程》,其他的 GO 书理论偏多。我基本上市面上有的都买了。但是最重要的是实践,代码这种东西看看也就了解个大概。还是要实践。要面向需求开发。给自己个目标,做个小项目,比如我当时想开发 web 应用。我在帖子中也提到了( https://www.v2ex.com/t/502534#reply17 )后来有了这个 xujiajun/gorouter,一个简单高性能的 Go Router,和 julienschmidt/httprouter 差不多快,且支持正则。这是我的第一个 Go 开源项目。项目地址: https://github.com/xujiajun/gorouter,你可以去尝试提提 issue,提交 PR。你也可以关注下我哦,一起进步,一起 GO。
@EchoUtopia 你好,你可以压测下,切换到 develop 分支: https://github.com/xujiajun/gorouter/tree/develop ,增加了 xujiajun/gorouter vs gorilla/mux (用的是 githubapi2 ),这是我的笔记本跑出来的结果,仅供大家参考:

```
➜ gorouter git:(develop) ✗ go test -bench=.
GithubAPI Routes: 203
GithubAPI2 Routes: 203
HttpRouter: 37464 Bytes
trie-mux: 133864 Bytes
MuxRouter: 1378528 Bytes
GoRouter1: 85744 Bytes
GoRouter2: 85376 Bytes
goos: darwin
goarch: amd64
pkg: github.com/xujiajun/gorouter
BenchmarkTrieMuxRouterWithGithubAPI-8 10000 624425 ns/op 1086461 B/op 2975 allocs/op
BenchmarkHttpRouterWithGithubAPI-8 10000 556136 ns/op 1034357 B/op 2604 allocs/op
BenchmarkGoRouter1WithGithubAPI-8 10000 601101 ns/op 1034412 B/op 2843 allocs/op
BenchmarkGoRouter2WithGithubAPI2-8 10000 676998 ns/op 1058368 B/op 3177 allocs/op
BenchmarkMuxRouterWithGithubAPI2-8 10000 5414811 ns/op 1219148 B/op 4430 allocs/op
PASS
ok github.com/xujiajun/gorouter 78.775s
```

可以看出 xujiajun/gorouter 性能比 gorilla/mux 好一个数量级
@EchoUtopia 好的 谢谢 你的建议。
@ehlxr 谢谢支持
@EchoUtopia 你好,谢谢关注。githubAPI2 是单独给 gorilla/mux 压测用的,他的部分语法如 /user/{user} xujiajun/gorouter 不支持。只用当用到正则的时候,才回有{},其他都是 :开头 的类似 /user/:id 所以你会在我的 benchmark 看到其他待测的几个 router 都是跑 githubAPI,而 gorilla/mux 用的是 githubAPI2。
PS: xujiajun/gorouter 的语法规则 借鉴了 julienschmidt/httprouter 和 gorilla/mux,支持快捷方式关键词 :id (就会去匹配 id:[0-9]+) ,具体见: https://github.com/xujiajun/gorouter#pattern-rule
@E1n 谢谢关注
@lbp0200 谢谢支持
@vus520 谢谢关注
@hellos 谢谢:)
2018-06-12 16:47:17 +08:00
回复了 xujiajun001 创建的主题 酷工作 [Clothesmake 坐标杭州招] 前端开发工程师
坐标杭州,有意向的请发邮箱: [email protected]
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2640 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 11:11 · PVG 19:11 · LAX 03:11 · JFK 06:11
Developed with CodeLauncher
♥ Do have faith in what you're doing.