分布式系统概述
...
jsoncpp json解析组件
Json库概述 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持 JSON JSON 具有自我描述性,更易理解 简而言之: JSON就是可以帮助我们对数据进行序列化和反序列化。 JSON在C++上的库为jsoncpp Jsoncpp在Ubunto 20.04上的安装1sudo apt install libjsoncpp-dev Json库文件: Json的动静态库: 带Json库的C++编译指令: Jsoncpp的使用编译选项1g++ -o $@ $^ -std=c++11 -ljsoncpp 头文件1#include...
Etcd网络组件
ETCD概述Etcd是一个golang编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等。它使用Raft一致性算法来保持集群数据的一致性,且客户端通过长连接watch功能,能够及时收到数据变化通知,相较于Zookeeper框架更加轻量化。以下是关于etcd的安装与使用方法的详细介绍。 节点配置如果是单节点集群其实就可以不用进行配置,默认etcd的集群节点通信端口为2380,客户端访问端口为2379。若需要修改,则可以配置:/etc/default/etcd 1234567891011121314151617181920212223242526272829303132333435# 节点名称,默认为 "default" ETCD_NAME="etcd1" # 数据目录,默认为 "${name}.etcd" ETCD_DATA_DIR="/var/lib/etcd/default.etcd"# 用于客户端连接的 URL。...
gtest集成测试组件
Gtest概述GTest是一个跨平台的C++单元测试框架,由google公司发布。gtest是为了在不同平台上为编写C++单元测试而生成的。它提供了丰富的断言、致命和非致命判断、参数化等等测试所需的宏,以及全局测试,单元测试组件。 使用头文件 1#include <gtest/gtest.h> 框架初始化接口 1testing::InitGoogleTest(&argc, argv); 调用测试样例 1RUN_ALL_TESTS(); CMake 12345678910111213141516171819202122232425cmake_minimum_required(VERSION 3.10)project(main)include(CheckCXXCompilerFlag)CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17)CHECK_CXX_COMPILER_FLAG("-std=c++11"...
spdlog日志组件
Spdlog介绍spdlog 是一个高性能、超快速、零配置的C++ 日志库,它旨在提供简洁的API 和丰富的功能,同时保持高性能的日志记录。它支持多种输出目标、格式化选项、线程安全以及异步日志记录。以下是对spdlog 的详细介绍和使用方法。 github链接:https://github.com/gabime/spdlog 特点 高性能:spdlog 专为速度而设计,即使在高负载情况下也能保持良好的性能。 零配置:无需复杂的配置,只需包含头文件即可在项目中使用。 异步日志:支持异步日志记录,减少对主线程的影响。 格式化:支持自定义日志消息的格式化,包括时间戳、线程ID、日志级别等。 多平台:跨平台兼容,支持Windows、Linux、macOS 等操作系统。 丰富的 API:提供丰富的日志级别和操作符重载,方便记录各种类型的日志。 spdlog与glog组件对比glog 和spdlog 都是流行的C++...
gflags命令行参数组件
Gflags概述gflags是Google开发的一个开源库,用于C++应用程序中命令行参数的声明、定义和解析。gflags库提供了一种简单的方式来添加、解析和文档化命令行标志(flags),使得程序可以根据不同的运行时配置进行调整。它具有如下几个特点: 易于使用:gflags 提供了一套简单直观的API 来定义和解析命令行标志,使得开发者可以轻松地为应用程序添加新的参数。 自动帮助和文档:gflags 可以自动生成每个标志的帮助信息和文档,这有助于用户理解如何使用程序及其参数。 类型安全:gflags 支持多种数据类型的标志,包括布尔值、整数、字符串等,并且提供了类型检查和转换。 多平台支持:gflags 可以在多种操作系统上使用,包括Windows、Linux 和macOS。 可扩展性:gflags 允许开发者自定义标志的注册和解析逻辑,提供了强大的扩展性。 官方文档:...
Redis内部数据结构
Redis数据结构概述 字符串:等同于std::string 哈希:等同于std::unoredered_map 列表:等同于std::vector 集合:等同于std::set 有序集合:等同于std::map 数据结构:redis中hash背后的实现,不一定是一个标准的哈希表。在特定的场景下,使用别的数据结构实现,但是保证时间复杂度符合承诺。编码方式:redis内部底层的实现。redis所有的key都是字符串,value的类型是存在差异的 数据结构和内部编码 数据结构 内部编码 介绍 string raw 最基本的字符串(底层就是持有一个char数组) int redis通常也会用来实现一些计数这样的功能,当value就是一个整数的时候此时可能redis会直接使用int来保存 embstr 针对短字符串进行特殊优化 ...
Redis基本指令
redis基本指令redis中最核心的两个命令set123456789user@Ubuntu:~$ SET key value [expiration EX seconds | PX milliseconds] [NX|XX]SET key value expiration EX seconds:设置key并设置过期时间(单位是秒)SET key value expiration PX seconds:设置key并设置过期时间(单位是毫秒)[NX|XX]:如果key存在,更新key和value如果key不存在,创建新的键值对,原来的ttl会失效 redis文档给出的语法格式说明: []相当于一个独立的单元,表示可选项(可有可无的)其中 | 表示 “或者” 的意思,多个只能出现一个。[]和[]之间,是可以同时存在的。 12345678127.0.0.1:6379> set key1 123 ex 10OK127.0.0.1:6379> ttl key1(integer) 6127.0.0.1:6379> ttl key1(integer)...
Redis单线程模型
...
Redis指令概述
redis指令redis服务器指令重启redis服务器 1user@Ubuntu:~$ service redis-server restart 查看redis服务器状态 12345678910111213141516user@Ubuntu:~$ sudo service redis-server status● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-09-17 19:12:13 CST; 20s ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 14011...





