输入输出

深入解析C++输入输出运算符重载

最后都变了- 提交于 2019-12-12 20:19:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 其实算不上什么深入解析,只不过最近看CArchive类的实现,其中一些写法完全颠覆了我对输入输出运算符重载的一些理解,所以在这里mark一下。 我们以输出运算符为例。首先输出运算符重载的一般形式是 friend ostream & operator<< ( ostream & o , const ClassName & c );[1] ostream是c++流输出的类,至于友元,只记得说输入输出运算符必须用友元重载,因为ostream是受保护的。今天看CArchive类实现的时候,里面有如下的定义 friend CArchive & AFXAPI operator >>( CArchive & ar , CObject *& pOb ); 于是才发觉ostream并不是必需的,换句话说,从语法上讲,ostream的位置放什么类都可以,只不过语义上要行得通。而友元的重载从语法上讲也不是必须的,比如可以依然用成员函数重载,函数定义变成如下的格式 ostream & operator >>( ostream & o ); 使用的时候只能用object>>cout(或者cout>>object这就太别扭了)形式了,并且不可能连续使用了(比如obj1>>obj2>>cout),这违背了C++规范,但是语法上是的过得去的。

Storm中数据的输入输出

左心房为你撑大大i 提交于 2019-11-29 22:45:28
转载请注明出处: http://blog.csdn.net/jmppok/article/details/17284817 概述 Storm是一个实时流处理系统,其中运行的是Topology。初学Storm的小伙伴可能会有这样的问题: 我写了Spout和Bolt,创建了Topology,提交到了Cluster中,然后呢? 怎么访问并使用这个Topology呢? 想象中的办法 刚开始接触Storm的时候,我猜想大概可以通过在Spout中监听一个端口如TCP Socket,HTTP之类的,外面向这个端口发送数据. 然后再最后一个Bolt中将处理数据写入文件/数据库/或者发送到指定的地址上。 理论上感觉应该是可行的,但是没有实践。 实际可以通过DPRC访问 进一步研究,发现有DRPC这个咚咚,只需要起一个DRPC Server ,并且把Topology创建为DRPC Topology,提交。就可以通过DRPCClient对该topology进行访问了。十分方便。 Storm中专业的做法 再深入一步,发现原来Storm中正确的做法应该是这样的: 集成一个通讯中间件,外部应用通过该中间件发送数据,Spout订阅这些数据,并发射....,当Bolt处理完之后又可通过该通讯中间件发送出去给应用。 具体可参考:https://github.com/nathanmarz/storm/wiki