我在下面阅读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位模式启动它.
问题:
java
,我的PATH中将启动任何安装(32位或64位JDK).WebSQL和IndexedDB都是用于访问(CRUD)Web浏览器中底层嵌入式数据库的DB API.其中,如果我是正确的,就像SQL一样访问(CRUD)任何客户端 - 服务器数据库,如Oracle等(在许多情况下,WebSQL和IndexedDB的支持在同一浏览器上可用)
而且由于WebSQL和IndexedDB都是API,所以它意味着说WebSQL和IndexedDB的性能并不完全正确(因为它们更像是查询/访问语言),但它在很大程度上取决于底层嵌入式数据库的性能.而且,根据Google的说法,LevelDB比SQLite更快
我还在学习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?如果是这样,为什么?或者只是从价格中删除小数位?或者它有其他目的吗?
谢谢!
请注意:我知道这些差异,所以这个问题不是要知道它们之间的区别,而是为了别的东西。
我把我的理解和知识(对于那些不知道的人)放在下面,这些知识来自可靠的信息来源。
Gigabyte 和 Gigabit 是十进制表示法,分别代表字节和位的 10 次方。
Gibibyte 和 Gibibit 用于二进制表示法,分别表示字节和位的 2 次幂。
为了符号,字节将始终表示为 B,位将始终表示为 b。
据我所知,以上信息属实。
下面是引用,可以在很多地方看到,包括Wiki 32-bit,Stackoverflow 32 bit等。 如下所示,32 位内存地址可以访问 4 GiB(这意味着 4 gibibyte 而不是 4 gibibit)字节可寻址内存。
因此,具有 32 位内存地址的处理器可以直接访问 4 GiB 的字节可寻址内存。
问题:
我真的很困惑(实际上快疯了)2^32位内存地址如何访问 4 gibi字节的可寻址内存?不应该是 4 Gibibit 或 0.5 …
int 类型的最大十进制文字是 2147483648。
这个陈述是否可以被认为是正确的,因为Integer.MAX_VALUE
是2147483647
?
请注意,上述声明中的重点是“int”。如果有人认为它是在“十进制文字”的上下文中讨论的,那么即使 2147483649
如此,也应该是正确的。
所以,如果某物是某种类型,int
那么它的最大值必须是2147483647
。
是我弄错了还是应该更新该声明?
的wait()
物体上的方法可以被称为仅在即当前线程同步上下文必须有对象的锁来调用wait()
方法.现在,如果一个线程T1对一个object(obj
)有一个锁并调用它的wait方法obj.wait()
.其他线程怎么能锁定这个对象(obj
),这样他们也可以调用wait,这已经拥有了T1?
我想要消耗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) 在这段代码中,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) 我将很快尝试我的OCA,并且我已经获得有关如何正确声明Longs和Floats的混合信息.
从JavaSE8开始,如何正确地声明一个Long和一个Float,就像在演员值的末尾有额外的L或F一样,或者这不再是必要的吗?
这段代码有效
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的独特之处吗?