본문 바로가기

전체 글

(146)
인터넷 네트워크 인터넷 통신 -복잡한 인터넷 망? -> IP(인터넷 프로토콜) 주소 부여 e.g. 클라이언트(100.100.100.1) 서버(200.200.200.2) -역할 -지정한 IP 주소에 데이터 전달 -패킷(Packet)이라는 통신 단위로 데이터 전달 -패킷정보 (출발지IP, 목적지IP,기타, 전송데이터) IP 프로토콜의 한계 -비연결성(패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송됨) -비신뢰성 -중간에 패킷이 사라지면(패킷 손실)? -패킷이 순서대로 안오면(World Hello,)? -프로그램 구분(같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘이상이면?) 통신 과정 인터넷 프로토콜 스택의 4계층 애플리케이션 계층(HTTP,FTP) 전송 계층(TCP,UDP) 인터넷 계층(IP) 네트워크..
빈 스코프 스코프는 빈이 존재할수 있는 범위 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입: 빈의 생성과 의존관계 주입(초기화 메서드포함)까지만 관여하고 클라이언트에 넘겨주고 더이상 관리하지 않음 프로토타입 스코프 -싱글톤은 스프링 컨테이너 생성시점에 스프링 빈을 등록하여 항상 같은 인스턴스의 스프링 빈을 반환 프로토타입은 요청마다 항상 새로운 인스턴스를 생성해서 반환 -> 관리 책임이 클라이언트로 넘어감 -> @PreDestory 같은 종료 메서드는 호출되지 않음 -싱글톤 빈과 함께 사용시에 의도대로 동작하지 않음 -싱글톤 빈에서 프로토타입 빈 사용하면 싱글톤 생성시점에 프로토타입이 주입되어 더이상 생성되지 않음 해결법 ObjectProvider 필요할때마다..
백트래킹 백트래킹이란 무엇인가? -현재상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘 (ex. 게임에서 현재상태에서 가능한 모든 선택지를 다 플레이 해보는 방법) 문제풀이에서 백트래킹의 활용방식은? -각 상태별로 여러가지 경우의수가 생기고 일일이 확인할 필요가 있을때 -분기점에 다시 되돌아올 마킹을 남겨야 할때 Code int n,m; int arr[10]; bool isused[10]; void func(int k){ if(k == m){ for(int i=0; i
메모리 할당 연속 메모리 할당 -프로세스 생성/종료 반복 -> Scattered hole 발생 -외부 단편화(External fragment) 발생: 메모리가 남지만 홀들로 쪼개져 있어서 프로그램 적재 불가 -할당방식 3가지: First-fit(최초 적합), Best-fit(최적 적합), Worst-fit(최악 적합) -메모리 낭비로 인해 페이징 기법 사용 페이징(Paging) -프로세스를 일정한 단위(page)로 자르고 메모리도 같은 단위(frame)로 자른다음 적재 -MMU안의 여러개의 relocation register를 이용하여 주소변환을 해주면 CPU는 연속적인것처럼 느낌 주소변환(Address Translation) -논리주소(Logical address) -CPU가 내는 주소(2진수) -상위 비트는 페이..
메모리 메모리 계층구조 -시간적 지역성(Temporal locality): 최근 참조된 명령어/데이터가 다시 참조되는 경향(반복문 for의 i) -공간적 지역성(Spatial locality): 최근 참조된 명령어/데이터의 이웃 부분이 참조되는 경향(배열, 순차적 실행) -원리: 계층에 데이터가 있음(hit), 없다면(miss) 다음 계층에서 읽어와서 적재 캐시 -CPU와 메모리 속도차를 줄이기 위해 사용 -여러 단계 사용
빈 생명주기(라이프사이클) 콜백 의존관계 주입이 끝나야 초기화를 할수 있을텐데 그 시점을 어떻게 알수 있을까? -스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려줌(종료도 마찬가지) 스프링 빈의 이벤트 라이프사이클(싱글톤) -스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 스프링의 콜백 방법 -인터페이스 IntializionBean, DisposableBean (거의 사용하지 않음) -단점: 스프링 전용 인터페이스에 의존, 코드 수정이 불가한 외부 라이브러리에 적용불가 -빈 등록할때 초기화,소멸 메서드 지정( @Bean(initMethod = "init", destroyMethod = "close") -장점: 설정정보에..
스프링 빈 가져올때 팁 조회 대상 빈이 2개 이상일때 1.@Autowired 필드 명 매칭 -타입 매칭 -타입 매칭 결과가 2개 이상일때는 필드명, 파라미터명(첫소문자 주의) 으로 빈 이름 매칭 2.@Quilifier -> @Quilifier 이름끼리 매칭(추가 구분자), 단 모든 선언앞에 @Quilifier을 붙여 주어야함 3.@Primary 사용: 여러 빈 매칭되면 @Primary가 우선권을 가짐 @Quilifier가 @Primary보다 우선순위가 높음(구체적) 조회한 빈이 모두 필요할때 List, Map 사용 자동,수동의 올바른 기준 -트렌드는 자동을 선호 -업무 로직 빈(자동) -컨트롤러, 핵심 비지니스 로직, 데이터 계층의 로직을 처리하는 리포지토리등, 비지니스 요구사항을 개발할때 추가 및 변경 -단 다형성을 적극활용..
재귀 재귀란 무엇인가? - 하나의 함수에서 자기 자신을 다시 호출해 작업을 수행하는 알고리즘 문제풀이에서 재귀의 활용방식은? - Base condition에서 가능하고 n-1에서 된다면(가정) n에서도 가능함(귀납적 사고) 즉 위 조건을 확인하였으면 내가 할일은 n번째의 동작을 명시하고 미래의 함수에게 n-1을 맡김 재귀함수의 조건? -특정 입력에 대해서는 자기자신을 호출하지 않고 종료되어야 함 -모든 입력은 Base condition으로 수렴해야 함