썸네일 🎟인터페이스와 🖼추상클래스의 차이점에 대해 설명해주세요 키워드 추상 메소드란? 🖼추상 클래스란? 🎟 인터페이스란? 🖼추상 클래스와 🎟 인터페이스의 공통점 왜 굳이 🎟 인터페이스를 사용할까? 🖼인터페이스와 🎟 추상 클래스 언제 사용할까? 추상 메소드란? 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 것이 추상 메소드입니다. 머리만 있고 꼬리(내용)는 없는 메소드라고 생각하면 됩니다. 🖼 추상 클래스란? 추상 클래스와 일반 클래스는 상속 관계에 놓여있습니다. 추상 클래스는 새로운 일반 클래스를 위한 부모 클래스의 용도로만 사용됩니다. 일반 클래스들의 필드와 메소드를 통일하여 일반 클래스 작성 시 시간을 절약할 수 있습니다. 추상 클래스는 단일 상속만 가능하며, 일반 변수를 가질 수 있습니다. 🎟 인터페이스란? 추상 클래스의 하나로, 추상 메소드로만 이루어..
썸네일 결합도에 대해 설명해주세요. 결합도란? 결합도는 두 사람이 붙어 있는 모습을 상상하면 좋다. 손만 잡고 있는지, 팔짱을 끼고 있는지, 포옹을 하고 있는지에 따라서 떨어뜨리기 어려운 느낌! 즉 결합도란, 두 모듈 간의 상호 의존도를 의미하며, 구조적 설계에서 기능 수행 시 모듈 간 최소한의 상호작용을 하여 하나의 기능만을 수행하는 정도를 표현한다. 결합도의 유형 결합도가 낮은 것이 가장 고품질의 모듈이다. 자 -> 스 -> 제 -> 외 - > 공 -> 내 자료 결합도 모듈 간의 인터페이스가 자료 요소로만 구성된 경우 스탬프 결합도 두 모듈이 동일한 자료구조를 조회하는 경우 제어 결합도 내부 논리 조작을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우 외부 결합도 외부로 선언한 변수를 다른 모듈에서 참조할 경우 공통 결합도 여..
썸네일 시간복잡도와 공간복잡도란? 복잡도 시스템이나 시스템 구성 요소 또는 소프트웨어의 복잡한 정도를 나타내는 말 시간 복잡도 알고리즘을 수행하기 위해서 프로세스가 수행하는 연산 횟수를 수치화한 것 시간이 얼마나 오래 걸리냐를 나타내는 것이 아니라 연산의 횟수(=실행 횟수)를 수치화한 것이다. 시간 복잡도가 낮을수록 알고리즘의 실행시간이 짧고, 높을수록 실행시간이 길어짐 점근 표기법의 종류 빅오 표기법 : 실행시간이 최악일 때 표기하는 방법 세타 표기법 : 평균 오메가 표기법 : 최상 빅오 표기법 알고리즘의 성능을 수학적으로 표기해주는 것 알고리즘의 시간과 공간 복잡도를 표현할 수 있음 O(1) 입력데이터의 크기와 상관없이, 언제나 일정한 시간이 걸리는 알고리즘 데이터가 증가함에 따라 성능의 변화가 없다 예) 스택의 삽입, 삭제 O(n)..
썸네일 직렬화와 역직렬화에 대해 설명해주세요 직렬화와 역직렬화의 핵심! Object를 전송 또는 저장 가능한 형태로 바꾸기 위한 작업 예시 USB 인터페이스 (Universal Serial Bus) Serial : 연쇄, 연속해서 이어지는 어떤 것 = 직렬화 즉, USB는 직선상으로 연속해서 들어오는 데이터를 받아들일 수 있는 인터페이스라는 의미이다. Serialization 직렬화 Object를 연속된 string이나 bytes로 바꾸는 작업 왜 이런 작업을 할까? Object는 메모리에 존재하고 추상적이지만, string과 bytes데이터는 드라이브에 저장도 할 수 있도 통신선을 통해서 전송할 수 있기 때문이다. Objcet는 프로그램 위에 할당된 메모리 위에 존재하고, 프로그램이 종료되면 Object도 자동으로 소멸된다. Deserializa..
썸네일 Spring Framework 실행순서 Tomcat(WAS) 구동 1. Loading Tomcat(WAS)에 의해 web.xml이 loading 된다. 2. Create web.xml에 등록되어 있는 ContextLoaderListener가 자동으로 메모리에 생성된다. ContextLoaderListener 클래스는 ServletContextListener 인터페이스를 구현하고 있으며 ApplicationContext를 생성하는 역할을 수행한다. 3. Loading 생성된 ContextLoaderListener는 root-context.xml을 loading 한다. 4. Running root-context.xml에 등록되어 있는 Spring Container를 구동한다. root-context.xml을 따로 설정하는 이유? 스프링 프레임워크..
썸네일 페이지 교체 알고리즘 페이지 교체 알고리즘이 어디에서 발생하는지는 하단 포스팅 참고! 페이징과 세그먼테이션에 대해 설명해주세요 먼저 페이징 기법과 세그먼테이션 기법은 가상 기억장치 구현 기법으로 주기억장치의 부족한 용량 문제를 해결하기 위해 보조기억장치를 주기억장치처럼 사용할 때 쓰인다. (= CPU를 속인다.) 페 seongeun-it.tistory.com 페이지 교체 알고리즘은 페이지의 부재(Page Fault)가 발생했을 때 가상 기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용 중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법이다. 페이지 부재란? CPU가 엑세스한 가상 페이지가 주기억장치에 없는 경우를 의미한다. 페이지 부재가 발생하면 해당 페이지..
썸네일 페이징과 세그먼테이션에 대해 설명해주세요 먼저 페이징 기법과 세그먼테이션 기법은 가상 기억장치 구현 기법으로 주기억장치의 부족한 용량 문제를 해결하기 위해 보조기억장치를 주기억장치처럼 사용할 때 쓰인다. (= CPU를 속인다.) 페이징 기법의 키워드는 동일한 크기, 세그먼테이션 기법의 키워드는 서로 다른 크기인데, 과연 어떤 크기를 말하는 걸까..? 바로 블록 단위의 크기를 의미한다. 여기서 블록 단위란? 블록 단위 주기억장치와 보조기억장치의 데이터를 주고받는 최소의 단위 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상 기억장치에 보관해 놓고, 프로그램 실행 시에 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리한다. 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다. 블록단위로 나눈다면 연속 할당 방식에서 발생할 수 있는..
썸네일 try-with-resource에 대해서 설명해주세요. 왜 도입되었을까? 자바 7 버전 이전에는 하나 이상의 리소스를 사용할 경우 개발자가 임의로 finally문에서 ~~. close()를 사용하여 자원을 해제시켜줘야 했습니다. 만약 자원을 해제시켜주지 않았다면, 해제되지 않는 자원들이 누적되어 프로그램이 오작동하는 원인이 되었기 때문에 자원 해제는 필수였습니다. 하지만 이런 식으로 자원 해제를 위한 코드가 중복적으로 발생하기 때문에 소스 코드의 가독성을 해치는 단점이 생겼습니다. try-with-resource란? 가독성과 유지보수의 편의성을 위해 리소스 작업을 포함하는 코드들의 예외처리를 할 수 있도록 도와주기 위해, 자바 버전7에 도입된 문법이며, try~catch를 사용하는 것은 이전 문법과 동일하지만, AutoCloseable이라는 인터페이스를 구현..
썸네일 Java 8에서 추가된 기능에 대해 설명해주세요. 바로 함수적 프로그래밍인 람다식(Lambda Expression)의 도입입니다. 람다식이란 무엇일까? 함수적 프로그래밍 기법으로 데이터를 매개 값으로 전달하고 결과를 받는 코드로 구성된 것을 의미합니다. y = f(x)와 같은 형태를 의미하는데, 람다 계산법에서 사용된 식을 프로그래밍 언어에 접목한 경우이며, 익명 함수(anonymous function)를 생성하기 위한 식을 의미합니다. (타입 매개변수,...) -> {실행문;...} 💡 자바는 객체 지향 프로그래밍인데 자바 8부터 함수적 프로그래밍 기법인 람다식을 도입했어요! 그럼 왜 람다식을 사용하는 것일까? 1. 코드의 가독성을 위해서 2. 데이터를 객체로 만들어서 생성하는 것보다 데이터를 바로 처리하는 것이 속도에 유리하기 한 경우에 사용됩니다...
썸네일 인덱스란? 인덱스 개념 두꺼운 책에서 원하는 자료를 찾을 경우 가장 뒤에 있는 '찾아보기'에서 원하는 자료의 페이지를 확인 후 해당 페이지에서 원하는 자료를 찾는 방법과 유사해요! 인덱스는 원하는 자료를 빠르고 효율적으로 검색하기 위해 사용하는 방법을 말합니다. 인덱스의 구성 1. 기본적으로 데이터의 위치(주소)를 관리, 기억하는 인덱스 파일 2. 실제 데이터를 기억하는 데이터 파일 인덱스의 검색 과정 1. 데이터 검색 2. 인덱스 파일에서 데이터 주소 찾기 3. 인덱스 파일에서 찾은 주소의 데이터를 데이터 파일에서 검색 인덱스의 장단점 장점 단점 데이터 검색 속도의 향상 추가 DB 공간의 필요 시스템 부하 감소 인덱스 생성 시간 소요 시스템 전체의 성능 향상 잦은 변경 작업으로 인한 성능저하 인덱스 구조 인덱스는..
썸네일 🧩클래스와 🏠객체는 각각 무엇인가요? 키워드 🏠클래스와 🧩객체란? 🧩,🏠,🛕인 이유는 무엇일까? 🏠 클래스란? 그럼 어떻게🏠클래스를 만들까요? 🏠클래스의 구조란? 그럼 🧩객체는 무엇일까요? 🛕객체 지향 프로그래밍은 뭐라고 생각하세요? 🏠클래스와 🧩객체란? 레고로 도시🛕를 만들어본 적 있으신가요? 도시를 만들기 위해서는 작은 부품🧩들을 모아서 이러한 형태의 하나의 🏠건축물(프로그램)을 만들어요. 그것들을 🏠🚇🛬🏭 모아 모아 만든다면 바로 이렇게 하나의 🛕도시를 만들 수 있게 됩니다. 여기서 🛕는 객체 지향 프로그래밍을 🧩은 객체를 🏠은 클래스에 대한 비유인데요, 사전적인 의미로 얘기하자면, 객체 - 속성(=데이터,값)과 메소드(=행위)로 구성된다. - 데이터 : 객체가 가지고 있는 정보 (=명사) - 메소드 : 객체가 메시지를 받아 실행해야 ..
썸네일 IPC(Inter Process Communication)란? 전제 조건 프로세스는 독립적으로 실행된다. 즉, 프로세스는 다른 프로세스의 영향을 받지 않는다 IPC(Inter Process Communication)란? 엄마와 딸이 있습니다. 엄마는 딸에게 자꾸 간섭을 해요. 밥 먹었니, 공부 잘했니 등등등.. 하지만 딸은 이 간섭이 싫습니다. 하지만 두 사람 사이에 대화는 반드시 필요합니다. 이렇게 독립적인 구조를 가진 프로세스 간의 통신을 가능하도록 해주는 것이 바로 IPC입니다. IPC의 종류 Shared Memory = 공용 메모리를 이용해서 데이터를 주고 받는 방법 엄마가 딸에게 용돈함에 용돈을 넣고, 딸은 용돈함에서 용돈을 받아가는 방식 Shared Memory에 필요한 데이터를 적재하고, 여기서 꺼내 쓰는 방법 Shared Memory는 어떤 메모리 영..