
기초 탄탄! 독하게 시작하는 Java Part 3(상) : 멀티스레드와 동기화
널널한 개발자
₩77,000
중급이상 / Java, multithread, jvm, lock-free, generic
5.0
(4)
초보탈출 비기 공개! Java 멀티스레드 프로그래밍과 동기화 기법에 대해 제대로 알려드립니다!
중급이상
Java, multithread, jvm
딱 두 가지를 '제대로' 다룹니다. 바로 객체지향 프로그래밍과 JVM! 거기에 연결 리스트 기반 선형 자료구조도 덤으로 드립니다.
객체지향 프로그래밍 기법
OOP언어를 이용해 만들어진 프레임워크를 활용하는 방법
JVM의 작동원리와 hashCode의 실체
연결 리스트 기반의 선형 자료구조
문법이요? 중요합니다. 하지만 그 전에 OOP의 본질을 아는 것이 더 중요합니다.
그리고 JVM에 대해서도 잘 알아야 경쟁력 있는 개발자가 될 수 있습니다!
📺 Part 2 수강희망자 여러분 꼭 시청해주세요! 📺
다들 OOP에 대해 이야기하고 문법을 배웁니다. 그러나 정작 어떻게 활용하고 어떤 상황에 적용해야 하는 것인지 감을 잡지 못하는 경우가 많습니다. 그래서 배운 문법을 몽땅 써먹을 수 있는 미니 프로젝트를 실습 예제로 준비했습니다.
Java로 만든 모든 프로그램은 결국 JVM에서 실행됩니다. 결국 JVM에 대한 깊은 이해는 Java대한 깊은 이해이자 많은 기업이 요구하는 실력있는 개발자의 필수 조건입니다. 그런 상황에서 경쟁력을 갖출 수 있도록 JVM에 대해 아낌없이 알려드립니다.
Java로 할 수 있는 것 중 가장 흔한 일이 DB 입/출력 및 데이터 활용입니다. 그러려면 자료구조에 대한 이해는 필수라 할 수 있습니다. 그런 이유로 이 강의에 대표적 선형 자료구조인 연결 리스트를 포함시켰습니다.
Java 문법 및 객체지향 프로그래밍 기법과 더불어 설계 원칙(디자인 패턴 일부)까지 제시합니다. 이를 바탕으로 겨우 문법만 알고 Java를 다루는 코더가 아닌 진정한 개발자로 성장 할 수 있습니다.
※여기서 잠깐! JVM이란?
JVM(Java Virtual Machine)은 자바 프로그램을 컴퓨터에서 실행할 수 있도록 도와주는 가상의 컴퓨터입니다.
코드만 지겹게 따라 치고
머리 속에 남는 게 없다고 느껴본 프로그래밍 입문자
백엔드 개발자로
취업하고 싶은 취업 준비생
많이 쓰는 언어라고 해서
배웠지만 본질을 잘 모르는
1~2년차 주니어 개발자
독하게 시작하는 Java 시리즈는 총 4개 강의로 이루어집니다.
부록 1,2 강의는 Spring 백엔드 개발자로 성장하기 위해 함께 들으면 좋은 강의입니다 🙂
Part 1 : 기초적인 문법, 절차적 프로그래밍
Part 2 : 객체지향 프로그래밍 + 자료구조
Part 3 : 시스템 활용 프로그램 작성
Part 4 : Spring Framework으로 넘어가기 위한 준비
별도 1 : 웹 인프라 기술에 대한 이해와 DB
별도 2 : SQL 고급
Part 2는 객체지향 프로그래밍과 자료구조 그리고 JVM에 대해 배웁니다. 특히 JVM은 Spring framework 기반 Java 백엔드 실무 개발자가 되려는 분들에게 필수적인 것입니다. 프로그래밍 언어의 문법과 OOP를 구사하고 시스템 운영까지 생각 할 수 있는 역량 있는 개발자가 되기 위한 초석을 다집니다.
상속과 재정의를 문법으로 이해하는 것이 아니라 프레임워크를 구현하는 핵심원리로 이해하고 정말 제대로 OOP를 구사 할 수 있습니다.
문제(처리조건)을 명확히 분석하고 어떤 형태로 코드화 할 것인지 구체적으로 생각 할 수 있습니다. 또한 예제 작성 과정에서 발생하는 각종 오류에 스스로 대응 할 수 있는 실력이 생깁니다.
JVM의 GC(Garbage collector)가 어떤 원리로 작동하는지 제대로 이해할 수 있습니다. 또한 참조자와 인스턴스를 완벽히 분리해 생각 함으로써 NullPointerException 오류에 확실하게 대응 할 수 있게 됩니다.
입문 단계임에도 JVM 구조를 비롯해 각종 구조적인 이론들을 함께 배웁니다.
이렇게 함으로써 Java로 개발한 응용 프로그램의 근본적인 작동원리를 이해 할 수 있습니다.
이는 결국 훗날 실무 개발자로 성장했을 때 신입 답지 않은 장애대응능력으로 결실을 맺을 것입니다.
Java는 언어의 특성상 클래스에 대한 참조형으로 인스턴스를 식별합니다. 이 둘을 함께 사용하는 과정에서 참조형 변수를 인스턴스로 동일시 하는 문제가 생길 수 있는데 이러한 문제를 해결하기 위해 존재하는 Hash code의 실체가 무엇인지 제대로 알 수 있습니다.
class에 대한 문법을 알고 있다고 하더라도 OOP적 설계를 이해하고 클래스간 관계를 제대로 정의하지 못한다면 Java 제대로 배웠다고 할 수 없을 것입니다.
이 강의는 그러한 문제를 쉽게 극복 할 수 있도록수업에 사용된 예제에 디자인 패턴을 일부 적용하였습니다.
모든 수업 내용은 PPT자료를 기반으로 하지만 마치 화이트보드에 판서를 하는 것처럼 설명이 이어집니다.
이를 통해 수강자는 완성된 하나의 결과만 보는 것이 아니라 구조가 탄생하게 된 배경과 이유 전반에 대한 흐름을 종합적으로 이해 할 수 있습니다.
본격적인 Java 프로그래밍을 배우기에 앞서 본 수업이 취업을 목표로 하고 있음을 명확히 알립니다. 그리고
강사의 오랜 강의 경험을 근거로 명확한 학습로드맵과 소요시간을 제시합니다.
잘못된 선택으로 시간을 낭비하는 일이 없도록 처음부터 적절한 학습 배분 및 일정을 수립하도록 유도합니다.
IntelliJ 디버거 사용방법을 구체적으로 배웁니다. 단순 Position breakpoint는 물론이고 조건식을 반영해 더욱 손쉽게 활용하는 방법도 다룹니다.
JVM에서 각 인스턴스들을 유일하게 식별 할 목적으로 부여된 ObjectID를 이용해 Deep copy와 Shallow copy를 구별하는 방법 등 실질적인디버깅 방법을 경험할 수 있습니다.
수업에 배운 내용을 즉시 활용해 볼 수 있도록 다양한 실습문제를 제공합니다.
절차적 프로그래밍 기법으로 제작된 코드를 객체지향적으로 리팩토링하는 과정을 실습으로 직접 경험하며 이 과정에서 학습한 내용 대부분을 실제로 활용합니다.
운영 체제 및 버전(OS): Windows 11
사용 도구: IntelliJ IDEA 2024.2.3 (Community Edition)
PC 사양: Windows 11 OS 및 IntelliJ가 무리 없이 작동 할 수 있는 수준
수업에 사용된 PPT자료 (PDF파일로 제공)
전체 예제 및 필수실습 문제 정답(Zip 압축 파일로 제공)
'기초 탄탄! 독하게 시작하는 Java - Part 1'
https://inf.run/C6khd
학습 대상은
누구일까요?
독하게 시작하는 Java - Part 1을 끝내고 다음 단계로 넘어가는 분
진정한 객체지향 프로그래밍의 원리를 알고 싶은 분
JVM이 인스턴스를 관리하는 방법 및 내부 구조에 대해 알고 싶은 분
Java에 대한 깊은 이해를 경험하고 싶은 개발자
선수 지식,
필요할까요?
독하게 시작하는 Java - Part 1
넓고 얕게 외워서 컴공 전공자 되기
31,484
명
수강생
1,565
개
수강평
1,003
개
답변
4.9
점
강의 평점
20
개
강의
널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다. 반갑습니다. ^^
전체
77개 ∙ (20시간 18분)
해당 강의에서 제공:
객체, 클래스, 인스턴스
21:17
클래스 기본 문법과 두 가지 관점
18:04
생성자와 필드 초기화
30:02
클래스 멤버에 대한 접근 제어
19:28
this
23:56
생성자 다중 정의
11:04
복사 생성자 (※매우 중요)
29:22
보이지 않는 임시 객체
17:56
정적 멤버와 특이한 코드
29:55
상속에 대한 기본 이론
18:36
상속과 생성자 (신박한 바보짓)
28:04
부모 클래스 생성자 선택
04:30
[실습] 상속과 문자열 필터 구현
15:41
객체간 관계와 UML
19:09
알아 두면 좋을 동적 바인딩
12:50
다형성과 형변환 그리고 추상성
19:20
[실습] Shape 클래스
08:38
추상 클래스
10:56
인터페이스 (클래스)
18:31
열거형
09:12
생각해볼 문제 (어쩌면 농담)
10:52
Java와 C++ 메모리 관리 차이
16:49
JVM 구성요소 정리
15:39
.class 파일과 바이트 코드 소개
18:50
클래스 로더 및 로딩 과정
39:17
런타임 데이터 영역
20:35
JVM 스택 구조
18:59
JVM 힙 영역과 GC
18:52
세대별 컬렉션 이론
28:56
도달 가능성 분석
13:51
G1(Garbage First) GC
22:30
객체 메모리 레이아웃과 해시코드
37:17
Object 클래스와 동등성, 동일성
22:11
불변 객체의 논리적 개념
13:12
불변 객체의 특성 정의
16:03
문자열 상수와 String
22:50
문자열 비교
17:04
String 클래스 주요 메서드 소개
10:27
JVM이 문자열 상수를 관리하는 구조
21:06
래퍼 클래스, 박싱과 언박싱
14:14
중첩 클래스 개요
16:49
정적 중첩 클래스
09:02
내부 클래스
20:12
지역 클래스
17:06
내부 인터페이스와 GUI
20:14
익명 객체를 이용한 GUI 개발
12:17
패키지 선언 및 활용
16:20
연결 리스트
25:07
단일 클래스 기반 주소록 예제 분석
19:58
1단계 코드 해설
09:23
2단계 코드 해설
07:16
[실습] OOP 3단계: 반복자 구현
07:08
3단계 코드 해설
17:13
에러의 정의
13:06
두 가지 예외 종류
19:06
try, catch, finally
12:32
throws
06:40
수업을 마치며...
06:40
전체
18개
5.0
18개의 수강평
지식공유자님의 다른 강의를 만나보세요!
₩66,000