一些总结-C++

news2024/11/26 8:53:33

1.spdlog

需要安装spdlog库,然后连接器增加-lspdlog

不需要复制头文件到目录,安装到机器上之后,从系统目录加载头文件即可。

部分用法:

 2.redis

需要安装hiredis库,链接器-lhiredis

不需要复制头文件到目录,安装到机器上之后,从系统目录加载头文件即可

需要三部:connect,  auth,command

部分用法:

 

 

 3.json

之前用的是cjson,可以说是最简单的了,但是用起来比较麻烦。

现在用的是nlohmann json,更现代一些,用起来很轻松,只不过语法有点怪。

需要从github上取最新的头文件,不需要编译。注意别取错了,他有一个编译的版本、要找到那个单独头文件only的,非常方便。找错了就麻烦了。

引用json.hpp即可。

读取一个嵌套json,这时候语法就比较奇怪了,比如说.value()可以直接用=赋值给vector,这是我没想到的。

此外读取key(),也需要指明是string。

 

 4.tcpshm库

一个轻松用来tcp/共享内存的库,一台机器上就配置成共享内存,跨机器就配置成tcp,可以说是完美契合我们目前需求的库。当然,两套方式接口一样。

只能用于linux

无需编译,直接引用头文件即可。

分为服务端和客户端。

客户端需要connect,然后就阻塞这个进程。等带OnMsg的消息即可。

服务端需要启动,然后等待连接即可。

注意消息号不要定义0,0默认是心跳。

封装的很好,很久没见到这么方便的库了。

  • tcpshm_client.h:客户端模板类。

  • tcpshm_server.h:服务器端模板类。

  • tcpshm_conn.h:封装tcp或shm的通用连接类,使用Alloc()/Push()和Front()/Pop()发送和接收msg。您可以从客户端或服务器端接口获取连接引用,并向其发送消息,即使它当前与远程对等方断开连接。

  • 信号收到之后需要手动pop。再次启动之后可能会读到之前没读到的共享内存中的数据。

  • GitHub - MengRao/tcpshm: A connection-oriented persistent message queue framework based on TCP or SHM(shared memory)

.

 5.一种线程间通信队列的方式

一种普遍的调用方式,使用互斥锁保护队列,使用条件变量进行通知,通过判断队列非空来避免虚假唤醒。

什么是虚假唤醒?

当一定的条件触发时会唤醒很多在阻塞态的线程,但只有部分的线程唤醒是有用的,其余线程的唤醒是多余的。
比如说卖货,如果本来没有货物,突然进了一件货物,这时所有的顾客都被通知了,但是只能一个人买,所以其他人都是无用的通知。

 

 

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

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

相关文章

Java Web HTTP 23.7.4

HTTP 1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在我们日常的生活中,经常会使用浏览器去访问百度、京东等这些网站,这些网站统称为Web网站。如下就是通过浏…

Linux学习之i节点(inode)和数据块操作

touch testfile创建一个空文件testfile。 stat testfile可以看一下文件的inode信息。 ls -li testfile看一下testfile相关信息。 上图中922208是inode号码,也称为inode编号,若是使用ls -i testfile就可以直接看到inode号码。 du -h testfile可以看…

【Unity3D 问题总结】☀️ | 解决LayoutGroup配合Content Size Fitter使用时发生子成员位置错乱问题

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 &…

Android、iOS快速全球化工具

动机 在进行移动端全球化的时候,我们需要根据语言类型准备格式相同,文本不同的好多个文件,如果一个一个翻译显然很浪费时间,如果整篇复制到Google翻译通常翻译出来的文本是没办法直接用的,所以我通过有道云API实现了一…

AIGC:【LLM(三)】——JARVIS:连接ChatGPT和HuggingFace解决AI问题

文章目录 0.摘要1.引言2.相关工作3.HuggingGPT3.1 任务规划3.2 模型选择3.3 任务执行3.4 响应生成 4.限制5.结论6.参考资料 0.摘要 解决具有不同领域和模态的复杂人工智能任务是通往人工通用智能的关键骤。尽管存在丰富的适用于不同领域和模态的人工智能模型,但它们…

Linux系统之iostat命令的基本使用

Linux系统之iostat命令的基本使用 一、iostat命令介绍二、iostat命令帮助1.1 iostat的帮助信息1.2 iostat的选项解释 三、iostat命令的基本使用3.1 查看iostat工具版本3.2 直接使用iostat命令3.3 间隔5秒查看3次信息3.4 只查看磁盘状态3.5 以k或M为单位显示信息 四、查看磁盘I/…

JMM 规范

JMM是Java Memory Model(Java 内存模型)的缩写,是Java虚拟机规范中定义的一套规则,用来规范Java程序在多线程环境下的内存访问方式。其主要作用是保证多线程之间的数据可见性、有序性和原子性。JMM规范定义了一些程序员和JVM实现者…

机器学习(ML)策略

目录 1、正交化的概念 2、单一数字评估指标(Single number evaluation metric) 3、训练/开发/测试集划分 4、迁移学习 5、多任务学习 6、端到端深度学习 1、正交化的概念 正交化是机器学习中一种常用的数据预处理技术,用于减少特征之间…

IMX6ull SPI 协议

一 SPI 简介 1.1 SPI SPI 全称是 Serial Perripheral Interface,也就是串行外围设备接口。 SPI 是 Motorola 公司推出的一种同步串行接口 技术,是一种高速、全双工的同步通信总线, SPI 时钟频率相比 I2C 要高很多,最高可以工作 …

【IT服务管理】MITRE :IT服务管理

定义: 信息技术 (IT) 服务管理 (ITSM) 是解决管理、支持和交付 IT 服务的最佳实践的框架、流程和模型的通用保护伞。IT 服务可能包括(由 NIST 为云计算定义):软件即服务 (SaaS)、平台即服务 (PaaS) 和基础设施即服务 (IaaS)。 关键…

DevExpress WPF Scheduler组件,快速构建性能优异的调度管理器!(下)

在上文中(点击这里回顾>>),我们介绍了DevExpress WPF Scheduler组件中的日历视图、时间轴视图等,在本文中我们将继续带大家了解Scheduler组件的UI/UX自定义等其他功能。 DevExpress WPF拥有120个控件和库,将帮助…

Spring Boot 61:JPA 中的级联类型

Spring Boot 61:JPA 中的级联类型 图源:简书 (jianshu.com) 关系型数据库的增删改查操作会因为有关联关系而存在“级联操作”的需要,体现在 JPA 中,就是实体中会定义的级联类型(Cascade Type)。 JPA 中的…

【二维属性+贪心+双指针】ABC 195 D

D - Shipping Center (atcoder.jp) 题意: 思路: 经典中的经典,二维属性,对于其中的一个关键字排序,然后双指针将合法的可行解放入容器中,再去容器中找最优解,用双指针是因为它具有单调性 这里…

18-Linux 常用命令

目录 1.ls PS:FinalShell设置背景和字体 2.pwd 3.cd PS:认识 Linux 目录结构——Linux 是一个树形目录结构 PS:绝对路径 vs 相对路径 PS:使用 tab 键补全 PS:使用 ctrl c 重新输入 4.touch PS:L…

基于梯度下降算法的无约束函数极值问题求解

基于梯度下降算法的无约束函数极值问题求解 1 知识预警1.1导数1.2偏导数1.3方向导数1.4梯度 2 梯度下降算法3 无约束函数极值问题求解3.1 算例13.1.1 Python编程求解3.1.2 求解结果与可视化 3.2 算例2 Rosenbrock函数3.2.1 Python编程求解3.2.2 求解结果与可视化 1 知识预警 1…

JSON多层级数据自动映射值优化

JSON多层级数据自动映射值优化 FieldMethodHandles结果分析 Spring boot装载模板代码工程中,JSON多层级数据自动映射值只是简单封装JsonPath,对DTO的声明字段做foreach轮询,检查字段注解JPath,然后从JsonPath的解析缓存中读取JPat…

数字孪生三维可视化在海洋能源开发中的应用有哪些?

数字孪生是一种将现实世界中的实体、系统或过程在虚拟世界中重构,并相互映射和交互的领先技术。在能源领域,数字孪生技术可谓大有作为,比如通过实时监测和分析各种数据,提高能源的利用效率、降低能源成本、优化能源分配&#xff0…

【零基础入门学习Python---Python中机器学习和人工智能之快速入门实践】

🚀 零基础入门学习Python🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜…

android_mars老师_获取用户定位

结果展示 MainActivity package com.example.locationmanager;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity;import android.annotation.SuppressLint; import android.content.Context; import android.location.Location; import …

JavaWeb 笔记——3

JavaWeb 笔记——3 JavaWeb技术栈一、HTTP1.1、HTTP介绍1.2、HTTP请求数据格式1.3、HTTP响应数据格式 二、Web服务器 - Tomcat2.1、简介&基本使用2.2、Tomcat配置和部署项目2.3、Web项目结构2.4、创建MavenWeb项目2.5、IDEA集成本地Tomcat2.6、Tomcat-Tomcat Maven插件 三、…