小编Sea*_*oyd的帖子

带有过期密钥的基于Java时间的映射/缓存

你们是否知道Java Map或类似的标准数据存储在给定的超时后自动清除条目?这意味着老化,旧的过期条目会自动"老化".

最好是在可通过Maven访问的开源库中?

我知道自己实现这些功能的方法,并且过去曾多次这样做过,所以我不是在这方面寻求建议,而是指向一个好的参考实现.

基于WeakReference的解决方案(如WeakHashMap)不是一个选项,因为我的键很可能是非实习字符串,我想要一个不依赖于垃圾收集器的可配置超时.

Ehcache也是一个我不想依赖的选项,因为它需要外部配置文件.我正在寻找一个仅限代码的解决方案.

java caching dictionary

241
推荐指数
4
解决办法
16万
查看次数

用于ping HTTP URL以获取可用性的首选Java方法

我需要一个监视器类来定期检查给定的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)
  1. 这有什么好处(它会做我想要的)吗?
  2. 我必须以某种方式关闭连接吗?
  3. 我想这是一个GET请求.有没有办法发送HEAD

java url http ping

157
推荐指数
3
解决办法
16万
查看次数

如何为JVM设置默认语言环境?

我想将我的JVM的默认语言环境设置为fr_CA.有什么可能的选择呢?

我只知道一个选项 Locale.setDefault()

java globalization localization

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

Shiro vs. SpringSecurity

我目前正在评估基于Java的安全框架,我是一个Spring 3.0用户,所以SpringSecurity似乎是正确的选择,但Spring安全性似乎过于复杂,它似乎并不像是让安全性更容易实现, Shiro似乎更连贯,更容易理解.我正在寻找这两个框架之间的利弊列表.

java spring spring-security shiro

132
推荐指数
3
解决办法
4万
查看次数

格式化文件大小为MB,GB等

我需要使用合理的单位将文件大小显示为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)

java string format numbers

120
推荐指数
3
解决办法
9万
查看次数

在JPA 2中,使用CriteriaQuery,如何计算结果

我对JPA 2很新,它是CriteriaBuilder/CriteriaQuery API:

CriteriaQuery 的javadoc

CriteriaQuery 在Java EE 6教程中

我想计算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)

这不是正确的方法......

有解决方案吗?

java criteriaquery jpa-2.0

109
推荐指数
5
解决办法
13万
查看次数

相当于IOUtils.toString(InputStream)的番石榴

Apache Commons IO有一个很好的方便方法IOUtils.toString()来读取InputStream一个String.

因为我试图从Apache Commons转移到Guava:在番石榴中是否有相同的东西?我查看了com.google.common.io包中的所有类,我找不到任何简单的东西.

编辑:我理解并欣赏charsets的问题.事实上,我知道所有的源都是ASCII(是的,ASCII,而不是ANSI等),所以在这种情况下,编码对我来说不是问题.

java io inputstream guava

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

即使另一个配置文件被激活,如何保持activeByDefault的Maven配置文件处于活动状态?

我在我的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-2 maven-3 maven

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

缺少Eclipse项目中的Maven依赖项

我们建立了一个与maven合作解决依赖关系的项目.它通常工作正常,但现在我正在尝试编译并在新PC上运行它,我在Eclipse中缺少依赖项的问题.

有趣的是,如果我在控制台或日食中运行"mvn package",它可以正常运行,甚至可以生成包含所有必需罐子的战争.只有Eclipse抱怨"项目未构建,因为它的构建路径不完整.无法找到org.slf4j.Logger的类文件......".如果我将项目与其他计算机进行比较(项目工作正常),我注意到Eclipse中的"Maven依赖项"列表中缺少相当多的库.虽然他们在打包的战争中,他们也可以在存储库文件夹下找到它们.

所以,jar-s只是Eclipse不会在"Maven依赖"下列出所有内容.我能做什么?

计算机在Windows 7上运行64位java和eclipse.

eclipse maven-2 m2eclipse

98
推荐指数
9
解决办法
34万
查看次数

Java:调用一个调用重写方法的超级方法

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 inheritance overriding super

86
推荐指数
4
解决办法
9万
查看次数