算法
尾递归优化
《Groovy in action, Second Edition》P385
- 是什么?
- 在什么场景下用?
AST 语法树(不常用)
技术
高层级的并发技术GPars
- 是什么?
- 怎么用?
Groovy 锁的应用场景
- @Synchronized
- @WithWriteLock
- @WithReadLock
trait 用来组合一个对象
- 应用场景?
DSL 的业务实战
- 尝试取代Mysql的单表规则配置,转而用DSL描述规则 EG:
onConsume = {
reward ( "观看迪斯尼的电影, 你可以获得 25%的积分." ) {
allOf {
condition {
media.publisher == "Disney"
}
condition {
isVideo
}
}
anyOf {
condition {
}
condition {
}
}
grant {
points media.points / 4
}
}
reward ( "查看新发布的媒体,可以延长一天" ) {
condition {
isNewRelease
}
grant {
extend 1
}
}
}
- 搞清楚闭包 delegate ; this; 的应用场景 EG:
// 这里的this赋值给delegate,是让新执行的脚本能够得到当前类中binding存的上下文信息
GroovyShell shell = new GroovyShell(binding)
shell.evaluate("onConsume.delegate=this; onConsume()")
// closure.delegate = delegate github代码中不加也不影响实现,具体什么时候该加要积累一下
binding.reward = { spec, closure ->
closure.delegate = delegate
binding.result = true
// anyOf allOf condition 之间的连接关系默认是and
binding.and = true
closure()
}