- 浏览: 2489450 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (574)
- Book (62)
- Architecture (6)
- Java (39)
- Taobao (41)
- Distributed (4)
- Life (72)
- Database (7)
- Spring (16)
- Photography (15)
- Bicycle (41)
- Test (20)
- jBPM (8)
- Business (12)
- Movie (3)
- Ajax (15)
- Code (7)
- Eclipse (96)
- VIM (2)
- Music (6)
- Groovy (10)
- AutoHotKey (3)
- Dorado (10)
- Maven (7)
- Scrum (5)
- English (20)
- Financial (12)
- OSGi (3)
- Other (4)
- Tool (6)
- Browser (1)
- PPT (1)
- Project Management (4)
- Agile (6)
- Nosql (1)
- Search engine (6)
- Shell (2)
- Open Source (4)
- Storm (10)
- Guava (3)
- Baby (1)
- netty (1)
- Algorithm (1)
- Linux (1)
- Python (2)
最新评论
-
roy2011a:
https://github.com/ebottabi/sto ...
storm的序列化问题及与spring的结合方式 -
roy2011a:
能抗能打 写道哥们儿,你好!能共享下那个storm与sprin ...
storm的序列化问题及与spring的结合方式 -
Alick1:
兄弟,你之前是不是在深圳的正阳公司呆过啊?
storm的ack和fail -
liuleixwd:
先点个赞,写的非常好!有个问题请教下,如果我再bolt里不用e ...
storm的ack和fail -
yao-dd:
solr的facet查询

一本不错的groovy编程入门书籍, 基本上涵盖了groovy的方方面面, 整本书采用教材的方式(知识点讲解+练习), 因地对一个java开发人员来说很容易读懂, 所以中文版署名为groovy入门经典. groovy大部分兼容java jdk, 因此对于java开发人员来说, 就需要重点掌握groovy与java不同.
脚本语言应该应用如下目的:
连接已有组件
处理经常变化的多种类型的实体
具有图形化用户界面
拥有快速变化的功能
是小型或者中型项目的一部分.
在groovy字符串字面值中, 使用单引号封装的字符串的值就是所列出的字符序列本身. 比如: 'My age is ${age}'
groovy支持负数索引, 但是顺序是从字符串的末尾开始往前计算, 比如"Hello world"[-1] == "d"
一些字符串的基本操作:
"Hello world" - "world" = "Hello" // 减法运算 "Hello world".count("o") = 2 // 统计次数 "Hello".center(11) // 将字符串居中, 不足前后补充空格 "Hello".padLeft(11, "#") // ######Hello "Hello".replaceAll("[a-z]"){ch->ch.toUpperCase()} // HELLO "Hello World".tokenize() // ["Hello", "World"]
str1<=>str2 代表 str1.compareTo(str2)
在if或while语句中, 当groovy操作符"=~"作为一个谓词出现时, 左边的操作数String将和右边的正则表达式匹配
而在一般的语句中则是定义一个正则表达式, 比如 def regex =~ "hello"
对于列表(数组, 集合), 如果整型索引为负数, 这其引用的元素从列表末端开始向前移动.
通过<<运算符(leftShift方法), 可以把一个新元素值追加到列表最后.
printf输出中, %s表示按原样输出字符串, %20s在左侧输出字符串, 并且宽度为20, %-20s则在左侧输出字符串.
当某个方法的声明包含默认参数时, 默认参数仅能出现在非默认参数之后, 也就是说, 默认参数只能出现在形参列表的最后面.
switch语句中case是一个正则表达式的写法:
switch('1234') { case ~'[0-9]{5}': println 'number is 5-digital sequence'; break; case ~'[0-9]{4}': println 'number is 4-digital sequence'; break; default: println 'other number'; break; }
collect方法将遍历某个集合, 并使用闭包中的变换方法, 将集合中的每个元素转换成一个新值.
any方法将遍历检查集合中的每一个元素, 以确认: 对于每一个元素来说, 某个布尔断言是否合法, 该断言由闭包提供.
every方法则用来检查:对集合的所有元素是否, 某个断言(其返回值为true或false的一个闭包)是否合法.如果合法则返回true, 否则返回false
inject方法用来遍历集合, 首先将需要传递的值与集合元素传递给闭包, 此时其传递的值将作为处理结果, 然后再和每一个集合元素一起传给闭包, 以此类推.
例如:println ([2,3,4,5].inject( 1) {pre, element->pre*element; }) // 120
当一个类包含一个用户自定义的构造器之后, 程序并不会自动生成默认的构造器. 这个和java一致
单元测试就是使用程序员的经验来发现和纠正代码中可能存在的错误.
groovy中浮点数字默认是BigDecimal的实例
正则表达式:
def regex = "([0-9]{3})-([0-9]{2})-([0-9]{4})" def str = "123-45-6789" def matcher = str =~ regex matcher.matches() println "${matcher[0]}" // [123-45-6789, 123, 45, 6789] println "${matcher[0][0]}" // 123-45-6789 println "${matcher[0][1]}" // 123
groovy中默认的列表类型对应的是java中的ArrayList, 如果要制定为其他的类型, 可以这样写:
def numbers = [] as LinkedList numbers.addAll([1,2,3]) println "numbers:${numbers.getClass().getName()}" // java.util.LinkedList
as子句只能用于空列表, 如果这样用:
def numbers= [1,2,3] as LinkedList;
将抛出异常, 这是因为我们试图把一个ArrayList强制转换为LinkedList
当某个方法需要使用数组值作为它的实参时, 使用as子句就非常有效.比如这样写:
def names = ["Ken", "John"] def someMethod(String[] args){...} someMethod(names as String[])
格式化输出
引用
%[index$][flags][width][.precision]conversion
这里的index是可选的, 是一个无符号整数, 用来指示参数在参数列表中的位置, 第一个参数用1$引用, 第二个参数用2$引用, 以此类推
flags是一组用来更改格式输出的字符
width非负十进制整型值, 用来指定输出字符的最小宽度.
precision是一个非负十进制整型值, 用来限制字符的个数
groovy并不支持闭包定义中引用自己, 但是将闭包作为Closure的一个对象时, 则在闭包体可以使用this关键字来引用自己.比如这样写(我在1.7.3版本中这样写执行报错):
def f = {n-> return (n==0) ? 1 : n * this.call(n-1); }
customers[customNumber].accounts.each{number, account -> println "${account}"}
采用这样的导航方式的一个危险是, 当遍历到一个null值时, 程序会抛出NullPointerException, 为避免这种情况, 可以使用"?."操作符提供的安全导航模式:
customers[customNumber]?.accounts.each{number, account -> println "${account}"}
发表评论
-
<异类>读书笔记
2013-03-06 07:54 0成功者能够获得更多的机会,从而能变得更为成功。税收愈减免,富人 ... -
《python学习手册》学习笔记
2013-03-11 22:25 3510python格式化传参数非常赞,用数字标明位置,值得java学 ... -
<万历十五年>读书笔记
2013-03-11 22:27 1675在网上下了一个电子书, 但是貌似跟万历十五年没啥关系, 都是讨 ... -
《鸟哥的linux私房菜》读书笔记(部分)
2013-03-11 22:27 2098x86是一种微机系统硬件架构,另一种是苹果的mac的架构 l ... -
《你的灯亮了吗》读书笔记
2013-03-06 07:20 1578这是一本原本写给程序员的书 本书的四个问题: 搞清问题的来源 ... -
《小狗钱钱》读书笔记
2013-03-06 07:17 1504一本非常不错的理财学习入门书, 以童话的形式, 儿童的思维方式 ... -
《我的奋斗》读书笔记
2012-04-14 22:03 2117文字写的很幽默, 故事也基本都是一些平常人的故事,看到了一个特 ... -
《Java Performance》书评
2012-01-15 18:32 2995原文: http://java.dzone.com/rev ... -
《程序员应该知道的97件事》读书笔记
2012-01-15 18:36 2411一本关于写代码的文 ... -
《影响力》读书笔记
2011-11-05 14:47 1865从书名上很可能以为 ... -
《浪潮之巅》读书笔记
2011-11-05 14:44 1399作为一个中国人通过分析硅谷高科技公司的一系列传奇, 总结出这 ... -
《黑客与画家》读书笔记
2011-11-05 13:37 1842以前看过《rework》, 觉得是每一个小型创业公司的创业宝 ... -
《乔布斯传》读书笔记
2011-10-18 08:53 2887在ipad上看完了这本书, 写的还不错, 里面没有无聊的八 ... -
《细说Java》读书笔记
2011-10-05 15:01 2037国人写的, 感觉是一 ... -
《敏捷估计与规划》读书笔记
2011-10-05 12:08 3208这本书断断续续看了很长时间, 内容非常不错, 基本涵盖了sc ... -
《怪诞心理学》读书笔记
2011-10-05 09:44 1848既然是怪诞, 那么整本书涉及的内容并不是我们平常司空见怪的一 ... -
《番茄工作法图解》读书笔记
2011-09-28 09:02 2417番茄工作法是时间管 ... -
《Java开发超级工具集》读书笔记
2011-09-28 08:59 2128"工欲善其事必先利其器", 在平时的开发 ... -
《敏捷迭代开发管理者指南》读书笔记
2011-09-24 13:09 2250这是一本关于迭代开发 ... -
《解析极限编程》读书笔记
2011-09-24 13:03 1817不知道是kent beck的语 ...
相关推荐
在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...
读书笔记及其它 语言无关类 操作系统 (简体) (中英文版) WEB服务器 (淘宝团队出品) 版本控制 NoSQL () MySQL 项目相关 (译言网) Web 编程艺术 【第一部分】 语言相关类 C/C++ () (宋劲杉, 北京亚嵌教育研究中心) (中...
读书笔记及其它 语言无关类 操作系统 (简体) (中英文版) WEB服务器 (淘宝团队出品) 版本控制 NoSQL () MySQL 项目相关 (译言网) Web 编程艺术 【第一部分】 语言相关类 C/C++ () (宋劲杉, 北京亚嵌教育研究中心) (中...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。