Skip to content

Programming of Backend

REST API设计的最佳实践

前言

注:这是一篇英文翻译,原文标题 REST API Design Best Practices, 作者是Dr Milan Milanović

原文: https://newsletter.techworld-with-milan.com/p/rest-api-design-best-practices

术语 API(Application Programming Interface),指定是在多个程序服务之间的一种通信方式,一般是在叫做客户端(client)和服务器(server)之间传递请求(request)和响应(response)。

CStdString:一个跨平台的字符串类实现

引言

A Drop-In replacement for CString that builds on the Standard C++ Library's basic_string template

在C++标准库中有一个std::string字符串类实现,但它的功能简陋一些;而在VC++ MFC中有一个CString类,提供了丰富的字符串操作接口。

CStdString是一个类似CString操作接口的、跨平台的字符串类实现,作者是Joe O'Leary,使用它只需要包含整个头文件StdString.h

Protocol Buffers: 谷歌开源的数据交换格式协议

引言

仓库:https://github.com/protocolbuffers/protobuf

文档:https://protobuf.dev/

protobuf(Protocal Buffers)是广泛使用的序列化、数据交换开源库,在RPC框架brpc、grpc和TensorFlow中都有使用到。

  • 直接安装软件包:
$ apt-get install libprotobuf-dev libprotoc-dev protobuf-compiler

$ protoc --version
libprotoc 3.6.1

用readline库改进REPL交互体验

The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in.

引言

GNU readline库是广泛使用的C语言库,在EmacsVi中都有使用到:

这篇将使用此库建立一个简单的REPL,具备一定的交互能力,然后通过默认配置文件以支持中文输入。

C++疑难杂症(1): 小心std::variant中的bool类型值

引言

比如有这样一段代码:

#include <iostream>
#include <string>
#include <variant>
#include <cassert>

int main(){

  std::variant<std::string, int ,bool, long long int> value{"y"};

  if(std::holds_alternative<std::string>(value)){
    std::cout << "it's  a std::string: " << std::get<std::string>(value) << std::endl;
  }else if (value.index() == 0){
    std::cout << "it's a string: " << std::get<std::string>(value) << std::endl;
  }else if (value.index() == 1){
    std::cout << "it's a int: " << std::get<int>(value) << std::endl;
 }else if (value.index() == 2){
    std::cout << "it's a bool: " << std::get<bool>(value) << std::endl;
  }
}

C++语言导学(8): 模板

引言

模板是一个很复杂的主题,这里只涉及最基础的部分。

模板(template)是一个类或一个函数,可以用一组类型或值来进行参数化。

模板是一种编译时机制,一个模板加上一组模板实参被称为特例化,会由编译器根据实参自动生成对应的代码进而编译。