Apache Storm学习笔记
Apache Storm是一个分布式的实时计算系统,它能够可靠的对无边界的数据流进行处理。与Hadoop的批量处理方式不同,Storm对数据进行的是实时处理。Storm很简单,支持很多编程语言。
Storm的应用场景包括:实时分析、在线机器学习、持续计算…
阅读全文Kafka Streams学习笔记
当前比较流行的实时计算框架包括Apache Storm、Apache Spark等。这些框架的功能强大而全面,但是具有以下缺点:
- 复杂度高,应对某些简单的工作显得笨重
- 部署Storm、Spark等分布式框架需要预留集群支持,增加开发负担
Kafka Str…
阅读全文Apache Kafka学习笔记
Apache Kafka(音标/'ka:fka:/)是一个分布式的实时数据处理的基础平台,能够处理每秒百万条数据。它具有三大功能:
- 订阅/发布:类似于传统MOM的功能,将队列、主题合二为一
- 流处理:支持编写可扩容的流处理程序,对实时事件做出响应
- 存储:安全的…
Go语言数据库编程
该包提供了对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 { // 数据库空值 } |
标准库内置了数据库连接池:
该包对Go标准库database/sql进行了扩展,支持:
- 将结果集行反序列化为结构(支…
Go语言单元测试和仿冒
Go语言提供了一个轻量级的测试框架,此框架由testing包和 go test -run命令组成。
要编写测试用例,你需要创建一个以 _test.go结尾的源文件。该文件中包含一个或多个如下签名的函数:
如果想让测试失败,调用testing.T的方法:
testing包还支持性能基准测试。要执行基准测试,调用命令。
基准测试方法的签名如下:
如果要基准测试并发执行的性能,可以使用标记,并且调用助手函数:
Go语言IO编程
该包为IO操作原语提供了基本的接口,它包装了IO操作原语的实现(例如os包中的类型)。除非特别说明,调用者不能假设接口中的方法可以被并行调用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
const ( SeekStart = 0 // 相对于文件的起始位置进行Seek SeekCurrent = 1 // 相对于当前读取位置进行Seek SeekEnd = 2 // 相对于尾部进行Seek ) // 错误定义 // 由Read函数返回,表示没有更多可读的数据。用于优雅的结束文件读取(读到尾部了) var EOF = errors.New("EOF") // 在关闭的管道上进行读写 var ErrClosedPipe = errors.New("io: read/write on closed pipe") var ErrNoProgress = errors.New("multiple Read calls return no data or error")、 // 当提供的缓冲区不够存放读取到的数据时 var ErrShortBuffer = errors.New("short buffer") // 当写操作所要求的字节数不足时 var ErrShortWrite = errors.New("short write") // 在读取固定长度的块或者数据结构时,没有到预期的结尾位置即发生EOF var ErrUnexpectedEOF = errors.New("unexpected EOF") |
函数 | 说明 |
Copy |
func Copy(dst Writer, src Reader) (written int64, err error) 从src读取数据并写入到dst,直到src的EOF。返回写入dst的字节数,操作成功则err为nil 实现方式:如果src实现了WriterTo接口,则调用src.WriteTo(dst);如果dst实现了… |
Blender知识集锦
快捷键 | 说明 |
右键 | 单选元素 |
Shift 右键 | 追加元素(物体、点、线或者面)到选区 |
Ctrl I | 反选元素 |
A | 全选/全不选 |
B 左键 | 以矩形框追加元素到选区 |
C 中键 | 以笔刷修剪选区 滚动鼠标滚轮,可以修改笔刷大小 |
Ctrl 左键拖动 | 以套索追加元素到选区 |
Ctr… |
Ubuntu开发知识集锦
Ubuntu Unity是Aytana项目的一部分,该项目的目标是提升Ubuntu的用户体验。
Unity是一套图形界面,主要包括以下几个部分:
- 顶部工具栏:各种托盘图标,最大化窗口的关闭/最小化/恢复按钮,应用程序菜单栏
- 启动器:左侧图标,属于一种Dock
- Dash:启动…
Three.js学习笔记
Web图形库(Web Graphics Library)简称WebGL,是在浏览器环境下进行3D/2D图像渲染的技术。你不需要额外的插件,就可以在HTML5的Canvas上绘制复杂的、可交互的图形。
大部分现代浏览器支持WebGL技术,IE…
阅读全文