본문 바로가기

공부(~2016)50

MapReduce 기본 MapReduce - 대용량 데이터를 다루는 문제가 주어졌을 때, 여러대의 프로세서에 분산시켜 병렬적으로 처리할 수 있다.- MapReduce는 이러한 문제를 해결하기 위해 사용하는 하나의 프로그래밍 모델이다. 또는 이러한 프로그래밍 모델을 구현한 프레임워크이다.- Map() 함수와 Reduce() 함수로 구성된다. Map() 함수를 통해 원하는 데이터를 추출하고, Reduce() 함수를 통해 summarize 한다는 컨셉이다. MapReduce example - 아래와 같이 1~5 단계가 순차적으로 수행된다. 1. prepare the Map() input- storage(파일시스템, DBMS 등)에서 raw data를 읽어온다.- raw data를 적당한 크기의 chunk 단위로 쪼갠다. - 각 ch.. 2016. 2. 13.
Git 브랜치 전략 http://nvie.com/posts/a-successful-git-branching-model/https://guides.github.com/introduction/flow/http://drewfradette.ca/a-simpler-successful-git-branching-model/ 2016. 2. 5.
GitHub Flavored Markdown #References: https://help.github.com/articles/github-flavored-markdown/https://github.com/mojombo/github-flavored-markdown/issues/1 제목 (H1과 같은 효과)======== 소제목 (H2와 같은 효과)------- 줄바꿈 => 엔터H1 => #H2 => ##H3 => ### 취소선 => ~~내용~~이탤릭 => *내용* 코드블록1줄바꿈 + 공백 4개(들여쓰기) 로 시작하면 자동 적용됨 코드블록2 (공백 4개 안해도 됨)`내용` or`내용` 특정 언어 문법 강조```java 내용``` 리스트. 항목와 같은 효과.+ 항목* 항목- 항목 숫자 리스트1. 항목2. 항목목 리스트 항목 앞에 [ ] 혹은 [x] 을.. 2015. 12. 6.
안정적인 서비스 운영 안정적인 서비스 운영 2014.03 from Changyol BAEK 2015. 10. 24.
Java Garbage Collection Young 제너레이션 Old 제너레이션 Perm 제너레이션 에덴 - 서바이버1 - 서바이버2 * PermGen은 자바 애플리카에션 자체(클래스 등)가 로딩되는 영역으로 가비지컬렉션 대상이 아니다. 객체가 처음 생성(new) 되면 에덴 영역으로 들어감.Minor 가비지컬렉션이 발생하면, 에덴과 서바이버1에 있던 객체 중 살아있는 것을 서바이버2로 복사. 나머지는 해제.그다음에 또 Minor 가비지컬렉션이 발생하면 에덴과 서바이버2에 있던 객체 중 살아있는 것을 서바이버1로 복사. 나머지는 해제. 이런식으로 반복 수행.그러다가 서바이버에서 오래 버틴 객체들은 Old 영역으로 옮겨진다. 이런 방식을 Copy & Scavenge(스캐빈지) 라고 함. 속도가 매우 빠름. Old 영역에서의 가비지컬렉션은 Full .. 2015. 10. 24.
대용량 서비스 아키텍처의 Persistent Layer 클러스터링- Fail Over 가능 : 특정 인스턴스 장애 시 다른 인스턴스들이 장애가 난 인스턴스의 메시지를 받아서 이어서 처리- 한 대의 서버로 처리할 수 없는 양의 메시지를 여러 대의 서버에서 분산 처리 가능 RDBMS에서의 성능 향상을 위한 아키텍처 Query off LoadingDB 트랜잭션의 CRUD 중 80% 이상은 SELECT임. INSERT/UPDATE/DELETE는 많지 않음. 따라서 조회 트랜잭션과 쓰기 트랜잭션을 분리하는 기법. 마스터 DB에는 쓰기 트랜잭션만을 허용하고, Slave DB에는 읽기만을 허용. 마스터 DB의 내용을 중간의 스테이징 DB로 복사. 그리고 스테이징 DB는 복제된 내용을 N개의 Slave DB로 복제. 이렇게 하려면 커넥션풀을 2개로 나눠야함. 또한 Slav.. 2015. 10. 24.
Java 8 인터페이스 The interface body can contain abstract methods, default methods, and static methods. An abstract method within an interface is followed by a semicolon, but no braces (an abstract method does not contain an implementation). Default methods are defined with the default modifier, and static methods with the static keyword. All abstract, default, and static methods in an interface are implicitly pu.. 2015. 10. 19.
Junit Assert http://junit.sourceforge.net/javadoc/org/junit/Assert.html 나중에 다시 읽어보도록 >. 2015. 10. 18.
Java - Enum enum을 제대로 써보고자 정리해본다 Enum 몇몇개의 상수들을 묶어서 관리하고 싶을 때. 연관된 상수들의 집합을 표현할때 사용한다.- 월, 화, 수, 목, 금, 토, 일- 남자, 여자- SKT, LGU+, KT enum은 C, C++ 등에 있던 개념인데, 자바에서는 JDK 1.5 버전에서 도입되었다. 자바에 enum이 도입되기 이전에는, 이러한 집합을 표현할 때 다음과 같이 public static final 변수를 이용하였다. public class TelecomCompany { public static final int SKT = 1; public static final int LG = 2; public static final int KT = 3; } public class Person { priv.. 2015. 8. 13.
마이크로서비스아키텍처 SOA- 아키텍처 구성을 위한 하나의 개념이자 사상.- 애플리케이션의 기능을 비즈니스적인 의미가 있는 기능 단위로 묶고, 표준화된 호출 인터페이스를 통해 서비스라는 소프트웨어 컴포넌트 단위로 재조합한 후, 이 서비스들을 서로 조합하여 업무 기능을 구현- 느슨하게 연결되고, 상호 조합 가능한 소프트웨어- 수직적 분할: 각각의 서비스가 데이터 계층, 비즈니스 로직 계층, 뷰에 대한 모듈을 모두 가지고 있어서 각 서비스 간의 의존성이 최소화됨.- SOA 시스템 내에서 플랫폼이나 기술에 종속되지 않음- 서비스 변경시 다른 서비스에 영향이 적음- 각 서비스를 서로 연결하여 하나의 조합된 형태의 애플리케이션을 구상할 수 있음 모노리틱 아키텍처 - 하나의 어플리케이션에 모든 모든 로직이 다 들어가있는 통짜 구조.- .. 2015. 8. 8.
Double Ended Linked List Double Ended Linked List - "Double Linked" 와는 다름~ 더블 링크드는 각 노드가 preNode, nextNode의 링크를 모두 가지고 있는 것이고, 지금 여기서의 Double Ended는 리스트 전체에서 head 포인터 뿐 아니라 tail 포인터도 가지고 있는 것이다. - 배열로 구현할 때와 다르게, 최대 공간의 제약 없이 사용 가능 - 원소가 하나도 없을 때 뿐 아니라 디큐시에 원소가 하나만 있을 때도 고려 필요 - enqueue를 맨 앞, 맨 뒤, 원하는 위치에서 할 수 있도록 구현 (가장 첫 위치는 1으로 가정) - dequeue를 맨 앞, 맨 뒤에 할 수 있도록 구현 - 큐 순회하며 데이터 출력하는 printQueue 메소드도 구현 허허.. 복잡하다 제대로 한건지.. 2015. 4. 14.
톰캣 DBCP Attribute Attribute Description TypeDefault Value defaultAutoCommit기본값은 풀에 의해서 생성된다.만약 설정되지 않으면, 기본값은 JDBC Driver의 기본값이다.만약 이것도 설정되지 않으면 setAutoCommit 메소드는 호출되지 않을 것이다. boolean defaultReadOnly 기본값은 풀에 의해서 설정된다.만약 설정되지 않으면 setReadOnly 메소드는 호출되지 않을 것이다.read only 모드를 지원하지 않는 몇몇 드라이버도 있다. (예: Informix) boolean defaultTransactionIsolation트랜잭션 격리상태. 기본값은 풀에 의해서 생성되는데, 다음 중의 하나이다.- NONE- READ_COMMITTED- READ_UNC.. 2015. 3. 4.
[Java] java.lang.Object 클래스 java.lang.Object 클래스 public final void notify()이 객체 상에서 wait 하고 있는 쓰레드 중 한 개를 골라서 깨운다.현재의 쓰레드가 이 객체의 락을 가지고 있지 않은 경우(모니터를 소유하고 있지 않은 경우)는 실행시 java.lang.IllegalMonitorStateException이 통보된다. public final void notifyAll()이 객체 상에서 wait하고 있는 쓰레드를 전부 깨운다.현재의 쓰레드가 이 객체의 락을 가지고 있지 않은 경우(모니터를 소유하고 있지 않은 경우)는 실행시 java.lang.IllegalMonitorStateException이 통보된다. public final void wait() throw InterruptedExcept.. 2015. 1. 25.
[Java] Singleton 패턴 구현 예제 싱글톤 패턴클래스의 인스턴스가 반드시 딱 한 개만 생성됨을 보장하는 패턴- 클래스의 생성자를 private로 선언하여 외부에서 인스턴스를 생성하지 못하도록 방지함 -> 생성자가 private 이므로 상속이 불가능함- 클래스 내에 private static 변수로 자기 자신 클래스의 인스턴스를 가짐- 이 private static 변수를 리턴해주는 public static getInstance() 메소드를 가짐 * 이 포스팅에서는 Lazy 초기화를 이용한 예제만 다룬다. 필드 선언과 함께 초기화하는 것은 다루지 않음 첫 번째 예제 - Single Threaded Execution -> 문제 없음import java.util.Date; public class MySystem { private static M.. 2015. 1. 25.
[Java] Uncaught Exception Handler, Shutdown Hook 캐치되지 않는 예외의 핸들러 (Uncaught Exception Handler) 프로그램이 예외를 통보했을 때 그 예외를 캐치하는 try-catch절이 어디에도 적혀있지 않다고 하자. 이런 경우에는 일반적으로 쓰레드의 call stack을 표시하고 프로그램이 종료된다. Thread 클래스의 static 메소드인 setDefaultUncaughtExceptionHandler 메소드를 사용하면 캐치되지 않는 예외의 핸들러를 설정할 수 있다. 핸들러는 Thread.UncaughtExceptionHandler 인터페이스의 객체로서 표현하고, 실제 처리는 uncaughtException 메소드에 기술한다. 이렇게 핸들러를 설정하면 종료할 때 call stack이 표시되지 않고 프로그램이 종료된다. Shutdown.. 2015. 1. 19.