개발/Java(3)
-
다형성이 적용된 Object로 JSON 전환하기
Jackson의 기본 사용부터 다형성이 적용된 Object로 JSON 데이터를 전환하는 방법까지 알아본다. 1. 환경구성 Gradle 프로젝트에서 jackson-databind 의존성을 추가한다. implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.3' spring-boot-starter-web 의존성을 사용하고 있다면 자동으로 추가된다. 2. JSON to Object Shop 클래스를 작성한다. setter가 없으면 매핑시에 에러를 발생시키기 때문에 꼭 작성하자. public class Shop { private String shopName; private int shopAge; private List staffNames; //gette..
2022.09.10 -
[Java] Lambda Expression Quick View
Lambda 표현식은 Java 8 버전에서 정식 발표되었다. 함수형 프로그래밍을 지원하기 위해 Java가 첫번째로 도입한 것이 바로 Lambda 표현식이다. 함수형 프로그래밍을 공부하다 보면 Pure Function(순수 함수), higher-order function(고계 함수) 등 다양한 함수들을 만나게되는데 Lambda는 그중 anonymous function(익명 함수)의 특성을 가지고 있다. 따라서 우리가 알고 있는 일반적인 함수와 달리 Lambda는 함수의 이름이 없다. Lambda는 Class에 속하지 않고도 그 자체로 생성이 가능하다는 주요한 특징이 있다. 또한, 변수처럼 파라미터로 전달하거나 특정 요청에 의해 언제든지 실행될 수 있다. Lambda는 간단한 이벤트 리스너나 콜백함수로 사용..
2021.12.20 -
[Java] Multi Thread와 임계영역 설정
Multi Thread 사용시 주의사항 Multi Thread 사용시 병렬적인 Task 처리가 가능하단 장점이 있지만, 자원을 공유하기 때문에 사용시 몇가지 주의할 점이 있다. 1. 교착상태 - 두개의 쓰레드가 서로 끝나기를 기다리는 상태이다. 자신이 원하는 자원을 상대방이 가진채로 놓지 않는 상황이다. 2. 동시접근 - 특정 연산을 수행하고 있는 와중에 다른 쓰레드가 연산의 결과를 조회하는 로직을 수행하는 경우. 예상과 전혀 다른 결과가 나올 수 있다. 연산의 결과가 끝날때 까지는 다른 쓰레드가 연산결과를 조회하지 못하도록 해야한다. 3. 기아 - 특정 쓰레드가 계속해서 자원을 사용하지 못한채로 존재할 수 있다. 위 문제를 해결하기 위해 자바에선 synchronized, wait(), notify() ..
2021.09.01