GoLang
xiaowhy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go 网络编程one connection one goroutine
看网上分析,go 的accept后台实际用的还是epoll,和自己使用epoll差别不大,甚至比epoll性能要好 首先,client 连接 server 的时候,listener 通过 accept 调用接收新 connection,每一个新 connection 都启动一个 goroutine 处理,accept 调用会把该 connection 的 fd 连带所在的 goroutine 上下文信息封装注册到 epoll 的监听列表里去,当 goroutine 调用conn.Read或者con...原创 2021-06-25 14:20:27 · 222 阅读 · 0 评论 -
一个对网络库进行压测统计qps的小程序
一个对网络库进行压测统计qps的小程序 参考:https://gist.github.com/Tsiannian/137b722f1b5dcebea0830a9e12720de0 package main import ( "bufio" "encoding/binary" "fmt" "net" "os" "time" ) func timeStamp() uint64 { return uint64(time.Now().UnixNano()) } func encode(in原创 2021-01-06 14:43:37 · 388 阅读 · 0 评论 -
支持高并发的基于epoll的go服务器模型
参照https://colobu.com/2019/02/23/1m-go-tcp-connection/,使用go编写,基于epoll io复用模型,基于工作池,防止无限制协程个数 服务端: serverepoll.go package main import ( "flag" "github.com/libp2p/go-reuseport" "log" "net" "net/http" "github.com/rcrowley/go-metrics"原创 2020-11-17 14:19:17 · 654 阅读 · 0 评论 -
一个简单的go的Socket服务器工作池
一个简单的go的Socket服务器工作池 处理收包和发包是工作池 Server.go package main import ( "fmt" "net" "strconv" "time" "sync" ) type Task struct { conn *Session data []byte } type Result struct { conn *Session data []byte } var tasks = make(chan原创 2020-11-09 16:36:12 · 306 阅读 · 0 评论 -
go使用logrus同时输出屏幕和文件日志
func InitLog() { //设置输出样式,自带的只有两种样式logrus.JSONFormatter{}和logrus.TextFormatter{} log.SetFormatter(&log.TextFormatter{}) log.SetOutput(os.Stdout) //设置output,默认为stderr,可以为任何io.Writer,比如文件*os.File file, err := os.OpenFile("checkemstools.l.原创 2020-07-08 16:40:30 · 7083 阅读 · 0 评论 -
GoLang语言学习
这几天学习GoLang语言,写了个socket客户端例子,有几点不爽的地方 函数左括号要和函数名在同一行 结构体转换到byte有点麻烦 很多语法感觉跟C++很像,却又有些地方不一样 有些语法感觉比Python还复杂 报错提示也不明显 傻逼的是,没使用过的import包竟然还报错 最大的好处大概是协程的应用吧...原创 2019-02-02 15:37:30 · 266 阅读 · 0 评论
分享