小编use*_*988的帖子

使用两个yaml文件进行配置属性

我们正在使用一个spring boot应用程序,其中属性从application.yml文件而不是application.properties加载,位于src/main/resources /,如下所示:
config:
host:localhost:8080
server:123

而且它们被拉入这样的.java文件中

config: 
  host: localhost:8080  
  server: 123  
Run Code Online (Sandbox Code Playgroud)

我能够以这种方式检索属性.但我们正在尝试将配置属性从application.yml移动到位于不同位置的另一个.yml文件.(SRC /主/资源/ ENV-CONFIG).
现在我无法以相同的方式检索属性,即使用@Value注释.我还需要添加其他注释吗?

java configuration yaml properties spring-boot

11
推荐指数
3
解决办法
9161
查看次数

多线程 - 多个用户

当单个用户访问应用程序时,可以使用多个线程,如果存在多个核心,则可以并行运行.如果只存在一个处理器,则线程将一个接一个地运行.

当多个用户访问应用程序时,如何处理线程?

java multithreading

9
推荐指数
2
解决办法
1802
查看次数

流多个过滤器内部

我正在尝试了解 Java 的 Stream API 的内部调用。

我有以下代码,它有两个过滤器(中间)操作和一个终端操作。

IntStream.of(1,2,3)
    .filter(e->e%2==0)
    .filter(e->e==2)
    .forEach(e->System.out.println(e));
Run Code Online (Sandbox Code Playgroud)

Stream -> 返回带有覆盖过滤器的 Stream -> 返回带有覆盖过滤器的 Stream -> 终端

我看到对于每个中间操作,都会返回一个带有重写filter方法的新流。一旦命中终端方法,流就会执行filter. 我看到filter()如果有两个filter 操作而不是一次,它会运行两次。

我想了解一次流遍历如何能够两次调用过滤器。

粘贴下面的 IntPipeline 代码,该代码在 Stream 中被过滤器方法命中。

@Override
public final IntStream filter(IntPredicate predicate) {
    Objects.requireNonNull(predicate);
    return new StatelessOp<Integer>(this, StreamShape.INT_VALUE,
                                    StreamOpFlag.NOT_SIZED) {
        @Override
        Sink<Integer> opWrapSink(int flags, Sink<Integer> sink) {
            return new Sink.ChainedInt<Integer>(sink) {
                @Override
                public void begin(long size) {
                    downstream.begin(-1);
                }

                @Override
                public void accept(int t) {
                    if (predicate.test(t)) ///line 11
                        downstream.accept(t); …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

5
推荐指数
2
解决办法
458
查看次数

为什么在Java 8中将@FunctionalInterface注释添加到Comparator接口?

我理解使用defaultJava 8的关键字添加了一堆带有body的方法.我的问题是这个注释在哪里有用?我看到只允许使用这样的注释添加一个抽象方法.但比较器有两种抽象方法:

  • int compare(T o1, T o2);
  • boolean equals(Object obj);

另外,请解释一下这个注释的用法?我看到它是一个运行时注释,那么它的用途是什么?

java java-8

4
推荐指数
1
解决办法
271
查看次数

Java 运行时注释在内部如何工作?

我知道编译时注释功能,运行注释处理器并使用反射 API。但我不确定 JVM 如何获得关于运行时注释的通知。注释处理器也在这里工作吗?

java jvm annotations

4
推荐指数
2
解决办法
3556
查看次数

java中的 System.out.println - 是否在本机方法中初始化?

我只是想知道out变量 inSystem.out.println()是否在类的静态块中初始化System。该out字段被声明为最终静态变量,它等于 null ( public final static PrintStream out = null;) 。由于 out 指向 null,我认为它是指向PrintStream某个地方的对象。但除了一个名为registerNatives(). 它是否在本机方法中被指向?为什么要这样做(任何性能优势)?此外,out变量的文档System说:

“标准”输出流。此流已打开并准备好接受输出数据。通常,此流对应于主机环境或用户指定的显示输出或另一个输出目的地。”

谢谢。

java

3
推荐指数
1
解决办法
739
查看次数

泛型 - 集合排序方法

使用时Collections.sort(List<T> list),with List<Employee>,where Employee是不扩展Comparable接口的类.

然后我看到以下编译错误

sort(List<T>)类型中的方法Collections不适用于arguments(List<Employee>).

我不明白为什么T要实现Comparable,它没有在方法的方法参数中的任何地方指定sort.

更新:请停止downvoting.我一直认为只有方法参数决定要作为参数传递什么,但我<T extends Comparable<? super T>>在方法签名中看到但它不是我在任何方法签名中看到的.访问修饰符,静态与否,返回类型,方法名称都是我所知道的,但是多余的是什么?

更新:我没有意识到这一点:"所有泛型方法声明都有一个类型参数部分,由尖括号(<和>)分隔,位于方法的返回类型之前"

java generics

-1
推荐指数
1
解决办法
1475
查看次数

理解累加器的归约操作 - java 8

我试图了解减少累加器的操作:在下面的例子中

List<String> letters = Arrays.asList("a","bb","ccc");
String result123 = letters
  .stream()
  .reduce((partialString, element) -> 
      partialString.length() < element.length() 
      ? partialString
      : element
  ).get();  

System.out.println(result123);
Run Code Online (Sandbox Code Playgroud)

partialString 是否初始化为空字符串?由于它是一个折叠操作,我认为该操作应该导致空字符串但它的打印"a". 有人可以解释一下这个累加器是如何工作的吗?

java java-8

-1
推荐指数
2
解决办法
123
查看次数