Tag: clojure

在ExecutorService中hibernate一个线程(Java / Clojure)

我在clojure程序中创建了相当多的线程: (import ‘(java.util.concurrent Executors)) (def *pool* (Executors/newCachedThreadPool)) (defn do-something [] ; work Thread/sleep 200 ; repeat) (dotimes [i 10000] (.submit *pool* do-something)) 对我来说,JVM之间已经有一段时间了,我基本上在想这里是否有任何反对在Executor正在执行的函数内使用sleep或yield的论据? 如果我理解正确,在这种情况下,我的每个工人都有自己的线程,因此不应该有任何副作用。 如果Executor使用的是FixedThreadPool: (Executors/newFixedThreadPool 1000) 事情变得更加复杂,因为线程在工作完成之前不会返回到池中,这意味着如果线程处于hibernate状态,其他排队的工作人员将需要更长的时间才能完成。 我对这种情况下的线程理解是否正确? (注意:我怀疑我的设计确实是错误的,但只是想确保我在正确的页面上)

在java程序中嵌入swank-clojure

根据http://github.com/technomancy/swank-clojure的嵌入部分,我使用以下内容进行测试。 有没有更好的方法来做这个不使用编译器? 有没有办法以编程方式停止swank? 似乎start-repl控制了线程。 什么是一个很好的方法来产生另一个线程,并能够以编程方式杀死该线程。 import clojure.lang.Compiler; import java.io.StringReader; public class Embed { public static void main(String[] args) throws Exception { final String startSwankScript = “(ns my-app\n” + ” (:use [swank.swank :as swank]))\n” + “(swank/start-repl) “; Compiler.load(new StringReader(startSwankScript)); } } 任何帮助非常感谢,嗯

与Leiningen一起部署Clojure应用程序

到目前为止,这是我的project.clj文件: (defproject raj “0.0.1-SNAPSHOT” :description “FIXME: write description” :dependencies [[org.clojure/clojure “1.3.0”]] :keep-non-project-classes true :main raj.core) 还有我的core.clj文件: (ns raj.core (:use raj.core)) (defn -main [& args] (println “Hello World!!!”)) lein run -m raj.core显示Hello World消息就好了。 接下来我尝试lein uberjar并得到 Compiling raj.core Compilation succeeded. Created C:\Users\bobjones\IdeaProjects\raj/raj-0.0.1-SNAPSHOT.jar Including raj-0.0.1-SNAPSHOT.jar Including clojure-1.3.0.jar Created C:\Users\bobjones\IdeaProjects\raj/raj-0.0.1-SNAPSHOT-standalone.jar 到目前为止一切似乎都很顺利,所以我尝试了java -jar raj-0.0.1-SNAPSHOT-standalone.jar ,我收到了 Error: Could not find or […]

Clojure / Java:用于声音频谱分析的Java库?

我正在寻找一个可以接受一大块音频数据并在给定频段内返回平均幅度的库。 我已经在comp.dsp上问了这个问题,但我很清楚,使用基本的FFT库获取自己构建这个问题的技术诀窍将需要比现在更多的时间和精力。 以下是我原来提出的更多细节问题: http : //groups.google.com/group/comp.dsp/browse_thread/thread/e04f78d439e9e2bd 我发现了许多用于播放声音的漂亮库(过去我使用过JSyn),但似乎没有设置它们来返回有关声音样本的快速和脏的光谱信息。 任何指针都将非常感激。

用于Clojure用户的Java

我一直在使用Lisp,而且我正在追赶clojure。 关于clojure的好处是我可以自然地使用所有java函数,而关于clojure的坏处也是我必须自然地了解java函数。 例如,我不得不花一些时间(谷歌搜索)在Java中找到方形函数(数学/ sqrt in clojure表示法)。 对于那些不熟悉Java的clojure用户,你能为我推荐一些Java函数(库)的好信息资源吗? 它可以是任何东西 – 好书,网页,论坛或其他什么。

将clojure / scala repl附加到正在运行的JVM

我有一个在Sun java 6 JVM中在tomcat下运行的java Web应用程序。 有没有办法将scala或clojure REPL附加到正在运行的JVM? 一旦webapp启动并运行,就会在正在运行的VM中设置要进行调用的上下文。 因此,这对于为增量,探索性开发和调试调用任意java方法调用非常有用。

Clojure Web应用程序 – 我从哪里开始?

最近我一直在研究Clojure,我喜欢这种语言。 我想看看我是否可以在其中制作一个小型Web应用程序,只是为了挑战自己。 但是,我完全没有设置任何与Java相关的Web应用程序的经验。 事实上,我根本没有太多Java经验。 我从哪里开始? 我有很多Apache和LAMP堆栈的经验,我知道在Apache上我会在大多数情况下使用Fast-CGI,但我不知道Java世界中的等价物(如果有的话)。 基本上,我只需要帮助设置服务器并启动它。 我(在某种程度上)了解如何部署纯Java应用程序,但纯Clojure应用程序呢? 这是如何运作的? 我想,来自一个所有Web应用程序都是用脚本语言编写的世界,这对我来说都是新的。 哦,顺便说一句, 我不想使用像Compojure这样的Clojure框架 。 这会打败这个学习部分。 提前致谢。

如何在Clojure中加载程序资源

如何在Clojure程序中加载程序资源,如图标,字符串,图形元素,脚本等? 我使用的项目布局类似于许多Java项目中的项目布局,其中“资源”目录悬挂在“源”目录之外。 从源创建一个jar文件并包含资源,但我似乎无法像在Java中那样加载资源。 我尝试的第一件事就像是 (ClassLoader/getSystemResource “resources/myscript.js”) 但永远找不到资源。 你可以做类似的事情 … (let [cls (.getClass net.mydomain.somenamespace) strm (.getResourceAsStream cls name) ] … 其中name是要加载的资源的name ,但流是nil 。 您可以尝试使用类似的上下文类加载器 … (let [thr (Thread/currentThread) ldr (.getContextClassLoader thr) strem (.getResourceAsStream ldr name)] … 但是, strem总是零。 令人沮丧的是,我尝试将资源文件放在程序的几乎每个目录中。 它们被正确地复制到jar中,但我似乎仍然无法加载它们。 我已经查看了load函数和运行时库的语言来源,但我没有“得到”它。 任何帮助,将不胜感激。 编辑 :这是一个更具体的例子。 在Java中,如果要将MarkDown转换为HTML,可以使用showdown.js脚本并编写如下内容: package scriptingtest; import java.io.InputStreamReader; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public […]

MongoDB:查询有隐式限制(256)?

我在MongoDB中创建了(在代码中)一个默认集合并且正在查询它,并且发现当我在本地运行它时代码将返回所有数据,但是当我在部署服务器上查询它时它不会。 它最多返回256条记录。 笔记: 这不是上限集合。 在本地,我运行3.2.5,远程MongoDB版本是2.4.12 我没有使用limit参数。 当我使用它时,我可以限制本地服务器和部署服务器,但部署服务器仍将永远不会返回超过256条记录。 从服务器获取的数据量<500K。 没什么大不了的。 代码在Clojure中,使用Monger,它本身只调用Java com.mongodb。 我可以使用Robomongo从远程服务器获取超过256条记录,虽然我不知道它是如何做到的,因为我无法从命令行连接到远程(auth使用相同的凭据失败,所以我猜版本那里不相容)。 任何帮助表示赞赏。 更新:找到触发问题的东西:当我对输出进行排序时,它会将输出减少到256 – 但只有当我从Mongo 2.4中拉出时! 我不知道这是MongoDB本身,MongoDB java类还是Monger,但这里是解释问题的代码,就像我可以做到的那样简单: (ns mdbtest.core (:require [monger.core :as mg] [monger.query :as mq])) (defn get-list [] (let [coll (mq/with-collection (mg/get-db (mg/connect {:host “old-mongo”}) “mydb”) “saves” (mq/sort (array-map :createdDate -1)))] ;;<<==remove sort coll))

Clojure Web Apps的优秀Web服务器/ Servlet容器?

我正在为我的compojure web应用程序寻找一个好的生产Web服务器/ servlet容器。 使用compojure将Jetty或Tomcat或其他服务器用于Clojure Web应用程序的优缺点是什么? 使用带有Clojure的Web服务器进行生产或工具是否有任何好的文档? 我更喜欢一个灵活,易于配置的Web服务器,并且具有关于如何配置和使用它的良好文档。