自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Clojure细节之form和special form的区别

前言    在lisp程序员看来,form和special form的区别是一目了然而且无需解释的--因为这两个概念本身就源自lisp.但对于指令式语言的开发人员而言,当他们进入clojure的世界中,会不断看到和听到这两个名词,然后会把special form理解为某种关键字或者是宏之类的东西.这样的理解实际上是有一定偏差的.form    首先让我们来看看Clojure...

2012-05-07 14:26:49 314

使用c通过jni调用java

编译环境:fedora16gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2)java version "1.6.0_31"Java(TM) SE Runtime Environment (build 1.6.0_31-b04)Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)...

2012-04-02 12:01:09 180

clojure调用java方法时参数问题

    众所周知,clojure基于jvm,可以在不做引入的情况下调用java.lang下面的任意对象,但是,在调用交互中需要注意clojure中的自定义类型,下面我们用代码来说明一下。    下面的例子是采用牛顿法求平方根的clojure实现:user> (defn average [x y] (/ (+ x y) 2)) ;定义求平均值函数user> (de...

2012-02-24 10:05:26 220

换零钱的clojure实现

题目:有半美元、四分之一美元、10美分、5美分和1美分的硬币,将1美元换成零钱,一共有多少种不同方式?思路:      首先我们把1美元变成100美分,半美元变成50美分,四分之一美元变成25美分。然后从硬币的最大面额50美分开始:     100余额的所有换法 = 采用50美分的所有换法 + 不采用50美分的所有换法     那么,我们首先来看采用50美分的换法,既然...

2012-01-06 19:27:16 118

clojure API学习(3) 字符和字符串操作

注:本文基于jdk1.6,clojure1.2字符串连接str    严格来说,str并非仅用于连接字符串,实际上针对任何对象,它都能获取到对象的toString()并进行连接。    这样说起来有些费解,看看实际的例子就明了了:user> (str "a" \b :c)"ab:c"user> (import '(java.util Date))java.u...

2011-12-16 00:08:13 711

clojure的冒泡排序实现

    冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数...

2011-12-08 17:11:48 171

Clojure-JVM上的函数式编程语言(17)数据库 作者: R. Mark Volkmann

原帖地址:http://java.ociweb.com/mark/clojure/article.html#Databases作者:R. Mark Volkmann 译者:RoySong数据库    Clojure Contrib中的sql库简化了对关系型数据库的访问,它支持事务提交回滚、预声明、创建和删除表、插入更新删除记录和运行条件查询。下面的例子连接到一个Po...

2011-11-26 09:20:04 166

clojure API学习(2) 比较操作

注:本文基于jdk1.6,clojure1.2比较操作等于=    clojure中的等于和java中的equals方法类似,但是clojure中的=还能够作用于nil、数字和集合上面。看看例子:user> (= 3)trueuser> (= 5 5)trueuser> (= "a" "a")trueuser> (= '(7 8.0 ...

2011-11-26 08:59:20 191

clojure API学习(1) 数学运算

附注:本文基于jdk1.6,clojure1.2数学运算        让我们通过学习clojure的API来一步步了解它,首先是最简单的数学运算。加法+    API中对加法函数的描述是:clojure.core/+([] [x] [x y] [x y & more])  Returns the sum of nums. (+) returns 0.   ...

2011-11-24 22:32:11 484

Clojure-JVM上的函数式编程语言(16)Web应用 作者: R. Mark Volkmann

原帖地址:http://java.ociweb.com/mark/clojure/article.html#WebApps作者:R. Mark Volkmann 译者:RoySong Web应用    有多种Clojure库来创建Web应用。一个常见的选择是采用Compojure,可以从 http://github.com/weavejester/co...

2011-11-19 11:37:11 89

原创 Clojure-JVM上的函数式编程语言(15) 桌面应用 作者: R. Mark Volkmann

原帖地址:http://java.ociweb.com/mark/clojure/article.html#DesktopApps作者:R. Mark Volkmann 译者:RoySong 桌面应用    Clojure可以被用来构建基于Swing的图形桌面应用,下面是一个简单的例子,允许用户输入名字,点击"Greet"按钮,然后就会出现一个欢迎对话框。注意如何采...

2011-11-19 11:04:55 138

Clojure-JVM上的函数式编程语言(14) 编辑器和开发环境 作者: R. Mark Volkmann

原帖地址:http://java.ociweb.com/mark/clojure/article.html#EditorsIDEs作者:R. Mark Volkmann 译者:RoySong 编辑器和开发环境(Editors And Ides)    Clojure拥有很多编辑器和开发环境的插件。emacs上面有clojure-mode和swank-clojure,都在...

2011-11-19 10:31:30 102

Clojure-JVM上的函数式编程语言(13)自动化测试 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#Testing 作者:R. Mark Volkmann 译者:RoySong 自动化测试    Clojure基本的自动化测试框架就在Clojure核心代码的测试库中。下面的代码展示了它的主要功能:(use 'clojure.test); Tests can...

2011-11-17 21:25:53 171

原创 Clojure-JVM上的函数式编程语言(12)编译 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#Compiling 作者:R. Mark Volkmann 译者:RoySong 编译(compiling)    当Clojure源文件做为脚本执行时,它们将在运行时被编译为java字节码。它们同样可以提前编译为java字节码(AOT)。这改善了Clojure应用...

2011-11-17 11:52:23 104

Clojure与java设计模式(3) 策略模式

 注:本文基于jdk1.6和Clojure1.2策略模式    策略模式是指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。(维基百科)     在面向对象语言中,这可能是最常见的模式,可能很多人在听说过这个算法之前就已经使用过它了。     首先,我们...

2011-11-16 15:45:25 136

原创 Clojure-JVM上的函数式编程语言(11)引用类型 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#ReferenceTypes 作者:R. Mark Volkmann 译者:RoySong 引用类型(Reference types)    引用类型是针对不可变数据的可变引用。在Clojure中有四种引用类型: Vars, Refs,...

2011-11-16 13:39:19 142

Clojure和JAVA设计模式(2) 工厂模式之工厂方法

注:本文基于jdk1.6和Clojure1.2 工厂方法    工厂方法模式定义了一个创建对象的接口,由子类来决定实例化哪一个类,意即将实例化推迟到子类。     当然,这个说法本身是干巴巴概念性的。让我们针对上篇简单工厂的例子考虑一下,我们在SimpleFactory中已经定义了产生IProduct实例的方法,这是在调用之前就定好了产生IProduct...

2011-11-15 15:05:52 94

原创 在eclipse上面搭建Clojure开发运行环境

     首先,需要下载并安装一个用于java开发的eclipse。链接地址:eclipse下载     然后,将eclipse解压到自定义的路径,比如:d:\eclipse。     下面就有两种方法安装Clojure的eclipse插件Counterclockwise: 打开eclipse,点击菜单栏“help->Install New Soft...

2011-11-15 13:30:10 252

原创 Clojure和JAVA设计模式(1) 工厂模式之简单工厂

序     在java中,设计模式是多态和封装的重要表现形式,采用设计模式能够极大地提升可维护性和可扩展性,那么,同样工作在jvm上面的Clojure能否运用这些模式,或者说是否同样需要这些模式呢? 注:本文基于jdk1.6和Clojure1.2简单工厂   先看看简单工厂的java代码:     首先定义产品的接口:public interface IPr...

2011-11-12 15:24:30 153

原创 Clojure-JVM上的函数式编程语言(10)并发 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#Concurrency 作者:R. Mark Volkmann 译者:RoySong 并发(concurrency)    维基百科上面对并发有一个精确的定义:“并发是一种系统属性,支持多条指令实时交叉运行,并且有可能会相互影响。而交叉的指令可能会在同一CPU的不同...

2011-11-10 13:51:56 135

原创 Clojure-JVM上的函数式编程语言(9)宏 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#Macros 作者:R. Mark Volkmann 译者:RoySong 宏(Macros)    宏被用来为语言添加新的功能结构。它们是在读取时(read-time)用来产生代码的代码。     函数总是要对它所有的参数求值,然而宏可以决定它的哪个参数被求值...

2011-11-10 10:18:57 114

原创 Clojure-JVM上的函数式编程语言(8)元数据 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#Metadata 作者:R. Mark Volkmann 译者:RoySong 元数据(Metadata)    Clojure的元数据是附属于符号或者集合的数据,而没有具体的逻辑值。两个对象在逻辑上相同,就像扑克中的两张王相同,能够拥有不同的元数据。举个例子,元数...

2011-11-09 22:16:58 135

原创 Clojure-JVM上的函数式编程语言(7) 命名空间 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#Namespaces 作者:R. Mark Volkmann 译者:RoySong 命名空间(Namespaces)    java通过package来对类以及其中的方法来分组,而Clojure采用命名空间来对通过符号命名的东西来分组。能够进行分组的东西包含:Var...

2011-11-09 17:22:57 117

原创 Clojure-JVM上的函数式编程语言(6) 可变性 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#Destructuring 作者:R. Mark Volkmann 译者:RoySong 可变性(Destructuring)    可变性可以用于宏或者函数的参数列表中来提取参数集合的部分进行本地绑定。它同样可以用在let特殊form或者binding宏中来创建本...

2011-11-09 13:58:33 85

原创 Clojure-JVM上的函数式编程语言(5) Input/Output 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#IO 作者:R. Mark Volkmann 译者:RoySong Input/Output    Clojure提供了针对I/O操作的最小限度函数集合。因为在Clojure代码可以轻松调用java代码,所以针对I/O操作经常使用的是java.io包中的类。...

2011-11-09 13:19:49 89

原创 Clojure-JVM上的函数式编程语言(4)程序流控制 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#ConditionalProcessing 作者:R. Mark Volkmann 译者:RoySong 程序流控制条件判断    特殊form if会检验一个条件,然后根据检验结果来决定执行两个表达式中的哪一个。它的语法是(if condition the...

2011-11-03 20:43:17 114

原创 Clojure-JVM上的函数式编程语言(3) 函数定义和java交互 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#DefiningFunctions 作者: R. Mark Volkmann 译者: RoySong 函数定义    使用defn宏可以创建一个函数,它的参数是函数名,可选的函数说明(用doc可以查看这个说明),参数列表(vector,可以为空),以及函数体。函...

2011-11-01 17:25:47 119

Clojure-JVM上的函数式编程语言(2) 集合 作者: R. Mark Volkmann

 原帖地址:http://java.ociweb.com/mark/clojure/article.html#Collections  作者:R. Mark Volkmann  译者:RoySong集合(Collections)    Clojure提供了list, vector, set 和map集合类型。Clojure同样可以采用任何Java集合类,但这并不经常出现,因...

2011-10-31 21:25:29 114

原创 Clojure-JVM上的函数式编程语言(1) 综述 作者: R. Mark Volkmann

原文地址:http://java.ociweb.com/mark/clojure/article.html作者:R. Mark Volkmann译者:RoySong简介    这篇文章的目的是给Clojure做一个广泛公正的介绍,以简要的形式对多个特性进行了介绍.可以根据兴趣选看其中的章节.     对本文有任何意见或者建议发送邮件到 mark@oci...

2011-10-30 19:30:01 401

原创 关于practical_clojure的翻译

    在我准备独力把整本书翻译下来时,发现网上已然有同好在组织这个事情,所以我欣然参与了进去,地址是:http://code.google.com/p/clojure-doc-en2ch/      希望喜欢Clojure的同好们来提出意见和建议...

2011-10-27 09:14:48 107

原创 practical_clojure chapter3 控制程序流(未完)

函数     作为函数式编程语言,函数是每个Clojure程序的开始和结束。Clojure的编程模型就象一棵树,每个函数又衍生出对其他数个函数的调用。    理解Clojure程序其实就是理解程序中包含的函数以及调用关系。胡乱地使用函数会使你的Clojure程序极度纠结。深思熟虑地使用函数会使你的代码高效、优雅,真正便于读写。  一级函数  ...

2011-10-15 16:31:31 92

原创 practical_clojure chapter2 clojure的环境

Clojure的"Hello,world"    在配置了java 环境的情况下,在命令行启动Clojure REPL的命令是: java -jar clojure-1.0.0.jar    例子如下:D:\developTools\clojure-1.3.0>java -jar clojure.jarClojure 1.3.0user=&gt...

2011-10-13 15:53:56 78

原创 practical_clojure chapter1 clojure的方式

什么是clojure?为什么有人需要学习它?乍一看,clojure可能是现代程序语言中最不成功的,因为它太新而且很复杂。最糟的是,对于不熟悉lisp系列语言的人来说,这是一门奇怪的,充斥着圆括号、方括号的令人疑惑的的语言。  (中略)函数式编程    clojure的关键特性在于它是一门函数式语言,意即函数是clojure...

2011-10-13 14:12:20 113

Jbpm5中的Could not commit session or rollback问题

在jbpm5中创建StatefulKnowledgeSession时,一旦创建过程出错,控制台的错误提示往往如下:Could not commit session or rollback看似是JtaTransactionManager的相关问题,但实际情况真的如此吗?其实不然,根据官方回答,这实际上是一个编码失误,用我们看到的异常掩盖了真实的异常。详情在SingleSessionC...

2011-06-22 09:40:41 194

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除