Mapped Diagnostic Context (MDC) 로깅 라이브러리에서 개발자의 로깅과 디버깅을 위해 지원하는 기술입니다. MDC를 사용하면 여러 스레드가 동시다발적으로 소스 코드를 실행할 때, 어떤 스레드에 의해 소스 코드가 실행되었는지에 대한 맥락을 로그 메시지에 추가할 수 있습니다. 특히 클라이언트-서버 아키텍처에서 여러 클라이언트가 동시에 한 서버로 요청을 보내면 각 요청에 대한 로그 메시지가 무작위로 출력될텐데요. 각 로그의 출처가 어떤 클라이언트인지 구분해야 할 때 MDC가 매우 유용합니다. 본 포스팅은 블로그 주인장의 'MDC는 어떻게 Request 단위로 값을 저장할까?'라는 궁금증을 계기로 작성되었는데요. MDC의 니즈와 사용법에 대해서는 이미 자세히 설명된 자료가 있어 아래 링..
볼륨이 왜 필요할까? 도커의 이미지는 실행될 서비스의 정보를 읽기 위한 용도로 사용되고, 컨테이너는 이미지를 기반으로 실행되고 있는 서비스의 정보와 변경 사항을 저장하는 용도로 사용된다. 즉, 컨테이너를 삭제하면 컨테이너 계층에 저장되어 있던 DB 정보도 함께 삭제된다. 이를 방지하기 위해 컨테이너의 데이터를 영속적으로 활용할 수 있는 방법이 필요해졌고, 그 중 가장 쉬운 방법이 볼륨을 활용하는 것이다. 1. 호스트와 볼륨 공유 첫번째로 볼륨을 사용하는 방법은 호스트와 볼륨을 공유하는 것이다. 예시로 MySQL DB 컨테이너와 워드프레스 웹 서버 컨테이너를 생성해보겠다. docker run -d \ --name wordpressdb_hostvolume \ -e MYSQL_ROOT_PASSWORD=pass..
제네릭은 컬렉션과 단일 원소 컨테이너에서도 흔히 쓰인다. - 컬렉션의 예시: Set, Map - 단일 원소 컨테이너의 예시: ThreadLocal, AtomicReference 위에서 매개변수화되는 대상은 컨테이너 자신이다. 따라서 하나의 컨테이너에서 매개변수화할 수 있는 타입의 수가 Set은 1개, Map은 2개로 제한된다. 하지만 더 유연한 수단이 필요할 때도 종종 있다. 가령 데이터베이스의 행은 여러 개의 다양한 타입의 열을 가질 수 있는데, 모두 열을 타입 안전하게 이용할 수 있도록 만들고 싶다고 가정해보자. 이럴 때 사용할 수 있는 해법이 바로 타입 이종 컨테이너 패턴이다. 타입 이종 컨테이너 패턴 컨테이너 대신 키를 매개변수화한 다음, 컨테이너에 값을 넣거나 뺄 때 매개변수화한 키를 함께 제공..
도커 컨테이너란? 도커에서 이미지로 생성해 이미지의 목적에 맞게 사용되는 공간을 컨테이너라고 부릅니다. 파일 시스템과 격리된 시스템 자원 또는 네트워크를 사용할 수 있는 독립적인 공간입니다. 이번 글에서는 도커 컨테이너를 다루기 위한 명령어들을 살펴보고자 합니다. docker run 컨테이너를 생성하고 실행합니다. docker run의 옵션 종류는 다음과 같습니다. -i : 상호 입출력 -t : tty 활성화 -d: 입출력이 없는 상태로 컨테이너 실행(백그라운드) -e: 컨테이너 내부 환경변수 설정 -p: 호스트의 포트 중 하나와 컨테이너의 80번 포트 연결 --link: A 컨테이너에서 B 컨테이너로 접근 $ docker run -i -t --name container_test ubuntu:14.04 ..
람다식이란 람다식 또는 람다 함수란 메서드로 전달할 수 있는 익명 함수를 단순화한 것입니다. 람다식을 이용하면 코드가 간결해지고, Lazy Initialization을 통해 성능을 향상시킬 수 있습니다. 자바에서 함수형 프로그래밍 기법을 위해 제공하는 기능 중 하나로 함수를 일급 객체로 다룰 수 있도록 하여 매개 변수로 함수 자체를 전달할 수 있습니다. 람다식의 생김새는 다음과 같습니다. (람다 파라미터) -> { 람다 바디 } 람다식을 사용하면 함수의 선언을 아래처럼 한 줄로 작성할 수 있습니다. // 일반적인 메소드 선언 public int add(int a, int b) { return a+b; } // 람다식 (a, b) -> a + b; 람다식의 특징 1. 익명: 보통의 메서드와 달리 이름이 없..
함수형 프로그래밍이란함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. - 위키페디아 보통은 프로그래밍 언어에서 Java, Python과 같은 객체 지향 언어와 C언어와 같은 절차 지향 언어가 친숙하겠지만 수학 함수처럼 코드를 작성할 수 있는 함수형 프로그래밍 언어도 존재합니다. 함수형 프로그래밍 언어를 사용하면 순수한 함수들을 조합하여 프로그램을 만들 수 있습니다. 가령 클로저, 스칼라 등이 있습니다. 함수형 프로그래밍은 이해하기 쉽다. 그리고 객체 지향 언어였던 Java도 버전 8부터 유연성을 위해 함수형 프로그래밍 개념을 도입하기 시작했습니다. 객체 지향은 개발자가 더 원활히 유지 보수를 할 수 있도록 도와주지만 대신 더 복..
- Total
- Today
- Yesterday
- linuxawk
- baekjoon
- awk프로그램
- 버추억박스오류
- atq
- linuxtouch
- Baekjoon27219
- 백준
- 리눅스
- Linux
- 쇼미더코드
- 백준27219
- virtualbox
- linux파일
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- 백준27211
- GithubAPI
- OnActivityForResult
- cron시스템
- api문서
- 코테
- cat
- 리눅스cron
- 사용자ID
- whatis
- E_FAIL
- linuxgedit
- GitHubAPIforJava
- Baekjoon27211
- 버추억박스에러
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |