小编Mar*_* K.的帖子

如何在EAR或WAR之外存储Java EE配置参数?

我想存储Web项目(ear/war文件)之外的Web项目的配置.应用程序不应该知道它在哪个容器中运行(WebSphere/JBoss等).

处理这个问题的最佳方法是什么?

JNDI是一个干净的方式吗?如果JNDI可以解决我的问题,我应该如何配置它?(自定义对象?)

在我的例子中,SOAP/WS端点只有简单的Key => Value对(String,String).

java parameters ear war java-ee

37
推荐指数
4
解决办法
2万
查看次数

是否有经过商业验证的云存储/密钥=>价值数据库?(开源)

我一直在寻找云计算/存储解决方案很长一段时间(受Google Bigtable的启发).但我找不到一个易于使用,业务就绪的解决方案.

我正在搜索一个简单的,容错的,分布式的Key => Value DB,就像亚马逊的SimpleDB一样.

我见过这样的话:

  1. CouchDB项目:简单且分布式,容错的数据库.但它只能理解JSON.没有XML连接器等
  2. Eucalyptus:Nice Amazon EC2接口.开放标准和XML.但分布较少,容错性较差?XEN/VMWare问题也有很多打开的门票.
  3. Cloudstore/Kosmosfs:分布式,容错的fs.但配置起来很困难.有没有java连接器?
  4. Apache Hadoop:很好的系统,它存储数据的能力要强得多.使用自己的Hadoop分布式文件系统,并在具有2000个节点的集群上进行测试.
  5. *Amazon SimpleDB:无法找到开源替代品!对于大量数据来说,这是一个不错但价格昂贵的系统.你沉迷于亚马逊.

还有其他更好的解决方案吗?哪一个最好选择?哪一个提供最小量的SOF(Singe Point of Failure)?

cloud open-source amazon-ec2 key-value

34
推荐指数
2
解决办法
5161
查看次数

JMS vs Webservices

JMS优于Webservices有什么大优势,反之亦然?

(Web服务是否膨胀?JMS总体上更好地提供接口吗?)

java web-services jms

23
推荐指数
2
解决办法
3万
查看次数

JVM实现之间的差异

JVM实现在哪里不同(许可除外)?每个JVM是否都为通用处理实现Type Erasure?

两者之间的区别在哪里:

  • JRockit的
  • IBM JVM
  • SUN JVM
  • 打开JDK
  • blackdown的
  • kaffe的

.....使用Tail-Call-Optimization处理其中一个?

java generics jvm jvm-languages tail-call-optimization

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

Java中的并行XML解析

我正在编写一个应用程序来处理大量具有深度节点结构的xml文件(> 1000).使用woodstox(Event API)大约需要6秒来解析具有22.000个节点的文件.

该算法被置于具有用户交互的过程中,其中只有几秒的响应时间是可接受的.所以我需要改进如何处理xml文件的策略.

  1. 我的进程分析xml文件(仅提取几个节点).
  2. 处理提取的节点,并将新结果写入新数据流(生成具有已修改节点的文档的副本).

现在我正在考虑一个多线程解决方案(在16核+硬件上可以更好地扩展).我想到了以下国家:

  1. 创建多个解析器并在xml源上并行运行它们.
  2. 重写我的解析算法thread-save只使用解析器的一个实例(工厂,...)
  3. 将XML源拆分为块并将块分配给多个处理线程(map-reduce xml - serial)
  4. 我的优化算法(更好的StAX解析器比woodstox?)/使用的解析器使用内置的并发

我想同时提高,整体性能和"每个文件"的表现.

你有这方面的经验吗?什么是最好的方式?

java xml parallel-processing multithreading xml-parsing

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

远程病例中的Lazy/Eager加载策略(JPA)

我遇到了像大多数尝试使用ORM进行远程处理的人一样的LazyLoading异常.在大多数情况下,切换到急切的提取解决了问题(延迟加载/非原子查询/线程安全/ n + 1问题......).但是,如果你正在处理一个非常大的对象图,那么急切的提取也会有缺点.

在大多数用例中不需要加载整个对象图.加载需要的更多数据(或从数据库加载数据并提取所需的子集)感觉很糟糕.

那么有什么替代方法可以解决这类问题(在运行时)?
我见过:

  • 将数据访问依赖项注入域对象,并让对象决定加载延迟或急切:感觉不好!域层应独立于任何服务.域注入也是一项昂贵的操作.域应该是数据访问无知的,应该使用或不使用数据访问.
  • 除了需要更多数据的用例之外,获取所有延迟:看起来更好的性能但这种方式会强制许多客户端=>服务器/数据库往返.懒惰字段的初始化也会遭受痛苦(尝试使用JPA).这种方式不具有通用性,并且受到上述相同的惰性限制.
  • 在Lazy类中封装持久性:更复杂,没有与ORM互操作的最佳实践.膨胀的服务层(这么多"手写"代码感觉很糟糕).
  • 对每个用例使用完整的预测:我们将最终使用SQL并放弃ORM的好处.
  • DTO /虚拟代理层强制执行更多复杂性并使代码更难维护(Wormhole antipattern >> Bloat).

我想了很多其他的方式.也许通用投影white./black listning是一个解决方案.

Idea(黑名单):使用提取操作的边界定义类名列表.如果属性匹配并且它是惰性的,则删除惰性(CGLIB)代理并使用null填充该值.否则,简单地防止获取(并将值保留为null).因此,我们可以在DAO中设置明确的界限.

示例:ProductDao.findByName("Soap",Boundaries.BLACKLIST,"Category, Discount") 最后两个参数也可以绑定到Boundaries对象中.

Idea(白名单):与黑名单一样,但您必须声明属性应加载到白名单中.

您如何看待这样的解决方案?(可能的问题,限制,优点......)我应该如何在java中编写这个?也许通过AOP来匹配DAO方法(因为我能够在那里修改cglib代理行为)?

java orm remoting jpa lazy-loading

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

学习Touch Typing的最佳方法是什么?

重复

如何提高打字技巧?**

我在http://speedtest.10-fast-fingers.com/上尝试了测试.我只到达:

You type 337 characters per minute You
have 58 correct words and you have 1
wrong words

如何提高打字速度?你知道什么免费资源?

我应该学习Dvorak键盘吗?

在此输入图像描述

keyboard dvorak performance

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

陷阱和实际用例:Toplink,Hibernate,Eclipse Link,Ibatis

我使用Hibernate作为我的JPA实现工作了很多.在大多数情况下,它工作正常!但我也看到了很多陷阱:

  • 使用持久化对象进行远程处理很困难,因为Hibernate用自己的集合实现替换了Java集合.所以每个客户端都必须有Hibernate .jar库.你必须注意LazyLoading异常等.解决这个问题的一种方法是使用webservices.
  • 对数据库进行脏检查而没有任何锁定.
  • "延迟SQL"导致数据访问不符合ACID.(丢失数据......)
  • 隐含更新>>因此我们不知道对象是否被修改(提交导致更新).

Toplink,Eclipse Link和Ibatis是否存在类似问题?我应该什么时候使用它们?他们有类似的表现吗?是否有理由选择Eclipse Link/Toplink ...而不是Hibernate?

hibernate jpa ibatis toplink eclipselink

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

如果存储的数据多于集群中的RAM,那么像Hazelcast和Scalris这样的分布式内存云数据库会发生什么?

这种分布式内存云数据库发生了什么

  1. Hazelcast
  2. Scalaris

如果要存储的数据多于群集中的RAM?

他们要交换吗?如果Swap空间已满,该怎么办?我无法在两个数据库中看到灾难恢复策略!如果内存已满,可能所有数据都会丢失?

是否可以将内容写入硬盘以解决内存问题?是否有其他数据库,它们提供与Hazelcast或Scalaris相同的功能以及备份功能/硬件存储/灾难恢复?

database cloud open-source key-value hazelcast

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