小编Sim*_*eon的帖子

对象不变性的单元测试

我想确保给定的一组对象是不可变的.

我正在考虑以下方面的事情:

  1. 检查每个字段是否为私人决赛
  2. 检查课程是否是最终的
  3. 检查可变成员

所以我想我的问题是:可能吗?

我可以递归地检查一个类的每个成员是否都有它的字段private final,但这还不够,因为一个类可以有一个名为e的方法getHaha(param),它将给定的param添加到一个数组中.

那么有一个很好的方法来检查一个对象是不可变的还是甚至可能?

谢谢,

java unit-testing immutability

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

如何仅使用PrimeFaces inputMask元素将输入限制为可变数量的数字

我需要定义类似于这个正则表达式的东西:

[0-9]{1, 5}
Run Code Online (Sandbox Code Playgroud)

在PrimeFaces <inputMask>元素上:

<p:inputMask mask="regexGoesHere" value="#{someBean.val}"/>
Run Code Online (Sandbox Code Playgroud)

我看了PrimeFaces展示,但我无法弄清楚如何做到这一点.

除了JavaScript之外,有没有人知道如何以任何方式做到这一点?

我并不是在寻找一个解决方案,<inputMask>任何限制我在客户端输入字母输入信件都可以.

谢谢

jsf primefaces

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

JVM是否在达到-Xmx限制时强制进行垃圾回收?

问题基本上包含在标题中.

假设您的应用程序已达到其JVM -Xmx限制.当该应用程序需要更多内存时,是否强制进行垃 (在HotSpot JVM中)

我无法解释的第二个奇怪的事情是,我目前有一个运行-Xmx = 2048m的应用服务器,"top"命令(在linux上)为其进程报告2.7g.

那么应用程序如何/何时允许超过其-Xmx?

谢谢,

java garbage-collection memory-management

10
推荐指数
3
解决办法
3980
查看次数

在内存中加载文本文件的最快/最干净的方法

我之前已经问过类似的问题,但我找不到能回答我确切问题的问题.

我需要一种方法来String使用最少的代码读取文件,并尽可能简单和最佳.

我不是在寻找:

final BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
while ((line = br.readLine()) != null) {

  // logic
}
Run Code Online (Sandbox Code Playgroud)

而且我知道我可以写自己的助手类来做到这一点.

我正在寻找更多的东西:

final String wholeFileAsStr = Something.load(file);
Run Code Online (Sandbox Code Playgroud)

哪里Something.load()是超级优化,而阅读呢,正在文件的大小考虑,例如适当缓冲文件.

任何人都可以推荐一些我不知道的Guava或Apache的东西吗?

提前致谢.

java performance coding-style text-files

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

调用entityManager.getTransaction()时的EJBException

这可能是微不足道的,但我会喜欢一些帮助.

我明白了:

 javax.ejb.EJBException: java.lang.IllegalStateException: Illegal to call this method from injected, managed EntityManager 
 11:54:37,105 ERROR [STDERR] at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:77)
 11:54:37,105 ERROR [STDERR] at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
 11:54:37,105 ERROR [STDERR] at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
Run Code Online (Sandbox Code Playgroud)

做的时候:

@PersistenceContext(unitName = "someName")
private EntityManager em;

...

final EntityManager entityManager = getEntityManager();
final EntityTransaction tx = entityManager.getTransaction(); // here
Run Code Online (Sandbox Code Playgroud)

谁能告诉我原因可能是什么?

java hibernate jpa transactions ejb-3.0

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

寻找spring bean之间循环依赖关系的良好实践

我有这个例外:

SEVERE: Context initialization failedorg.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'myService': Bean with name 'myService' has been injected into other beans [otherService] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议找到循环依赖来源的好策略吗?

我目前正在查看上下文定义,但正如您可能想象的那样,在某个成熟度的项目中,这需要相当长的时间.

所以我一般都在寻找快速找到循环bean依赖关系的想法.

java spring circular-dependency

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

使用aspect作为从应用程序逻辑中删除防御性检查的方法是一个好主意吗?

有点长的头衔,但这通常是个问题.

我想知道您是否认为执行以下操作是个好主意.

代替:

public void buyItem(int itemId, int buyerId) {
    if (itemId <= 0) {

        throw new IlleglArgumentException("itemId must be positive");
    }
    if (buyerId <= 0) {

        throw new IlleglArgumentException("buyerId must be positive");
    }
    // buy logic
}
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西:

@Defensive("isPositive(#itemId, #buyerId)")
public void buyItem(int itemId, int buyerId) {
    // buy logic
}
Run Code Online (Sandbox Code Playgroud)

你认为这是好/可怕/太花哨/太慢?如果你真的认为它很好我想用SpEL来实现它,那么有没有人有更好/更轻/更快的东西?

谢谢,

java aop coding-style spring-aop

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

Log4j不会在JBoss 6 EAP下记录任何内容

我在这个主题上看到了几个问题,但由于它们与错误相关,我不认为这是重复的.

我的问题是我无法登录.我正在JBoss 6 EAP上部署.war,但是也没有记录错误.在JBoss的/ log文件夹下还有一个名为my .war的文件,但它也是空的.

.war部署罚款和工作.由于我使用Spring,我甚至看不到它初始化它的上下文.

在Tomcat 7下使用相同的.war进行日志记录.

我创建了一个log4j.xml并将其放在我的WEB-INF/classes目录中(我也尝试过/ WEB-INF):

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
  </appender> 

  <root> 
    <priority value ="info" /> 
    <appender-ref ref="console" /> 
  </root>

</log4j:configuration>
Run Code Online (Sandbox Code Playgroud)

我正在使用log4j 1.2.17,Spring 3.1和JBoss 6 EAP.

任何帮助非常感谢,谢谢

java log4j jboss-eap-6

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

可以编译器强制执行对象不变性的OO语言列表

任何人都可以给我一个语言列表,其中类不变性可以编译器强制执行和测试吗?

我需要能够做到这样的事情:

class immutable Person {
    private String name = "Jhon"; // lets say the String is mutable

    public Person(String name) {
        this.name = name; // ok
    }

    public void setName(String newName) { 
        this.name = newName; // does not compile
    }

    public void getName() { 
        return this.name; //returns reference through which name can't be mutated
    }

    private void testImmutability() {
        getName().setFirstChar('a'); // does not compile
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

有关更多说明,请参见此处.

language-agnostic programming-languages language-design immutability

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

在URL中公开DB内部ID是不好的做法吗?

在URL中公开DB内部ID是不好的做法吗?

例如,假设我有一个users表,每行有一些ID(主键).暴露URL myapp.com/accountInfo.html?userId=5,在哪里5是一个真正的主键,被视为"坏事",为什么?

还假设我们正确防御SQL注入.

我最感兴趣的是与Java Web技术堆栈相关的答案(因此是java标签),但一般的答案也会非常有用.

谢谢.

java database url obfuscation web

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