목록전체 글 (431)
mojo's Blog
문제 링크 : 1949번: 우수 마을 (acmicpc.net) 1949번: 우수 마을 N개의 마을로 이루어진 나라가 있다. 편의상 마을에는 1부터 N까지 번호가 붙어 있다고 하자. 이 나라는 트리(Tree) 구조로 이루어져 있다. 즉 마을과 마을 사이를 직접 잇는 N-1개의 길이 있으며, www.acmicpc.net 트리에서의 다이나믹 프로그래밍 문제이다. '우수 마을'로 선정된 마을 주민 수의 총 합을 최대로 해야 한다. 마을 사이의 충돌을 방지하기 위해서, 만일 두 마을이 인접해 있으면 두 마을을 모두 '우수 마을'로 선정할 수는 없다. 즉 '우수 마을'끼리는 서로 인접해 있을 수 없다. 선정되지 못한 마을에 경각심을 불러일으키기 위해서, '우수 마을'로 선정되지 못한 마을은 적어도 하나의 '우수 마..
※ Control Flow Processors 은 오직 한가지 일을 한다. 시작부터 종료까지 CPU는 일련의 명령을 한 번에 하나씩 읽고 실행(해석)한다. 이러한 sequence 는 CPU의 control flow 라고 한다. 다음과 같이 startup 부터 shutdown 까지 n 개의 instruction 이 존재한다고 할 때, 시간이 지날때 마다 instruction_1 부터 시작하여 instruction_n 까지 실행되는 것을 알 수 있다. ※ Altering the Control Flow control flow 를 변경하는 두가지 메커니즘이 존재한다. Jumps and branches Call and return 위 메커니즘으로 program state 의 변화에 대응한다. 유용한 시스템 부족으..
빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 에플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정한다면, 실제로 네트워크에 연결하는 것이 아니고 단순히 문자만 출력하도록 했다. "NetworkClient" 는 애플리케이션 시작 시점에 "connect()" 를 호출해서 연결을 맺어둬야 하고, 애플리케이션이 종료되면 "disConnect()" 를 호출해서 연결을 끊어야 한다. public class BeanLifeCycleTest { @Test public void lifeCycleTest(){ Configurabl..
대칭키 & 공개키 ※ 대칭키(Symmetric Key) 암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘이다. 동일한 키를 주고 받기 때문에 매우 빠르다는 장점이 있지만, 대칭키를 전달하는 과정에서 해킹 위험에 노출된다. ※ 공개키 (Public Key) 암호화와 복호화에 사용하는 암호키를 분리하는 알고리즘이다. 자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화할 수 있는 암호키(공개키)를 대중에 공개한다. 공개키 암호화 방식 진행 과정은 다음과 같다. A가 웹 상에 공개된 "B의 공개키" 를 이용해 평문을 암호화하여 B에게 보낸다. B는 자신의 비밀키로 복호화한 평문을 확인하고 A의 공개키로 응답을 암호화하여 A에게 보낸다. A는 자신의 비밀키로 암호화된 응답문을 복호화한다. 대칭키의 단점..
UDP UDP 통신이란? UDP는 User Datagram Protocol 의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다. connectionless, unreliable 한 전송 프로토콜로 TCP 와 대비된다. Datagram 단위로 쪼개면서 전송을 해야하기 때문에 전송 계층(transport layer)이다. 그리고 Transport layer 의 대표 프로토콜 중 하나라고 볼 수 있다. (TCP, UDP) TCP와 UDP가 나타난 이유는? 1. IP 의 역할은 Host-to-Host (장치-to-장치) 만을 지원한다. 장치에서 장치로 이동은 IP로 해결되지만, 하나의 장비안에서 수많은 프로그램들이 통신을 할 경우에는 IP 만으로 한계가 있다. 2. IP 에서 오류가 발생한다면 ICMP ..
@Autowired 필드 명, @Qualifier, @Primary 조회할 대상의 빈이 2개 이상일 때 해결 방법은 다음과 같다. @Autowired 필드 명 매칭 @Qualifier -> @Qualifier 끼리 매칭 -> 빈 이름 매칭 @Primary 사용 ※ @Autowired 필드 명 매칭 @Autowired 는 타입 매칭을 시도하고, 이때 여러 빈이 있으면 필드 이름, 파라미터 이름으로 빈 이름을 추가로 매칭한다. @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy;..