小编noa*_*hlz的帖子

如何在Leiningen REPL中热重新加载文件命名空间

使用leiningen REPL时,有没有办法让文件或ns自动重新加载到repl on file save.目前我通过在repl中键入以下内容来重新加载ns - (use 'sample.ns :reload-all).

但是我可以在文件保存时自动重新加载吗?

clojure leiningen

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

创建多模块maven构建并独立发布单个模块?

我目前正致力于优化多模块maven项目的maven构建.该项目由大约90个Maven模块组成.通常,有一些交叉的库构成了核心,然后大约有15个"应用程序模块"组成了整个应用程序(然后在WAR中部署)

现在一般情况下整个项目都有一个主要版本"2.5",因此当一个新的主要版本完成时,所有"应用程序模块"都具有相同的版本"2.5.0".到现在为止还挺好.

如果模块有需要修复或需要改进的错误,则应该发布该"应用程序模块"的新版本.因此,例如模块A修复了一个错误,然后A.jar应该是版本"2.5.1",而其余应该仍然是"2.5.0".

父(2.5.0-SNAPSHOT - 模块A(2.5.1-SNAPSHOT) - 模块B(2.5.0-SNAPSHOT) - 模块C(2.5.2-SNAPSHOT) - 战争(2.5.3-SNAPSHOT)< - 3最后,因为C有两个重新发布和一个,并且为了简单起见,在每个模块发布后发布.

我们决定在主pom中管理工件版本,因此我们不需要在释放一个模块后更新每个工件的依赖版本.

所以现在每当更新的"应用程序模块"准备就绪时,我们使用maven发布插件来执行该模块的发布(我们正在发布一个模块,而不是整个项目).因此,假设我们在版本2.5.4中发布模块A,导致A.jar被部署为版本2.5.4,并通过将模块代码更新为2.5.5-SNAPSHOT完成.

完成此操作后,我们需要更新主pom中的版本,以便所有模块继续引用正确的版本.

感谢主pom的dependencyManagement部分,如果我构建War模块,它会自动获取模块A的新版本.

现在是棘手的部分:一旦发布所有模块,就应该发布新版本的Web应用程序.这应该包含所有未更改的模块以及刚刚发布的模块.我目前正在努力如何做到这一点.如果我依赖父poms版本,该版本将包含SNAPSHOT版本(所有版本增量太高),我和发布插件不允许.

这种困境的最佳解决方案是什么?

我有一个想法是将依赖关系管理外包给一个单独的pom,然后使用"import"范围将其导入到主poms dependencyManagement中.

这种szenario是一个愚蠢的想法吗?是否有开发和维护这样的大型多模块应用程序的替代方案?简单地使用整个项目中的发布插件使所有版本同步并不是一个选项,因为应用程序很大并且客户端应用程序必须加载更新的模块版本.我们的一些客户的连接速度非常慢,因此每次推出所有模块都会让他们感到非常不满.

非常感谢,

克里斯

release release-management pom.xml maven maven-release-plugin

9
推荐指数
1
解决办法
4428
查看次数

Clojure代码静态分析工具

是否有工具在clojure中运行代码约定测试?例如,确保函数名称没有任何大写字母或关键字中没有任何下划线.

conventions clojure

9
推荐指数
2
解决办法
2697
查看次数

Maven项目有哪些额外的目录约定?

Maven 2使用项目的标准目录布局,在此处记录:

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

我想知道的是:除了普通的Java库,Java EE和WebApp项目之外,是否有推荐的其他项目约定?具体来说,放置ant文件的位置,启动脚本,配置文件,示例应用程序等.

另外,将文件放在src /目录树之外的惯例是什么?例如,将文档放在doc /(作为src的兄弟)下是否常见?

是否有编译这些约定的页面?如果没有,其他读者可以提供自己项目的例子吗?

java maven-2 conventions

8
推荐指数
1
解决办法
1422
查看次数

在Clojure中递归反转序列

我想在不使用reverse函数的情况下反转Clojure中的序列,并以递归方式执行此操作.

这是我想出的:

(defn reverse-recursively [coll]
  (loop [r (rest coll)
         acc (conj () (first coll))]
    (if (= (count r) 0)
      acc
      (recur (rest r) (conj acc (first r))))))
Run Code Online (Sandbox Code Playgroud)

样本输出:

user> (reverse-recursively '(1 2 3 4 5 6))
(6 5 4 3 2 1)
user> (reverse-recursively [1 2 3 4 5 6])
(6 5 4 3 2 1)
user> (reverse-recursively {:a 1 :b 2 :c 3})
([:c 3] [:b 2] [:a 1])
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 有没有更简洁的方法来做到这一点,即没有循环/重复?
  2. 有没有办法在循环中不使用"累加器"参数的情况下执行此操作?

参考文献:

什么是在Java中递归反转字符串的最佳方法?

http://groups.google.com/group/clojure/browse_thread/thread/4e7a4bfb0d71a508?pli=1

recursion clojure

8
推荐指数
2
解决办法
9085
查看次数

如何在不使用"我的电脑"对话框的情况下在Windows XP中设置系统环境变量

我正在为各种项目切换不同的Java SDK(1.4.2,1.5.0和1.6.0).我想在我的Windows XP机器上设置JAVA_HOME环境变量,而无需通过繁琐的我的电脑 - >高级 - > [选择系统变量] - >编辑 - >确定 - >确定

是否可以从命令行执行此操作,或者是否有可以执行此操作的实用程序?

(请注意,我不是指标准批处理文件"SET"命令 - 我想要"全局"设置环境变量,而不仅仅是控制台窗口的生命周期).

windows

7
推荐指数
1
解决办法
9174
查看次数

如何在Java线程中解释RUNNABLE但没有堆栈跟踪?

我正在调试遗留Java应用程序,并且线程转储(通过获取jstack)包含一些如下所示的条目:

"Thread-8" prio=10 tid=0x0000000055f2c800 nid=0x49bf runnable [0x0000000000000000]
    java.lang.Thread.State: RUNNABLE
Run Code Online (Sandbox Code Playgroud)

而已.没有堆栈跟踪.

这里发生了什么?如何找到在此线程中执行的Java代码?

java debugging

7
推荐指数
1
解决办法
461
查看次数

几次成功请求后,Thrift TSimpleServer无响应

我有一个在Linux上运行的Java应用程序提供的Thrift API.我正在使用.NET客户端连接到API并执行操作.

对服务的前几次调用工作没有错误,但随后(看似随机)一个电话将"挂起".如果我强行退出我的客户端并尝试重新连接,该服务会再次挂起,或者我的客户端出现以下错误:

Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   at Thrift.Transport.TStreamTransport.Read(Byte[] buf, Int32 off, Int32 len) 
   (etc.)
Run Code Online (Sandbox Code Playgroud)

当我使用JConsole获取线程转储时,服务器已启用 accept()

"Thread-1" prio=10 tid=0x00002aaad457a800 nid=0x79c7 runnable [0x00000000434af000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
    - locked <0x00000005c0fef470> (a java.net.SocksSocketImpl)
    at java.net.ServerSocket.implAccept(ServerSocket.java:462)
    at java.net.ServerSocket.accept(ServerSocket.java:430)
    at org.apache.thrift.transport.TServerSocket.acceptImpl(TServerSocket.java:113)
    at org.apache.thrift.transport.TServerSocket.acceptImpl(TServerSocket.java:35)
    at org.apache.thrift.transport.TServerTransport.accept(TServerTransport.java:31)
    at org.apache.thrift.server.TSimpleServer.serve(TSimpleServer.java:63)
Run Code Online (Sandbox Code Playgroud)

netstat在服务器上显示连接到服务端口,在TIME_WAIT强制退出客户端几分钟后,服务端口最终消失(正如预期的那样).

设置Thrift服务的代码如下:

        int port = thriftServicePort;
        String host = …
Run Code Online (Sandbox Code Playgroud)

.net java tcp thrift

7
推荐指数
1
解决办法
4523
查看次数

对于clojure defn参数,不允许使用^ char类型提示

观察以下repl会话:

user=> (set! *warn-on-reflection* true)
true

user=> (defn blah [s] (for [c s] (if (Character/isDigit c) true false)))
Reflection warning, NO_SOURCE_PATH:1:31 - call to isDigit can't be resolved.
Reflection warning, NO_SOURCE_PATH:1:31 - call to isDigit can't be resolved.
#'user/blah

user=> (blah "abc123abc")
(false false false true true true false false false)

user=> (defn blah [s] (for [^char c s] (if (Character/isDigit c) true false)))
#'user/blah

user=> (blah "abc123abc")
(false false false true true true false false false)
Run Code Online (Sandbox Code Playgroud)

所以我们使用了一种类型的提示^char来摆脱反射 …

clojure

7
推荐指数
1
解决办法
664
查看次数

在vimrc中设置vim omnicompletion颜色(Pmenu)不起作用

我正在尝试根据本指南自定义我的vim弹出窗口完成菜单: Vim Wiki:"Omni完成弹出菜单".它指出

如果您总是想要这个选择,请添加到您的vimrc.

但是,我的.vimrc文件中有以下设置

colo desert

filetype plugin on
set ofu=syntaxcomplete#Complete
highlight Pmenu guibg=brown gui=bold
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

Gahhhh! 我的眼睛!

注意:当我手动手动输入突出显示命令时,它可以工作:

在此输入图像描述

如何让弹出窗口使用.vimrc中定义的颜色方案,而不必每次都手动输入?

vim

6
推荐指数
2
解决办法
5404
查看次数