小编Kev*_*vin的帖子

莱宁根有多个主要班级

我希望有两个主要类(或更多)与leiningen,然后能够在java命令行中选择哪一个.例如,我有:

(ns abc (:gen-class))
(defn -main [] (println "abc"))

(ns def (:gen-class))
(defn -main [] (println "def"))
Run Code Online (Sandbox Code Playgroud)

使用project.clj:

(defproject my-jar "0.0.1"
 :description "test"
 :dependencies [
 ]
 :main abc)
Run Code Online (Sandbox Code Playgroud)

然后我构建lein uberjar,并运行:

java -cp my-jar-0.0.1-standalone.jar abc
java -cp my-jar-0.0.1-standalone.jar def
Run Code Online (Sandbox Code Playgroud)

我得到它,当我:main abc在project.clj中指定它是作为清单中的主类调用它,但我不能让它运行而不放东西.但无论哪种方式,当我尝试运行'def'主要时,我得到一个未找到的类:

Exception in thread "main" java.lang.NoClassDefFoundError: def
Run Code Online (Sandbox Code Playgroud)

clojure leiningen

15
推荐指数
2
解决办法
3052
查看次数

java,反射,表现等

所以我知道之前已经完成了这个主题,例如Java Reflection Performance,但我的特殊问题是,似乎很多流行的库都是通过注释和反射来实现的(例如Gson,Jackson,Jaxb实现,hibernate搜索).许多(如果不是全部)库提供良好(或很好)的性能,即使它们使用反射.我的问题是,他们是如何做到的?是否有一些"技巧"要知道或者他们只是使用直接反射,而表演的担忧是夸大其词?

编辑:例如,当我们写:MyObject obj = new Gson().fromJson(someInputStream,MyObject.class);

我可以理解库如何在内部缓存Field对象,但在我看来,它需要每次都反射性地实例化对象,并且它需要根据json的解析值调用每个字段上的setter(反射) .或者有没有办法只在启动时支付(全部)反射成本?

我肯定注意到Gson/Jackson等具有相对较大的启动成本,之后非常快.所以很明显我想知道,如果我写一个模糊相似的图书馆,我需要了解一些技巧吗?因为看起来你无法在每次通话时远离一些反射.

java reflection

14
推荐指数
2
解决办法
5227
查看次数

@Autowired HttpServletResponse

我正在寻找一种自动装配的方法HttpServletResponse.它不适用于开箱即用的弹簧,但我发现了这种描述.这有点令人讨厌,因为那个春天显然有一个机制来让对象请求作用域(即HttpServletRequest),这似乎是一个劈开顶部的黑客.

有没有办法挂钩弹簧用于的相同机制HttpServletRequest?而且,任何想法为什么春季团队决定只能使HttpServletRequestautowire能够(并被排除在外HttpServletResponse)?

java spring spring-mvc autowired

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

键值商店建议

我需要一个非常基本的java键值存储.我从一个HashMap开始,但似乎HashMap在某种程度上是空间效率低下的(我存储了大约2000万条记录,而且似乎需要大约6GB的RAM).

地图是Map<Integer,String>,所以我正在考虑使用GNU Trove TIntObjectHashMap<byte[]>,并将地图值存储为ascii字节数组而不是String.

作为替代方案,是否有一个键值存储只需要添加jar文件,不会立即将整个映射保存在RAM中,并且仍然相当快?

java nosql

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

twitter bootstrap动态轮播

我想使用bootstrap的轮播来动态滚动内容(例如,搜索结果).所以,我不知道会有多少页内容,除非用户点击下一个按钮,否则我不想获取后续页面.

我看了这个问题:带有动态内容的轮播,但我不认为答案适用,因为它似乎建议从数据库服务器端加载所有内容(在这种情况下的图像)并将所有内容作为静态内容返回.

我最好的猜测是拦截按下按钮上的click事件,对搜索结果的下一页进行ajax调用,在ajax调用返回时动态更新页面,然后为旋转木马生成幻灯片事件.但是这些都没有在引导页面上真正讨论或记录.欢迎任何想法.

ajax carousel twitter-bootstrap

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

PowerMock,mockito,验证静态方法

我正在尝试让PowerMock与mockito一起使用,我在这里关注文档:http://code.google.com/p/powermock/wiki/MockitoUsage13.

为了简化一下,我们假设我有一个静态方法:

StaticObj.put(String key, String val) { ... }
Run Code Online (Sandbox Code Playgroud)

要测试的类是这样的:

public class ClassToTest {
    public void doSomething(Params p) {
        if (StringUtils.isNotBlank(p.getK()) StaticObj.put("k1", p.getK());
        if (StringUtils.isNotBlank(p.getX()) StaticObj.put("x1", p.getX());
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的单元测试中,我想验证当它们不为空或为null时,为K和X调用StaticObj.put,所以我做了类似这样的事情:

public void testNormalCase() {
    // assume that mocking setup for statics already happened in some @Before function..
    Params params = new Params("k", "x");
    ClassToTest classToTest = new ClassToTest();
    classToTest.doSomething(params);

    // now I want to verify:
    PowerMockito.verifyStatic(times(1));
    StaticObj.put("k1", "k1");

    PowerMockito.verifyStatic(times(1));
    StaticObj.put("x1", "x");
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,这是我所期待的.什么不起作用,如果我注释掉K的验证,那么X的验证失败了!错误消息表明("x1","x")是预期的,但得到了("k1","k").为什么是这样?我没有正确编码吗?

此外,它让我相信以下类型的测试,可能完全通过错误的原因:

public void …
Run Code Online (Sandbox Code Playgroud)

java mockito powermock

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

使用TreeMap而不是HashMap的guava multimap?

我有以下内容:

final SortedMap<Integer,List<Integer>> m = new TreeMap<Integer,List<Integer>>();
Run Code Online (Sandbox Code Playgroud)

我想使用google-guava将其设为多图.但是,我没有看到任何提供包含ArrayList的SortedMap的实现.我只看到HashMap + ArrayList实现(ArrayListMultimap).我想要的实现是否存在?

java guava

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

如何在Scala中使用Gson序列化List?

我希望能一起使用Scala和Gson.它似乎主要工作,但当我做这样的事情时,它将列表视为一个对象,而不是一个数组:

case class MyType (val x:String, val y:List[SomeOtherType]) {
    def toJson() = new Gson().toJson(this)
}
Run Code Online (Sandbox Code Playgroud)

我的JSON结果是这样的:

{
    "x":"whatever",
    "y": {

    }
}
Run Code Online (Sandbox Code Playgroud)

通常Gson将列表转换为数组.我确定这都是因为Gson不了解Scala的收集课程,但是我能做些什么才能使这个工作成功?或者使用Scala-native JSON库的其他建议?

scala gson

10
推荐指数
4
解决办法
1万
查看次数

SOLR性能调整

我读过以下内容:

http://wiki.apache.org/solr/SolrPerformanceFactors

http://wiki.apache.org/solr/SolrCaching

http://www.lucidimagination.com/content/scaling-lucene-and-solr

我对以下几点有疑问:

  1. 如果我使用JVM选项-XX:+UseCompressedStrings,我可以节省多少内存?举一个简单的例子,如果我有一个索引字段(字符串)和一个存储字段(字符串),omitNorms = true和omitTf = true,我可以期望在索引和文档缓存中节省多少?我猜大约50%,但也许这太乐观了.
  2. 什么时候Solr过滤器缓存正在做什么?如果我只是使用AND和一些OR进行简单查询,并按分数排序,我是否还需要它?
  3. 如果我想缓存文档缓存中的所有文档,我将如何计算所需的空间?使用上面的例子,如果我有20M文件,使用压缩字符串,并且存储字段的平均长度是25个字符,基本上是需要的空间(25字节+ small_admin_overhead)*20M?
  4. 如果所有文档都在文档缓存中,查询缓存有多重要?
  5. 如果我想将每个文档自动装入doc缓存中,那么会自动进行查询*:*吗?
  6. scale-lucene-and-solr文章称FuzzyQuery很慢.如果我使用solr的拼写检查功能,那么我基本上使用模糊查询(因为拼写检查执行相同的编辑距离计算)?所以推测拼写检查和模糊查询都同样"慢"?
  7. 描述字符串的lucene字段缓存的部分有点令人困惑.我是否正确读取所需的空间基本上是索引字符串字段的大小+一个等于该字段中唯一术语数的整数arry?
  8. 最后,在最大化吞吐量的情况下,有一个关于为操作系统磁盘缓存留出足够空间的声明.它说:"总而言之,对于大规模索引,最好确保你拥有至少几千兆字节的RAM,而不是你给JVM的内存." 所以如果我有一台12GB的内存机(作为例子),我应该给操作系统至少2-3GB?我可以通过查看磁盘索引大小来估计操作系统所需的磁盘缓存空间吗?

java lucene solr

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

打嗝1.0.0-beta1错误

我正在使用hiccup-1.0.0-beta1创建一个compojure项目.我运行时得到以下堆栈跟踪lein ring server-headless:

Caused by: java.lang.IllegalAccessError: defelem does not exist
at clojure.core$refer.doInvoke(core.clj:3287)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
at clojure.core$apply.invoke(core.clj:542)
at clojure.core$load_lib.doInvoke(core.clj:4781)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:542)
at clojure.core$load_libs.doInvoke(core.clj:4800)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:544)
at clojure.core$use.doInvoke(core.clj:4892)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at hiccup.page_helpers$eval17$loading__4414__auto____18.invoke(page_helpers.clj:1)
at hiccup.page_helpers$eval17.invoke(page_helpers.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:5424)
Run Code Online (Sandbox Code Playgroud)

这对我来说很困惑,因为page_helpers.clj打嗝中的文件不再存在:

$ jar tf lib/hiccup-1.0.0-beta1.jar 
META-INF/MANIFEST.MF
META-INF/maven/hiccup/hiccup/pom.xml
META-INF/maven/hiccup/hiccup/pom.properties
project.clj
hiccup/compiler.clj
hiccup/core.clj
hiccup/def.clj
hiccup/element.clj
hiccup/form.clj
hiccup/middleware.clj
hiccup/page.clj
hiccup/util.clj
$ 
Run Code Online (Sandbox Code Playgroud)

此外,我的代码甚至没有尝试引入page_helpers.clj:

(ns views.layout 
    (:require [app-config :as config])
    (:use hiccup.core)
    (:use hiccup.page)
    (:use hiccup.element))
Run Code Online (Sandbox Code Playgroud)

clojure compojure hiccup

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