小编Jay*_*yan的帖子

Java:<init>和<clinit>有什么区别?

我无法理解以下文本......这是否意味着<clinit>对于空构造函数?为什么重要的是有两个不同的版本?

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html

2.9. Special Methods
Run Code Online (Sandbox Code Playgroud)

在Java虚拟机的级别上,每个构造函数(第2.12节)都显示为具有特殊名称的实例初始化方法<init>.该名称由编译器提供.因为名称<init>不是有效的标识符,所以它不能直接用在用Java编程语言编写的程序中.实例初始化方法可以仅通过invokespecial指令在Java虚拟机中调用,并且可以仅在未初始化的类实例上调用它们.实例初始化方法接受从其派生的构造函数的访问权限(第2.7.4节).

类或接口最多只有一个类或接口初始化方法,并通过调用该方法进行初始化(第2.17.4节).类或接口的初始化方法是静态的,不带参数.它有特殊的名字<clinit>.该名称由编译器提供.因为名称<clinit>不是有效的标识符,所以它不能直接用在用Java编程语言编写的程序中.Java虚拟机隐式调用类和接口初始化方法; 它们永远不会直接从任何Java虚拟机inw2struction中调用,但只能作为类初始化过程的一部分间接调用.

java jvm

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

如何更新zip存档中的一个文件

是否可以替换zip文件中的文件而不解压缩删除旧文件添加新文件并重新拉回?

原因是我有一个zip文件非常大,zip文件中有一个xml,我有时需要更新.拉开拉链并重新拉链需要很长时间.所以我想通过脚本替换zip中的一个xml.我已经检查了xml的更新.

那么可以在不解压缩和重新压缩的情况下更换一个xml吗?

对不起,我会使用zip命令做这样的事情但问题是脚本实际上是一个Android手机和zip不是一个命令我可以使用不幸抱歉我离开了那个.如果我可以,我肯定会使用zip,但我只有droid解压缩然后在busybox中有tar但是tar不能做我需要的东西

bash shell zip

73
推荐指数
6
解决办法
9万
查看次数

如何检查给定路径是否可能是另一条路径的子路径?

我试图找到给定的路径是否可能使用java的另一个路径的子.两条路径可能都不存在.

c:\Program Files\My Company\test\My App是一个可能的孩子c:\Program Files.

目前我正在这样做

boolean myCheck(File maybeChild, File possibleParent)
{
    return maybeChild.getAbsolutePath().startsWith( possibleParent.getAbsolutePath());
}
Run Code Online (Sandbox Code Playgroud)

java file-io

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

Java7 Double.toString()返回0.005/java6,它是0.0050

我正在从JDK6升级到JDK7.以下代码演示了一个微小的变化Double.toString()

public class StringDemo
{

    public static void main(String[] args)
    {
        System.out.println(Double.toString(.0005));
        System.out.println(Double.toString(.005)); //different string
        System.out.println(Double.toString(.05));
        System.out.println(Double.toString(.5));
    }
}
Run Code Online (Sandbox Code Playgroud)

JRE6

5.0E-4
0.0050
0.05
0.5
Run Code Online (Sandbox Code Playgroud)

JRE7

我正在寻找与上述变化相关的任何文档.兼容性页面不包含它.

5.0E-4
0.005   //changed.
0.05
0.5
Run Code Online (Sandbox Code Playgroud)

输出保存在许多参考文件中,并通过字符串比较进行比较 - 我需要修复比较,但很想知道有关此更改的更多详细信息.关于为什么这种改变会获得赏金的权威答案.

java number-formatting

23
推荐指数
1
解决办法
1385
查看次数

Java中的RAII设计模式

来自C++背景,我是RAII模式的忠实粉丝.我已经广泛使用它来处理内存管理和锁管理以及其他用例.

使用Java 1.7,我看到我可以使用try-with-resources模式来创建RAII模式.

我使用RAII创建了一个示例应用程序并且它可以工作,但是我看到java中的编译器警告.

样品申请

try(MyResource myVar = new MyResource(..))
{
    //I am not using myVar here 
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

warning: [try] auto-closeable resource node is never referenced in body of corresponding try statement
Run Code Online (Sandbox Code Playgroud)

我理解警告,这意味着我应该在try块中使用变量,我不需要一直这样做.

看看这个我假设Java并没有真正支持RAII,我可能误用了仅用于资源管理的功能,而不是C++中的RAII等价物.

几个问题:

  1. 我的理解是否正确?
  2. 忽视这些警告有多大风险?
  3. 如何通过蚂蚁忽略这些警告?
  4. 我有一个简单的方法来克服这个问题吗?

for 4我正在考虑将构造函数调用拆分为更简单的构造函数和像这样的实例方法

try(MyResource myVar = new Resource())
{
   myvar.Initialize()
   ....

}
Run Code Online (Sandbox Code Playgroud)

这解决了编译器的问题,但从设计的RAII中获取了本质.

java raii try-with-resources

18
推荐指数
2
解决办法
3447
查看次数

Postgres上C和Posix语言环境有什么区别?

我知道Postgres上的数据库区域设置负责正确的国家字符顺序,正确的下/上外壳等.

但为什么有两种语言中立的语言环境:posixc?它们之间是否有任何区别,或者它只是一个具有两个不同名称的中立区域设置?

更新正如Magnus Hagander在他的回答中所述,POSIX和C语言环境是具有不同名称的相同语言环境(无论Postgres是安装在POSIX还是Windows系统上).我不知道如何确认这些信息 - 在哪里寻找适当的文档部分?

Magnus的解释似乎是明智的,但同时奇怪的是同一个语言环境有两个名称可供选择.这样做的目的是什么 - 只是为了混淆?

sql database postgresql locale internationalization

17
推荐指数
1
解决办法
7566
查看次数

强制或生成jvm核心转储(IBM JVM)

可能重复:
我可以强制生成JVM崩溃日志文件吗?

如何在Java应用程序服务器上或一般情况下强制或生成JVM核心转储?

java apache websphere jvm java-ee

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

dbunit性能最佳实践

除了在实际dbunit站点上推荐的那些之外,还有哪些最佳实践/原则可以大大加快测试速度并保持可维护性?我渴望 java 工厂女孩这样,但由于静态类型,它看起来不太可能.

我目前的想法是在这一点上每个测试类有1个xml数据集 - 也许我会分享其中的一些,也许我没有.虽然一些测试数据可能是复制的交叉数据集,但我发现在3000个单元/集成测试中维护共享数据集太难了 - 而且我还有很长的路要走.

将会欣赏任何遵循的原则,导致测试表现良好且易于维护.

java testing junit dbunit integration-testing

15
推荐指数
1
解决办法
3418
查看次数

class从类型java.util.Set和java.util.List继承spliterator()的无关默认值

我有实现Set和List的类.程序在Java6和Java7中运行良好

public class SetList<V> implements Set<V>, List<V>
{
  ....
}
Run Code Online (Sandbox Code Playgroud)

使用Java 8,这不会编译.错误是

java:class trials.SetList从类型java.util.Set和java.util.List继承spliterator()的无关默认值

爪哇/ UTIL/Set.java:394

 ...
@Override
default Spliterator<E> spliterator() {
    return Spliterators.spliterator(this, Spliterator.DISTINCT);
}
Run Code Online (Sandbox Code Playgroud)

的java/UTIL/List.java

...
@Override
default Spliterator<E> spliterator() {
    return Spliterators.spliterator(this, Spliterator.ORDERED);
}
Run Code Online (Sandbox Code Playgroud)

这是否意味着我不能拥有在Java 8中同时实现Set和List的类?(现在看来已经到了支付技术债务的时候了.)

java technical-debt java-8

14
推荐指数
2
解决办法
2611
查看次数

仅使用Jsoup从子节点中选择?

我目前正在处理一个<ul>包含许多第一级<li>元素的元素.我想得到那些元素,只有那些元素.但是,当我使用Jsoup选择器或getElementsByTag获取它们时,它还会返回<li>这些第一级<li>元素中的元素.

我该怎么做才能获得第一级<li>元素?

这是代码:

Elements bundleList =  indieGala.select("section.games_bundle_box2")
                        .get(0).select("ul.unlock")
                        .get(0).getElementsByTag("li");
Run Code Online (Sandbox Code Playgroud)

这是html:

<section class="games_bundle_box2">
  <div class="games-container">

    <!-- List Game Unlocked -->
    <ul class="unlock">

      <!-- Item -->
      <li>
        <!-- Preview Thumb -->
        <a href="#game1" class="fancybox-various" title="Desura &amp; Steam for Windows and Mac - This game has been GreenLighted on Steam and all buyers of The IndieGala Flashpoint bundle will receive Steam keys in a few weeks!">
          <span class="tier1">
            Pay minimum 
            <em class="color-text">
              $1 …
Run Code Online (Sandbox Code Playgroud)

html java dom screen-scraping jsoup

12
推荐指数
1
解决办法
7723
查看次数