JVM/Java

JVM/Java

[Java] junit5 파라미터로 List 전달하는 방법

😎서론 junit으로 파라미터 전달하는 어노테이션은 여러가지가 존재한다. @ValueSource @CsvSource @NullSource @NullAndEmptySource 이 외에 더 있다.. 그 중에서 List로 Parameter를 전달하는 방법이 필요해서 검색한 도중에 찾게 되었고, 자주 사용할 것 같아서 기록해두려 한다. 😀본론 @ParameterizedTest - 파라미터를 전달받을 수 있는 테스트를 만든다. @MethodSource("메소드 명") - 메소드의 리턴 값으로 파라미터를 전달한다. static Stream generateData() { return Stream.of( Arguments.of(Arrays.asList(1, 2, 3, 4, 5, 46), "MethodSource 테스트..

JVM/Java

[Java]Stack 대신 Deque 사용하기

😮서론 스택이 필요해서 사용하려고 하던 중 소나린트에서 Stack 대신 Deque를 사용하는게 좋다는 안내가 나왔고, 왜 그런지 알아보려 한다. 😎본론 스택(Stack)이란? - 자료구조의 하나로서 후입선출(Last In First Out)를 의미한다. - 후입선출이란 마지막에 들어온 데이터가 가장 먼저 나가는 방식을 의미한다. - 자바에서는 Stack을 class 형태로 지원해주고 있다. 반대개념 큐(Queue) - Queue의 경우는 선입선출(First In First Out)를 의미한다. - 선입선출이란 처음에 들어온 데이터를 가장 먼저 내보내는 방식을 의미한다. - 자바에서 Queue는 인터페이스로 구현이 되어 있어 보통 LinkedList를 사용해서 구현하곤 한다. 그럼 Deque란? - 자바 ..

JVM/Java

[Java] HashMap. stream으로 sum하기

😎서론 이번 HashMap에서 sum을 해야하는 상황이 생겨서 분명 get으로 꺼내서 하나씩 sum하는 것 말고 stream으로 하는 방법이 있을 것 같아서 찾아봐서 기록한다. 😋본론 mapToInt와 reduce 방식 두 가지를 보게 되었는데 reduce가 개인적으로 더 깔끔해보여서 자주 사용하게 될 것 같다. public static int getSum(final Map data) { return data.values().stream().mapToInt(Integer::intValue).sum(); } public static int getSum(final Map data) { return data.values().stream().reduce(0, Integer::sum); } 역시.. 항상 '이런거..

JVM/Java

[JAVA+MSSQL]드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다. - 오류 해결방법

😢서론 DB : MSSQL JDK : zulu 11 version OpenJDK 11버전으로 올린 후 기존 MsSql을 진행하던 프로젝트에서 아래와 같은 에러가 발생했다. Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다. 오류: "The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]". 😎본론 🤔원인 TLS(Transport Layer Security) 전송계층보안 이라는 암호화 보안 프로토콜은 데이터 전..

JVM/Java

[Java] 객체[Object] List 중복된 ID 목록만 뽑기(추출)

😅서론 알고리즘 문제 때문인가 객체, 리스트, 배열 중복에 관련해서는 대부분 중복 값을 제거하는 설명이 대부분이었다. 가끔가다 중복 값 개수 세기 정도는 있지만 중복 목록만을 뽑는 글은 안 보여서 ... (구글링이 부족할지도) 시작! 😎본론 0. 시나리오 UserList를 받아 저장시킬 때 해당 List 내에 중복된 ID 목록을 return 시켜줘야 한다. 내가 필요한건 객체 내에 중복된 ID를 찾는 것. 00. 객체정보 aaa - 3번 / bbb - 3번 / ccc - 2번 / ddd - 1번 / eee - 1번 1. 스트림(Stream)과 Set을 사용하기 - 스트림을 통해 userId 목록만을 가져온다. - 새로만든 List 목록을 for문을 돌린다. - 아이디마다 indexOf와 lastIndex..

JVM/Java

[Java] Random보단 SecureRandom 를 사용하자.

🙄서론 Random을 사용하다가 소나큐브에서 Critical 버그가 발생했다. 그 후 알아본 내용을 정리해본다. 😉본론 - 에러 메세지 (번역은 구글번역을 통해 되었기 때문에 오역이 있을 수 있습니다..) "Random" objects should be reused "랜덤" 객체는 재사용되어야 한다. Random 값이 필요할 때마다 새 개체를 만드는 것은 비효율적이며 JDK에 따라 임의의 숫자가 생성되지 않을 수 있습니다. 효율성과 임의성을 높이려면 단일 Random을 만든 다음 저장하고 다시 사용하세요. Random()생성자는 별개의 값마다에 씨앗을 설정하려고 시도합니다. 그러나 시드가 무작위로 또는 균일하게 분포 될 것이라는 보장은 없습니다. 일부 JDK는 현재 시간을 시드로 사용하므로 생성 된 숫자..

JVM/Java

[Java]Collections.emptyList() vs. new instance 어떤 차이가 있을까?

🤔서론 스택오버플로우를 보다가 아하! 싶은 내용이 있길래 정리를 해본다. 리턴을 null로하는 것은 매우매우 위험한 행동이다. 그렇기에 우리는 새 인스턴스를 만들어서 리턴을 시켜줄수도 있고, 라이브러리를 통해 emptyList()를 리턴해줄수도 있다. 둘은 어떤 차이가 있을까? 😆본론 아래 두 방식의 차이를 알아보자. return Collections.emptyList(); return new ArrayList(); 일단 Collections.emptyList()가 뭔지 알면 쉽게 정리할 수 있다. public static final List emptyList() { return (List) EMPTY_LIST; } 이 메서드를 구현하면 각 호출에 대해 별도의 목록 개체를 만들 필요가 없습니다. 이 방법..

JVM/Java

[Java]for문 List를 Null 체크하는 방법

🙄서론 for문을 돌리는 List를 어디선가 받아와서 사용할 때 null인 경우가 있을수도 있기 때문에 예외처리는 필수적으로 해주어야 한다. (물론 NULL이 처음부터 발생하지 않게 해주는 것도 중요하다.) 내가 하던 방식이 비효율적으로 느껴졌고, 다른사람들은 어떻게 null 체크 하는지에 궁금증이 생겨서 알아보게 된 걸 기록해본다. 😉본론 AS-IS 기존 내가 null 체크 했던 방식들 if(productionList != null) { for (String production : productionList) { // 로직구현 } } else { // 예외처리 } if(productionList == null) { return ; // or 예외처리 } for (String production : pr..

Hyo Kim
'JVM/Java' 카테고리의 글 목록 (2 Page)