小编hag*_*wal的帖子

启动Java时使用-d32和-d64

我在下面阅读JDK FAQ的摘录

如何在32位和64位操作之间进行选择?什么是默认值?选项-d32和-d64已添加到Java启动程序,以指定程序是在32位还是64位环境中运行.在Solaris上,它们分别对应于ILP32和LP64数据模型.由于Solaris在同一Java安装中包含32位和64位J2SE实现,因此您可以指定任一版本.如果既未指定-d32也未指定-d64,则缺省值是在32位环境中运行.

现在测试一下,我登录到我的64位Ubuntu客户操作系统并安装了64位JDK版本 - Linux x64 165.24 MB jdk-8u45-linux-x64.tar.gz.

安装JDK之后,当我运行我的java程序时,-d64一切都按预期进行,因为它实际上是64位安装,但是当我使用时,-d32我得到错误说Error - This Java instance does not support 32 bit JVM.

错误对我来说是可以理解的,但令我困惑的是这一行(如上面引用的段落中所述)"选项-d32和-d64已被添加到Java启动程序中以指定程序是以32或64运行 -位环境."
按照这一行,我的理解是,当启动64位版本的Java时,-d32可以用它以32位模式启动它.

问题:

  1. 我的理解是否正确?如果它是正确的,那么我收到错误?
  2. 如果我的理解不正确,那么为什么我需要这些命令行参数,因为当我使用启动Java时java,我的PATH中将启动任何安装(32位或64位JDK).

java command-line-arguments

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

IndexedDB性能和IndexedDB v/s WebSQL性能比较

WebSQL和IndexedDB都是用于访问(CRUD)Web浏览器中底层嵌入式数据库的DB API.其中,如果我是正确的,就像SQL一样访问(CRUD)任何客户端 - 服务器数据库,如Oracle等(在许多情况下,WebSQL和IndexedDB的支持在同一浏览器上可用)

  1. 那么,这是否意味着WebSQL和IndexedDB都在访问(CRUD)相同的底层嵌入式数据库,如果是这样,那么它将在所有Web浏览器上具有相同的性能!
  2. 但我认为情况并非如此,那么它是否意味着Web浏览器将拥有多个底层嵌入式数据库?为什么在同一个浏览器中应该有2个底层嵌入式数据库?

而且由于WebSQL和IndexedDB都是API,所以它意味着说WebSQL和IndexedDB的性能并不完全正确(因为它们更像是查询/访问语言),但它在很大程度上取决于底层嵌入式数据库的性能.而且,根据Google的说法,LevelDB比SQLite更快

  1. 是否正确地说它不是WebSQL和IndexedDB之间的性能差异,而是底层嵌入式数据库的性能?
  2. IE,Chrome,Android浏览器的底层嵌入式数据库是什么?我无法在网上找到这些信息,是否有人发现或编译过它?

browser sqlite web-sql indexeddb leveldb

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

将BigDecimal.ZERO添加到另一个BigDecimal值

我还在学习Java,我一直在读几个网站上的文章.我在Java Code Geeks上发现了一篇文章,我有一个问题.文章解释了开放/封闭原则.本文使用了一个对公司产品应用折扣的方案.代码的第一部分如下:

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Discount {

    public BigDecimal apply(BigDecimal price) {

        BigDecimal percent = new BigDecimal("0.10");
        BigDecimal discount = price.multiply(percent);
        return price.subtract(discount.setScale(2, RoundingMode.HALF_UP));
    }
}
Run Code Online (Sandbox Code Playgroud)

代码的第二部分如下:

import java.math.BigDecimal;

public class DiscountService {

    public BigDecimal applyDiscounts(BigDecimal price,Discount discount) {

        BigDecimal discountPrice = price.add(BigDecimal.ZERO);
        discountPrice = discount.apply(discountPrice);
        return discountPrice;
   }
}
Run Code Online (Sandbox Code Playgroud)

在Oracle的网站上,它表示BigDecimal中的ZERO的值为0,标度为零.这是否意味着price.add(BigDecimal.ZERO)我们只是在引入的价格中加0?如果是这样,为什么?或者只是从价格中删除小数位?或者它有其他目的吗?

谢谢!

java

6
推荐指数
1
解决办法
541
查看次数

技嘉v/s Gibibyte & 千兆v/s Gibibit

请注意:我知道这些差异,所以这个问题不是要知道它们之间的区别,而是为了别的东西。

我把我的理解和知识(对于那些不知道的人)放在下面,这些知识来自可靠的信息来源。

  1. 所有这些都是数字信息字节的倍数单位。
  2. Gigabyte 和 Gigabit 是十进制表示法,分别代表字节和位的 10 次方。

    • 千兆字节 = 10^9 字节 (GB)
    • 千兆 = 10^9 位(Gb 或 Gbit)
  3. Gibibyte 和 Gibibit 用于二进制表示法,分别表示字节和位的 2 次幂。

    • Gibibyte = 2^30 字节 (GiB)
    • Gibibit = 2^30 字节 (Gibit)
  4. 为了符号,字节将始终表示为 B,位将始终表示为 b。

据我所知,以上信息属实。

下面是引用,可以在很多地方看到,包括Wiki 32-bitStackoverflow 32 bit等。 如下所示,32 位内存地址可以访问 4 GiB(这意味着 4 gibibyte 而不是 4 gibibit字节可寻址内存。

因此,具有 32 位内存地址的处理器可以直接访问 4 GiB 的字节可寻址内存。

问题:
我真的很困惑(实际上快疯了)2^32内存地址如何访问 4 gibi字节的可寻址内存?不应该是 4 Gibibit 或 0.5 …

java byte operating-system 32-bit memory-address

5
推荐指数
1
解决办法
2061
查看次数

int 类型的最大十进制文字是 2147483648 还是 2147483647?

根据JLS §3.10.1

int 类型的最大十进制文字是 2147483648。

这个陈述是否可以被认为是正确的,因为Integer.MAX_VALUE2147483647

请注意,上述声明中的重点是“int”。如果有人认为它是在“十进制文字”的上下文中讨论的,那么即使 2147483649如此,也应该是正确的。

所以,如果某物是某种类型,int那么它的最大值必须是2147483647

是我弄错了还是应该更新该声明?

java

5
推荐指数
1
解决办法
1664
查看次数

线程 - 等待()

wait()物体上的方法可以被称为仅在即当前线程同步上下文必须有对象的锁来调用wait()方法.现在,如果一个线程T1对一个object(obj)有一个锁并调用它的wait方法obj.wait().其他线程怎么能锁定这个对象(obj),这样他们也可以调用wait,这已经拥有了T1?

java multithreading thread-safety

3
推荐指数
1
解决办法
249
查看次数

Spring RestTemplate readtimeout属性不能正常工作 - 奇怪的问题

我想要消耗2个服务,并希望有不同的超时.所以,我已经覆盖了Spring SimpleClientHttpRequestFactory并且使用了它HttpDaoImpl.

现在一切都工作在一个环境中,但完全一样的EAR不能在其他环境中工作,只有在这两个环境不同的是,我连接的服务URL是在一个非LB在其他负载平衡的URL.问题出现在负载均衡的服务URL中.

问题是每次httpReadTimeout都在生效或被使用但不是XYZHttpReadTimeout,即使我有条件地设置了时间.

这是一个非常奇怪的问题,因为一切都在一个环境中工作.而不是在其他方面.到目前为止我对可能的根本原因的猜测是负载均衡的URL,但我仍然无法看到为什么负载平衡的URL可能会出现问题的任何技术原因,因为我的机器将打开套接字并在读取超时后关闭它.

我已将记录器放入CustomClientHttpRequestFactory并验证正在使用正确的值但最终以某种方式读取超时未按预期工作.

CustomClientHttpRequestFactory.java:

public class CustomClientHttpRequestFactory extends SimpleClientHttpRequestFactory{

    private Log logger = LogFactory.getLog(CustomClientHttpRequestFactory.class);

    @Value("${httpRequest.readTimeoutInMilliseconds}")
    private Integer httpRequestTimeout;

    @Value("${httpRequest.connectionTimeoutInMilliseconds}")
    private Integer httpReadTimeout;

    @Value("${XYZ.httpRequest.readTimeoutInMilliseconds}")
    private Integer XYZHttpRequestTimeout;

    @Value("${XYZ.httpRequest.connectionTimeoutInMilliseconds}")
    private Integer XYZHttpReadTimeout;

    @Value("${sgw.XYZHttp.service.url}")
    private String XYZSystemUrl;


    /**
     * Overriding the default and setting a separate read timeout and HTTP connection timeout values for XYZ transactions.
     * 
     * @param uri
     */
    public void setTimeoutProperties(URI uri){
        boolean isXYZTransaction = isXYZTransaction(uri);
        Integer …
Run Code Online (Sandbox Code Playgroud)

java sockets spring weblogic resttemplate

3
推荐指数
1
解决办法
2897
查看次数

TransactionInactiveError:无法在'IDBObjectStore'上执行'add':事务处于非活动状态

在这段代码中,store1.add当我在控制台中查看它时,我遇到了问题TransactionInactiveError: Failed to execute 'add' on 'IDBObjectStore': The transaction is not active.

任何人帮助我,如果可能的话给出一些示例代码.

function indexInitialization(){

     var userDetails = indexedDB.open("dynamicServicess");

     userDetails.onupgradeneeded = function(e) {
         console.log("Upgrading...");
         var thisDB = e.target.result;
         var objectStore=thisDB.createObjectStore("servicess",{keyPath: "ID"});
         var objectStore2=thisDB.createObjectStore("businessareas",{keyPath: "ID"});
         var objectStore3=thisDB.createObjectStore("languages",{keyPath: "ID"});
         var objectStore4=thisDB.createObjectStore("rolenames",{keyPath: "ID"});
         objectStore2.createIndex("language", "LANGLOCALE", { unique: false });
         objectStore.createIndex("businessarea", "BUSINESSAREA", { unique: false });
     objectStore.createIndex("rolename", "ROLENAME", { unique: false });
     }

     userDetails.onsuccess = function(e) {
         console.log("Success!");
         db = e.target.result;
         indexedDbObjectCreation();

     }

     userDetails.onerror = function(e) {
         console.log("Error");      
         console.dir(e);
     } …
Run Code Online (Sandbox Code Playgroud)

indexeddb

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

Java变量声明当前标准

我将很快尝试我的OCA,并且我已经获得有关如何正确声明Longs和Floats的混合信息.

从JavaSE8开始,如何正确地声明一个Long和一个Float,就像在演员值的末尾有额外的L或F一样,或者这不再是必要的吗?

java java-8

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

为什么在";"之后无法识别变量 在java中

这段代码有效

public static void main(String[] args) {
//print from 1-100

    for (int i = 0;
         i < 100;
         i ++) 
    {
    System.out.print(i + "\n ");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这个没有.

public static void main(String[] args) {
//print from 1-100
    for (int i = 0;
         i < 100;
         i ++);     // Why does ; stop i from being recognized?
    {
    System.out.print(i + "\n ");
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么要在变量;之后i++)设置变量System.out.print(i + "\n ");

这是Java的独特之处吗?

java

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