전체 글 168

[JAVA] Java Serialization

자바 직렬화 자바 클래스들이 Serializable 인터페이스를 상속받는 이유에 대해서 알아보자\ 자바 직렬화 이유 Java 내부 시스템에서 사용되는(또는 JVM 메모리에 올려진) 객체나 데이터를 외부에서 사용할 수 있도록 Byte 형태로 변환하는 것. (Vice Versa) 대부분 OS의 프로세스 구현은 서로 다른 가상메모리주소공간(Virtual Address Space, VAS)를 갖기 때문에 Object 타입의 참조값(주소값) 데이터 인스턴스를 전달할 수 없다. 때문에 서로 다른 메모리 공간 사이의 데이터 전달을 위해서는 메모리 공간의 주소값이 아닌 Byte 형태로 직렬화(변환)된 객체 데이터를 전달하면, 사용하는 쪽에서 역직렬화하여 사용할 수 있게 된다. public class HashMap ex..

[JAVA] stream groupingBy

중복된 쿼리를 사용하고 싶지 않아 데이터를 자바에서 가공하였다. groupingBy 를 사용하여 a, b 조합으로 group by를 하였고, summingInt로 그룹화한 조건의 수량을 더하는 작업을 하였다. List list = new ArrayList(); Map stockList = list .stream() .collect( Collectors .groupingBy( i -> Pair.of(i.get("a"), i.get("b")), Collectors.summingInt(j -> (int) j.get("productAmount")) ) ); stockList.forEach((key, value) -> { log.info(String.valueOf(value)); Pair k = (Pair)key..

[프로그래머스] 행렬의 곱셉

2차원 배열 어렵다 아직 public class Solution { public static int[][] solution(int[][] arr1 , int[][] arr2){ int[][] answer = new int[arr1.length][arr2[0].length]; for(int i = 0 ; i < arr1.length; i++){ for(int j = 0 ; j < arr2[0].length; j++){ for(int k = 0; k < arr1[0].length; k++){ answer[i][j] += arr1[i][k] * arr2[k][j]; } } } return answer; } public static void main(String[] args){ int[][] arr1 = new..

[프로그래머스] 모의고사

모의고사 문제 1, 2, 3번째의 반복되는 답변이 해당 문제의 해답과 가장 많이 맞는 사람을 출력. 만약 문제가 동일하면 오름차순. import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class Solution { public int[] solution(int[] answers){ int[] stu1 = new int[]{1, 2, 3, 4, 5}; int[] stu2 = new int[]{2, 1, 2, 3, 2, 4, 2, 5}; int[] stu3 = new int[]{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; int score1 = 0; int score2 = 0; i..

[프로그래머스] K번째수

K번째수 문제 [[2, 5 ,3][4, 4, 1][1, 7, 3]] [1, 5, 2, 6, 3, 7, 4] 를 2번째부터 5번째까지 자른 후 정렬한다. [2,3,5,6]의 세번째 숫자는 5이다. 이런 식으로 6, 3이 나와 [5, 6, 3] 을 반환한다. import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int i = 0 ; i < commands.length; i ++){ int[] temp = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]); Ar..

[Spring] @Async

최근 재고 업무 때문에 블로그에 소홀했다. 업무를 하며 기록해야 할 것은 많았지만 정작 그러지 못해서 아쉽다. 재고를 테이블에 insert 하며 한번에 대량의 트래픽이 발생하여 생기는 문제를 방지하기 위해 Async를 사용하고 있다. @Async Async 어노테이션은 스프링에서 제공하는 Thread Pool을 사용하는 비동기 메소드 지원 어노테이션이라고 한다. 사용 방법은 Class에 @EnableAsync 어노테이션을 추가하고, @EnableAsync @SpringBootApplication public class SpringBootApplication { ... } 사용하고자 하는 메소드에 다음과 같이 어노테이션을 사용하면 된다. public class GillogAsync { @Async publ..

반응형