본문 바로가기

자바

(7)
자바 트러블슈팅 - (1. 자바 기반의 시스템에서 발생할 수 있는 문제들) https://www.yes24.com/Product/Goods/84937877 자바 트러블슈팅 - YES24 건강한 서비스를 위한 scouter 활용법은 물론,그 밖의 시스템 장애 극복을 위한 다양한 도구 사용법을 배운다!기술이 아무리 발전하고 뛰어난 개발자가 있더라도 사람이 만든 프로그램은 언제든 www.yes24.com 자바 기반의 시스템에서 발생할 수 있는 문제들 서비스나 시스템 장애가 발생하면 대부분은 서버의 로그를 보거나 서버의 리소스 사용량을 보고 짐작 경험이 풍부 -> 데이터를 기반으로 문제의 원인을 쉽게 찾아냄 경험이 없음 -> 중요 데이터를 수집하지 않고 서버를 재시작 하는 경우가 있음 어떤 문제가 발생할 수 있을까? 시스템이 느려짐 시스템 응답이 없음 예외 발생 시스템 죽음 시스템이 ..
스프링 빈 생명주기 메서드와 실행 순서 스프링 빈 생명주기 메서드와 실행 순서 스프링 빈(Bean) 생명주기를 담당하는 메소드들을 알아보자 초기화 메소드 빈이 생성 되고 의존성 주입까지 완료된 후에 실행하는 초기화 메서드 @PostConstruct ```java import javax.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j @Component public class TempBean { @PostConstruct public void postConstruct(){ log.info("@PostConstruct !!!!!!!!"); } } ``` 메서드 선언부에 @PostConstr..
RestClientTest를 알아보자~ RestClientTest 어노테이션은 외부 API를 사용할 때 대상 API를 MOCKING 할 수 있는 유용한 테스트이다. 요청을 받는 쪽이 아닌 요청을 하는 쪽 입장에서의 테스트이다. @RestClientTest를 사용하면 MockRestServiceServer라는 임시 서버를 Bean으로 생성해준다. @SpringBootTest와 달리 지정한 최소한의 Context만 사용해서 테스트를 진행한다. 아래는 기존 Service 코드이다. @Service public class RestClientTestService { private final RestTemplate restTemplate; private final String openApiUrl = "https://httpbin.org/get"; pub..
JPA 공부 - 1 2021/01/17 - [IT/데이터베이스] - JPA 공부 - 0 1. JAP 소개 1.1 SQL을 직접 다룰 때 발생하는 문제점 관계형 데이터베이스는 가장 대중적이고 신뢰할 만한 안전한 저장소 JDBC API 를 사용해서 SQL을 데이터베이스에 전달 1.1.1 반복 예를들어 회원 관리 기능을 개발해 보자 회원 관리용 객체 생성 및 회원용 DAO 생성 // 회원 객체 public class Member { private String memberId; private String name; ... } // 회원용 DAO public class MemberDAO { public Member find (String memberId) {...} } 회원 조회용 기능 개발 회원 조회용 SQL 작성 SELECT M..
Filter 를 활용한 ACL 만들기 (feat. Spring) 1. 개요 업무를 하던중 컨트롤러 레이어에서 허용된 IP 를 체크하는 로직이 상당수 중복코드로 남아 있는것을 발견함 IP 체크를 통해 허용된 IP가 아니라면 Exception 을 던지고 있었음 허용되지 않은 IP가 접근하는것을 Exception이 아닌 403(forbidden)응답 또는 은닉화를 위해 404(Not Found) 응답을 돌려줘야 된다고 생각함 2. Before 2.1. Code 2.1.1. Controller @RequestMapping(value = "/api/test") public Map apiTest() { // 중복코드 if (!ipInfoService.checkAllowIps()) { throw new RuntimeException( "[" + appProjectName + " ..
java8 병렬 스트림 효율적으로 사용하는 방법 1. 병렬 스트림이란 ?병렬 스트림이란 스트림에 각 요소를 청크(Chunk)로 분할한 스트림이다.따라서 병렬 스트림을 이용해 멀티코어 프로세스가 각각의 청크를 처리하도록 할당할 수 있다. 1.1 병렬 스트림 속도차이 확인하기 1.1.1 첫번째 시도 무한스트림 생성이 가능하다는 성질을 이용하여숫자 n 개를 받아 1부터 n 까지의 모든 숫자를 합계로 반환하는 메서드를 구현해보자 일반 스트림 연산 public static long sequentialSum(long n) { return Stream.iterate(1L, i -> i + 1).limit(n).reduce(0L, Long::sum); } 전통적인 자바 반복문을 통한 연산 public static long iterativeSum(long n) { l..
JAVA 8 스트림 연산자 정리 1. 스트림 연산과정에 필요한 3가지1) 질의 대상이 되는 소스(컬렉션)2) 파이프 라인에 해당하는 중간 연산자3) 파이프 라인을 종료하고 결과를 출력하는 최종 연산자 중간 연산자 연산 반환값 연산 인수 함수 디스크립터 filterStream PredicateT -> boolean mapStreamFunction T -> R limitStream sorted StreamComparator (T, T) -> int distinct Stream 최종 연산자 연산 비고 forEach스트림에 각 요소를 람다를 통해 특정 작업을 실행한다. count스트림의 요소 개수를 반환한다. (long) collect 스트림을 컬렉션 형태로 반환한다.