【Groovy】《Groovy in action, Second Edition》待研究基础知识及技术实现

本文深入探讨了Groovy语言中的尾递归优化技术及其在优化代码效率上的应用。同时,介绍了Groovy的AST语法树以及高层级并发库GPars的使用方法。此外,文章还讲解了Groovy中的锁机制,如@synchronized、@WithWriteLock和@WithReadLock,并给出了使用示例。通过trait实现对象组合以及DSL(领域特定语言)在业务实践中的应用,例如用于替代MySQL单表规则配置。最后,文章讨论了闭包中delegate和this的使用场景,并给出了一段涉及闭包上下文传递的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法

尾递归优化

《Groovy in action, Second Edition》P385

  • 是什么?
  • 在什么场景下用?

AST 语法树(不常用)

技术

高层级的并发技术GPars

  • 是什么?
  • 怎么用?

Groovy 锁的应用场景

  • @Synchronized
  • @WithWriteLock
  • @WithReadLock

trait 用来组合一个对象

  • 应用场景?

DSL 的业务实战

参考至github

  • 尝试取代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()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值