Note for learning

Get out of your own way

Golang fallthrough keyword

practice

Background Golang语言中关于流程控制的关键不多,常用的有break continue,fallthrough 也是其中之一,但是较为少用,借此文档,探讨其常见用法 Official Doc https://go.dev/ref/spec#FallthroughStmt A "fallthrough" statement transfers control to the fi...

Clickhouse集成kafka流数据的不足

避免踩坑

Background Clickhouse提供了集成kafka的解决方案,从而使在clickhouse中集成流数据变为可能,但是如果要使用在生产环境中,有以下几个方面的问题不得不考虑。 消费Kafka数据的语义是at least once, 消费的数据会有重复 维护的成本与job监控 扩展性 EOS support 官方文档并未说明kafka engine消费Clickho...

Clickhouse集成kafka流数据实践

实时数据导入

Background 最近的项目中,有业务场景用到导入实时数据到Clickhouse的需求,再实践的过程中,由于clickhouse本身文档的一些不完善,有些经验和教训值得记录下。 Clickhouse的介绍可以参考 https://clickhouse.tech/docs/en/ ClickHouse is a column-oriented database management sys...

Go fallthrough关键字 and label break

Go语法

fallthrough and loop 在看Go的源码的时候,经常发些loop 关键字,最近工作中也发现有代码使用fallthrough关键字,正好之前对于这两个关键字了解不多,趁机熟悉下相关用法。 先看看官方的解释 fallthrough To fall through to a subsequent case, use the fallthrough keyword https://...

在二进制binary的Azkaban job 之前传递参数

Azakaban job paramter 传递

背景介绍与需求分析 需求 最近工作中需要用Azakaban进行任务调度,一共有3个job(A->B->C),如果A满足一定条件的话,去触发B,B完成之后去触发C。 如果A的条件没有满足,就取消B,C的运行 现状 官方文档(https://azkaban.github.io/azkaban/docs/latest/ ) 真是够精简的,很多内容不够详尽。首先我大致读了下官方文档,我...

Hive 查询优化的几种方法(转载)

bloom filter, index and statistics

HIVE OPTIMIZATIONS WITH INDEXES, BLOOM-FILTERS AND STATISTICS This blog post describes how Storage Indexes, Bitmap Indexes, Compact Indexes, Aggregate Indexes, Covering Indexes/Materialized Views, ...

linux find * 和 *? 的区别

linux find 默认正则语法规则

问题描述 在使用find朝查找东西的时候,使用* 或者 *?的时候,会匹配多多个字符,举个例子: !1018 $ ls total 0 0 a--bb-d.txt 0 a-bb-cccc-d.txt eng@rpt-re01:~/test · 04:05 AM Tue Oct 23 · !1019 $ find ./ -name "a-*-*-d.txt" ./a--bb-d.txt ....

Golang Mysql数据map到自定义结构体

通用函数

为什么需要一个通用函数 在项目过程中,经常会碰到读取数据库数据的需求,针对不同的数据库数据集,如果直接用mysql package本身的query-scan方法,每个不同的数据集都需要几乎类似的数据处理流程,这样有两个明显的缺点 数据处理逻辑和查询行为耦合在一起 代码重复度高,不利于UT 我们看一个官方的mysql package的示例代码(https://golang.org/p...

写Golang UT的几种方法

native way

怎么样在Golang里面写UT UT test是测试中的最小测试单元,一般而言,需要fake 输入,compare预期输出,最理想或者最简单的情况是输入特别易于fake,看下面的例子 建设我们有一个实现➕1功能的函数 sum.go // sum.go package sum func addOne(a int) int { return a + 1 } 如果你要为这个函数写UT,你需...

GOROOT,GOPATH,GOVENDOER

区别于使用

GOPATH与GOROOT 在工作过程中,经常碰到GOPATH与GOROOT设置引起的环境变量错误,所以总结下它们的区别于用法。 可以通过 go env 查看下当前机器的环境变量有哪些 ```!571 $ go env GOARCH=”amd64” GOBIN=”” GOEXE=”” GOHOSTARCH=”amd64” GOHOSTOS=”darwin” GOOS=”darwin” St...