728x90 반응형 분류 전체보기529 Docker 기본개념 및 Docker CLI 익히기 인프런의 비전공자도 이해할 수 있는 Docker 입문/실전 강의를 참고하여 작성 docker 를 사용하는 이유는 이식성이다.이식성 : 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성 docker- 컨테이너를 사용해서 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴 Container - 하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념 ㄴ 디스크 (저장공간) : 각 컨테이너마다 서로 각자의 저장 공간을 갖는다. (다른 컨테이너에서 내부에 접근 불가) ㄴ 네트워크 (IP, PORT) : 각 컨테이너마다 고유의 네트워크를 가지고 있다.- 하나의 컴퓨터 환경 내에서 여러개의 미니 컴퓨터 환경을 구.. 2025. 4. 1. [자바 멀티스레딩] 자바 동시성 고급: ConcurrentHashMap 사용법 ConcurrentHashMap 은 멀티스레드 환경에서 데이터를 안전하고 효율적으로 관리할 때 자주 사용하는 클래스다.예로, 웹 서버에서 사용자 요청 수를 집계하거나 캐시 데이터를 저장할 때, 데이터 충돌 없이 빠르게 동작한다. ConcurrentHashMap- 동시성 환경에서 안전한 해시맵 구현체- Java8 부터는 CAS(Compare And Swap) 와 세밀한 락으로 동시성 최적화.- 읽기는 락 없이, 쓰기는 최소 범위만 락 걸림- 기본 초기 용량값은 16 사용목적- 멀티스레드 환경에서 데이터 일관성 유지 및 성능 향상 주요메서드- put(K key, V value): 키-값 쌍 추가 또는 갱신- get(Object key): 키로 값 조회- remove(Object key): 키-값 쌍 삭제-.. 2025. 4. 1. [자바 멀티스레딩] 자바 동시성 고급: CountDownLatch 사용법 CountDownLatch 는 스레드 간 동기화를 위해 특정 조건이 완료될 때까지 대기하는 도구이다. 목적- 여러 스레드가 작업을 끝낸 후 다음 단계를 진행하도록 보장 동작원리- 초기 카운트를 설정하고, 각 작업 완료 시 countDown() 으로 카운트 감소- await() 호출 스레드는 카운트가 0이 될 때까지 블록 주요 메서드- CountDownLatch(int count): 초기 카운트 설정. 작업 수에 맞게 지정- await(): 카운트가 0이 될 때까지 대기- await(long timeout, TimeUnit unit): 타임아웃 설정 후 대기- countDown(): 카운트 1 감소. 0이 되면 대기 해제- getCount(): 현재 카운트 조회 장점- 단순성 : 락보다 직관적이며, 작업.. 2025. 3. 31. [자바 멀티스레딩] 자바 동시성 고급: ReentrantLock 사용법 ReentrantLock 은 syncronized 보다 유연한 동기화 도구이다.세밀한 제어가 간으하며, 인터럽트 처리를 지원한다. 또한 락 상태 확인이 가능하다. ReentrantLock- 같은 스레드가 락을 여러 번 획득 가능하며, 획득 횟수만큼 해제 필요- ReentrantLock(true) 로 공정모드 설정. 대기 순서 보장(성능 저하 가능)- Condition 객체로 특정 조건 기다림- tryLock(long, TimeUnit) 으로 락 획득 시간 제한 가능 - 세밀한 제어 가능하며 인터럽트 처리를 지원- 코드 복잡도가 증가하며, unlock() 메서드 누락 시 데드락 위험 public class LockCounter { private int count = 0; private fina.. 2025. 3. 30. [자바 멀티스레딩] 동시성 제어: volatile 사용법 volatile 은 변수의 가시성을 보장하고 동시성 문제를 해결할 수 있다. volatile- 변수의 값을 스레드 간 최신 상태로 유지한다.- 캐시 대신 메인 메모리에서 읽고 쓴다.- 간단한 플래그나 상태 변수에 유용하다. 사용하는 이유- 스레드가 변수 값을 캐시에 저장하면 다른 스레드에서 변경된 값이 보이지 않는다.- 메모리 가시성을 보장한다.- 복잡한 동기화는 synchronized 필요 public class VolatileExample { private boolean running = true; public void stop() { running = false; } public static void main(String[] args) throws Interrup.. 2025. 3. 28. [자바 멀티스레딩] 동기화: synchronized 과 AtomicInteger 사용법 synchronized로 스레드 간 경쟁 상태(race condition) 을 방지할 수 있다. 동기화- 여러 스레드가 같은 자원에 접근하면 데이터 불일치 발생 가능- 동기화로 스레드가 순차적으로 자원 접근하도록 제어- Java에서는 synchronized 을 사용해 구현 가능 synchronized- 메서드나 블록에 적용해 락(Lock) 설정- 한 스레드가 락을 가진 동안 다른 스레드는 대기- 락 해제 시 다음 스레드 실행 - 과도한 synchronized는 병렬성이 저하되어 성능 문제 가능성 있음- 데드락 : 여러 락 사용 시 교착 상태 주의 synchronized 를 사용하지 않고 경쟁 상태 발생할 경우public class Counter { private int count = 0; p.. 2025. 3. 28. [자바 멀티스레딩] 스레드 풀: ExecutorService 사용법 ExecutorService 를 사용해서 스레드를 효율적으로 관리할 수 있다. 스레드 풀- 매번 스레드를 새로 생성하면 오버헤드가 크다.- 미리 스레드를 만들어 놓고 재사용하는 방식을 사용한다.- 작업을 큐에 넣으면 스레드 풀에서 꺼내 실행한다.- 스레드 생성/소멸 비용을 줄이고, 시스템 자원 관리를 효율적으로 가능하다. ExecutorService- 스레드 풀을 관리하는 자바 유틸리티- Executors 클래스로 생성 가능 - 작업은 submit() 메서드로 큐에 추가- 스레드 수 제한 가능, 작업 대기열 관리, 종료 제어 가능 예제- 2개 스레드가 번갈아 작업 처리- 결과값은 다를 수 있음 (스케줄링에 따라 다르다) import java.util.concurrent.ExecutorService;imp.. 2025. 3. 27. 살아 있는 자들을 위한 죽음 수업 (이호) 밀리의 서재에서 어떤 인문학 책을 볼까 넘기다가 제목에 끌려 독서한 책이다. 법의학자 라는 생소한 직업에 대해 알 수 있었으며 생명의 대한 소중함과 살아있음에 감사함을 느낄 수 있는 책. 약 270p(종이책기준) 중 '플라세보' 라는 단어를 간략히 설명해준것이 기억에 남는다.믿음에 관련한 내용인데 '기쁘게 하다' 의미를 가진 '플라케레' 라는 라틴어에서 유래했다.누구나 한번쯤 들어본 플라세보 효과는 환자의 마음가짐이 의료적 효능에 영향을 미칠 수 있다 라는 뜻을 가지고 있다.반대로, '노세보 효과' 도 있다.부정적인 믿음을 가지게 되면 실제로 부저적인 결과가 나타나는 현상을 말한다. 즉, 생각이 실재하는 결과를 만들어 낼 수 있다는 것을 의미한다. 어떤 일, 행동을 하든 사람은 생각을 한다.하기싫은 일,.. 2025. 3. 26. [자바 멀티스레딩] 스레드 기초: Thread 클래스와 Runnable 인터페이스 스레드- 프로세스 내에서 실행되는 작업의 단위- CPU를 활용해서 여러 작업을 동시에 처리 가능- Java에서는 스레드를 통해 멀티태스킹 구현 가능 Thead 클래스- 자바에서 스레드를 직접 생성하는 기본 방법 - Thread를 상속ㅂ다아 run() 메서드를 오버라이드 Runnable 인터페이스- 스레드 실행 로직을 분리해서 정의하는 방법- run() 메서드만 구현하면 되고, 더 유연하게 사용 가능 (다중 상속) public class Task1 { static class MyThread extends Thread { @Override public void run() { for (int i = 0; i Hello, Thread!"); .. 2025. 3. 26. 이전 1 2 3 4 5 ··· 59 다음 728x90 반응형