当前位置: 首页 > news >正文

上海网站搭建公司wordpress 多占点

上海网站搭建公司,wordpress 多占点,wordpress创建分类目录,网络推广怎么样1、前言背景 工作需要域间实现zmq通信,刚开始需要比较简单的数据结构,比如两个bool,后面可能就需要传输比较大的数据,所以记录下实现流程,至于为啥选择proto数据结构去做大数据传输,可能是地平线也用这个&…

1、前言背景

工作需要域间实现zmq通信,刚开始需要比较简单的数据结构,比如两个bool,后面可能就需要传输比较大的数据,所以记录下实现流程,至于为啥选择proto数据结构去做大数据传输,可能是地平线也用这个,那继续当cv工程师

2、protobuf源码编译

下载proto的编译源码 我比较喜欢源码编译 方便跟现有代码做兼容

Release Protocol Buffers v3.6.1 · protocolbuffers/protobuf · GitHub

proto 3.6.1是工作原有编译环境编译工具链的版本 所以也下载这个版本,根据自己需要版本即可,大同小异的东西

电脑环境安装,不装执行会报错

udo apt-get update
sudo apt-get install g++ gcc cmake
sudo apt-get install autoconf
sudo apt-get install libtool
cd protobuf-3.6.1/
./autogen.sh
./configure --prefix=/home/qhr/Downloads/protobuf/install
make       (时间较长 等)
make install

生成可执行文件在bin  头include和库lib在下面,因为工具链里已经有了  就不需要 我们只要bin /protoc可执行文件就行,去生成proto头文件

3、生成proto头文件

随便搞个数据结构

// 指定采用 proto3 语法
syntax = "proto3";

// 相当于命名空间
package contacts;

message PeopleInfo{
    string name = 1;    //不是赋值,而是指定唯一编号
    int32 age = 2;
}

install/bin/protoc --cpp_out=. people.proto

protoc:编译工具
–proto_path:指定 .proto 文件的检索路径,可以多次指定指定。不指定默认在当前文件夹下检索。可以简写为 -I.
–cpp_out:指定编译后的文件类型为C++
DST_DIR:指定文件的生活生成路径
file.proto:指定要编译的 .proto 文件(–proto_path 路径下的)

执行后在本地生成people.pb.cc  people.pb.h两个文件,后面再用

或者定义一个稍微复杂的数据结构

syntax = "proto3"; // 指定使用 proto3 语法

package myexample; // 定义包名,避免不同项目之间的命名冲突

// Address message definition

message Address {

string street = 1;

string city = 2;

string state = 3;

string zip_code = 4;

string country = 5; }

// Person message definition, which includes an Address

message Person {

string name = 1;

int32 id = 2; // Unique ID number for this person

string email = 3;

// A person can have multiple addresses repeated

Address addresses = 4; }

在这个例子中:

  • syntax = "proto3"; 行指定了使用的语法版本为 proto3。这是最新的版本,并且简化了某些规则。
  • package myexample; 行定义了一个包名 myexample,这有助于防止名称冲突,特别是在大型项目或库中。
  • Address 是一个消息类型,它包含了街道、城市、州/省、邮政编码和国家等字段。
  • Person 是另一个消息类型,它除了包含人的姓名、ID 和电子邮件地址之外,还有一个名为 addresses 的字段,这个字段是一个 repeated 类型,意味着它可以包含零个或多个 Address 实例。

4、zmq通信代码架构

不多逼逼  直接上代码  (只剥离出一部分通信代码)

zmq_subscriber.h


#ifndef _ZMQ_SUBSCRIBER_H_
#define _ZMQ_SUBSCRIBER_H_#include <iostream>
#include <chrono>
#include <iomanip>
#include <sstream>#include <memory>
#include <thread>
#include <functional>
#include <atomic>namespace 1121212
{
class zmq_subscriber
{
public:zmq_subscriber();~zmq_subscriber();void Init(std::string name, std::string ip_port, uint32_t timeout);void Start();void HandleZmqMessage();private:zmq::context_t                 context_;std::shared_ptr<zmq::socket_t> subscriber_ptr_;std::string                    zmq_name_;std::string                    ip_port_;uint32_t                       timeout_;std::shared_ptr<std::thread>   thread_ = nullptr;zmq::pollitem_t                items_[1];std::atomic<bool>              running_{true};};}  // namespace 22221212#endif  //_ZMQ_SUBSCRIBER_H_

zmq_subscriber.cpp

#include "zmq_subscriber.h"namespace 121212
{zmq_subscriber::zmq_subscriber()
{}zmq_subscriber::~zmq_subscriber()
{std::cout << "zmq_subscriber class destruct" << std::endl;subscriber_ptr_->disconnect(ip_port_);running_.store(false);if ((thread_ != nullptr) && (thread_->joinable())){thread_->join();}
}void zmq_subscriber::Init(std::string name, std::string ip_port, uint32_t timeout)
{zmq_name_       = name;ip_port_        = ip_port;timeout_        = timeout;subscriber_ptr_ = std::make_shared<zmq::socket_t>(context_, ZMQ_SUB);subscriber_ptr_->connect(ip_port_);  // "tcp://localhost:5555"subscriber_ptr_->setsockopt(ZMQ_SUBSCRIBE, "", 0);subscriber_ptr_->setsockopt(ZMQ_RCVTIMEO, timeout);items_[0].socket  = static_cast<void*>(subscriber_ptr_->handle());items_[0].fd      = 0;items_[0].events  = ZMQ_POLLIN;items_[0].revents = 0;
}void zmq_subscriber::Start()
{thread_ = std::make_shared<std::thread>(std::bind(&zmq_subscriber::HandleZmqMessage, this));
}void zmq_subscriber::HandleZmqMessage()
{pthread_setname_np(pthread_self(), zmq_name_.c_str());while (true){zmq::poll(&items_[0], 1, 1000);if (!running_.load()){break;}if (items_[0].revents & ZMQ_POLLIN){zmq::message_t message;//do something}}else{cout << zmq_name_ << " " << ip_port_ << " ZMQ TimeOut!!!";}}
}}  // namespace 121212

以为工作只用订阅,如果需要收发的代码 ,移步:[ZMQ] -- ZMQ通信收发多个Proto数据结构 2-CSDN博客

参考链接:

【protobuf】ProtoBuf——快速上手protobuf、创建.proto文件、编译.proto文件、序列化与反序列化的使用-CSDN博客【Protobuf速成指南】.proto文件的编写与编译-CSDN博客

http://www.yayakq.cn/news/848062/

相关文章:

  • 兰州网站建设模板下载湛江有帮公司做网站
  • 网站网页建设论文温州网站改版公司
  • 在常熟市公司网站建设哪家好做网站还需要续费
  • 华龙建设部网站查不到ppt代做网站
  • 在哪个网站可以找做海报的模板重庆网站建设优斗士
  • 哈尔滨模板建站品牌深圳百度网站建设
  • 移动网站建设指南天津美容网站建设
  • 无锡哪里有建设网站wordpress 内网
  • 营销方案网站制作相册软件下载
  • 开o2o网站需要什么手续电商公司简介模板
  • 网站开发与维护的相关大学做外贸需要用什么网站
  • 云南建设网站首页可以打开任何网站的软件
  • 威海建设招聘信息网站淄博企业网站设计公司
  • 静态网站挂马怎样用ps做网站
  • 广东省建设工程金匠奖公布网站300元建站
  • 淘宝客api调用到网站凡客诚品是什么牌子
  • 显示网站建设中做化妆品的网站有哪些
  • 快速网站价格网站上截小屏幕 怎么做
  • 做区域县城招聘网站青岛网站建设哪家好
  • 怎么用7牛云做网站建设网上银行怎么开通
  • 保定网络营销网站济南建站公司效果
  • 骆诗网站建设大埔县住房和城乡规划建设局网站
  • 个人网站首页布局网站建设大作业感想
  • 上海专业建站公江西中创建设工程有限公司网站
  • 阿里云1M做网站wordpress 数据库ip
  • 网站什么认证对做电商好长沙电商运营公司排名
  • 做pc网站会连带手机版广州网站开发定制公司
  • 网站如何做反爬品牌网站建设哪个好
  • 企业网站推广模式建设企业网站e路护航官网企业端
  • 有什么网站可以做家教高权重网站做员会来顶排名