분류 전체보기
-
URI와 웹 브라우저의 요청 및 응답Computer Science/Computer Network 2022. 3. 23. 00:48
URI(Uniform Resource Indentifier) 자원을 식별하는 통일된 방식으로 리소스는 URI로 식별할 수 있는 모든 것을 의미하고 식별자는 다른 항목과 구분하는데 필요한 정보이다. URI는 URL(User Resource Locator), URN(User Resource Name)으로 나뉘어지는데 URL은 리소스의 위치를 지정해 실제 주소에 쓰이고 URN은 리소스에 이름으로 매핑되어 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되어 있지 않아 참고만 한다. URL 문법 URL의 기본적인 형태는 다음과 같다. (아래는 URL의 구조와 비교를 하기위한 구글의 URL이다.) scheme://[userinfo@]host[:port][/path][?query][#fragment] https..
-
인터넷 네트워크Computer Science/Computer Network 2022. 3. 22. 01:20
인터넷 통신 단거리 통신의 경우 메시지를 요청해서 서버에서 응답을 한 후 결과를 바로 출력할 수 있으나, 메시지를 전달해야 하는 호스트가 멀리있을 때는 인터넷의 여러 노드를 거쳐서 서버로 넘어가 응답을 얻어내야하는데, 이때 통신할 때 사용되는 규칙이 IP(Internet Protocol)이다. IP(Internet Protocol) 복잡한 인터넷 망에서 통신을 하기 위한 최소한의 통신 규약으로 IP 주소를 통해 통신한다. 지정한 IP 주소에 데이터를 전달하고 패킷이라는 통신 단위로 데이터를 전달한다. IP 패킷 정보 : 출발지 IP, 목적지 IP, 전송 데이터 인터넷 노드를 통해 목적지 주소를 보고 서버에서 전달받게 되고 서버에서도 응답이 확인되었다는 정보와 함께 클라이언트에 패킷을 전달한다. IP 프로..
-
5. 교착상태(Deadlock)Computer Science/Operating System 2022. 3. 21. 18:03
교착 상태 일련의 프로세스들이 각자가 가진 자원은 점유하고 상대방의 자원을 기다리면서 각 프로세스가 아무 작업도 수행할 수 없는 상태를 말한다. 여기서의 자원은 하드웨어 및 소프트웨어를 포함하는데 가령, I/O 장치, CPU cycle, 메모리 공간과 같은 것이다. 교착상태 발생의 4가지 조건 - 상호 배제 : 매 순간 하나의 프로세스만이 자원을 사용할 수 있어야 한다. - 비선점 : 프로세스는 자원을 스스로 내어놓지만 강제로 빼앗기지는 않아야 한다. - 점유와 대기 : 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유하고 있는 자원은 놓지 않고 계속 갖고 있다. - 원형 대기 : 자원을 기다리는 프로세스 간 사이클이 형성되어야 한다. 교착상태 처리 방법 - 교착상태 예방(Prevention) 자원할당..
-
[Spring] 빈 생명주기 콜백Backend Dev/Spring Framework 2022. 3. 19. 14:15
DB 커넥션 풀이나 네트워크 소켓처럼 앱 시작 시점에 필요한 연결을 미리 해두고, 앱 종료 시점에 연결을 모두 종료하는 작업을 진행하기 위해서 객체의 초기화와 종료 작업이 필요하다. 가상의 외부 네트워크에 연결한다고 하였을 때 연결을 맺고 끊을 수 있는 클라이언트가 있다고 가정해보자. public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url) { this.url = url; } //서비스 시작시 호출 public void connect() {..
-
[Spring] 동일 타입 빈 조회Backend Dev/Spring Framework 2022. 3. 16. 18:34
@Autowired는 타입으로 빈을 조회하는데 동일 타입에서 선택된 빈이 2개 이상일 때 문제가 발생한다. 이는 스프링 빈을 수동 등록으로도 문제 해결이 가능하지만 의존 관계 자동 주입으로 해결하는 방법이 있다. @Autowired : 필드 명 매칭 @Autowired는 처음에 타입 매칭을 시도하고 동일 타입에 여러 빈이 있을 경우 필드 이름이나 파라미터 이름으로 빈 이름을 추가 매칭한다. 필드명 매칭은 먼저 타입 매칭을 시도 후 그 결과에 여러 빈이 있을 때 추가로 동작하는 기능이다. // 기존 코드 @Autowired private DiscountPolicy discountPolicy // 필드명을 빈 이름으로 변경 @Autowired private DiscountPolicy rateDiscountP..
-
[Spring] 의존 관계 주입의 다양한 방식Backend Dev/Spring Framework 2022. 3. 16. 03:09
의존관계 자동 주입은 스프링 컨테이너가 관리하는 스프링 빈이어야만 동작한다. 생성자 주입 생성자를 통해서 의존관계를 주입받는 방법 생성자 호출시점에 딱 1번만 호출되는 것이 보장되며 "불변, 필수" 의존관계에 사용된다. 단, 클래스 내 생성자가 "1개만" 있는 경우 @Autowired를 생략해도 스프링 빈 의존관계가 자동 주입된다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy public OrderServiceImpl(MemberRepository memberRepo..
-
[Spring] 컴포넌트 스캔과 의존관계 자동 주입Backend Dev/Spring Framework 2022. 3. 15. 17:00
컴포넌트 스캔 스프링 빈 등록 시 @Bean 또는 XML의 을 통해 설정 정보에 등록할 스프링 빈을 직접 나열하고, 의존 관계도 직접 명시했으나 등록해야 할 빈이 많아진다면 등록하는데 시간도 들뿐더러 실수의 가능성이 높아질 것이다. 스프링에서는 수동 구성(설정) 정보가 없어도 자동으로 스프링 빈을 등록해주는 @ComponentScan과 의존 관계도 자동으로 주입해주는 @Autowired 기능을 제공한다. @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } @ComponentScan 을 구성 정..
-
4. 프로세스 병행 제어와 동기화Computer Science/Operating System 2022. 3. 13. 18:01
메모리 또는 디스크에서 데이터를 가져와 CPU에서 여러 프로세스들이 동시에 데이터를 처리해야 하는 경우. 즉, 하나의 공유 데이터를 여럿이 동시에 접근할 때 생기는 것을 "경쟁 상태(race condition)"라고 한다. 이로인해 데이터 최종 연산 결과는 마지막에 그 데이터를 다룬 프로세스에 따라 달라져 의도치 않은 결과가 발생할 수 있다. 이러한 경쟁 상태를 막기 위해 병행 프로세스는 동기화되어야 한다. 프로세스 동기화는 쉽게 말해 여러 개의 프로세스가 공유하고 있는 자원에 대해서 프로세스마다 순서를 정해 자원의 일관성을 유지해주는 것이다. 그렇다면 경쟁상태가 발생하는 여러 이유와 발생하지 않는 경우에 대해 알아보자. 경쟁상태가 발생하는 경우 - 커널 수행 중 인터럽트 발생 시 커널모드 실행 중 인터..