[NETWORK] DNS ROUND ROBIN
·
NETWORK
DNS Round Robin 정의 DNS 서버 구성 방식중 한가지, 도메인에 대한 IP요청 쿼리 시 Round Robin 방식으로 IP를 반환하는 방식 도메인 레코드 정보를 조회하는 시점에서 트래픽을 분산하는 기법 DNS Round Robin 원리 여러대의 웹서버는 각각 공인 IP를 가지고 있음 사이트 접속시 도메인 주소를 브라우저 입력하고 DNS는 도메인 정보를 조회하여 여러대의 서버의 IP리스트 중에 라운드 로빈 형태로 랜덤하게 선택하여 사용자에게 전달 웹사이트에 접속하는 사용자는 사용자의 요청을 실제로 복수의 웹서버에 나뉘어 접속하게 되어 자연스럽게 분산처리 됨 DNS Round Robin 문제점 서버의 수 만큼 공인 IP 주소가 필요하고 부하 분산을 위해 서버의 대수를 늘리기 위해서는 그 만큼의 ..
[OS] 페이지 교체
·
OS
페이지 교체 정의 및 과정 프로그램 실행시 모든 항목이 물리 메모리에 올라오지 않기 때문에, 프로세스의 동작에 필요한 페이지를 요청하는 과정에서 페이지 부재가 발생하게 되면, 원하는 페이지를 보조저장장치에서 가져오게됨 하지만 만약 물리 메모리가 모두 사용중이라면 페이지 교체가 진행되야함 디스크에서 필요한 페이지 위치를 찾음 빈 페이지를 프레임을 찾음 (페이지 교체 알고리즘을 통해 희생될 페이지 찾아서 디스크에 기록후, 관련페이지 테이블 수정) 빈 프레임에 새 페이지를 읽어오고, 프레임 테이블 수정 프로세스 재시작 페이지 교체 알고리즘 FIFO 페이지 교체 : 먼저 물리 메모리에 들어온 페이지 순서대로 페이지 교체 시점에 먼저 나가게 되는 방식 최적 페이지 교체 : 앞으로 가장 오랫동안 사용되지 않을 페이..
[OS] 가상메모리
·
OS
가상 메모리 정의 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법 메모리가 실제메모리보다 많아보이게 하는 기술 가상 메모리 배경 실행되는 코드의 전부를 물리 메모리에 존재시켜야 해서 메모리용량 보다 큰 프로그램을 실행시킬 수 없었음, 그리고 여러 프로그램을 동시에 메모리에 올리기에는 용량 문제, 페이지 교체등 성능 이슈가 발생하게 되며 사용하는 코드가 차지하는 메모리들을 확인 할 수 있다는 점에서 불필요하게 전체 프로그램이 메모리에 올라와 있어야 된다는게 아니라는 것을 알 수 있음 가상 메모리의 역할 가상 주소 공간 제공 프로세스간의 페이지 공유 가상 주소 공간 제공 한 프로세스가 메모리에 저장되는 논리적인 모습을 가상메모리에 구현한 공간으로 프로세스가 요구하는 메모리 공간을 ..
[OS] 캐시지역성
·
OS
캐시 메모리 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용메모리 캐시 메모리 역할을 수행하기 위해서는 CPU가 어떤 데이터를 원하는지 예측을 어느정도 할 수 있어야함, 캐시의 성능은 정보가 어느정도 들어있느냐에 따라서 좌우됨 캐시 지역성 캐시 적중율 극대화 시키기 위해서 지역성의 원리를 사용함, 지역성이란 기억장치 내의 정보를 균일하게 접근 하는 것이 아닌 한순간에 특정 부분을 집중적으로 참조하는 특성 시간 지역성 : 최근에 참조된 주소 내용은 곧 다음에 다시 참조된다는 특성 공간 지역성 : 대부분의 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성 캐시 라인 캐시에 데이터를 저장할 때 특정 자료구조를 사용하여 묶음으로 저장하게 되는데 이것을 캐시라인..
[DB] 쿼리문 함수 정리
·
DATABASE
기본 함수 유형 집계함수 문자열함수 날짜함수 기타 집계함수 FUNCTION 설명 MAX([컬럼명]) 명시된 컬럼 내 값들 중 최대값을 반환 MIN([컬럼명]) 명시된 컬럼 내 값들 중 최소값을 반환 COUNT([컬럼명]) 명시된 컬럼 내 값의 전체 행수를 반환 (NULL 제외) SUM([컬럼명]) 명시된 컬럼이 숫자인 경우, 데이터 합을 반환 (NULL 제외) AVG([컬럼명]) 명시된 컬럼이 숫자인 경우, 데이터 평균 반환 (NULL 제외) 문자열함수 FUNCTION 설명 SUBSTRING(string, int, int) 첫번째 명시한 문자열의 부분문자열 잘라오기 LTRIM(string) / RTRIM(string) LTRIM(string, string) / RTRIM(string,string) 공백제..
[JAVA] 제네릭
·
JAVA
제네릭 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 외부에서 사용자에 의해 타입이 지정되는 것을 의미 제네릭 장점 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지함 타입을 외부에서 지정하기 때문에 반환값에 대한 타입 체크와 타입을 따로 검사해줄 필요가 없음 코드의 재사용성을 증대 시킴 제네릭 타입 종류 타입 설명 Type Element Key Value Number 제네릭 변성 타입이 있는 언어에는 변성이라는 개념이 있음, 제네릭은 변성에 관련된 3가지 성질을 제공 공변 : A가 B의 하위 타입일 때, T 가 T의 하위 타입이면 T가 공변 성질을 가지고 있음 반공변 : A가 B의 하위 타입일 때, T가 T의 하위타입이면 T가 반공변 성질을 가지고 있음 무공변 :..
[JAVA] 리플렉션
·
JAVA
리플렉션 정의 이미 로딩이 완료된 클래스에서 또 다른 클래스를 동적으로 로딩하여 생성자, 멤버필드, 멤버 메서드 등을 사용할 수 있게 하는 기능 클래스의 패키지 정보, 접근 지정자, 수퍼클래스, 어노테이션 등을 얻을 수 있음 컴파일 타임이 아니라 런타임에 동적으로 특정 클래스 의 정보를 객체화를 통해 분석 및 추출해줌 사용하는 이유 클래스와 메서드의 메타정보를 사용해서 어플리케이션을 동적으로 유연하게 만들 수 있음 private 멤버도 Field.setAccessible() 메서드를 true로 지정하면 접근과 조작이 가능하게 만듬 리플렉션 시작 리플렉션의 시작은 Class Class로 통한 접근방법 모든 클래스는 로딩한 다음에 Class 인스턴스가 생기며, 모든 인스턴스는 getClass() 메소드를 ..
[JAVA] 데코레이터 패턴
·
JAVA
데코레이터 패턴 정의 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴 추가 기능을 Decorator 클래스로 정의한 후 조합함으로써 추가기능 조합을 설계하는 패턴 용도에 따라 객체의 기능을 계속 추가(데코레이트) 할 수 있게 해줌 데코레이터 패턴 특징 객체에 동적으로 기능을 추가할 수 있게 해줌 기능이 많아질수록 데코레이터 클래스들이 계속 추가 되어야 하기 때문에 클래스가 많아져서 복잡성이 높아짐 겹겹으로 애워싸기 때문에 객체의 정체를 알기가 힘듬 데코레이터 패턴 용도 요소들을 계속 수정하면서 사용하는 구조 인 경우 오소들을 조합해서 사용하는 경우 데코레이터 예시 public interface Box { void wrap(); } public class GiftBox implements Box { ..
[JAVA] 프록시패턴
·
JAVA
정의 특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 패턴 실제 기능을 수행하는 객체 대신 가상의 객체를 사용해 로직의 흐름을 제어하는 패턴 사용하는 용도 초기화 지연, 접근제어, 로깅, 캐싱 등 다양하게 응용해서 사용함 접근제어 (권한에 따른 접근 차단 / 캐싱 / 지연 로딩) 부가기능 추가 (원래 제공하는 기능에 더해서 부가 기능을 수행) 예시 //인터페이스 정의 public interface Subject { String operation(); } //인터페이스 상속한 실제 객체 @Slf4j public class RealSubject implements Subject { @Override public String operation() { log.info("실제 객체 호출"); sleep..