基于protobuf和httplib的在线通讯录项目框架|Protobuf应用小项目

news2024/12/23 17:39:01

前言

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。

高质量博客汇总icon-default.png?t=N6B9https://blog.csdn.net/yu_cblog/category_12379430.html

项目简介

本项目是博主在学习protobuf的同时,顺便学用了一下httplib做的,技术含量不算特别高。不过我也封装好分享给大家了。希望大家能学到东西。

项目地址

GitHub - Yufccode/An-AddrBook-Framework-based-on-Protobuf-and-httplib: An online address book project framework based on protobuf and httplib 基于protobuf和httplib的在线通讯录项目框架。An online address book project framework based on protobuf and httplib 基于protobuf和httplib的在线通讯录项目框架。 - GitHub - Yufccode/An-AddrBook-Framework-based-on-Protobuf-and-httplib: An online address book project framework based on protobuf and httplib 基于protobuf和httplib的在线通讯录项目框架。https://github.com/Yufccode/An-AddrBook-Framework-based-on-Protobuf-and-httplib

README

An online address book project framework based on protobuf and httplib

基于protobuf和httplib的在线通讯录项目框架。

最新更新日期

2023年8月20日

项目需求

P将实现一个网络版本的通讯录,模拟实现客户端与服务端的交互,通过 Protobuf 来实现各端之间的协议序列化。

需求如下:

客户端可以选择对通讯录进行以下操作:

  • 新增一个联系人

  • 删除一个联系人

  • 查询通讯录列表

  • 查询一个联系人的详细信息

  • 服务端提供增、删、查能力,并需要持久化通讯录。

  • 客户端、服务端间的交互数据使用 Protobuf 来完成

注意:鉴于作者只是利用本项目学习和使用P融通部分工具,因此,本Github仓库中只完成了项目框架,没有实现整个项目。后续作者会继续更新和完善此项目。

完整项目可见另一位作者:protobuf: protobuf 教学仓库 - Gitee.com

本仓库完成内容:

  • 搭建了客户端和服务端的基本框架

  • 实现了使用protobuf新增联系人的功能,但暂时没有实现联系人功能的本地存储,只实现了服务端stdout的信息打印。

  • 项目使用httplib库作为服务器,地址:GitHub - yhirose/cpp-httplib: A C++ header-only HTTP/HTTPS server and client libraryA C++ header-only HTTP/HTTPS server and client library - GitHub - yhirose/cpp-httplib: A C++ header-only HTTP/HTTPS server and client libraryhttps://github.com/yhirose/cpp-httplib。有兴趣的读者,可以下载我另一个仓库中的Reactor服务器作为底层来使用:GitHub - Yufccode/Reactor-based-HyperWebServer: A high-performance web server based on the multiplexer actor mode, with an underlying implementation using the epoll modelA high-performance web server based on the multiplexer actor mode, with an underlying implementation using the epoll model - GitHub - Yufccode/Reactor-based-HyperWebServer: A high-performance web server based on the multiplexer actor mode, with an underlying implementation using the epoll modelhttps://github.com/Yufccode/Reactor-based-HyperWebServer

项目运行

目录结构

升级GCC

如果使用 centOS 环境,yum源带的g++ 最新版本是4.8.5,发布于2015年,年代久远。编译该项目会出现异常。将 gcc/g++ 升级为更高版本可解决问题。

升级参考:CentOS 7上升级/安装gcc - 掘金CentOS 7官方源带的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必须要升级现有版本或者安装高版本的gcc。 问题的解决办法主要有两种:手动编译安装(也可以从其他机器拷贝或者网上下载),或从源安装。大多数情况下本人都…https://juejin.cn/post/6844903873111392263

Protobuf安装

参考博客:http://t.csdn.cn/FMs7Gicon-default.png?t=N6B9http://t.csdn.cn/FMs7G

运行项目

准备好环境之后就可以直接make Client和Server里面的makefile进行客户端和服务端的运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/905077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习设计模式之适配器模式,但是宝可梦

前言 作者在准备秋招中,学习设计模式,做点小笔记,用宝可梦为场景举例,有错误欢迎指出。 适配器模式 意图:将一个类的接口转换成客户希望的另一个接口 主要解决:把现有对象放到新环境里,而新…

leetcode几个数组题

数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合 因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址 二分查找 移除元素 有序数组的平方 209.长度最小的子数组

设计模式——开闭原则

文章目录 基本介绍看下面一段代码方式 1 的优缺点改进的思路分析 基本介绍 开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则 一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽…

wustoj2008折扣

#include <stdio.h> int main() {int n,m;double c;scanf("%d%d",&n,&m);cn*(m/10.00);printf("%.2lf",c);return 0;}

茂名 湛江阳江某学校 ibm x3850服务器维修经历

简介&#xff1a;中国广东省阳江市某中学联想 IBM System x3850 x6服务器维修 io板故障处理经历分享&#xff1a; 这一天一位阳江的老师经其他学校老师介绍推荐对接我&#xff0c;说他们学校有一台ibm服务器出问题了&#xff0c;老师大致跟我描述了一下这台服务器发生故障的前…

3、Spring之底层架构核心概念解析

BeanDefinition BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如: class,表示Bean类型scope,表示Bean作用域,单例或原型等lazyInit:表示Bean是否是懒加载initMethodName:表示Bean初始化时要执行的方法destroyMethodName:表示Be…

【算法刷题之数组篇(1)】

目录 1.leetcode-59. 螺旋矩阵 II&#xff08;题2.题3相当于二分变形&#xff09;2.leetcode-33. 搜索旋转排序数组3.leetcode-81. 搜索旋转排序数组 II(与题目2对比理解)&#xff08;题4和题5都是排序双指针&#xff09;4.leetcode-15. 三数之和5.leetcode-18. 四数之和6.leet…

Python制作爱心并打包成手机端可执行文件

前言 本文是想要将python代码打包成在手机上能执行的文件 尝试了几个库&#xff0c; 有这也那样的限制&#xff0c;最终还是选了BeeWare 环境&#xff1a;python3.7.x 开始 找到打包有相关工具os-android-apk-builder&#xff0c;buildozer&#xff0c;cx_Freeze&#xff…

AMBA总线协议(1)——概述

目录 一、AMBA总线简介 二、基于AMBA 的典型微控制器 三、AHB介绍 1、概述 2、典型结构 &#xff08;1&#xff09; AHB 主机&#xff08;AHB Master&#xff09; &#xff08;2&#xff09;AHB 从机&#xff08;AHB Slave&#xff09; &#xff08;3&#xff09;AHB 仲裁…

基础论文学习(1)——ViT

https://zhuanlan.zhihu.com/p/308301901 1 图片分块和降维 因为transformer encoder的输入需要序列&#xff0c;所以最简单做法就是把图片切分为patch&#xff0c;然后拉成序列即可。 假设输入图片大小是256x256&#xff0c;打算分成64个patch&#xff0c;每个patch是32x32…

[MySQL]02关于事务的解析

目录 原子性 一致性 持久性 隔离性 事务隔离级别 并发执行可能存在问题 脏读问题 不可重复读 幻读 难点解析 原子性 事务最核心的就是原子性 以前人们认为原子不可再分&#xff0c;用原子性来表示一个事务不可分割 update account set balancebalance-500 where nam…

Go语言入门指南:基础语法和常用特性(下)

上一节&#xff0c;我们了解Go语言特性以及第一个Go语言程序——Hello World&#xff0c;这一节就让我们更深入的了解一下Go语言的**基础语法**吧&#xff01; 一、行分隔符 在 Go 程序中&#xff0c;一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ;…

MySQL基础篇(二)

DML 定义&#xff1a;Data Manipulation Language、数据操作语言&#xff08;增删改&#xff09; 添加数据&#xff08;INSERT&#xff09;修改数据&#xff08;UPDATE&#xff09;删除数据&#xff08;DELETE&#xff09; 添加数据&#xff08;INSERT&#xff09; 给指定的…

day0818

1. #include <myhead.h> int file_len(const char*strfile, const char*dstfile); void file_copy(const char* strfile, const char* dstfile, int start, int size); int main(int argc, const char *argv[]) {//判断是否传入两个文件if(argc!3){printf("input fi…

最新消息:谷歌将在Chromebook上运用UWB技术,无线通信更上一层

超宽带&#xff08;UWB&#xff09;技术是一种创新的短距离无线通信技术&#xff0c;具有高速数据传输和精确定位物体位置的优势。尽管该技术已经存在一段时间&#xff0c;但最近开始广泛应用于各种设备中。据最新报道&#xff0c;Pixel Watch 2可能会搭载UWB模块&#xff0c;这…

VSCode之C++ SQLite3 SmartDB实现

背景 承接上篇VSCode配置之C & SQLite3极简配置方案&#xff0c;参考《深入应用C11: 代码优化与工程级应用》&#xff0c;基于VSCodeCmake无痛实现SmartDB。 GitHub路径&#xff1a; smartDB_tutorial 结果展示 主要变化(与SmartDB1.3相比&#xff09; 1&#xff09;使用…

【【萌新的STM32学习-11】】

萌新的STM32学习-11 终于进入了正点原子的入门篇进行一些简单的设计 GPIO General Purpose Input Output 通用输入输出端口 简称GPIO 作用 &#xff1a;负责采集外部器件的信息或者控制外部器件工作&#xff0c;即输入输出 GPIO 的特点 1&#xff0c;不同型号&#xff0c;IO数…

HTML浪漫动态表白代码+音乐(附源码)(二)

一. 前言 七夕马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家加几款实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;求爱表白等场景&#xff0c;可直接使用。 来吧&#xff0c;展示&am…

第 7 章 排序算法(3)(选择排序)

7.6选择排序 7.6.1基本介绍 选择式排序也属于内部排序法&#xff0c;是从欲排序的数据中&#xff0c;按指定的规则选出某一元素&#xff0c;再依规定交换位置后达到排序的目的。 7.6.2选择排序思想: 选择排序&#xff08;select sorting&#xff09;也是一种简单的排序方法…

13.PV和PVC

文章目录 PV和PVC概念定义PV定义PVC创建静态PV和PVC创建动态PV和PVCNFS配置创建 Service Account和角色创建存储卷插件创建 StorageClass创建PVC创建pod 总结 PV和PVC 概念 PV 全称叫做 Persistent Volume&#xff0c;持久化存储卷。它是用来描述或者说用来定义一个存储卷的&…