小编nan*_*itv的帖子

java 8 time api - Instant.now(clock)vs LocaldateTime.now(clock)

对于以下java 8代码

  1. System.out.println(LocalDateTime.now(Clock.systemDefaultZone())); 
  2. System.out.println(Instant.now(Clock.systemDefaultZone()));
Run Code Online (Sandbox Code Playgroud)

第1行打印当前时间通过添加偏移但第2行打印当前时间而不添加偏移量.

我检查了两者的源代码,发现通过添加偏移LocaDateTime.now(clock)返回clock.instant()返回时间但Instant.now(clock)没有这样做.

为什么这样设计?在这两种情况下,我们不期待相同的结果吗?

java time datetime java-8 java.time.instant

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

带有接口的instanceof

如果我尝试使用错误的类的instanceof运算符我得到一个编译错误("动物不能转换为字符串"),但有一个接口,我没有得到编译时错误.

例如:在第10行,我收到编译错误,因为Animal不是String的子类.但是在第14行中,即使Animal没有实现List接口,我也没有收到编译错误.

class Animal {

}

public class InstanceOf {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
         Animal a = new Animal();
        if (a instanceof String ){  //line 10
            System.out.println("True");
        }

         if (a instanceof List ){ //line 14
            System.out.println("True");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

java instanceof

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

Java:字符串文字和+运算符

import java.util.*;
import java.lang.*;
import java.io.*;    

class Test {
   public static void main (String[] args)  {

      String a="hello"+"world";  //line 1
      String b="hello";
      String c="world";
      String d=b+c;
      String e="helloworld";
      System.out.println(e==a);
      System.out.println(a==d);
     }
}
Run Code Online (Sandbox Code Playgroud)

输出:

true

false
Run Code Online (Sandbox Code Playgroud)

从这个讨论中,String类如何覆盖+运算符?我知道'a'和'e'将引用相同的String文字对象.

有谁能告诉你

  1. 为什么ad不是指同一个字符串文字对象?

  2. 第1行创建了多少个对象

java string

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

固定线程池中的线程阻塞

我有两个疑问:

  1. 关于Java中的固定线程池.假设我创建了一个包含5个线程且所有线程当前正在执行的固定线程池,并且还假设队列中有4个任务等待完成这些线程的执行.如果所有当前正在执行的任务被阻止将会发生什么 是否有从该队列中获取任务并将阻塞的任务放入队列的方法?

  2. 我们如何知道任务是被阻止还是正在执行?

java multithreading threadpool

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

在python中确定线性方程组的求解

考虑以下问题:

查找:x_1,x_2,x_3> 0,使得67.5 = 60*x_1 + 90*x_2 + 120*x_3和60 = 30*x_1 + 120*x_2 + 90*x_3

有没有办法在Python中解决这个等式?(类似的问题已经被要求用于MATLAB)

任何人都可以举例说明如何在python中使用scipy.nnls()来获得任何未确定的方程组

python linear-algebra

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

jgit - 基于文件扩展名的git diff

我正在使用JGit API(https://www.eclipse.org/jgit/)来访问git存储库.

在git存储库中,我也存储.txt文件和其他文件格式.我遇到了一个要求,我应该只得到.txt文件的差异.

基本上我试图达到相当于

git diff master HEAD -- '*.txt'  
Run Code Online (Sandbox Code Playgroud)

如何根据文件扩展名过滤git diff?使用JGit API.

从这个答案,(相当于JGit中的git diff),我理解了如何获得正常的差异.但我想添加文件扩展名限制,但我在DiffCommand文档中看不到任何内容(https://download.eclipse.org/jgit/site/5.2.0.201812061821-r/apidocs/index.html).

有人可以给一些指针吗?

java git jgit

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

JGit - 如何重用DiffFormatter

这是基于文件扩展名jgit-git diff的后续问题.

我试图添加格式化的差异,List<String>但如果我尝试使用相同的DiffFormatter下面,然后以前的条目附加到下一个条目.

List<String> changes = new LinkedList<>();
            try (OutputStream outputStream = new ByteArrayOutputStream();
                    DiffFormatter diffFormatter = new DiffFormatter(outputStream)) {
                diffFormatter.setRepository(git1.getRepository());
                TreeFilter treeFilter = PathSuffixFilter.create(".txt");
                diffFormatter.setPathFilter(treeFilter);
                List<DiffEntry> entries = diffFormatter.scan(newTree, oldTree);
                for (DiffEntry diffEntry : entries) {
                    diffFormatter.format(diffEntry);
                    changes.add(outputStream.toString());
                    diffFormatter.flush();
                }
            }
Run Code Online (Sandbox Code Playgroud)

因此我被迫DIffFormatter为每个差异条目创建一个.

有没有更好的方法来创造List<String> from List<DiffEntry>而不是DiffFormatter每次都创造新的?

java jgit

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

在Java中,如果一个线程被杀死,另一个线程会发生什么?

我想用Java知道:

  1. 如果主线程被杀死了其他子线程会发生什么?
  2. 如果子线程被杀死了兄弟姐妹和父线程会发生什么?

我在下面的链接中读到,由于线程共享地址空间,杀死一个线程也会影响其他线程.

以下是这里的引用.

线程是轻量级进程,将主要控制流分为多个流,每个控制/线程流将独立执行.系统中进程的活动由线程表示.具有多个线程的进程称为多线程.每个线程都有自己的线程ID(数据类型整数),寄存器,程序计数器,堆栈,错误号.线程可以在同一进程中使用共享内存进行通信.使用线程来管理和维护应用程序的子任务有不同的优点.当我们使用线程时,使用较少的系统资源进行上下文切换并增加应用程序的吞吐量.线程还简化了程序的结构.任务之间没有特殊的通信机制.线程也有一些缺点,例如线程不可重用,因为它们依赖于进程并且不能与进程分离.线程不是孤立的,因为它们没有自己的地址空间.线程导致的错误可能会终止整个进程或程序,因为该错误会影响该进程或程序中使用的所有线程的整个内存空间.由于线程共享资源在进程中也可能影响整个进程或程序在线程资源损坏时.对于内存线程的并发读写访问将需要同步.线程通过数据竞争很容易损坏进程的数据,因为进程中的所有线程都具有对同一条数据的写访问权.

您可以告诉我们上述链接中的内容是否适用于java

java multithreading

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

JVM共享内存

我对JAVA有些怀疑.我有一个任务执行器,它将为每个任务创建一个新线程,每个线程将从jar执行任务

Runtime.getRuntime().exec(" java -jar myjar");
Run Code Online (Sandbox Code Playgroud)

我在一些帖子中读到,通过这样执行,每个线程都会创建自己的JVM.然后,如果我想使用两个线程从同一个jar执行相同的类或不同的类,它将在两个JVM中创建相同jar的副本.实际上我想避免在两个JVM中复制相同的jar.而不是我想在多个JVM之间共享相同的jar.

请提供一些关于这种情况的提示.

java jvm

5
推荐指数
0
解决办法
2260
查看次数

全局变量值未在 shell 脚本中的函数内部设置

我有两个 shell 脚本,如下所示:

tes=2
testfunction(){
    tes=3
    echo 5
}
testfunction
echo $tes 
Run Code Online (Sandbox Code Playgroud)

b.sh

tes=2
testfunction(){
    tes=3
    echo 5
}
val=$(testfunction)
echo $tes
echo $val
Run Code Online (Sandbox Code Playgroud)

在第一个脚本中,tes值是“3”,如预期,但在第二个脚本中,它是 2?

为什么它会这样?

$(funcall)创建一个新的子shell并执行该函数吗?如果是,如何解决这个问题?

bash shell

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