小编mik*_*era的帖子

在没有嵌套let的情况下在Clojure中绑定多个相关变量

我想使用变量的值来计算同一let语句中另一个变量的值.有没有办法在Clojure中执行此操作而不使用嵌套的let?

嵌套让解决方案:

(let [x 3] 
  (let [y (+ 1 x)] 
    y)) = 4
Run Code Online (Sandbox Code Playgroud)

期望的解决方案:

(let [x 3 
      y (+ 1 x)] 
   y) = 4
Run Code Online (Sandbox Code Playgroud)

nested clojure let

12
推荐指数
1
解决办法
3272
查看次数

考虑到Java(该语言)是独立于平台的,为什么JVM不是独立于平台的?

只是好奇知道什么时候java独立于平台,那么JVM是否有任何特定的原因使平台依赖...

java jvm

12
推荐指数
5
解决办法
4万
查看次数

创建一个下载自己的依赖项的Java应用程序

我对如何分发具有大量依赖关系的Java应用程序感兴趣(在Maven的pom.xml中指定).

显然,可以将所有内容打包在一个大的.jar文件中.然而,这看起来很浪费,因为更新应用程序也需要发送所有依赖项的新副本.

所以我正在寻找一种分发应用程序的方法,该方法执行以下操作:

  • 仅包含主.jar文件中的核心应用程序
  • 运行.jar文件时根据需要下载依赖项
  • 在本地保留依赖项的副本,以便在分发应用程序更新时,不需要再次下载依赖项

实现这一目标的最佳方法是什么?

java deployment dependencies distribution maven

12
推荐指数
1
解决办法
335
查看次数

使用protobuf的REST Java Web服务

我想使用Java和protobuf实现REST Web服务.

任何人都可以指出我从哪里开始或如何实现它?任何好的教程?

谢谢!

java rest protocol-buffers

12
推荐指数
1
解决办法
2万
查看次数

基于Java的传感器数据收集库

我正在寻找一个可嵌入的Java库,它适用于以通用方式收集传感器数据的实时流.我计划使用它来开发一个"集线器"应用程序,用于报告在基于JVM的服务器上运行的多个不同的传感器流(也将使用Clojure).

需要关键的事情:

  • 各种常见传感器类型/ API的接口.我很高兴能够自己构建我需要的东西,但是如果开箱即用的标准东西会更好.
  • 适用于"软实时"使用,即相当低的延迟和低开销.
  • 能够在运行时监视和管理流,收集统计信息等.
  • 在合理许可的许可下开源,以便我可以将它与其他代码集成(Apache,EPL,BSD,LGPL都很好)
  • 一个相当活跃的社区/开发者生态系统

是否有适合您可以推荐的此配置文件的内容?

java real-time sensor data-stream

12
推荐指数
1
解决办法
5790
查看次数

在Clojure中使用类型提示获取Java返回值

我正在研究一些Java/Clojure互操作性,并遇到以下代码的反射警告:

(defn load-image [resource-name]
  (javax.imageio.ImageIO/read 
    (.getResource 
      (class javax.imageio.ImageIO) 
      resource-name)))

=> Reflection warning, clojure/repl.clj:37 - reference to field read can't be resolved.
Run Code Online (Sandbox Code Playgroud)

我对此感到惊讶,因为getResource总是返回一个URL,因此我希望编译器在javax.imageio.ImageIO/read中使用适当的静态方法.

代码工作得很好BTW,所以很明显在运行时找到正确的方法.

所以有两个问题:

  1. 为什么这会返回反射警告?
  2. 我需要什么类型的提示来解决这个问题?

java clojure type-hinting

11
推荐指数
1
解决办法
1299
查看次数

使用Clojure宏内联函数

更多的是出于对其他任何事情的好奇(但期望它可能偶尔会成为性能调优的有用技巧),是否可以使用Clojure宏来"内联"现有函数?

即我希望能够做到这样的事情:

(defn my-function [a b] (+ a b))

(defn add-3-numbers [a b c] 
  (inline (my-function 
    a 
    (inline (my-function 
      b 
      c)))))
Run Code Online (Sandbox Code Playgroud)

并且它产生(在编译时)完全相同的功能,如同我自己内联添加内容,例如:

(defn add-3-numbers [a b c] 
  (+ a (+ b c)))
Run Code Online (Sandbox Code Playgroud)

compiler-construction macros performance clojure

11
推荐指数
1
解决办法
1585
查看次数

"dotimes"和"for"功能之间的交叉?

我经常发现自己想要使用整数索引(如"dotimes")多次有效地运行Clojure函数,但也将结果作为现成的序列/列表(如"for")得到.

即我想做这样的事情:

(fortimes [i 10] (* i i))

=> (0 1 4 9 16 25 36 49 64 81)
Run Code Online (Sandbox Code Playgroud)

显然,有可能做到:

(for [i (range 10)] (* i i))
Run Code Online (Sandbox Code Playgroud)

但是,如果可能的话,我想避免创建和丢弃临时范围列表.

在Clojure中实现这一目标的最佳方法是什么?

macros loops clojure

11
推荐指数
2
解决办法
1084
查看次数

测试对象是否是Clojure中的Java原始数组

在Clojure中检测对象是否是Java原始数组的最佳方法是什么?

我需要这个的原因是对原始数组做一些特殊的处理,它可能看起来像:

  (if (byte-array? object)
    (handle-byte-array object))
Run Code Online (Sandbox Code Playgroud)

它是一个相当性能敏感的代码片段,所以我宁愿避免反思,如果可能的话.

arrays reflection clojure primitive-types

11
推荐指数
5
解决办法
2272
查看次数

API设计中的(开始,结束)与(开始,长度)

我已经看到了在指定一系列索引时使用的两种替代约定,例如

subString(int startIndex, int length);
Run Code Online (Sandbox Code Playgroud)

subString(int startIndex, int endIndex);
Run Code Online (Sandbox Code Playgroud)

它们在你可以用它们做什么方面显然是等价的,唯一的区别在于你是指定结束索引还是指定范围的长度.

我假设在所有情况下startIndex都是包容性的,而endIndex是独占的.

在定义API时,是否有任何令人信服的理由更喜欢一个而不是另一个?

language-agnostic api coding-style api-design

11
推荐指数
1
解决办法
415
查看次数