Skip to content

Latest commit

 

History

History
112 lines (77 loc) · 3.82 KB

README-zh.md

File metadata and controls

112 lines (77 loc) · 3.82 KB

HCore {#mainpage}

介绍

这是一个高性能的C接口库(High performance C Core Library)。

决定编写这个接口库的起因是因为在 Nginx 开发过程中,爱上了其优秀的编码规范、API和数据结构。比如:ngx_pool_t, ngx_str_tngx_queue_t等。这些接口复用率高而且有很好的性能优势。但遗憾的是,它们只能在Nginx的项目中使用,有较强的绑定关系。为此,我决定着手将它们从Nginx中分离出来,从而诞生了HCore的原型。目前该接口仅支持Linux x86_64系统。

当然,在以此为原型后,我加入了我在C开发中积累的经验,对接口进行了优化和扩展。也增加了很多新的接口,希望可以加速 C 程序的开发过程,成为高效稳定的基础。


开发

初始化

获取源代码后,用以下两个命令获取子模块代码:

git submodule init
git submodule update

开发环境

在拥有容器环境的主机上:

  • 方法一(推荐):支持通过VSCodeRemote - Containers插件进行容器式开发以这种方式可以免除搭建开发环境的困恼
    • 通过Remote - Containers插件运行开发环境后,执行./build.sh进行构建即可。
  • 方法二:执行命令./build.sh -d进行构建,该方法会构建镜像并运行容器,在容器中进行编译等操作

在非容器环境的主机上:

  1. 安装依赖
    • cmake:v3.0.0以上
    • gcc
  2. 构建:./build.sh

目录结构介绍

hcore
├── build.sh                    # 构建脚本
├── CMakeLists.txt.in           # 用来生成 CMakeLists.txt 的模板文件
├── Config.cmake.in             # 用来生成 配置信息(Config.cmake) 的模板文件
├── CPackConfig-debug.cmake     # Debug版本的打包配置文件
├── CPackConfig-release.cmake   # Release版本的打包配置文件
├── Dockerfile
├── docs                        # 文档目录
├── Doxyfile                    # Doxygen 配置文件
├── googletest
├── hcore_config.h.in
├── include                     # 头文件目录
├── Jenkinsfile
├── LICENSE                     # License文件
├── README.md -> ./docs/README-zh.md
├── src                         # 源码目录
├── tests                       # 单元测试目录
├── tools-dev                   # 开发工具

API概述

日志(hcore_log)

日志文件:hcore_log.h

用于记录程序日志的日志接口。支持常见的8个日志级别,且能够用_HCORE_DEBUG去控制调试日志是否编译到程序中,以区分调试版本和正式版本。

支持的日志级别从高到低分别为:

  • 标准错误(Standard Error)
  • 严重(Emergency)
  • 警报(Alert)
  • 危险的(Critical)
  • 错误(Error)
  • 警告(Warning)
  • 通知(Notice)
  • 信息(Informational)
  • 调试(Debug)

示例

docs/example/e_log.c

运行后可以在/var/log/myqpp.log中看到与下方类似的日志内容:

2023/06/28 10:29:22 -0000 UTC [ debug] 12417 unknown: (0) This is a debug message.
2023/06/28 10:29:22 -0000 UTC [  warn] 12417 unknown: (0) This is a warning message.
2023/06/28 10:29:22 -0000 UTC [ error] 12417 unknown: (0) This is an error message.
2023/06/28 10:29:22 -0000 UTC [ debug] 12417 unknown: (0) run cleanup: 0000000001DA8390

内存池(hcore_pool)

内存池文件:hcore_pool.h

内存池是一种内存管理机制,它可以在内存中分配一块连续的内存空间,然后按需分配给程序使用。内存池的好处是可以减少内存碎片,提高内存的利用率。

示例

[docs/example/e_pool.c]

接口性能

待完善