Tag: clojure

昂贵算法的Clojure性能

我已经实现了一个算法来计算最长的连续公共子序列(不要与最长的公共子序列混淆,尽管这个问题不重要)。 我需要从中挤出最大的性能,因为我会调用它。 我在Clojure和Java中实现了相同的算法,以便比较性能。 Java版本运行得更快。 我的问题是我是否可以对Clojure版本做任何事情来加速它达到Java的水平。 这是Java代码: public static int lcs(String[] a1, String[] a2) { if (a1 == null || a2 == null) { return 0; } int matchLen = 0; int maxLen = 0; int a1Len = a1.length; int a2Len = a2.length; int[] prev = new int[a2Len + 1]; // holds data from previous iteration […]

与Netty和NIO高度并发的HTTP

我正在使用示例Netty HTTP客户端代码 ,以便在并发的线程环境中发出http请求。 但是,我的系统在相当低的吞吐量下完全破坏(有一些例外)。 在几乎伪代码中: ClientBootstrap bootstrap = new ClientBootstrap(new NioClientSocketChannelFactory()) bootstrap.setPipelineFactory(new HttpClientPipelineFactory()); ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port)); Channel channel = future.awaitUninterruptibly().getChannel(); HttpRequest request = new DefaultHttpRequest(); channel.write(request); 在示例中,为了发出请求,我创建了一个ClientBootstrap,并从那里(通过一些箍)一个Channel来编写HTTPRequest。 这一切都有效,也很好。 但是,在同时发生的情况下,每个请求是否应该通过相同的环节? 我认为这就是我现在正在打破的事情。 我应该以完全不同的方式重用连接或构建我的客户端吗? 另外:我在Clojure中这样做,如果这有任何区别的话。

Clojure和Java在现实世界中互操作

我正在考虑开始使用(不玩)Clojure。 有没有有用的指南? 我不是在询问lein,javac或任何其他“小型”手动工具。 我需要知道如何在同一个项目中使用eclipse中的Java和Clojure源代码。 如何在没有编译错误的情况下让他们互相调用? 如何配置maven? 如何建立完全富有成效的开发环境? 现在甚至可能吗? 哪些插件可能有用? 从哪儿开始?

(require)函数的clojure类路径问题?

CLASSPATH将“/ Users / smcho / Desktop / clojure”作为其路径之一,并且此目录具有文件hello.clj。 运行clojure并运行(require’hello)会显示此错误消息。 java.io.FileNotFoundException:找不到类路径上的hello__init.class或hello.clj:(NO_SOURCE_FILE:0) 当我将目录更改为“/Users/…/clojure”,并运行相同的(require’hello)时,没有问题。 这个。 在CLASSPATH上。 运行 java -cp /Users/smcho/bin/jar/clojure.jar:/Users/smcho/Desktop/clojure clojure.lang.Repl 也有效。 为什么clojure无法在CLASSPATH上找到源代码?

用于匹配未被引号括起的逗号的正则表达式

我正在使用Clojure,所以这是在Java正则表达式的上下文中。 这是一个示例字符串: {:a “ab,cd, efg”, :b “ab,def, egf,”, :c “Conjecture”} 重要的位是每个字符串后面的逗号。 我希望能够用Java的replaceAll方法用换行符替换它们。 正则表达式将匹配任何未被引号括起的逗号。 如果我没遇好,请问,我会高兴地澄清一切。 编辑:对不起标题中的混淆。 我没有醒来很久。 字符串: {:a “ab, cd efg”,} < – 在此示例中,末尾的逗号将匹配,但引号内的逗号不匹配。 字符串: {:a 3, :b 3,} < – 每个逗号匹配。 String {:a “abcd,efg” :b “abcedg,e”} < – 每个逗号都不匹配。

Java:在同一个JVM中从运行时获取类的字节码

相关: 有没有办法在运行时获取类的字节码? 我正在为Clojure增加耐久性,我终于到了准备添加function的地步。 在Clojure中,函数通过调用方法(以及其他方式)被字节编译为类。 通过这种方式,function是一流的。 为了使这些持久,我需要序列化和反序列化这些类。 如何在不访问.class文件的情况下获取类的字节码? 如果我弄错了,请纠正我,但使用代理需要生成一个单独的VM,代理连接到第一个VM。 我需要从同一个VM做到这一点。 使用Serializable来设置和获取Class对象是不够的。 在反序列化时,我需要加载该类,并且在后续VM实例上,可能存在类名冲突。 我需要修改字节码,以便在反序列化/类加载时将类重命名为唯一的。

如何以编程方式调用Maven任务

我在另一个构建工具(leiningen for Clojure,但这应该无关紧要)的上下文中使用Maven,我想知道如何调用依赖的插件:build-classpath以编程方式(即通过Maven- API,而不是通过mvn -command)。

为clojure源文件启用UTF-8编码

我正在开发一个涉及maven,java和clojure的项目。 我面临的问题是,我在我的clojure源文件中有一些UTF-8字符,因为我的源代码没有被java编译器正确解释,我通过设置环境变量JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8得到它的工作JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 ,但我想要的是通过MAVEN传递这个属性。 我已经尝试过设置MAVEN_OPTS=-Dfile.encoding但这似乎不起作用。 我也试过为maven的编译器插件设置配置……这样的事情: -Dfile.encoding=UTF8 这也不起作用。 我做错了什么,还是有别的办法。 谢谢, RD 好的,这里有更多细节。 这是我的父母pom, org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 UTF-8 <! also tried UTF8 孩子的pom没有什么有趣的,除了…… src/main/clojure ;; clojure代码片段会导致问题 (let [char “대”] (not (empty? (filter #(s/contains? % char) ))) ;; The list is always empty because I never find a match if I do not set the env. variable

如何在Clojure中实现Java接口

如何创建实现此接口的Clojure对象,然后从Java代码调用? public interface Doer { public String doSomethin(String input); } Doer clojureDoer = ?; String output = clojureDoer.doSomethin(input);

什么是在java中使用的好的持久性集合框架?

通过持久性集合,我的意思是像clojure中的集合。 例如,我有一个包含元素(a,b,c)的列表。 使用普通列表,如果我添加d,我的原始列表将包含(a,b,c,d)作为其元素。 使用持久列表,当我调用list.add(d)时,我会返回一个新列表,其中包含(a,b,c,d)。 但是,实现尝试尽可能地在列表之间共享元素,因此它比仅返回原始列表的副本更具内存效率。 它还具有不可变的优点(如果我持有对原始列表的引用,那么它将始终返回原始的3个元素)。 这在其他地方解释得更好(例如http://en.wikipedia.org/wiki/Persistent_data_structure )。 无论如何,我的问题是……在java中提供此function的最佳库是什么? 我可以以某种方式使用clojure集合(其他通过直接使用clojure)?