본문 바로가기

전체 글

(117)
DNS(Domain Name System)란? DNS란? Domain Name System은 전화번호부 또는 자료구조의 Map이라고 생각하면 이해하기 쉽다. 예를 들어 www.test.com을 127.0.0.1과 매핑되어 있는 데이터를 가지고 있는 것이다. DNS는 계층적인 구조를 가지며 분산 데이터베이스 구조로 되어있다. Domain Name Sapce 계층적인 구조를 가진다는 것은 Domain Name Space를 말한다. www.google.com처럼 .으로 구분되어 있는 것이 계층을 의미하며 그림으로 표시하면 다음과 같다. www.google.com에 매핑되는 아이피 주소를 찾을 때까지 Root Domain부터 하위 계층으로 네임서버에서 매핑되는 값을 찾아서 하위계층으로 내려간다. Name Server 네임서버는 하위 계층의 네임서버에 대한 ..
[디자인 패턴] 프록시(Proxy) 패턴 프록시(Proxy) 패턴이란? 프록시패턴은 특정 객체를 대신하여 처리하게 함으로써 로직의 흐름을 제어하는 행동패턴이다. 사용자가 A객체의 methodA라는 메서드를 호출하려고 할 때 프록시 패턴을 사용해서 B객체의 methodB를 호출하고 추가적인 로직을 추가로 수행한 뒤 methodA를 호출하는 것이다. 이를 사용하는 이유는 대상 클래스가 민감한 정보를 가지고 있거나 원본 객체를 수정할 수 없는 상황일 때 추가적인 기능을 사용하기 위해서이다. 프록시 패턴을 사용했을 때 좋은 경우 보안 클라이언트가 작업을 수행할 수 있는 권한이 있는지 확인한 후 요청된 작업 수행 캐싱 프록시 내부에 캐시를 생성하여 데이터에 캐시가 존재하는 경우에 캐싱된 데이터를 반환하여 응답시간을 단축시킨다. 데이터 유효성 검사 프록시..
[디자인 패턴] 템플릿 메서드(Template Method) 패턴 템플릿 메서드(Template Method) 패턴이란? 템플릿 메서드 패턴은 수행하는 로직의 순서와 단계는 동일하지만 서브클래스에 그 세부 로직을 다르게 하는 디자인 패턴이다. 게임을 예시로 들면 종목은 다르지만 모든 게임은 initialize -> startPlay -> endPlay라는 순서가 동일한 play라는 행위를 수행하지만 어떤 게임(ex. Criket, Football)인지에 따라 그 세부 로직은 다르다. abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); // 템플릿 메소드 public final void play() { // 게임 초기화 initialize()..
[디자인 패턴] 팩토리 메서드(Factory Method) 패턴 팩토리 메서드(Factory Method) 패턴 이란? 팩토리 메서드 패턴은 객체 생성을 클라이언트가 new를 통해서 하는 것이 아닌 객체 생성을 전담하는 공장(Factory)을 통해 하는 것이다. 공장은 추상 클래스로 선언하고 공장에서 생성할 제품은 인터페이스로 선언해서 상속을 사용해서 (ex) UserFactory -> GoogleUserFactory, User -> GoogleUser) OCP를 위반하지 않고 기존 코드의 수정 없이 기능을 확장할 수 있다. 회원가입 기능을 위한 User와 User를 생성할 Factory인 UserFactory를 선언한다. interface User { void signup(); } abstract class UserFactory { public User newIn..
[디자인 패턴] 싱글톤(Singleton) 패턴 싱글톤(Singleton) 패턴이란? 싱글톤 패턴이란 어떤 클래스의 인스턴스는 오직 1개만 생성할 수 있는 패턴이다. 즉 어느 시점에서 호출을 해도 같은 객체임을 보장한다. 장점 메모리 관리에 효율적이다. 프로그램이 실행되고 있는 동안 단 1개의 인스턴스만 생성해서 사용하기 때문에 메모리 관리에 효율적이다. 데이터 공유가 쉽다. 다른 클래스에서 호출해도 같은 객체를 사용하기 때문에 클래스들 간의 데이터 공유가 쉽다. 단점 동시성 문제 1개의 인스턴스를 공유하기 때문에 동시성 문제가 발생할 수 있다. 테스트하기 어렵다. 싱글톤 패턴을 사용하면 객체가 전역 상태를 가지고 있기 때문에 격리된 환경에서 수행해야 하는 테스트의 경우 매번 상태를 초기화해야 한다. 상속 불가능 기본 생성자를 private으로 선언하..
[React Native] react-native-fetch-blob 설치 에러 react-native-fetch-blob 패키지 설치 하는 과정 (pod install)에서 다음과 같은 에러가 발생 해결방법 프로젝트 최상위 경로에서 grep -rl "s.dependency 'React/Core'" node_modules/ | xargs sed -i '' 's=React/Core=React-Core=g'
[Git] 비밀번호 영구저장 리눅스 환경에서 git pull 또는 push 할 때마다 계속 아이디와 비밀번호를 물어봐서 번거롭다면 다음과 같이 설정하면 영구적으로 비밀번호를 물어보지 않는다. // --global은 모든 저장소에서 같은 유저 사용 git config (--global) credential.helper store
컬렉션 프레임워크(Collection Framework) 컬렉션 프레임워크? 사용자가 사용하기 쉽도록 다양한 자료구조를 모아놓은 라이브러리 크게 List, Queue, Map이 Collection 인터페이스의 서브 인터페이스로 있는데 구조상의 차이로 Map은 따로 정의된다. List의 주요 메소드 boolean add(E e) 주어진 객체를 맨 끝에 추가 void add(int index, E element) 특정 인덱스에 객체를 추가 set(int index, E element) 특정 인덱스에 저장된 객체를 주어진 객체로 바꾼다. boolean contains(Object o) 주어진 객체가 저장되어 있는지 여부 확인 E get(int index) 특정 인덱스에 저장된 객체를 리턴 isEmpty() 컬렉션이 비어있는지 여부 확인 int size() 저장되어 ..