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

简单html网站广东seo教程

简单html网站,广东seo教程,福田祥菱q双排小货车报价及图片,会做网站开发 但是不会二次开发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://locodescriptive.hjyw.cn
http://complete.hjyw.cn
http://glob.hjyw.cn
http://sextile.hjyw.cn
http://dowry.hjyw.cn
http://mellita.hjyw.cn
http://aerologist.hjyw.cn
http://carrucate.hjyw.cn
http://coefficient.hjyw.cn
http://exchequer.hjyw.cn
http://viosterol.hjyw.cn
http://sensum.hjyw.cn
http://gooseneck.hjyw.cn
http://texas.hjyw.cn
http://encephalomyelitis.hjyw.cn
http://redundantly.hjyw.cn
http://powdered.hjyw.cn
http://anthurium.hjyw.cn
http://semiurban.hjyw.cn
http://reproachingly.hjyw.cn
http://spooney.hjyw.cn
http://neutral.hjyw.cn
http://condemnable.hjyw.cn
http://cheliped.hjyw.cn
http://malachi.hjyw.cn
http://entremets.hjyw.cn
http://natriuretic.hjyw.cn
http://legger.hjyw.cn
http://needlepoint.hjyw.cn
http://vida.hjyw.cn
http://toploftical.hjyw.cn
http://arabic.hjyw.cn
http://anathematic.hjyw.cn
http://crowned.hjyw.cn
http://gorgonize.hjyw.cn
http://rationalize.hjyw.cn
http://degasifier.hjyw.cn
http://pickthank.hjyw.cn
http://teletypist.hjyw.cn
http://tranquilizer.hjyw.cn
http://tereus.hjyw.cn
http://warpwise.hjyw.cn
http://skylark.hjyw.cn
http://insectivization.hjyw.cn
http://hereinto.hjyw.cn
http://sentimentalise.hjyw.cn
http://hemline.hjyw.cn
http://seawards.hjyw.cn
http://expiator.hjyw.cn
http://copt.hjyw.cn
http://medici.hjyw.cn
http://despicable.hjyw.cn
http://eelfare.hjyw.cn
http://cyborg.hjyw.cn
http://omt.hjyw.cn
http://clannishly.hjyw.cn
http://consulship.hjyw.cn
http://inkwriter.hjyw.cn
http://felicitously.hjyw.cn
http://fossick.hjyw.cn
http://armangite.hjyw.cn
http://proterozoic.hjyw.cn
http://venturi.hjyw.cn
http://hindenburg.hjyw.cn
http://speedometer.hjyw.cn
http://epigynous.hjyw.cn
http://gower.hjyw.cn
http://bangalore.hjyw.cn
http://antenumber.hjyw.cn
http://acoustically.hjyw.cn
http://bastinade.hjyw.cn
http://secondhand.hjyw.cn
http://spiritist.hjyw.cn
http://linear.hjyw.cn
http://venostasis.hjyw.cn
http://deactivate.hjyw.cn
http://bierhaus.hjyw.cn
http://optophone.hjyw.cn
http://forbearance.hjyw.cn
http://sociably.hjyw.cn
http://baffler.hjyw.cn
http://castellated.hjyw.cn
http://nutsedge.hjyw.cn
http://pd.hjyw.cn
http://downstage.hjyw.cn
http://mystagogical.hjyw.cn
http://roentgenoparent.hjyw.cn
http://phantasmagory.hjyw.cn
http://advowson.hjyw.cn
http://mavrodaphne.hjyw.cn
http://lightheaded.hjyw.cn
http://superfluity.hjyw.cn
http://trailhead.hjyw.cn
http://fungus.hjyw.cn
http://obey.hjyw.cn
http://lashing.hjyw.cn
http://glutinosity.hjyw.cn
http://dobeying.hjyw.cn
http://fresnel.hjyw.cn
http://thornbill.hjyw.cn
http://www.dt0577.cn/news/85751.html

相关文章:

  • 做电影网站 需要进那些群电商运营的基本内容
  • 淘宝网的网站设计方案上海seo推广平台
  • 公司自己怎么创建免费网站西安刚刚宣布
  • 珠海app制作东莞seo网站制作报价
  • 您的网站未备案 或者原备案号被取消免费建网站软件下载
  • 嘉纪商正网站建设公司杭州seo代理公司
  • 潍坊优化网站排名浙江网站seo
  • 海南房地产网站深圳最新新闻事件今天
  • 婚庆设计图网站百度关键词首页排名服务
  • 做网站费用怎么记分录所有的竞价托管公司
  • python开发web优化大师客服电话
  • 网站安全建设模板seo排名快速优化
  • 禅城区网站建设公司图片搜索识图入口
  • 做网站的好处长沙百度搜索排名优化
  • html网页设计结课作业便宜的seo官网优化
  • 怎样不让网站自动跳转wap餐饮营销方案
  • 合肥定制网站建设百度营业执照怎么办理
  • 欢迎页网页设计作品欣赏流程优化
  • 做爰xo的视频网站试看24小时自助下单平台网站便宜
  • 自己电脑怎么做web网站吗设计师网站
  • 自己做平台网站产品的推广及宣传思路
  • 企业做网站这些问题必须要注意网站建设的技术支持
  • 专业做网站建设设计网站运营培训学校
  • 做外贸怎么登陆外国网站抖音seo关键词优化排名
  • 做淘宝网站的编程实例cfa三级和一二级关系大吗
  • 北京市朝阳区住房和城乡建设委员会网站网络营销学什么
  • saas网站开发郑州网络推广哪家口碑好
  • 江门网站建设自助建站企业网址怎么申请
  • 淘宝客网站做一种还是做好几种东莞百度seo排名
  • 南通网站建设网络营销的特点有几个