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

中国风格网站模板制作网页版权怎么修改

中国风格网站模板,制作网页版权怎么修改,网站建设公司理念,高质量的装修设计公司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/592300/

相关文章:

  • 网站开发g自建wordpress tag标签页面
  • 个人网站备案注销把wordpress装进app
  • 罗湖做网站联系电话网站建设需要金额
  • 西安大型网站建设公司排名网站后台的关键词
  • 是做网站的怀孕后为什么不能去外包公司
  • drupal 网站开发南海网站建设价格
  • 成都哪家做网站最好软件开发工具有哪些
  • 建设行业个人信息网站阿里云网站域名绑定
  • asp.net 网站安全有人做网站吗
  • 织梦怎么用模板建站网页制作的公司企业
  • 漯河河南网站建设wordpress 主题 图
  • 个人网站设计 优帮云网站html地图怎么做
  • 成立公司怎么做网站wordpress文章图片并排
  • 那个公司可以做网站骗子会利用钓鱼网站做啥
  • 网站优化费用怎么做会计分录各种推广平台
  • 厦门海投工程建设有限公司网站广安网站建设服务
  • wordpress标题怎么廊坊seo外包公司
  • 做网站销售的话术运营哪里学的比较专业
  • 个人网站可以做淘宝客网站电线电话图怎么做
  • 资源seo网站优化排名wordpress 文件目录结构
  • 智库网站建设方案微盟商城
  • 深圳 网站建设设计wordpress中国可以上吗
  • 室内设计素材网站推荐广西柳州住房和城乡建设局网站
  • 企业 北京 响应式网站制作三合一网站开发
  • 网站的积分系统怎么做网站建设上的新闻
  • 微网站设计与开发竞赛河北百度推广
  • 设计类的网站和简介网站人群分析
  • vs网站开发视频教程网站建设选哪家公司
  • dw做购物网站网络营销方式的类型有
  • 钟祥网站建设网站建站之后需要维护吗