我正在阅读一篇文档,其中讨论了Java的即时编译器(JIT)优化技术.其中一个是"循环反转".文件说:
用
while循环替换常规do-while循环.而do-while循环的中设置if条款.这种替换可以减少两次跳跃.
循环反转如何工作以及它如何优化我们的代码路径?
注意: 如果有人可以用Java代码的例子解释JIT如何将其优化为本机代码以及为什么它在现代处理器中是最佳的,那将是很好的.
我最近读过这篇文章并看过有人使用这个课程,但在几乎所有情况下,使用它null都会起作用 - 如果不是更直观的话.有人能提供一个具体的例子Optional来实现null无法或更清洁的方式吗?我唯一能想到的就是使用Maps不接受null密钥的东西,但即便如此,也可以使用null值的"映射"来完成.任何人都可以给我一个更有说服力的论点吗?谢谢.
有人可以向我解释这里发生了什么:
char c = '+';
int i = (int)c;
System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));
Run Code Online (Sandbox Code Playgroud)
这打印i: 43 ch:-1.这是否意味着我必须依靠原始转换来转换char为int?那么如何将a转换Character为Integer?
编辑:是的,如果它不是一个数值,我知道Character.getNumericValue返回-1,这对我有意义.问题是:为什么做原始转换会返回43?
Edit2: 43是ASCII for +,但我希望演员不会成功,就像getNumericValue没有成功一样.否则,这意味着有两种语义等价的方法来执行相同的操作,但结果不同?
我有大约50个数据库都设置在不同的主机名,要求我通过SSH隧道连接到它们.
例如:
SSH主机在 ssh.example.com
MySQL主持人在 mysql1.example.com
我已经设法使用autossh(运行Debian的Web服务器)创建隧道,但我似乎无法弄清楚如何连接到SSH隧道之外的特定MySQL主机名.
键入lsof -i -n | egrep '\<ssh\>'确认隧道正在工作(将端口3307发送到ssh.example.com端口3306)
因此,当我尝试时,我mysql -h 127.0.0.1 -P 3307拒绝Connection.不太奇怪,因为它不是MySQL服务器.
我向你们提问:
如何在mysql1.example.com创建SSH隧道后指定主机?我试过到处寻找,但似乎无法弄明白.
给定
n数组中的正实数,找出该集合中是否存在三元组,使得三元组的总和在该范围内(1, 2).在线性时间和恒定空间中进行.
- 该数组未订购.
- 数字是积极的
- 数字是实数
任何帮助将不胜感激.谢谢.
为什么不ObjectOutputStream.writeObject(Object o)带Serializable?为什么要服用Object?
class MyClass
{
private static volatile Resource resource;
public static Resource getInstance()
{
if(resource == null)
resource = new Resource();
return resource;
}
}
Run Code Online (Sandbox Code Playgroud)
这里我怀疑是在实践中根据java并发性,如果你使用volatile,安全发布会发生(即一旦引用对另一个线程可见,数据也可用).我可以在这里使用吗?但如果它是正确的,那么假设thread1现在检查"资源"并且它为null,因此它开始创建对象.当thread1正在创建objet时,另一个线程即thread2开始检查"resource"的值,而thread2发现它为null(假设创建"resource"对象需要相当长的时间,而且thread1尚未完成创建,所以安全发布没有发生因此不可用于thread2)那么它还会开始创建对象吗?如果是,那么类不变量就会中断.我对么?请帮我理解这里特别使用的volatile.
我们都知道最大和子阵列和着名的Kadane算法.但是我们可以使用相同的算法来找到最小总和吗?
我的看法是:
改变符号并找到最大总和,与我们计算最大总和子阵列的方式相同.然后更改数组中元素的符号以使其处于初始状态.
如果有任何问题,请帮我纠正算法.
极端情况:我知道如果所有元素都是正数就会出现问题,我们可以通过执行一些预处理来处理这种情况,即如果所有元素都是+ ve,则遍历数组,而不是仅返回数组中的最小数字.
上面提到的算法将起作用并由dasblinkenlight很好地支持(解释).
对于给定的二叉树,找到最大的子树,它也是二叉搜索树?
例:
输入:
10
/ \
50 150
/ \ / \
25 75 200 20
/ \ / \ / \ / \
15 35 65 30 120 135 155 250
Run Code Online (Sandbox Code Playgroud)
输出:
50
/ \
25 75
/ \ /
15 35 65
Run Code Online (Sandbox Code Playgroud) java ×6
algorithm ×4
arrays ×2
binary-tree ×1
character ×1
concurrency ×1
generics ×1
guava ×1
integer ×1
jit ×1
jvm ×1
math ×1
mysql ×1
primitive ×1
ssh-tunnel ×1