我试图ll从文件中读取命令的参数.我有args.txt内容文件some?.我所拥有的文件与名称some1,some2以及some3和其他一些文件.当我执行时,cat args.txt | ll我获得与执行时相同的结果ll.
有人可以解释我为什么会这样,我怎样才能达到预期的效果.提前致谢.
我有以下问题:为什么在这种情况下第二个线程看到第一个线程何时更改数字的值:
public static void main(String[] args) throws InterruptedException {
Temp t = new Temp();
t.go();
}
static class Temp {
int number = 2;
public void go() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
number = 100;
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
System.out.println(number);
}
}
}).start();
}
}
Run Code Online (Sandbox Code Playgroud)
我期望从第二个线程缓存数值,当第一个线程更改它时,第二个线程将"不知情",并且它将始终打印2!但实际上当第一个线程更改了数字变量时,第二个线程会看到此更改并开始打印100.为什么会这样?我知道第二个线程不会100%确定缓存变量,但在大多数情况下它会这样做.我遗漏的东西很重要.提前致谢.
我对java中的可见性有疑问.仅当我们至少有两个线程运行时,才能显示可见性,这些线程至少运行2个cpu核心.那对吗?每个核心都可以在其重排器和缓存内存中缓存变量,因此可以出现可见性问题.但是如果我们有n个线程并且它们都运行在一个cpu核心(我们不能确定它们只能在1个核心上运行,但是假设它可以实现那个),那么怎么办呢?有内存可见性吗?或者这不对?提前致谢.
编写以下查询时遇到问题:找到战斗的名称,其中至少3艘船的枪支数量低于9且其中至少有2艘在战斗中获得结果"ok".
这是表的关系,我认为查询应该是这样的:
select o.BATTLE
from OUTCOMES o
join SHIPS s on o.SHIP = s.NAME
join CLASSES c on s.CLASS = c.CLASS
group by o.BATTLE
having COUNT(case when
-- condition for ar least 3 ships with NUMGUNS < 9 and at least 2 of them with result = 'ok'
then 1 else null end);
Run Code Online (Sandbox Code Playgroud)
我是一个相对较新的SQL,这对我来说不容易查询.提前致谢.
PS我使用MSSQL.