如何在Java中将字节大小转换为人类可读的格式?像1024应该变成"1 Kb"而1024*1024应该变成"1 Mb".
我有点厌倦为每个项目编写这个实用工具方法.Apache Commons中是否有任何静态方法?
假设我们有一个班级:
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有这样的东西)
Maven:如何从命令行更改目标目录的路径?
(在某些情况下我想使用另一个目标目录)
假设我们的应用程序中有一个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中使用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) 前段时间我读了一篇文章,预计将在Servlet API 3.0中出现.我记得我读过你可以在/WEB-INF/lib/somelib.jar/META-INF/web/ .jsp中保存一些.jsp文件,这些资源将暴露给Web应用程序的上下文根.
我刚刚安装了Tomcat7试一试,但我发现没有文档可以将一些web资源放在jar文件中.
考虑一下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) 我正在尝试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的处理.
懒惰的线程安全单例实例对每个编码器来说都不容易理解,所以我想在我们的企业框架中创建一个可以完成这项工作的类.
你怎么看待这件事?你觉得它有什么坏处吗?在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) 我是自动化测试和dbUnit的新手.所以我很感激你的建议.
我将创建一个测试套件,它将以下列方式运行:
直到那里它看起来不错,但我不明白的是,如何在测试运行后将数据库恢复到STATE0并更改数据?
我可以用dbUnit做到吗?
还是别的什么?
我应该在每次测试之前重新创建数据库吗?
简单的不在测试中提交事务对我来说是不合适的,因为测试最终会运行多个事务,可能不止一个数据库连接.
java ×9
servlets ×2
testing ×2
tomcat ×2
tomcat7 ×2
unit-testing ×2
caching ×1
dbunit ×1
formatting ×1
lazy-loading ×1
maven ×1
maven-2 ×1
mocking ×1
mockito ×1
singleton ×1
spring ×1
spring-data ×1