목록전체 글 (431)
mojo's Blog
다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 존재한다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 ① 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입받는 방법이다. 특징은 다음과 같다. 생성자 호출시점에 딱 1번만 호출되는 것이 보장 "불변, 필수" 의존관계에 사용 @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memb..
[TCP] 3 way handshake & 4 way handshake 이란? 3 way handshake 는 연결을 성립하는 과정이고 4 way handshake 는 연결을 해제하는 과정을 의미한다. ※ 3 way handshake - 연결성립 TCP 는 정확한 전송을 보장해야 한다. 따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다. 클라이언트는 서버에게 SYN 패킷을 보낸다. (SYN(x) 는 sequence : x) 서버가 SYN(x)을 받고, 클라이언트로 받았다는 신호인 ACK와 SYN 패킷을 보낸다. (sequence : y, ACK : x + 1) 클라이언트는 서버의 응답인 ACK(x + 1), SYN(y) 패킷을 받고, ACK(y + 1) ..
문제 링크 : 9879번: Cross Country Skiing (acmicpc.net) 9879번: Cross Country Skiing The cross-country skiing course at the winter Moolympics is described by an M x N grid of elevations (1 C; for (int i = 1; i elev[i][j]; for (int i = 1; i point[++cnt]; if (point[cnt]) P++; } } } int get_vertex(int x, int y) { return ((x - 1) * C + y); } bool compare(pair x, pair y) { return (x.first < y.first); } void..
문제 링크 : 코딩테스트 연습 - 순위 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 플로이드 와샬을 이용한 문제이다. 2차원 배열 bool res[101][101]; 을 선언하여 다음과 같이 정의할 수 있다. res[x][y] = true : x가 승리하고 y가 패배한 경우 res[x][y] = false : x가 승리하고 y가 패배했는지 알 수 없는 경우 res[x][y] = true 일 경우, 다음과 같이 그래프를 설계한다고 가정해본다. 그렇다면, 문제에 주어진 input 을 다음과 같이 그래프를 설계할 수 있다. 이제 해야할 작업은 선수들 간의 승리와 패배..
컴포넌트 스캔과 의존관계 자동 주입 지금까지 스프링 빈을 등록할 때, 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열하였다. 그러나, 이렇게 등록해야 할 스프링 빈이 굉장히 많아질 경우 일일이 등록하기 귀찮으며 설정 정보도 커지고, 누락하는 문제가 발생할 수 있다. 따라서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또, 의존관계도 자동으로 주입하는 "@Autowired" 라는 기능도 제공한다. 우선 아래 코드를 통해 컴포넌트 스캔과 의존관계 자동 주입을 살펴보도록 한다. @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = F..
Anomaly 정규화를 해야하는 이유는 잘못된 테이블 설계로 인해 Anomaly(이상 현상)이 나타나기 때문이다. 예를 들어서 {Student ID, Course ID, Department, Course ID, Grade} 가 있다고 해보자. ① 삽입 이상(Insertion Anomaly) 예를 들어서 기본키가 {Student ID, Course ID} 두개일 경우, Course를 수강하지 않은 학생은 Course ID가 없는 현상이 발생하므로 Course ID를 Null 로 지정해야 한다. 그러나 기본키는 Null이 될 수 없으므로 테이블에 추가할 수 없다. ('미수강' 과 같은 Course ID로 대체 가능하긴 함) 즉, 불필요한 데이터를 추가해야만 삽입할 수 있는 상황을 삽입 이상이라고 한다. ② ..