일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 람다
- 자바로 계산기 만들기
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch2
- 자바 고급2편 - 네트워크 프로그램
- 자바의 정석 기초편 ch5
- 스프링 mvc2 - 검증
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch4
- 데이터 접근 기술
- 자바의 정석 기초편 ch6
- 2024 정보처리기사 시나공 필기
- 자바 중급1편 - 날짜와 시간
- 스프링 트랜잭션
- 자바 고급2편 - io
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch1
- 스프링 mvc1 - 스프링 mvc
- 스프링 입문(무료)
- 자바의 정석 기초편 ch13
- 스프링 고급 - 스프링 aop
- 2024 정보처리기사 수제비 실기
- @Aspect
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch11
- 자바 중급2편 - 컬렉션 프레임워크
- 스프링 mvc2 - 타임리프
- 자바로 키오스크 만들기
- 자바 기초
- Today
- Total
목록자바 로드맵 강의 (68)
개발공부기록

출처 : 인프런 - 김영한의 실전 자바 - 고급2편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용프로젝트 환경 구성프로젝트 생성Name: java-adv2Build system: IntelliJJDK: 21 이상컴퓨터와 데이터메모리개발자가 개발하며 다루는 데이터는 크게 010101로 되어있는 바이너리 데이터(byte 기반의 데이터)와 "ABC", "가나다"와 같은 문자로 되어 있는 텍스트 데이터 두 가지임 텍스트 데이터가 어떤 원리를 사용하여 만들어지는지 제대로 이해하지 못하면 실무에서 한글 글자가 이상하게 깨져서 나올 때 근본적인 원인을 찾아서 해결하기 어려움실무에서 생각보다 많은 개발자들이 텍스트 데이터와 문자 인코딩의 원리를 정확히 알고 있지 않아서 이런 문제를 만났..

출처 : 인프런 - 김영한의 실전 자바 - 고급1편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. ExecutorService 우아한 종료1) 소개(1) 우아한 종료고객의 주문을 처리하는 서버를 운영중일 때 서버 기능을 업데이트 위해서 서버를 재시작해야 한다고 가정이때 서버 애플리케이션이 고객의 주문을 처리하고 있는 도중에 갑자기 재시작된다면 해당 고객의 주문이 제대로 진행되지 못할 것임가장 이상적인 방향은 새로운 주문 요청은 막고, 이미 진행 중인 주문은 모두 완료한 다음에 서버를 재시작하는 것임이처럼 서비스를 안정적으로 종료하는 것도 매우 중요한데 이렇게 문제없이 우아하게 종료하는 방식을 graceful shutdown이라 함(2) ExecutorService의 종..

출처 : 인프런 - 김영한의 실전 자바 - 고급1편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 스레드를 직접 사용할 때의 문제점1) 스레드를 직접 사용할 때의 문제점 3가지(1) 스레드 생성 비용으로 인한 성능 문제스레드를 사용하려면 먼저 스레드를 생성해야 하는데 스레드는 매우 무거움메모리 할당각 스레드는 자신만의 호출 스택(call stack)을 가지고 있어야 함, 이 호출 스택은 스레드가 실행되는 동안 사용하는 메모리 공간이므로 스레드를 생성할 때는 호출 스택을 위한 메모리를 할당해야 함운영체제 자원 사용스레드를 생성하는 작업은 운영체제 커널 수준에서 이루어지며 시스템 콜(system call)을 통해 처리됨, 이는 CPU와 메모리 리소스를 소모하는 작업임운영체..

출처 : 인프런 - 김영한의 실전 자바 - 고급1편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 동시성 컬렉션이 필요한 이유1) 시작(1) SimpleListMainV0여러 스레드가 동시에 접근해도 괜찮은 경우를 스레드 세이프(Thread Safe)함여기서는 멀티스레드를 사용하지 않았지만 스레드1과 스레드2가 동시에 다음 코드를 실행한다고 가정하고 컬렉션에 데이터를 추가하는 add() 메서드를 생각해 보면, 단순히 컬렉션에 데이터를 하나 추가하는 것뿐이므로 연산이 하나만 있는 원자적인 연산처럼 느껴짐하지만 컬렉션 프레임워크가 제공하는 대부분의 연산은 원자적인 연산이 아니라서 스레드 세이프하지 않음package thread.collection.simple;public ..

출처 : 인프런 - 김영한의 실전 자바 - 고급1편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 원자적 연산1) 소개(1) 원자적 연산컴퓨터 과학에서 사용하는 원자적 연산(atomic operation)의 의미는 해당 연산이 더 이상 나눌 수 없는 단위로 수행된다는 것을 의미함즉, 원자적 연산은 중단되지 않고 다른 연산과 간섭 없이 완전히 실행되거나 전혀 실행되지 않는 성질을 가지고 있으며 멀티스레드 상황에서 다른 스레드의 간섭 없이 안전하게 처리되는 연산이라는 뜻임** 참고과거에 원자는 더 이상 나눌 수 없는 가장 작은 단위로 여겨졌으므로 더는 나눌 수 없다는 뜻으로 원자적 연산이라는 단어를 사용함현대 물리학에서는 원자가 더 작은 입자들로 구성되어 있다고 밝혀졌지만..

출처 : 인프런 - 김영한의 실전 자바 - 고급1편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. Lock Condition - 예제41) Lock Condition(1) 해결 방안생산자 소비자 문제를 해결하기 위해 wait()와 notify()를 사용했지만 생산자가 생산자를 깨우고 소비자가 소비자를 깨우는 비효율 문제가 있었음핵심은 생산자 스레드는 데이터를 생성하고 대기중인 소비자 스레드에게 알려주어야 하고 소비자 스레드는 데이터를 소비하고 대기중인 생산자 스레드에게 알려주면 됨즉, 생산자 스레드가 대기하는 대기 집합과 소비자 스레드가 대기하는 대기 집합을 둘로 나누면 생산자 스레드가 데이터를 생산하면 소비자 스레드가 대기하는 대기 집합에만 알려주고 소비자 스레드가 ..

출처 : 인프런 - 김영한의 실전 자바 - 고급1편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 생산자 소비자 문제 - 소개1) 생산자 소비자 문제(producer-consumer problem)(1) 이유생산자 소비자 문제는 멀티스레드 프로그래밍에서 자주 등장하는 동시성 문제 중 하나로 여러 스레드가 동시에 데이터를 생산하고 소비하는 상황을 다룸멀티스레드 핵심을 제대로 이해하려면 반드시 생산자 소비자 문제를 이해하고 올바른 해결 방안도 함께 알아두어야 하며 이 문제를 제대로 이해하면 멀티스레드를 제대로 이해했다고 볼 수 있을만큼 중요한 내용임이전에 다뤄본 MyPrinter 예제가 생산자, 소비자 예제의 한 예시이며 생산자의 스레드와 소비자의 스레드가 특정 자원을 함..
출처 : 인프런 - 김영한의 실전 자바 - 고급1편 (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. LockSupport1) LockSupport(1) LockSupport 기능자바 1.0 부터 제공되는 synchronized는 매우 편리한 기능이지만 무한 대기, 공정성과 같은 단점이 있어 자바 1.5부터 동시성 문제 해결을 위한 라이브러리 패키지가 추가되었음이 라이브러리에는 수많은 클래스가 있지만 가장 기본이 되는 클래스 중에는 LockSupport가 있음LockSupport는 스레드를 WAITING 상태로 변경할 수 있음WAITING 상태는 누가 깨워주기 전까지는 계속 대기하며 CPU 실행 스케줄링에 들어가지 않음park(): 스레드를 WAITING 상태로 변경하여 ..