분류 전체보기(756)
-
[Spring] 스프링 컨테이너 의존관계 자동 주입(DI)에 대한 나름의 이해
크게 4가지 방법이 있다. 1. 생성자 주입: 생성자를 만들어서 주입하는 방법이다. 만약 생성자가 하나라면 @Autowired를 붙여주지 않아도 된다. 요즘에는 이렇게 많이 쓴다. 특히, 불변, 필수 의존관계에 사용된다. 불변은 상수라는 의미이고 따라서 한번 주입되면 바꿀 수 없다는 것이고 필수는 무조건 주입이 필요하다는 뜻이다. private final로 하게 될 경우 무조건 값이 필요해진다. 따라서 생성자에서 주입을 안해주면 컴파일 오류가 나게 된다. 이렇게 하면 생성자에는 웬만해서는 null을 넣지 않기 때문에 필수로 사용할 수 있어진다. 2. 수정자 주입: set method를 활용해서 주입하는 방법이다. 주로 선택, 변경 가능성이 있는 의존관계에서 사용한다. 왜냐하면 생성자 주입과는 다르게 se..
2023.10.06 -
[알고리즘][X] 성격 유형 검사하기
문제 설명 나만의 카카오 성격 유형 검사지를 만들려고 합니다. 성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다. 지표 번호성격 유형 1번 지표라이언형(R), 튜브형(T) 2번 지표콘형(C), 프로도형(F) 3번 지표제이지형(J), 무지형(M) 4번 지표어피치형(A), 네오형(N) 4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, "RFMN"이나 "TCMA"와 같은 성격 유형이 있습니다. 검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다. 매우 비동의 비동의 약간 비동의 모르겠음 약간 동의 동의 매우 동의 각 질문은 1가지 지표로 성격 유형 ..
2023.10.06 -
[알고리즘][X] 상품을 구매한 회원 비율 구하기
문제 설명 다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블과 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블 입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다. Column nameTypeNullable USER_IDINTEGERFALSE GENDERTINYINT(1)TRUE AGEINTEGERTRUE JOINEDDATEFALSE GENDER 컬럼은 비어있거나 0 또는 1의 값을 가지며 0인 경우 남자를, 1인 경우는 여자를 나타냅니다. ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 ONLINE_SALE_ID, USER_ID, PR..
2023.10.06 -
[알고리즘] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
문제 설명 다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블과 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 자동차 종류 별 대여 기간 종류 별 할인 정책 정보를 담은 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블 입니다. CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다. Column nameTypeNullable CAR_IDINTEGERFALSE CAR_TYPEVARCHAR(..
2023.10.06 -
[알고리즘][X] 입양 시각 구하기(2)
문제 설명 ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. NAMETYPENULLABLE ANIMAL_IDVARCHAR(N)FALSE ANIMAL_TYPEVARCHAR(N)FALSE DATETIMEDATETIMEFALSE NAMEVARCHAR(N)TRUE SEX_UPON_OUTCOMEVARCHAR(N)FALSE 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇..
2023.10.06 -
[Spring] Bean 중복 등록에 대한 나름의 이해
자동 빈 등록(Component Scan)의 경우 Spring이 에러를 낸다(충돌이 발생한다). 수동 빈 등록 vs 자동 빈 등록은 Spring의 경우 수동 빈을 override해주지만 SpringBoot를 이용한다면 이 overriding이 default로 false가 되어 있어 충돌이 발생한다. 코드가 엄청 길어지게 되면 수동 빈으로 등록한 경우 자동 빈 등록과 충돌이 발생하지 않고 넘어갈 수도 있는 상황이 발생(boot를 이용하지 않거나 overriding=true로 설정하면)하고 이러면 원치 않는 문제가 생긴다. 이를 방지하기 위해서는 자동만 사용하도록 convention으로 정할 수 있다. 이와 같은 맥락에서 코드를 명확하게 만드는 것이 매우 중요하다. 그래야 문제가 생겨도 디버깅이 원활해진다...
2023.10.05