摘要:
char a[10][100] = {"1","2","3","4","5","6","7","8", "9","10"}; char a[10][100] = {"1","2","3","4","5","6" 阅读全文
摘要:
通过多路复用构建高性能服务器是一种常见的模型,单个I/O多路复用线程+一组工作线程,I/O线程负责协调分配任务,而实际工作交给工作线程处理。这种模型的好处在于高效并发和充分利用多线程的处理能力。 以memcached的构架图为例 memcached的主线程用epoll监听到EPOLLIN事件,并且触 阅读全文
摘要:
做项目过程接触到disque,记录一下。 disque是redis之父开源的基于内存的分布式作业队列,用c语言实现的非阻塞网络服务器。 disque的设计目标:Its goal is to capture the essence of the "Redis as a jobs queue" use 阅读全文
摘要:
SOA是什么? 英语直译是基于服务的架构,就是一种技术框架,促使企业内部与外部所有相关的系统公开和访问定义良好的服务和绑定于服务的信息,进一步抽象成流程层和组合应用,从而构成解决方案。 说人话:重用服务和子系统。 SOA的优势 服务和行为的重用,在一个系统中可以方便的使用另外一个系统的服务。 快速修 阅读全文
摘要:
zeromq是什么? zeromq是一套专注于消息通信的网络库,把它称作消息队列其实不恰当,zeromq的竞争对手也不是kafka、rocketmq、memchedmq这些消息队列。 zeromq不是什么? zeromq不是对socket的封装,可以认为zeromq在应用层和传输层之间又构建了一层。 阅读全文
摘要:
许多异步操作需要申请一个对象来保存操作状态,比如,win32需要OVERLAPPED导出的对象来传递给win32 API函数。此外,程序通常包括简单的可辨明的异步操作链,一个半双工协议(比如HTTP)为每一个client保存一个异步操作链(发送以后就是接收),一个全双工的协议可能拥有两个并行执行的 阅读全文
摘要:
许多广泛应用的网络协议是基于行的,这意味着许多协议元素通过"\r\n"来分割,比如HTTP、SMPT、FTP,为了更方便的实现基于行的协议,和其他基于分隔符的协议一样,Boost::Asio包括了read_until() 和async_read_until()。下面的例子阐述了async_read_ 阅读全文
摘要:
有的时候程序必须依赖第三方库来完成I/O操作,鉴于这种情况,Boost::Asio提供了一个null_buffers 类型可以同时完成读和写操作,null_buffers 直到执行I/O操作的对象就绪才返回。下面是一个执行非阻塞的读操作的例子ip::tcp::socket socket(my_io_ 阅读全文
摘要:
Boost::Asio中的许多I/O对象是流导向的,这意味着; @没有消息边界,在传输的数据是一个连续的字节序列 @读或者写传输的字节可能比请求更小,这就是被称作简短的读或者写 提供流定向模型的对象一个或者多个下列类型的必要条件:SyncReadStream,使用成员函数read_some()执行同 阅读全文
摘要:
从根本上讲,I/O包含了数据从源到目的地的连续内存的传输,这叫做缓存,这些缓存可以简单的描述为包含了一个指针和一组字节数据的元组,然而,为了支持高效网络应用程序的开发,Boost::Asio支持分散-聚合操作,这些操作同时支持一个或多个缓存。分散读 接收数据并写入多重缓存中。分散写 传输数据给多个缓 阅读全文