小编Igo*_*hin的帖子

如何在java中将字节大小转换为人类可读的格式?

如何在Java中将字节大小转换为人类可读的格式?像1024应该变成"1 Kb"而1024*1024应该变成"1 Mb".

我有点厌倦为每个项目编写这个实用工具方法.Apache Commons中是否有任何静态方法?

java formatting apache-commons

503
推荐指数
13
解决办法
20万
查看次数

如何在Spring中将依赖项注入自我实例化的对象?

假设我们有一个班级:

public class MyClass {
    @Autowired private AnotherBean anotherBean;
}
Run Code Online (Sandbox Code Playgroud)

然后我们创建了这个类的对象(或者其他一些框架创建了这个类的实例).

MyClass obj = new MyClass();
Run Code Online (Sandbox Code Playgroud)

是否仍然可以注入依赖项?就像是:

applicationContext.injectDependencies(obj);
Run Code Online (Sandbox Code Playgroud)

(我认为Google Guice有这样的东西)

java spring dependency-injection

120
推荐指数
4
解决办法
7万
查看次数

Maven:如何从命令行更改目标目录的路径?

Maven:如何从命令行更改目标目录的路径?

(在某些情况下我想使用另一个目标目录)

java maven-2 maven

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

java中一个对象的线程安全缓存

假设我们的应用程序中有一个CountryList对象,它应返回国家/地区列表.加载国家是一项繁重的操作,因此应该缓存该列表.

其他要求:

  • CountryList应该是线程安全的
  • CountryList应加载延迟(仅按需)
  • CountryList应支持缓存失效
  • 考虑到缓存很少会失效,应优化CountryList

我提出了以下解决方案:

public class CountryList {
    private static final Object ONE = new Integer(1);

    // MapMaker is from Google Collections Library    
    private Map<Object, List<String>> cache = new MapMaker()
        .initialCapacity(1)
        .makeComputingMap(
            new Function<Object, List<String>>() {
                @Override
                public List<String> apply(Object from) {
                    return loadCountryList();
                }
            });

    private List<String> loadCountryList() {
        // HEAVY OPERATION TO LOAD DATA
    }

    public List<String> list() {
        return cache.get(ONE);
    }

    public void invalidateCache() {
        cache.remove(ONE);
    }
}
Run Code Online (Sandbox Code Playgroud)

你怎么看待这件事?你觉得它有什么坏处吗?还有其他办法吗?我怎样才能让它变得更好?我应该在这种情况下寻找另一种解决方案吗?

谢谢.

java caching lazy-loading

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

Mockito:如何验证一个方法只调用一次精确参数忽略对其他方法的调用?

在Java中使用Mockito如何验证方法只调用一次精确参数忽略对其他方法的调用?

示例代码:

public class MockitoTest {

    interface Foo {
        void add(String str);
        void clear();
    }


    @Test
    public void testAddWasCalledOnceWith1IgnoringAllOtherInvocations() throws Exception {
        // given
        Foo foo = Mockito.mock(Foo.class);

        // when
        foo.add("1"); // call to verify
        foo.add("2"); // !!! don't allow any other calls to add()
        foo.clear();  // calls to other methods should be ignored

        // then
        Mockito.verify(foo, Mockito.times(1)).add("1");
        // TODO: don't allow all other invocations with add() 
        //       but ignore all other calls (i.e. the call to clear())
    }

} …
Run Code Online (Sandbox Code Playgroud)

java testing unit-testing mocking mockito

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

在Web应用程序中公开jar文件中的资源(Tomcat7)

前段时间我读了一篇文章,预计将在Servlet API 3.0中出现.我记得我读过你可以在/WEB-INF/lib/somelib.jar/META-INF/web/ .jsp中保存一些.jsp文件,这些资源将暴露给Web应用程序的上下文根.

我刚刚安装了Tomcat7试一试,但我发现没有文档可以将一些web资源放在jar文件中.

  • servlet api 3.0中是否存在此功能?
  • tomcat 7.0中是否存在此功能?
  • 还有另一种在/lib/*.jar文件中使用jsp文件的方法吗?

java tomcat servlets tomcat7

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

如何缩短Spring Data JPA存储库中查询方法的名称?

考虑一下Spring Data Jpa存储库:

public interface UserRepository extends JpaRepository<User, Long> {

    User findOneByDeletedIsFalseAndActivationKey(String activationKey);

    List<User> findAllByDeletedIsFalseAndActivatedIsFalseAndCreatedDateBefore(DateTime dateTime);

    User findOneByDeletedIsFalseAndLogin(String login);

    User findOneByDeletedIsFalseAndEmail(String email);

}
Run Code Online (Sandbox Code Playgroud)

请注意每个方法中都有" DeletedIsFalse".有一种简单的方法可以缩短方法名称吗?喜欢ie:

@FullMethodName("findOneByDeletedIsFalseAndEmail")
User findOneByEmail(String email);
Run Code Online (Sandbox Code Playgroud)

spring-data spring-data-jpa

20
推荐指数
2
解决办法
6344
查看次数

禁用注释处理,但在servlet api 3.0(Tomcat7)中启用Web片段功能

我正在尝试Tomcat 7.0和Servlet API 3.0.

我有一个Servlet API 2.5的应用程序.所以我编辑了web.xml来为Servlet API 3.0配置它.更改后,Tomcat的开始时间增加了14秒.

所以我设置<web-app metadata-complete="true" ...并且Tomcat的开始时间恢复正常,因为tomcat不扫描每个类的注释.这很好,但是web-fragment.xml功能也被禁用了.

我想知道是否可以禁用Tomcat的注释扫描,但是要启用web-fragment.xml的处理.

java tomcat servlets tomcat7

17
推荐指数
2
解决办法
6238
查看次数

java中延迟线程安全单例实例化的模式

懒惰的线程安全单例实例对每个编码器来说都不容易理解,所以我想在我们的企业框架中创建一个可以完成这项工作的类.

你怎么看待这件事?你觉得它有什么坏处吗?在Apache Commons中有类似的东西吗?我怎样才能让它变得更好?

Supplier.java

public interface Supplier<T> {
    public T get();
}
Run Code Online (Sandbox Code Playgroud)

LazyThreadSafeInstantiator.java

public class LazyThreadSafeInstantiator<T> implements Supplier<T> {
    private final Supplier<T> instanceSupplier;

    private volatile T obj;

    public LazyThreadSafeInstantiator(Supplier<T> instanceSupplier) {
        this.instanceSupplier = instanceSupplier;
    }

    @Override
    // http://en.wikipedia.org/wiki/Double-checked_locking
    public T get() {
        T result = obj;  // Wikipedia: Note the usage of the local variable result which seems unnecessary. For some versions of the Java VM, it will make the code 25% faster and for others, it won't hurt.
        if …
Run Code Online (Sandbox Code Playgroud)

java singleton instantiation thread-safety lazy-evaluation

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

如何使用dbUnit将数据库恢复到初始状态?

我是自动化测试和dbUnit的新手.所以我很感激你的建议.

我将创建一个测试套件,它将以下列方式运行:

  • 创建一个内存H2数据库
  • 运行DDL脚本来创建表
  • 运行dbUnit以插入将由所有测试使用的初始数据(让我们称之为STATE0).
  • 运行测试

直到那里它看起来不错,但我不明白的是,如何在测试运行后将数据库恢复到STATE0并更改数据?

我可以用dbUnit做到吗?
还是别的什么?
我应该在每次测试之前重新创建数据库吗?

简单的不在测试中提交事务对我来说是不合适的,因为测试最终会运行多个事务,可能不止一个数据库连接.

java testing dbunit unit-testing

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