# cat **Repository Path**: helloworldghh/cat ## Basic Information - **Project Name**: cat - **Description**: c++ http server - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-19 - **Last Updated**: 2026-04-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cat ## 介绍 c++ http server,可以让c++同样做web后端开发。 ## 软件架构 1、全异步,无阻塞 2、插件式。所有插件相同接口。支持servlet,jsp模板可以编译为插件,支持filter,listener。。。 3、支持热替换。包括插件及普通http服务端文件的替换,是真正的平滑替换,内部有引用计数,非野蛮替换,即使服务压力非常大的情况下,对服务仍然没有影响。 4、共享复制栈协程,数据库及其它需要异步的操作,都可以同步化。并且,占用了最少的内存,因为是共享复制栈协程。 5、请求处理,同一请求整个处理过程中使用同一个线程,所以不存在并发问题。但是,可能和其它请求共用线程。 6、请求处理,阻塞和非阻塞分开。真正的数据库操作会投递到数据库线程,不会影响业务线程。只会在协程中等待数据库操作,不会卡住线程。 6、消息模式。请求的处理过程,会被拆为很多小的部分,分别完成,所以一个请求不会卡住线程。没有同步卡线程的情况。 ## 功能介绍 1、动态库插件式开发。提供插件开发框架,只需要处理业务部分 2、支持类jsp模板,可以嵌入c++代码。提供程序将模板编译为c++的cpp,并提供对应的插件框架,最终编译为插件。一切都是自动的。 3、可以根据配置自动压缩指定格式及大小的文件成为缓,返回给前端。 4、使用odbc方式访问数据库。只要odbc支持的数据库,都天然支持。 5、数据库操作是同步的,但是实现却是协程异步的,不会阻塞线程。 6、真正的数据库操作,会被投递到数据库线程,在这里是真正执行的地方,并且确实会卡住这些数据库线程。 7、支持https。 ## 项目依赖 [本项目依赖](https://gitee.com/helloworldghh/xos) 请务必移步过去了解。我会提供各平台编译好的,直接可用的二进制包。 ## 运行例子 1、证书 如果想使用https方式运行服务端,可以安装我提供的证书例子,不然浏览器会提示不安全: xos_http/certs/ssl: rootCA.crt 当然你也可以自己制作证书,或者使用申请的真正证书。 并且,有些浏览器不使用系统安装的证书,比如firefox,所以需要把证书安装到浏览器中才行. 2、数据库 为了简单,我使用了sqlite数据库。但是同样需要安装sqlite的驱动程序。 在windows下的二进制包中,我提供了驱动程序,只要自己安装就行。在其它平台上自行安装。 其它平台还需要自己配置unixodbc,就是把安装的驱动配置到unixodbc的配置文件中。 本程序静态编译了unixodbc,在除windows平台的其它平台中,默认unixodbc配置文件的位置为:/usr/local/etc/unixodbc.ini 对于不懂的人来说,可能无论我如何说,都难以听明白。好在,在windows下是傻瓜式的,只要安装了sqlite的odbc驱动就可以了。