ZeroMQ学习笔记
简介
ZeroMQ是一个高性能的分布式网络库,它的特性包括:
- 看起来像是嵌入式网络库,行为更像是分布式并发库
- 对于集群产品、超级计算领域来说,比TCP更快
- 支持以进程内、IPC、TCP、组播方式携带载荷
- 支持fanout, pubsub, pipeline, req…
7 years ago
0
Apache Storm学习笔记
简介
Apache Storm是一个分布式的实时计算系统,它能够可靠的对无边界的数据流进行处理。与Hadoop的批量处理方式不同,Storm对数据进行的是实时处理。Storm很简单,支持很多编程语言。
Storm的应用场景包括:实时分析、在线机器学习、持续计算…
阅读全文
8 years ago
1
Kafka Streams学习笔记
简介
当前比较流行的实时计算框架包括Apache Storm、Apache Spark等。这些框架的功能强大而全面,但是具有以下缺点:
- 复杂度高,应对某些简单的工作显得笨重
- 部署Storm、Spark等分布式框架需要预留集群支持,增加开发负担
Kafka Str…
阅读全文
8 years ago
0
1
Apache Kafka学习笔记
简介
Apache Kafka(音标/'ka:fka:/)是一个分布式的实时数据处理的基础平台,能够处理每秒百万条数据。它具有三大功能:
- 订阅/发布:类似于传统MOM的功能,将队列、主题合二为一
- 流处理:支持编写可扩容的流处理程序,对实时事件做出响应
- 存储:安全的…
8 years ago
0
Go语言数据库编程
sql包
该包提供了对SQL或者类SQL数据库提供通用访问接口。
代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import "database/sql" import ( // 引入驱动包 _ "github.com/go-sql-driver/mysql" "log" ) func main() { // 打开数据库连接 db, _ := sql.Open(driver, dataSourceName) // 直到发起第一个查询,并不会真正打开连接 // 下面的命令可以验证连接是否正常 if err := db.Ping(); err != nil { log.Fatal(err) } // 执行SQL插入 result, _ := db.Exec( "INSERT INTO users (name, age) VALUES (?, ?)", "Alex", 31, ) // 上一次插入的ID、影响的行数 id, _ := result.LastInsertId() rowCount, _ := result.RowsAffected() // 执行SQL查询 rows, _ := db.Query("SELECT name FROM users WHERE age = ?", 31) // 遍历结果集 for rows.Next() { var name string rows.Scan(&name) } // 执行SQL单行查询 var age int row := db.QueryRow("SELECT age FROM users WHERE name = ?", "Alex") row.Scan(&age) // 预编译语句 stmt, err := db.Prepare("SELECT name FROM users WHERE age = ?") if err != nil { log.Fatal(err) } rows, _ := stmt.Query(31) // 事务支持 tx, _ := db.Begin() tx.Commit() tx.Rollback() // Context支持,可以进行查询取消或者超时 db.QueryContext(ctx,sql,arg0,arg1) } |
空值处理
如果数据库的列可空,则你必须使用支持空值的Go类型来接收它。sql包中实现的类型包括NullBool、NullFloat64、NullInt64、NullString。示例代码:
1 2 3 4 5 6 7 |
var name NullString db.QueryRow("SELECT name FROM names WHERE id = ?", id).Scan(&name) if name.Valid { } else { // 数据库空值 } |
连接池
标准库内置了数据库连接池:
sqlx包
该包对Go标准库database/sql进行了扩展,支持:
- 将结果集行反序列化为结构(支…
8 years ago
0
Go语言单元测试和仿冒
testing
单元测试
Go语言提供了一个轻量级的测试框架,此框架由testing包和 go test -run命令组成。
要编写测试用例,你需要创建一个以 _test.go结尾的源文件。该文件中包含一个或多个如下签名的函数:
如果想让测试失败,调用testing.T的方法:
基准测试
testing包还支持性能基准测试。要执行基准测试,调用命令。
基准测试方法的签名如下:
如果要基准测试并发执行的性能,可以使用标记,并且调用助手函数:
验证样例…
阅读全文
8 years ago
0