# Demo **Repository Path**: threadfly/Demo ## Basic Information - **Project Name**: Demo - **Description**: 用 go 语言写一个读写数据库的demo, 用自己写的数据库连接池 - **Primary Language**: Go - **License**: LGPL-2.1 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2016-03-13 - **Last Updated**: 2021-11-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #Demo 1. 这是一个读写数据库的demo,本来很简单的,但是绝对就这样简单的几个SQL语句,那是没有什么意义的, 所以花了了几个小时写了一个待完善的数据任务池,来加快数据库的并发查询,这样才能体现到Golang语言原生支持并发操作所带来的优势; 2. demo用到了golang的几个特性: a. goroutine b. 非侵入式接口 c. 多值返回 d. map和slice f. 变量自动初始化 3. 数据库任务池(连接池)的结构大致如下: | -> X.1 goroutine 处理 // 如果是 UPDATE、INSERT、 | // DELETE操作没有消息返回 | | 消息返回管道 | -> X.2 goroutine 处理 -> =========== -> // 业务逻辑读取SELECT返回结果 X 号数据库查询管道 | // ,或者是用户约定的操作结果 Query -> ============== --->| -> X.3 goroutine 处理 | | -> X.4 goroutine 处理 | | -> X.5 goroutine 处理 | ...... | ...... | ...... | -> Y.1 goroutine 处理 | | -> Y.2 goroutine 处理 Y 号数据库查询管道 | Query -> ============== --->| -> Y.3 goroutine 处理 | | 消息返回管道 | -> Y.4 goroutine 处理 -> =========== -> 业务逻辑读取 | | -> Y.5 goroutine 处理 | ...... | ...... | ...... ...... ...... ...... 4. 操作的数据库、数据库任务池链接数量可配置化; 5. 预留了接口处理数据库任务池运行期间的状态变化,以及针对状态产生不同的新增或者减少数据库连接数, 但该接口还未实现;