240 发简信
IP属地:湖北
  • @Leesper 发现另一个问题,当serverConn关闭之后调用asyncWrite并不会返回错误,原因出在这个地方
    func asyncWrite(c interface{}, m Message) error {
    defer func() error {
    if p := recover(); p != nil {
    return ErrServerClosed
    }
    return nil
    }()
    //...
    }
    在defer函数中这样返回并不会生效,应该使用显示返回值
    func asyncWrite(c interface{}, m Message) (err error) {
    defer func() {
    if p := recover(); p != nil {
    err = ErrServerClosed
    }
    }()
    // ...
    }

    Tao - Go语言实现的TCP网络编程框架

    一. 什么是Tao Tao,在英文中的意思是“The ultimate principle of universe”,即“道”,它是宇宙的终极奥义。 “道生一,一生二,二生三...

  • @Leesper 请问一下你这个框架对海量连接的处理效率怎么样,比如10W客户端长连接,每个连接起3个goroutine,这样对调度会有影响吗?

    Tao - Go语言实现的TCP网络编程框架

    一. 什么是Tao Tao,在英文中的意思是“The ultimate principle of universe”,即“道”,它是宇宙的终极奥义。 “道生一,一生二,二生三...

  • 最近在学习你的tao网络框架,做了下压测,发现在压力大的时候handle数量和发出去的消息数量不一致
    跟踪发现在handleLoop中将任务放到任务池子时可能返回ErrWouldBlock错误,但上层直接忽略了这个错误

    调用代码为


    WorkerPoolInstance().Put(netID, func() {
    handler(NewContextWithNetID(NewContextWithMessage(ctx, msg), netID), c)
    })

    想问一下这种情况该怎么处理,循环调用put直到成功?(这样会阻塞在循环中)

    另外我还发现WriteCloser接口的Write方法也可能会发生ErrWouldBlock错误,这种情况建议上层应用怎么处理?

    Tao - Go语言实现的TCP网络编程框架

    一. 什么是Tao Tao,在英文中的意思是“The ultimate principle of universe”,即“道”,它是宇宙的终极奥义。 “道生一,一生二,二生三...

  • 深入理解vim编码设置

    vim的使用环境比较复杂,可以通过terminal在本地使用(比如Mac或Linux主机),也可以ssh连接到远程服务器使用,还可以使用gvim。这里主要讨论terminal...

  • 深入理解vim编码设置

    vim的使用环境比较复杂,可以通过terminal在本地使用(比如Mac或Linux主机),也可以ssh连接到远程服务器使用,还可以使用gvim。这里主要讨论terminal...

  • C++数据库操作之SOCI

    SOCI是一个数据库操作的库,并不是ORM库,它仍旧需要用户编写sql语句来操作数据库,只是使用起来会更加方便,主要有以下几个特点 以stream方式输入sql语句 通过in...

  • 详解Linux shell命令帮助格式

    linux shell命令通常可以通过-h或--help来打印帮助说明,或者通过man命令来查看帮助,有时候我们也会给自己的程序写简单的帮助说明,其实帮助说明格式是有规律可循...

  • gtest

    安装 项目地址: https://github.com/google/googletest 其中-DCMAKE_INSTALL_PREFIX指定的是安装目录,这里安装到了/u...

  • 120
    真正理解Mysql的四种隔离级别

    什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么...

  • 120
    linux shell发送邮件

    一封最简单的邮件 看上去有点复杂,其实就是sendmail程序从标准输入读取邮件源码,-t参数表示从邮件源码提取收件人信息,然后发送到收件人的邮件服务器,我们稍做整理,将邮件...

  • 120
    linux shell发送邮件

    一封最简单的邮件 看上去有点复杂,其实就是sendmail程序从标准输入读取邮件源码,-t参数表示从邮件源码提取收件人信息,然后发送到收件人的邮件服务器,我们稍做整理,将邮件...

  • 120
    iTerm2固定标签名字

    iTerm2是Mac上最好用的终端app,没有之一。使用终端时往往需要连接不同的服务器,通常我们会为每个服务器连接设置一个profile 这样点击一个profile就可以快速...

  • 深入理解字符编码

    大概每个人在使用软件时都遇到过乱码的问题,这是由于字符的编码和解码方式不一致导致,我们知道计算机只认识二进制数据,因此程序在处理、存储、传输文本时,需要将文本转化成二进制,通...

  • 120
    Mac Alfred快速复制剪贴板和指定文本

    这里主要考虑如下两种需求 快速唤出剪贴板历史,并复制某一项 快速复制某一段固定内容的文本 第一项在Mac上有很多小工具实现,第二项在输入密码时经常会碰到,比如我在终端sudo...

  • 120
    Linux文件读写机制及优化方式

    本文只讨论Linux下文件的读写机制,不涉及不同读取方式如read,fread,cin等的对比,这些读取方式本质上都是调用系统api read,只是做了不同封装。以下所有测试...

  • 120
    Linux文件读写机制及优化方式

    本文只讨论Linux下文件的读写机制,不涉及不同读取方式如read,fread,cin等的对比,这些读取方式本质上都是调用系统api read,只是做了不同封装。以下所有测试...