- 博客(17)
- 资源 (3)
- 收藏
- 关注
原创 Programming Clojure学习笔记——与Java一起工作
3.4 异常处理异常处理的目的:(1) 包装检查异常(2) 使用finally块清理非内存资源如文件或网络句柄(3) 响应问题:忽略异常,重新操作,转换异常为非异常结果简化异常处理在Clojure中,检查异常不是必须进行try..catch处理,如果不处理则直接忽略异常资源清理如果需要是否的资源有close方法,则可以使用with-open宏:(wit
2011-12-18 09:31:48 855
原创 Programming Clojure学习笔记——与Java一起工作
3.3 使用Clojure创建和编译Java类Clojure的所有对象都实现了Java的特定接口:1. Clojure数据结构实现了Java集合接口2. Clojure函数实现了Runnable和Callable接口Clojure可以在需要时很方便地在磁盘上生成一次性的代理或类,使用必要的一些Java代码片段。创建Java代理在Clojure中,可以使用代理来扩展
2011-12-18 09:25:27 2709
原创 Programming Clojure学习笔记——与Java一起工作
3.2 性能优化使用原始类型示例:第一种计算方法:user=> (defn sum-to [n] (loop [i 1 sum 0] (if ( (recur (inc i) (+ i sum)) sum)))#'user/sum-touser=> (dotimes [_ 5] (time (sum-to 10000))
2011-12-18 09:22:29 1148
原创 Programming Clojure学习笔记——与Java一起工作
3.1 调用JavaClojure提供了简单直接的语法调用Java代码:创建对象,调用方法,访问静态方法和属性。访问构造函数,方法和属性Clojure提供了new形式调用构造函数创建实例(new classname)下面的代码创建Ramdom对象,赋给rnd变量:user=> (def rnd (new java.util.Random))#'user/rnd
2011-12-17 19:08:05 3367
原创 Programming Clojure学习笔记——探索Clojure
2.6 元数据在Clojure中,元数据(metadata) 是与对象逻辑值正交的数据。如person的firstname 和 lastname是普通旧数据。而person对象可以被序列化到XML文件的信息就是元数据。同样person对象被更改需要保存到数据库的信息也是元数据。可以使用with-meta给集合(collection)和符号(symbol)添加元数据:(with
2011-12-17 19:00:25 905
原创 Programming Clojure学习笔记——探索Clojure
2.5 流控制ifClojure的if计算第一个参数值,如果第一个参数值为true,则返回第二个参数值;如果为false,则返回nil或第三个参数值(如果有第三个参数)user=> (defn is-small? [number] (if (#'user/is-small?user=> (is-small? 50)"yes"user=>
2011-12-17 18:58:23 1284
原创 Programming Clojure学习笔记——探索Clojure
2.4 变量(var)当你使用def和defn定义一个对象时,对象就存贮在变量中,如:user=> (def foo 10)#'user/foo定义变量foo,其值为10。说明:这里的对象可以是数,也可以是函数变量的初始值称为根绑定。使用var特殊形式可以直接获取变量而不是变量的值:(var a-symbol)示例:user=> (var foo
2011-12-17 18:54:51 814
原创 Programming Clojure学习笔记——探索Clojure
2.3 函数在Clojure中,函数调用是一个列表,其第一个元素为函数名。如:user=> (str "hello" " " "world")"hello world"在Clojure中,函数名习惯用连字符(-)连接个部分,如clear-agent-errors。如果一个函数是谓语,那么它的名字习惯性以问号(?)结尾。如:user=> (string? "he
2011-12-17 18:52:18 1285
原创 Programming Clojure学习笔记——探索Clojure
2.2 读者宏(Reader Macros)读者宏是被前缀macro触发的特殊读者行为。最熟悉的读者宏是注释,它被分号(;)触发,特殊的读者行为是忽略分号开头的行。读者宏是长列表形式的缩写,被用来减少复杂度,使代码看起来更简洁。下面是读者宏列表:Reader Macro Example(s)Anonymous function #(.toUpperCas
2011-12-17 18:37:26 838
原创 Programming Clojure学习笔记——探索Clojure
2.1 形式形式Clojure代码即数据。Clojure程序由读者(readers)和形式(forms)组成。当你运行Clojure程序时,读者读入形式并将之转换为Clojure数据结构。然后Clojure编译并执行该数据结构。以下为Clojure形式:Form Example(s)Boolean true, falseCharacter \aKey
2011-12-17 18:34:27 2648
原创 Programming Clojure学习笔记——开始
1.3 探究Clojure库Colujure代码都打包进库,每个库属于一个命名空间namespace,命名空间类似Java包。可以使用require来加载Clojure库:(require quoted-namespace-symbol):user=> (require 'examples.introduction)nil说明:前导单引号必须,它将库名引起来使用库中函数
2011-12-17 18:29:07 945
原创 Programming Clojure学习笔记——开始
1.2 Clojure编程快速开始Clojure的运行条件:(1) Java运行环境,JDK5.0及以上(2) Clojure包运行REPL(read-eval-print-loop):>set PATH=D:\Java\jdk1.5.0\BIN>set CLOJURE_HOME=G:\Downloads\Clojure\clojure-1.3.0>java -cp
2011-12-17 18:26:49 1291
原创 Programming Clojure学习笔记——开始
1.1 为什么选择Clojure?1. Clojure是优雅的相对其他语言,实现相同的功能,Clojure程序更短。因此Clojure程序更加容易构建发布和维护。如以下分别为Java和Clojure实现判断字符串是否为空白字符串的函数:Java代码:public class StringUtils {public static boolean isBlank(String st
2011-12-17 18:22:49 1231
原创 Programming Clojure学习笔记——前言
Clojure是一种JVM上运行的动态编程语言,具有一下特性:1. 优雅Clojure的精心设计让你可以只关注解决问题本身2. 是Lisp的一种实现,继承了Lisp的强大功能,但不被Lisp语言的限制3. 是一种函数编程语言Clojure的数据结构都是不可变的,并且绝大部分函数都没有副作用4. 简化了并行编程Clojure提供了多种可选的锁:软件事务性存贮,代理,原子和
2011-12-17 18:19:15 773
原创 用SVN Importer实现CSVNT到SVN的转换
用SVN Importer实现CSVNT到SVN的转换 SVN Importer简介SVN Import是纯java编写,不但支持cvs to svn,而且还支持cvsrcs、pvcs、vss、cc、mks等转移到svn服务器。SVN Importer有两种转换CVS仓库的方式:(1)普通RCS直接处理 CVS 仓库:需要指定rlog.exe,co.exe或是cvs.exe
2011-12-16 23:17:57 1592
原创 获取调用堆栈信息
在Java中可以通过异常堆栈信息来获取Java对象方法的调用堆栈信息:Throwable throwable = new Throwable("获取调用堆栈信息");StringWriter sw = new StringWriter();throwable.printStackTrace(new PrintWriter(sw));System.out.println(sw.toS
2011-12-16 23:16:20 1039
转载 XPath介绍
XPath 术语节点(Node)在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。基本值(或称原子值,Atomic value)基本值是无父或无子的节点。项目(Item)项目是基本值或者节点。选取节点XPath 使用路径表达式在 XML
2011-12-16 23:06:06 550
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人