240 发简信
IP属地:湖北
  • @Leesper

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

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

  • 另外也没看到心跳的处理逻辑,建议花点时间在完善下

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

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

  • 这里的代码存在一些微妙的设计,需要仔细解释一下。TypeLengthValueCodec.Decode()函数会被readLoop协程用到。因为io.ReadFull()是同步调用,没有数据可读时会阻塞readLoop协程。此时如果关闭网络连接,readLoop协程将无法退出。所以这里的代码用到了一个小技巧:专门开辟了一个新协程来等待读取最开始的4字节Type数据,然后自己select阻塞在多个channel上,这样就不会忽略其他channel传递过来的消息。一旦成功读取到Type数据,就继续后面的流程:读取Length数据,根据Length读取应用数据交给先前注册好的反序列化函数。注意,如果收到超过最大长度的数据就会关闭连接,这是为了防止外部程序恶意消耗系统资源。

    这个好像没解决实际问题,因为你即使把type解出来了,但是readfull时还是会阻塞在那里,这个时候如果有关闭server(客户端发送数据比较慢),还是处理不了。

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

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

  • Phantomjs编译和运行

    其他的就不多说了,github上直接pull下来,下面直接进入正题。 通过./build.py -d进行编译和运行的过程中遇到如下问题: 一、qtbase编译遇到的问题 xc...

  • Phantomjs中QtWebKit通过JS Binding添加新对象(一)

    这一篇主要介绍在window下添加新对象,网上也有一些文章介绍如何添加,文章有些老了,我试了好多次才成功,这里记录下来用于备忘。 一、Source/WebCore/page下...

  • 120
    使用Qt5.9.5和VS2017单独编译Qtwebkit

    经过几天的摸索终于确定了研究Qtwebkit的正确姿势,之前编译的版本都是基于Qt5.5.1(里面包含Qtwebkit),由于Qt5.5.1发布的时间已经比较久了,对VS最高...

  • VS2015静态编译Qt5.5.1(包括Qtwebkit)

    项目中需要用到webkit,调研了webkit源码,但是源码比较庞大,用xcode编译很方便,但是本人不熟悉mac下编程,所以研究了一段时间之后只能作罢。后来了解到Qtweb...

  • 120
    记一次通过wireshark和tcpdump排查问题过程

    部门主要做数据采集服务,采集过程使用到两级代理,都是自建服务。昨晚在做优化和测试的时候遇到了一个奇怪问题,在本地测试时代理服务很快,但是部署到开发测试机之后会有卡顿,而且是秒...