当前位置: 首页 > 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.hkea.cn/news/574399/

相关文章:

  • 日本真人做爰无遮挡视频免费网站嘉兴关键词优化报价
  • 忻州市中小企业局网站贵州整站优化seo平台
  • 网页怎么制作超链接seo兼职接单平台
  • 网站建设中应注意哪些问题重庆整站seo
  • 贵阳网站建设哪家便宜微商软文范例大全100
  • 怎么在微信上做网站竞价交易
  • wordpress优化版4.7.4网站seo设计
  • 网上课程网站精准客户数据采集软件
  • 专业网站建设报价外呼系统电销
  • 网站建设公司价格差别seo还有哪些方面的优化
  • 哪家公司建造了迪士尼乐园关键词优化推广排名多少钱
  • 做教育的网站有哪些内容吗湖南网站营销推广
  • wordpress 跳过ftp搜索引擎排名优化方案
  • 360做的网站北京营销推广公司
  • 我国政府网站建设的趋势宁波seo公司排名榜
  • 高端网站建设,恩愉科技专业的seo搜索引擎优化培训
  • 跨境网站开发公司网站seo思路
  • 冠县网站建设活动推广方案
  • 鲜花培训网站建设网站推广要点
  • 情趣内衣怎么做网站如何制作网页
  • 网站交互技术百度推广登陆后台
  • 网站的推广和宣传方式各行业关键词
  • 腾讯云服务器网站建设淘宝推广哪种方式最好
  • 大专网站建设论文找个免费的网站
  • 移动端网站开发流程图seopeix
  • 购物网站制作免费太原seo招聘
  • 怎么建设食品网站济南seo外包公司
  • 建设网站有哪些seopeix
  • 桂林市工程建设项目招标网站莆田百度快照优化
  • 金华网站建设大型网页建设农产品网络营销