小编Ran*_*ron的帖子

HashMap初始化参数(load/initialcapacity)

我应该传递什么值来为N个项目创建有效HashMap/ HashMap基础的结构?

在一个ArrayList,有效数字是N(N已经假定未来增长).应该是什么参数HashMap?((int)(N*0.75d),0.75d)?更多?减?改变负载系数有什么影响?

java collections hashmap

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

什么是Azul"Zing"?

什么是Azul"Zing"平台?
访问Azul网站(链接)变成了营销恐怖 - 在浏览了每一点之后,我仍然没有线索.

有没有人有这方面的经验?您的申请要求"Zing"的要求是什么?(Zing-able?)例如,如果我有一个应用程序将对象图加载到内存中并不断遍历它的大部分(因此大多数是"温暖的" - 无法将部件存储在慢速数据存储中) - Azul可以帮助我吗?(我已经知道Terracotta BigMemory不能......)

我想澄清一下 - 我正在寻找那些实际上"zingified"他们的产品并成功地将它放在Azul VM上的人的反馈(或者看到它不起作用).

然.

[编辑1 - 添加页面链接] [编辑2-经验想要]

java memory performance garbage-collection virtual-machine

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

适用于Java 5和Java 6的即时内存Java代码编译

如何从Java 5和Java 6中的任意字符串(在内存中)编译java代码,加载它并在其上运行特定方法(预定义)?

在你点燃之前,我查看了现有的实现:

  • 大多数人依赖Java 6 Compiler API.
  • 那些没有,依靠技巧.
  • 是的,我检查了commons-jci.要么我太密集了,不能理解它是如何工作的,要么就是不能.
  • 我找不到如何向编译器提供我当前的类路径(这是非常巨大的).
  • 在有效的实现上(在Java 6中),我找不到如何正确加载内部类(或内部匿名类).
  • 如果整个事物都在内存中,我会非常喜欢它,因为它在多个环境中运行.

我确信之前已经解决了这个问题,但我找不到任何看起来甚至是谷歌半生产质量的东西(除了jci,正如我之前所说,我还没有设法使用).

编辑:

  • 我查看了JavaAssist - 我需要内部类,Java 5.0语言级支持以及使用整个类路径进行编译.另外,我想动态创建新类.我可能弄错了,但我找不到如何用JavaAssit做到这一点.
  • 我愿意使用基于文件系统的解决方案(调用javac),但我不知道如何划分类路径,也不知道如何使用特殊的类加载器加载文件(不在我的类路径中)回收多次调用.虽然我知道如何研究它,但我更喜欢现成的解决方案.

Edit2:现在,我对BeanShell"评估"感到满意.显然它完成了我需要的所有东西(获取一个字符串,在'当前'类路径的上下文中评估它.它确实错过了一些Java 5特性,但它可以使用枚举(不定义)和编译'泛型'(擦除) )类,所以它应该足够我想要的.

我不想将答案标记为已接受,因为我希望有更好的解决方案出现.

Edit3:接受了beanshell建议 - 它真的很棒.

java compiler-construction runtime compilation runtime-compilation

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

是否有java的反汇编程序和调试程序(ala OllyDbg/SoftICE for assembler)?

是否有类似于OllyDbg/SoftICE for java的实用程序?即执行类(来自jar/with class path),并且在没有源代码的情况下,显示中间代码的反汇编,能够逐步执行/跳过/搜索引用/编辑内存中的特定中间代码/将编辑应用到文件中. .

如果没有,是否可以写这样的东西(假设我们愿意在调试期间没有热点的情况下生活)?

编辑:我不是在谈论JAD或JD或Cavaj.这些是很好的反编译器,但我不想要一个反编译器有几个原因,最值得注意的是它们的输出不正确(充其量,有时只是简单的错误).我不是在寻找一个神奇的"编译到java代码的字节" - 我想看到即将执行的实际字节.此外,我希望能够更改这些字节(就像在汇编调试器中一样),并希望将更改的部分写回类文件.

Edit2:我知道javap存在 - 但它只有一种方式(并且没有任何分析).示例(代码取自vmspec文档):从java代码中,我们使用"javac"来编译:

void setIt(int value) {
    i = value;
}
int getIt() {
    return i;
}
Run Code Online (Sandbox Code Playgroud)

到java .class文件.使用javap -c我可以得到这个输出:

    Method void setIt(int)
   0    aload_0
   1    iload_1
   2    putfield #4
   5    return
    Method int getIt()
   0    aload_0
   1    getfield #4
   4    ireturn
Run Code Online (Sandbox Code Playgroud)

这对于反汇编部分是可以的(没有分析就不太好 - "字段#4是Example.i"),但我找不到另外两个"工具":

  1. 一个调试器,它遍历指令本身(带有堆栈,内存转储等),允许我检查实际的代码和环境.
  2. 一种扭转过程的方法 - 编辑反汇编代码并重新创建.class文件(使用编辑过的代码).

java debugging system disassembly javap

17
推荐指数
1
解决办法
8891
查看次数

如何在Maven中关闭jar压缩

Maven(2.0.9)中是否有一个选项可以为整个操作关闭jar压缩?我在构建服务器和工作站中都使用Maven,我想在工作站构建上禁用jar压缩(仅限开发).但是,我不想触摸所有的poms并为每个poms创建两个版本.

是否有通过环境变量,文件或触摸单个pom.xml来关闭jar压缩的选项?

maven-2 jar build

11
推荐指数
3
解决办法
7349
查看次数

Java监听器必须从java.util.EventListener继承 - 为什么?

在javadoc中它表示EventListener是

"所有事件侦听器接口必须扩展的标记接口."

这是为什么?使自定义侦听器实现EventListner的重要性是什么?EventListner在某处有什么特殊处理吗?

java events listener

7
推荐指数
2
解决办法
5196
查看次数

如何在不传递ID的情况下识别运行的Java Applet上下文?

我是开发一个非常大的Swing Java Applet的团队的一员.我们的大多数代码都是遗留的,并且有大量的单例引用.我们将它们全部捆绑到一个"应用程序上下文"单例中.我们现在需要的是创建一些方法来分离共享上下文(在当前显示的所有applet之间共享)和非共享上下文(特定于当前显示的每个applet).

但是,我们在调用单例的每个位置都没有ID,也不想将ID传播到所有位置.什么是识别我们正在运行的applet上下文的最简单方法?(我已经尝试搞乱类加载器,线程组,线程ID ......到目前为止,我找不到任何可以让我识别调用原点的东西).

java applet swing

6
推荐指数
1
解决办法
1541
查看次数

数据库触发器/参照完整性和内存中缓存

您是否看到数据库触发器/参照完整性规则以改变数据库中实际数据的方式使用(更改表x中的行w会导致表z中的行y发生更改)?

如果是的话,这与内存缓存(memcache和朋友)的日益普及有什么关系呢?毕竟,这些操作发生在数据库内部,但缓存系统必须知道它们以反映正确的状态(或至少使可能更改的状态无效).我发现很难相信为这种情况实施了回调.

考虑到这样的设置并放弃它,有没有人拥有这种设置/现实世界体验的实际经验(你走哪条路?如果缓存,你如何强制执行完整性?)

database memcached triggers caching referential-integrity

5
推荐指数
1
解决办法
444
查看次数

同时使用图数据库和文档数据库

我正在考虑一种设置,在该设置中,实体存储在文档数据库(例如CouchDB)和图形数据库(例如Neo4j)中。基本原理是将每个实体信息(数据,blob,值,复杂的内部结构)存储在文档db中,而将实体关系(父,子,关联实体)存储在图db中。

有没有人做过/看到过/被这样的装置咬过?我应该期待什么样的问题?首先想到的是两阶段提交。但是备份在这里也有问题。

couchdb 2phase-commit neo4j graph-databases document-database

5
推荐指数
1
解决办法
1855
查看次数

@Autowired,@ Component和测试

您将如何进行集成测试,该应用程序是注释配置和组件扫描的Spring应用程序,并且根本没有XML配置?我需要用测试组件替换生产组件,而不是实际使用xml配置或反射注入所有@autowired部件.

例:

interface A {...}

@Component
class AImpl implements A {
    ...
}


interface B {...}

@Component 
class BImpl implements B {
    @Autowired A a;
    ...
}


interface C {...}

class CImpl implements C {
    @Autowired B b;
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后在我的测试中我想使用ATestImpl,但我只能访问C(集成测试C).

你会怎么做呢?

testing spring unit-testing annotations autowired

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