
외워서 끝내는 네트워크 핵심이론 - 기초
널널한 개발자
₩77,000
입문 / 네트워크, 프로토콜
5.0
(454)
TCP/IP에서 HTTP까지! 네트워크에 대한 기본 이론이 부족한 분들이 '외워서'라도 전공 이론을 이해하고자 희망하는 분들을 위해 준비한 강의입니다. 할 수 있습니다!
입문
네트워크, 프로토콜
초보탈출 비기 공개! Java 멀티스레드 프로그래밍과 동기화 기법에 대해 제대로 알려드립니다!
Java기반 멀티스레드 프로그래밍 기법
Java 메모리 모델과 동기화 메커니즘과 JVM 구조
고성능 Lock-free 큐를 구현하는 방법
멀티스레드 프로그래밍과 동기화 기법에 대해 전공자 수준의 높은 이해를 얻을 수 있습니다.
개발자의 경쟁력은 오직 실력입니다. 이 강의로 확실히 차별화된 경쟁력을 확보하세요!
한 프로그램에서 여러 스레드를 하고 동시에 운영하는 방법 및 동기화 기법에 대해 배웁니다. synchronized 예약어를 이용한 단순한 방법부터 JVM 내부 구조에 따른 특성까지 깊게 제대로 배웁니다.
Java 멀티스레드 환경에서 메모리 영역은 은 Working 메모리와 Main 메모리 영역으로 구분해 관리됩니다. 이 과정에서 동기화에 실패 할 경우 발생할 수 있는 문제는 무엇이며 어떤 원리로 대응 할 수 있는지 전공자 수준으로 이해 할 수 있습니다.
CPU 수준에서 제공하는 CAS(Compare And Swap) 명령을 활용해 스위칭 오버헤드가 없는 고성능 동기화 기법을 배웁니다. 나아가 Lock-free Queue 구조를 직접 구현하고 제어 할 수 있습니다.
ADT를 넘어 자료형에 대한 의존성을 극단적으로 낮춘 제네릭에 대해 배웁니다. 이 제네릭을 이용해 재사용성이 극대화된 클래스를 작성할 수 있고 컬렉션 프레임워크에도 제대로 활용 할 수 있습니다.
※여기서 잠깐! JVM이란?
JVM(Java Virtual Machine)은 자바 프로그램을 컴퓨터에서 실행할 수 있도록 도와주는 가상의 컴퓨터입니다.
코드만 지겹게 따라 치고
머리 속에 남는 게 없다고 느껴본 프로그래밍 입문자
백엔드 개발자로
취업하고 싶은 취업 준비생
많이 쓰는 언어라고 해서
배웠지만 본질을 잘 모르는
1~2년차 주니어 개발자
독하게 시작하는 Java 시리즈는 총 4개 Part 로 이루어집니다.
별도 1,2 강의는 Spring 백엔드 개발자로 성장하기 위해 함께 들으면 좋은 강의입니다 🙂
Part 1 : 기초적인 문법, 절차적 프로그래밍
Part 2 : 객체지향 프로그래밍 + 자료구조
Part 3 : 시스템 활용 프로그램 작성
Part 4 : Spring Framework으로 넘어가기 위한 준비
별도 1 : 웹 인프라 기술에 대한 이해와 DB
별도 2 : SQL 고급
Part 3는 멀티스레드 프로그래밍과 동기화 기법, CAS(Compare And Swap, Set), Lock-free 구조, 파일 입/출력, 소켓 프로그래밍 등 고급 개발자가 되기 위해 반드시 알아야 할 내용들이 다수 포함되어 있습니다. 다루는 내용이 너무 많아 상, 하편으로 구분되어 있으며 상편에서는 Java Memory Model과 JVM에 대한 이해를 바탕으로 멀티스레드 기반 프로그래밍 기법을 깊이 있게 다룹니다.
스레드 동기화에 관한 각종 문법들이 JVM 내부에서 어떤 원리로 작동하는지 구체적으로 배울 수 있으며 경쟁 조건하에 발생할 수 있는 각종 이상현상이나 논리적 오류에 대해 대응할 수 있는 확실한 기반을 다질 수 있습니다.
멀티스레드 환경과 관련해 JVM(Java Virtual Machine)과 JMM(Java Memory Model)이 어떻게 작동하는지 원리를 이해할 수 있습니다. 이를 바탕으로 동기화 실패에 따른 문제에 직접 대응 할 수 있는 실력을 갖출 수 있습니다.
synchronized 예약어가 가지고 있는 근본적인 작동원리를 JVM과 더불어 알 수 있고 Monitor lock에 대해 단순 용어가 아닌 원리 관점에서 이해 할 수 있습니다.
고성능 입/출력 시스템을 구현하기 위해 반드시 알아야 할 CAS(Compare And Swap, Compare And Set)를 이용해 Spin lock을 구현하는 방법과 Lock-free 기반 Queue를 스스로 구현해 활용할 수 있습니다. 이는 중·고급 프로그래밍 기법으로 CS 전공자조차 쉽게 다가가지 못하는 것들입니다.
제네릭 문법과 멀티스레드 환경에서 컬렉션 프레임워크를 적절히 사용하는 방법에 대해 알 수 있습니다.
Thread 클래스를 사용하는 것으로 멀티스레드 환경을 만드는 방법과 더불어 왜 멀티스레드 환경이 필요한 것인지 설명합니다.
GUI기반 응용 프로그램의 일반적 구조인 Event-loop 구조에 멀티스레드를 적용하는 구체적인 예를 들어 관련 이론을 설명합니다.
아울러 경쟁 조건을 유발하는 자료구조가 존재하게 되는 이유에 대해서도 알아 봅니다.
synchronized를 비롯해 Lock 기반 동기화 기법을 사용할 경우 JVM 내부에서 어떤 일이 일어나는지 구체적으로 알 수 있습니다.
OS수준에서 제공하는 커널 오브젝트가 사용될 경우와 그렇지 않을 경우 등을 구분했을 때 어떤 성능 향상을 기대 할 수 있는지 알 수 있습니다.
JMM(Java Memory Model)에 대해 이해해하고 어떤 동작 특징이 있는지 배웁니다.
각 스레드가 독립적으로 사용하는 Working memory 영역과 JVM 전체에 적용되는 Main memory 간 동기화 문제가 발생하면 어떤 현상이 발생하는지 알 수 있습니다.
메모리 영역간 동기화가 일어는 구체적인 시점과 이유를 알고 적절한 코드를 작성 할 수 있습니다.
모든 수업 내용은 PPT자료를 기반으로 하지만 마치 화이트보드에 판서를 하는 것처럼 설명이 이어집니다.
이를 통해 수강자는 완성된 하나의 결과만 보는 것이 아니라 구조가 탄생하게 된 배경과 이유 전반에 대한 흐름을 종합적으로 이해 할 수 있습니다.
본격적인 Java 프로그래밍을 배우기에 앞서 본 수업이 취업을 목표로 하고 있음을 명확히 알립니다. 그리고
강사의 오랜 강의 경험을 근거로 명확한 학습로드맵과 소요시간을 제시합니다.
잘못된 선택으로 시간을 낭비하는 일이 없도록 처음부터 적절한 학습 배분 및 일정을 수립하도록 유도합니다.
멀티스레드 환경에서 반드시 고려해야 하는 동기화 문제와 스위칭 오버헤드에 관한 깊이 다룹니다.
같은 환경에서 각종 동기화 기법을 적용했을 때 얼마나 성능차이가 나는지 구체적인 수치로 보여줍니다.
고성능 Lock-free 구조를 적용하더라도 오히려 효율이 급감하는 상황을 직접 경험할 수 있습니다.
고성능 시스템 구축을 위해 반드시 알아야 할 CAS(Compare And Swap, Set) 명령을 활용해 스위칭 없이 스레드를 동기화는 기법을 배웁니다.
Lock-free Queue를 직접 구현하고 다양한 상황변화를 적용해 어떤 성능 변화가 발생하는지 실험을 통해 알 수 있습니다.
운영 체제 및 버전(OS): Windows 11
사용 도구: IntelliJ IDEA 2024.2.3 (Community Edition)
PC 사양: Windows 11 OS 및 IntelliJ가 무리 없이 작동 할 수 있는 수준
수업에 사용된 PPT자료 (PDF파일로 제공)
전체 예제 및 필수실습 문제 정답(Zip 압축 파일로 제공)
'기초탄탄' 독하게 시작하는 Java Part 1~2
(※ 기초적인 문법이나 OOP에 대해 모두 알고 있다고 가정함)
학습 대상은
누구일까요?
취업시장에서 차별화된 경쟁력을 얻고 싶은 초급 Java 개발자
JVM 내부구조를 바탕으로 깊게 Java를 배우고 싶은 분
Java 메모리 모델와 멀티스레드 환경에 대해 깊은 이해를 얻고 싶은 분
중고급 Java 프로그래밍 기법을 배우고 싶은 분
선수 지식,
필요할까요?
독하게 시작하는 Java Part 2 수준의 JVM 내부구조에 대한 이해
Java 프로그래밍
31,570
명
수강생
1,573
개
수강평
1,005
개
답변
4.9
점
강의 평점
20
개
강의
널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다. 반갑습니다. ^^
전체
51개 ∙ (10시간 11분)
해당 강의에서 제공:
프로세스와 스레드
21:47
컴퓨터 구조에 대한 상식
11:52
스레드 생성 및 시작하기
11:44
스레드 속성
16:36
멀티스레드 구조가 필요한 이유
15:20
데몬 스레드
05:00
sleep() 메서드와 우연
19:28
플래그 변수로 종료 시점 동기화
12:35
스레드 인터럽트
10:09
적절한 종료 시점 동기화
08:00
플랫폼 스레드와 커널 스레드
19:55
JVM과 별개인 CPU 캐시 일관성
15:26
volatile과 메모리 가시성
22:16
가상 스레드 개념 소개
14:12
동기화를 위한 OS 수준 커널 객체
16:04
ReentrantLock
14:47
대기와 알림
14:01
데드락 - 최악의 논리 오류
05:12
LockSupport 클래스
13:48
연결 리스트와 멀티스레드
19:22
멀티스레드 환경과 연결 리스트 오류
21:22
동기화 기반 연결 리스트로 개선
10:22
제네릭 기본 이론과 필요성
14:26
제네릭으로 문제 해결
04:18
타입 매개변수 이름짓기 관례
02:55
제네릭 메서드
04:57
컬렉션 프레임워크 소개
07:52
선형 구조 소개
04:50
List 컬렉션과 스레드
05:37
Set 인터페이스 소개
07:02
HashSet 활용 및 동기화 문제
03:48
객체 중복여부 판정
08:49
Map 활용
04:18
선형 비선형 혼합 운영
04:56
수업을 마치며...
06:32
전체
4개
5.0
4개의 수강평
∙
수강평 22
∙
평균 평점 4.9
5
이번에도 잘 듣고 많이 배웠습니다!
좋은 평가와 피드백 고맙습니다. 하편도 얼른 준비하겠습니다. :)
∙
수강평 26
∙
평균 평점 5.0
5
좋은 평가 고맙습니다. :)
∙
수강평 10
∙
평균 평점 4.7
5
기다리던 part3 강의입니다. 기다린 보람이 있네요. 양질의 강의 감사합니다. 후딱 듣고 part3-2편 기대하겠습니다!
좋은 평가와 피드백 고맙습니다. 얼른 하편 준비하겠습니다. :)
∙
수강평 7
∙
평균 평점 5.0
5
좋은 평가 고맙습니다. :)
지식공유자님의 다른 강의를 만나보세요!
같은 분야의 다른 강의를 만나보세요!
월 ₩15,400
5개월 할부 시
₩77,000