你们是否知道Java Map或类似的标准数据存储在给定的超时后自动清除条目?这意味着老化,旧的过期条目会自动"老化".
最好是在可通过Maven访问的开源库中?
我知道自己实现这些功能的方法,并且过去曾多次这样做过,所以我不是在这方面寻求建议,而是指向一个好的参考实现.
基于WeakReference的解决方案(如WeakHashMap)不是一个选项,因为我的键很可能是非实习字符串,我想要一个不依赖于垃圾收集器的可配置超时.
Ehcache也是一个我不想依赖的选项,因为它需要外部配置文件.我正在寻找一个仅限代码的解决方案.
我需要一个监视器类来定期检查给定的HTTP URL是否可用.我可以使用Spring TaskExecutor抽象来处理"常规"部分,因此这不是主题.问题是:在java中ping URL的首选方法是什么?
这是我当前的代码作为起点:
try {
final URLConnection connection = new URL(url).openConnection();
connection.connect();
LOG.info("Service " + url + " available, yeah!");
available = true;
} catch (final MalformedURLException e) {
throw new IllegalStateException("Bad URL: " + url, e);
} catch (final IOException e) {
LOG.info("Service " + url + " unavailable, oh no!", e);
available = false;
}
Run Code Online (Sandbox Code Playgroud)
GET
请求.有没有办法发送HEAD
?我想将我的JVM的默认语言环境设置为fr_CA.有什么可能的选择呢?
我只知道一个选项 Locale.setDefault()
我目前正在评估基于Java的安全框架,我是一个Spring 3.0用户,所以SpringSecurity似乎是正确的选择,但Spring安全性似乎过于复杂,它似乎并不像是让安全性更容易实现, Shiro似乎更连贯,更容易理解.我正在寻找这两个框架之间的利弊列表.
我需要使用合理的单位将文件大小显示为String.
例如
1L ==> "1 B";
1024L ==> "1 KB";
2537253L ==> "2.3 MB"
Run Code Online (Sandbox Code Playgroud)
等等
我提出了自己的解决方案,它有类似的缺点:
private static final long K = 1024;
private static final long M = K * K;
private static final long G = M * K;
private static final long T = G * K;
public static String convertToStringRepresentation(final long value){
final long[] dividers = new long[] { T, G, M, K, 1 };
final String[] units = new String[] …
Run Code Online (Sandbox Code Playgroud) 我对JPA 2很新,它是CriteriaBuilder/CriteriaQuery API:
我想计算CriteriaQuery的结果而不实际检索它们.这是可能的,我没有找到任何这样的方法,唯一的方法是这样做:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<MyEntity> cq = cb
.createQuery(MyEntityclass);
// initialize predicates here
return entityManager.createQuery(cq).getResultList().size();
Run Code Online (Sandbox Code Playgroud)
这不是正确的方法......
有解决方案吗?
Apache Commons IO有一个很好的方便方法IOUtils.toString()来读取InputStream
一个String.
因为我试图从Apache Commons转移到Guava:在番石榴中是否有相同的东西?我查看了com.google.common.io
包中的所有类,我找不到任何简单的东西.
编辑:我理解并欣赏charsets的问题.事实上,我知道所有的源都是ASCII(是的,ASCII,而不是ANSI等),所以在这种情况下,编码对我来说不是问题.
我在我的pom.xml中有一个配置文件,除非明确停用(-P!firstProfile),否则它应始终处于活动状态.我通过使用activeByDefault标志解决了这个问题:
<profiles>
<profile>
<id>firstProfile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
...
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
现在在同一个pom.xml中我定义了第二个配置文件,只有在配置文件被激活时才会激活(-P secondProfile).因此默认行为是:firstProfile active,secondProfile inactive.在其他一些方面,除了第一个配置文件之外,我还想激活第二个配置文件.现在的问题是,如果我用"-P secondProfile"执行此操作,则不幸的是,第一个配置文件将被停用.Maven文档说明了这一点:
...除非使用前面描述的方法之一激活同一POM中的另一个配置文件,否则此配置文件将自动为所有版本激活.当在命令行上激活POM中的配置文件或通过其激活配置时,默认情况下处于活动状态的所有配置文件都将自动停用....
是否有可能如何保持firstProfile始终处于活动状态(无需在settings.xml中声明它)?
我们建立了一个与maven合作解决依赖关系的项目.它通常工作正常,但现在我正在尝试编译并在新PC上运行它,我在Eclipse中缺少依赖项的问题.
有趣的是,如果我在控制台或日食中运行"mvn package",它可以正常运行,甚至可以生成包含所有必需罐子的战争.只有Eclipse抱怨"项目未构建,因为它的构建路径不完整.无法找到org.slf4j.Logger的类文件......".如果我将项目与其他计算机进行比较(项目工作正常),我注意到Eclipse中的"Maven依赖项"列表中缺少相当多的库.虽然他们在打包的战争中,他们也可以在存储库文件夹下找到它们.
所以,jar-s只是Eclipse不会在"Maven依赖"下列出所有内容.我能做什么?
计算机在Windows 7上运行64位java和eclipse.
public class SuperClass
{
public void method1()
{
System.out.println("superclass method1");
this.method2();
}
public void method2()
{
System.out.println("superclass method2");
}
}
public class SubClass extends SuperClass
{
@Override
public void method1()
{
System.out.println("subclass method1");
super.method1();
}
@Override
public void method2()
{
System.out.println("subclass method2");
}
}
public class Demo
{
public static void main(String[] args)
{
SubClass mSubClass = new SubClass();
mSubClass.method1();
}
}
Run Code Online (Sandbox Code Playgroud)
我的预期输出:
子类method1
超类method1
超类method2
实际产量:
子类method1
超类method1
子类方法2
我在技术上知道我已经覆盖了一个公共方法,但我认为因为我正在调用super,所以超级中的任何调用都会保留在super中,这种情况不会发生.关于如何实现这一点的任何想法?
java ×8
maven-2 ×2
caching ×1
dictionary ×1
eclipse ×1
format ×1
guava ×1
http ×1
inheritance ×1
inputstream ×1
io ×1
jpa-2.0 ×1
localization ×1
m2eclipse ×1
maven ×1
maven-3 ×1
numbers ×1
overriding ×1
ping ×1
shiro ×1
spring ×1
string ×1
super ×1
url ×1