小编Vis*_*tna的帖子

服务接口和服务impl类的代码架构是spring

我发现在MVC模式中,主要有4个类; 控制器,服务,服务impl和repo.

Service是一个接口,服务impl实现服务类并包含所有逻辑代码.结构将类似于: -

Service 接口类

Service{

public void someMethod();

}
Run Code Online (Sandbox Code Playgroud)

ServiceImpl

 ServiceImpl implements Service{
  public void someMethod(){
   //do something

   }    
 }
Run Code Online (Sandbox Code Playgroud)

但是当我们想从控制器访问服务impl代码时,我们将服务类的方法称为: -

@Autowired 
Service service;

Object obj =  service.someMethod();
Run Code Online (Sandbox Code Playgroud)

控制器如何执行ServiceImpl类的代码

java model-view-controller spring design-patterns

15
推荐指数
2
解决办法
2万
查看次数

java.util.logging.Logger 和 java.lang.System.Logger 的区别

Java 9 引入了一个新的记录器,即java.lang.System.Logger但我们总是有java.util.logging.Logger.

这个记录器有什么新东西,它是如何变得更好的?

java logging java-9

12
推荐指数
2
解决办法
1282
查看次数

在 java 11 中设置 xmx == xms 仍然是好习惯吗?

xmx == xms使用 G1 gc 在 java-11 中设置仍然是好习惯吗?

我在Web 应用程序的上下文中问这个问题。

performance jvm memory-management heap-memory java-11

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

自定义排序方式,A 在 a 之前,B 在 b 之前

我有一个像这样的颜色列表:

粉色、蓝色、红色、蓝色、灰色、绿色、紫色、黑色...等

List<String> listOfColors =  Arrays.asList("Pink", "Blue", "Red", "blue", "Grey", "green", "purple", "black");
Run Code Online (Sandbox Code Playgroud)

有一些中间操作,比如过滤一些水果颜色,现在我留下了过滤结果,我希望它们按顺序排序:

蓝、黑、蓝、灰、绿、粉、紫、红

我试过了 :

List<String> listOfColors =  Arrays.asList("Pink", "Blue", "Red", "blue", "Grey", "green", "purple", "black");
Run Code Online (Sandbox Code Playgroud)

它没有按预期工作。

输出如下:

黑、蓝、蓝、绿、灰、粉、紫、红

我想要以下内容:

蓝、黑、蓝、灰、绿、粉、紫、红

java sorting java-8 java-stream

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

Sort numbers in an array without changing even numbers position using Java-8

I’m learning Java 8 streams. Tell me pls, how can I write a sortArray method more compactly?

import org.junit.Test;    
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import static org.junit.Assert.assertArrayEquals;

public class TestStream {

    /*
     * Sort numbers in an array without changing even numbers position
     */

    @Test
    public void test_1() {
        int[] nonSorted = new int[]{3, 4, 5, 2, 1, 6, 9, 8, 7, 0};
        int[] expected = new int[]{1, 4, 3, 2, 5, 6, 7, 8, 9, 0}; …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

9
推荐指数
1
解决办法
638
查看次数

将JSON转换为POJO

我正在使用Jersey for REST WS,我将我的响应作为JSON.我想将此响应转换为POJO.怎么做 ?日Thnx

java json jersey

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

GraphQL - 如何使用返回值作为下一个查询的变量?

如何获取第一个查询的返回结果并将该结果分配给要在第二个查询中使用的变量?在进行第二次调用之前,我需要第一个值结果,但只想进行 1 次调用来完成此操作。我的查询:

query {
    test1(sku: "12345"){                    
          price
    }
    test2(itemPrice: $price){ 
          isSuccessful
    }
}
Run Code Online (Sandbox Code Playgroud)

graphql

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

是否可以创建在单个操作中计算其元素的Stream实现

问:是否可以创建在单个操作中对元素进行计数而不是对流中的每个元素进行计数的Stream实现?

但是,当我尝试比较列表中的两种方法时,我想到了这一点:

  • size()

  • count()

Stream::count终端操作会计算Stream中元素的数量。操作的复杂度通常为O(N),这意味着子操作的数量与Stream中元素的数量成比例。

List::size方法的复杂度为O(1),这意味着无论List中的元素数量如何,该size()方法都将在固定时间内返回。

   List<Integer> list = IntStream.range(0, 100).boxed().collect(toList());
    System.out.println(list.size());
    System.out.println(list.stream().count());
Run Code Online (Sandbox Code Playgroud)

size()相对而言count(),它花费的时间更少,因此,有没有一种可能的方法来创建Stream实现,该实现在单个操作中对它们的元素进行计数并使其复杂度为O(1)


编辑 文章以回答是

可以创建Stream在单个操作O(1)中对元素进行计数的实现,而不是对流中的每个元素进行计数。这可以显着提高性能,尤其是对于具有许多元素的流。

java java-8 java-stream

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

优雅的方法克服equals()的不太可能的参数类型:Stream <String>似乎与String无关

我正在寻找优雅的方法来比较任何Wrapper对象和Stream.

Github工作链接:https://github.com/vishwaratna/Unlikely-argument-type-for-equals-Stream-String-/commit/d803f77c923e81fe7531ecb467561ac785d7aca5

参考问题:在java-8中过滤从map到list属性的键

最近我在比较List一个关键的成员时面对它Map.我知道有其他方法可以比较而不做我正在做的事情,但我正在寻找一般铸造,如果它可用.

List<student> stulist = Arrays.asList(new student("1", "vishwa",null),
                                              new student("3", "Ravi",null),
                                              new student("2", "Ram",null));
Run Code Online (Sandbox Code Playgroud)
        Map<String,String> map = new HashMap() {{
             put("1","20");
             put("2","30");
           }};
Run Code Online (Sandbox Code Playgroud)
System.out.println( stulist.stream()
                    .filter(s->s.getId()
                    .equals(map.entrySet()
                    .stream() 
                    .map(Map.Entry::getKey)))
                    .count());
Run Code Online (Sandbox Code Playgroud)

我的代码编译正确,但输出为"0",而我期望输出为2.

我确定这是由于类型不匹配,但为什么编译器没有 抛出错误?

警告我得到: Unlikely argument type for equals(): Stream<String> seems to be unrelated to String

java java-8 java-stream

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

如何对Map Map使用双括号初始化

我确实知道,双括号初始化有其自身的隐藏成本,但仍然有一种可能的初始化方法Map<String,Map<String,String>>()

我试过的

Map<String, Map<String, String>> defaultSourceCode = new HashMap<String, Map<String, String>>(){
            {"a",new HashMap<String, String>(){{"c","d"}}}
        };
Run Code Online (Sandbox Code Playgroud)

我知道这是一个不好的做法,但至于实验,我正在尝试。

参考和动机: Arrays.asList还可以用于地图吗?

java java-8 java-9

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