栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【RPC随手记录】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【RPC随手记录】

![RPC原理](https://img-blog.csdnimg.cn/7cade981879b4d138314a8254492dae0.png #pic_center =600x)

记录一些不错的rpc描述:

c++简陋实现
java实现,多线程
原理展示
python的简陋rpc实现
推荐:逐步完善的py实现rpc

c++的实现:link

前提:模板编程、<<运算符重载、序列化概念、ZeroMQ

序列化

这个代码的序列化很简陋,大致就是强制类型转换为字节指针
先看serializer_test.cpp中的测试代码: 可以看出支持连续序列化

void test1()
{
    int a = 100;
    std::string c = "hello";
    Serializer sr;
    sr << a;  //序列化//对应的函数返回sr自身//我等于我自己
    sr << c;

    int b = 0;
    std::string d;
    sr >> b; //反序列化
    sr >> d;
    std::cout << "b=" << b << ", d=" << d << std::endl;
}

查看<< 与>>对应的代码:

    template 
    Serializer &operator<<(T i) //序列化实际调用点
    {
        input_type(i);
        return *this;  //这种写法用于返回自身//return this 用于返回自己的地址
    }

再看input_type的实现:

template 
inline void Serializer::input_type(T v)
{
    size_t len = sizeof(v);
    char *p = reinterpret_cast(&v); //用这种方式进行序列化?reininterpret强制类型转化
    byteOrder(p, len);
    input(p, len); //把转换后的字节流添加到类内buffer
}

最后是input函数

    void input(const char *data, int len) { buffer_->append(data, len); } //仅仅是添加到buffer尾巴
网络传输

后面想起来再更新吧

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018740.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号