考虑以下代码:
public synchronized void onSignalsTimeout(List<SignalSpec> specs) {
if (specs != null && specs.size() > 0) {
for (SignalSpec spec : specs) {
ParsedCANSignal timeoutedSignal = new ParsedCANSignal();
SignalsProvider.getInstance().setSignal(spec.name, spec.parent.parent.channel, timeoutedSignal);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个简单的问题:当线程1调用onSignalsTimeout方法时,线程2可以访问在该方法中访问的对象吗?
如果'synchronized'锁只能访问此方法或访问此方法中使用的所有对象,则无法找到任何位置.
当我打开文件时,例如vim .bashrc
,vim打开文件并将第一个字母更改为g
.我看到的是以下内容:
g To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
...
Run Code Online (Sandbox Code Playgroud)
我改g
回来#
,但在加载文件后,它又改变了.发生多个文件.
我做的最后一件事是:installig gcc
和make
.
为什么会这样?
编辑:我的.vimrc文件:
set nocompatible
set backspace=indent,eol,start
set number
set tabstop=4
syntax on
Run Code Online (Sandbox Code Playgroud) 我认为这个问题很简单.但这是一个例子.
以下示例正常.我可以进行四舍五入,这里没有截断.
public static void main(String[] args) {
double d = 9.9;
long l = (long)d;
System.out.println(l);
}
Run Code Online (Sandbox Code Playgroud)
输出:
9
Run Code Online (Sandbox Code Playgroud)
现在数字超出了长期范围:
public static void main(String[] args) {
double d = 99999999999999999999999999999999.9;
long l = (long)d;
System.out.println(l);
}
Run Code Online (Sandbox Code Playgroud)
输出:
9223372036854775807
Run Code Online (Sandbox Code Playgroud)
这个让我烦恼.我不能继续使用完全不同的数字.我宁愿得到错误或异常.
有没有办法在Java中检测到这个?
我知道有什么setDisplayHomeAsUpEnabled
作用,但setDefaultDisplayHomeAsUpEnabled
我只能想知道什么是为了。没有找到文档,除了正在使用之外找不到任何东西。
我需要对两个字符执行XOR。我得到了这个功能,但是它不会打印出我期望的:
#!/bin/sh
xor() {
key=$1
length=${#key}
while read -r -N1 byte
do
char=${key:$((i % length)):1}
echo $((byte ^ char))
done
}
echo "5555" | xor "4567"
Run Code Online (Sandbox Code Playgroud)
输出:
1
1
1
1
4
Run Code Online (Sandbox Code Playgroud)
我希望带有掩码4567的输入5555能够看到输出:
1
0
3
2
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:所以我改变了我的功能:
xor() {
key=$1
length=${#key}
i=0
while read -r -N1 byte
do
char=${key:$((i % length)):1}
((i++))
echo $((byte ^ char))
done
}
Run Code Online (Sandbox Code Playgroud)
尝试致电时仍然出现错误:
cat $2 | xor $1
Run Code Online (Sandbox Code Playgroud)
// $ 1是键,$ 2是文件名
作为文件,我使用标准文本文件,并使用字符串作为键。它说在行echo $((byte ^ char))
< 上有错误:语法错误:期望操作数(错误的标记是“ <”)