채널톡 아이콘
BEST

김영한의 실전 자바 - 기본편

실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다.

새소식

13 개

  • 수정됨

    안녕하세요. 여러분 드디어 자바 고급3편 자바 로드맵의 마지막 강의를 오픈했습니다.

    링크: https://inf.run/iZKKT

    김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍

    • 강의 시간: 16시간 40분

    • 강의 수: 97강

    • 강의 PDF 자료: 387 페이지 

       

    [강의 소개]

    람다, 스트림, 함수형 프로그래밍 같은 최신 자바에서 자주 사용되는 새로운 문법과 기술들을 학습합니다.
이번 강의를 통해 여러분이 람다, 스트림, 함수형 프로그래밍 같은 기술을 단순히 아는 것을 넘어서 실무에 이 기술들을 어떻게 적용해야 하는지, 깊이있게 이해하고, 또 활용할 수 있게 가르쳐 드리겠습니다.

    [강의 내용 요약]

    주요 강의 내용은 다음과 같습니다.

    1. 람다가 필요한 이유

    깔끔하고 간결한 코드를 위해, 그리고 병렬 처리와 같은 고급 기능을 쉽게 활용하기 위해 람다가 지금의 자바에서 얼마나 중요한 역할을 하는지 알아봅니다.

    2. 람다

    실제 코드 예제를 통해 람다의 정의와 문법, 활용 팁을 배우게 됩니다. 기존 방식과 어떻게 다른지, 또 어떤 점이 매력적인지 명확하게 이해하실 수 있습니다.

    3. 함수형 인터페이스

    람다와 함께 쓰이는 필수 개념인 함수형 인터페이스!
함수형 프로그래밍이 가능한 이유와 자바 표준 API에 내장된 다양한 함수형 인터페이스들을 간편하게 활용하는 방법을 전해 드립니다.

    4. 람다 활용

    실무 코드에서 람다를 어떻게 적용할 수 있을까요?
반복되는 패턴과 복잡한 로직을 단순화시키는 람다의 핵심 활용법을 예제와 함께 익혀봅시다.

    5. 람다 vs 익명 클래스

    어떤 상황에서 람다가 더 효율적이고, 어떤 경우엔 익명 클래스를 써야 하는지 비교 분석합니다.

    6. 메서드 참조

    자바 8부터 추가된 메서드 참조 문법은 함수형 프로그래밍의 깔끔함을 한 단계 업그레이드해 줍니다. 메서드 참조 문법이 어떻게 동작하고, 실용적인 활용 예시는 무엇인지 알려드립니다.

    7. 스트림 API1 - 기본

    스트림 API는 람다와 함께 자바 컬렉션을 다루는 새로운 패러다임을 보여줍니다. 처음 접하는 분들도 이해하기 쉽게, 스트림 구조와 기본 사용법을 알기 쉽게 정리해 드립니다.

    8. 스트림 API2 - 기능

    필터링, 매핑, 정렬, 리듀스 등 스트림에서 제공하는 핵심 기능들을 차근차근 살펴봅니다. 코드를 보다 더 직관적이고 함축적으로 작성하는 방법을 익힐 수 있습니다.

    9. 스트림 API3 - 컬렉터

    효율적인 데이터 수집과 가공을 위해 스트림에서 활용하는 Collector의 개념을 학습합니다. collect(), grouping, partitioning 등, 실무에서 꼭 필요한 스킬들을 익히실 수 있습니다.

    10. Optional

    null 처리를 깔끔하게 해결해 주는 Optional을 제대로 활용해봅시다. isPresent(), orElse(), orElseThrow() 등 실전에서 잦은 NPE 문제를 예방할 수 있는 다양한 방법을 다룹니다.

    11. 디폴트 메서드

    자바 인터페이스의 새로운 면모인 디폴트 메서드를 살펴봅니다.

    인터페이스를 확장할 때 호환성을 유지하는 방법과 함께, 올바른 사용법을 알아봅니다.

    12. 병렬 스트림

    고성능을 위한 병렬 처리! ForkJoin 풀 부터, 스트림 API를 통한 멀티코어 활용 노하우와 병렬 스트림에서 발생할 수 있는 주의사항들을 함께 배워 보세요.

    13. 함수형 프로그래밍

    람다, 스트림 API, Optional 등 자바 8 이후로 추가된 기능들은 모두 함수형 프로그래밍 패러다임을 반영하고 있습니다. 객체지향 언어와 함수형 패러다임의 조화를 통해, 더 효율적인 코드를 작성하는 방법을 알려드립니다.

    감사합니다.

    3
  • 수정됨

    안녕하세요. 여러분 드디어 2년에 걸쳐서 자바 로드맵을 완성했습니다.

    자바 로드맵의 마지막 강의인 김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍

    오픈 일정이 3월 25일(화) ~ 3월 28(금) 사이에 오픈하는 것으로 확정 되었습니다.

    • 강의 시간: 16시간 40분

    • 강의 수: 97강

    • 강의 PDF 자료: 387 페이지

       

    [강의 소개]
    람다, 스트림, 함수형 프로그래밍 같은 최신 자바에서 자주 사용되는 새로운 문법과 기술들을 학습합니다.
    이번 강의를 통해 여러분이 람다, 스트림, 함수형 프로그래밍 같은 기술을 단순히 아는 것을 넘어서 실무에 이 기술들을 어떻게 적용해야 하는지, 깊이있게 이해하고, 또 활용할 수 있게 가르쳐 드리겠습니다.

     
    [강의 내용 요약]

    주요 강의 내용은 다음과 같습니다.

    1. 람다가 필요한 이유

    깔끔하고 간결한 코드를 위해, 그리고 병렬 처리와 같은 고급 기능을 쉽게 활용하기 위해 람다가 지금의 자바에서 얼마나 중요한 역할을 하는지 알아봅니다.

    2. 람다

    실제 코드 예제를 통해 람다의 정의와 문법, 활용 팁을 배우게 됩니다. 기존 방식과 어떻게 다른지, 또 어떤 점이 매력적인지 명확하게 이해하실 수 있습니다.

    3. 함수형 인터페이스

    람다와 함께 쓰이는 필수 개념인 함수형 인터페이스!
    함수형 프로그래밍이 가능한 이유와 자바 표준 API에 내장된 다양한 함수형 인터페이스들을 간편하게 활용하는 방법을 전해 드립니다.

    4. 람다 활용

    실무 코드에서 람다를 어떻게 적용할 수 있을까요?
    반복되는 패턴과 복잡한 로직을 단순화시키는 람다의 핵심 활용법을 예제와 함께 익혀봅시다.

    5. 람다 vs 익명 클래스

    어떤 상황에서 람다가 더 효율적이고, 어떤 경우엔 익명 클래스를 써야 하는지 비교 분석합니다.

    6. 메서드 참조

    자바 8부터 추가된 메서드 참조 문법은 함수형 프로그래밍의 깔끔함을 한 단계 업그레이드해 줍니다. 메서드 참조 문법이 어떻게 동작하고, 실용적인 활용 예시는 무엇인지 알려드립니다.

    7. 스트림 API1 - 기본

    스트림 API는 람다와 함께 자바 컬렉션을 다루는 새로운 패러다임을 보여줍니다. 처음 접하는 분들도 이해하기 쉽게, 스트림 구조와 기본 사용법을 알기 쉽게 정리해 드립니다.

    8. 스트림 API2 - 기능

    필터링, 매핑, 정렬, 리듀스 등 스트림에서 제공하는 핵심 기능들을 차근차근 살펴봅니다. 코드를 보다 더 직관적이고 함축적으로 작성하는 방법을 익힐 수 있습니다.

    9. 스트림 API3 - 컬렉터

    효율적인 데이터 수집과 가공을 위해 스트림에서 활용하는 Collector의 개념을 학습합니다. collect(), grouping, partitioning 등, 실무에서 꼭 필요한 스킬들을 익히실 수 있습니다.

    10. Optional

    null 처리를 깔끔하게 해결해 주는 Optional을 제대로 활용해봅시다. isPresent(), orElse(), orElseThrow() 등 실전에서 잦은 NPE 문제를 예방할 수 있는 다양한 방법을 다룹니다.

    11. 디폴트 메서드

    자바 인터페이스의 새로운 면모인 디폴트 메서드를 살펴봅니다.

    인터페이스를 확장할 때 호환성을 유지하는 방법과 함께, 올바른 사용법을 알아봅니다.

    12. 병렬 스트림

    고성능을 위한 병렬 처리! ForkJoin 풀 부터, 스트림 API를 통한 멀티코어 활용 노하우와 병렬 스트림에서 발생할 수 있는 주의사항들을 함께 배워 보세요.

    13. 함수형 프로그래밍

    람다, 스트림 API, Optional 등 자바 8 이후로 추가된 기능들은 모두 함수형 프로그래밍 패러다임을 반영하고 있습니다. 객체지향 언어와 함수형 패러다임의 조화를 통해, 더 효율적인 코드를 작성하는 방법을 알려드립니다.

     

    [전체 목차]

    1. 람다가 필요한 이유

    * 프로젝트 환경 구성
    * 람다가 필요한 이유1
    * 람다가 필요한 이유2
    * 람다가 필요한 이유3
    * 함수 vs 메서드
    * 람다 시작

    2. 람다

    * 람다 정의
    * 함수형 인터페이스
    * 람다와 시그니처
    * 람다와 생략
    * 람다의 전달
    * 고차 함수
    * 문제와 풀이1
    * 문제와 풀이2
    * 문제와 풀이3
    * 정리

    3. 함수형 인터페이스

    * 함수형 인터페이스와 제네릭1
    * 함수형 인터페이스와 제네릭2
    * 람다와 타겟 타입
    * 기본 함수형 인터페이스
    * 특화 함수형 인터페이스
    * 기타 함수형 인터페이스
    * 문제와 풀이
    * 정리

    4. 람다 활용

    * 필터 만들기1
    * 필터 만들기2
    * 맵 만들기1
    * 맵 만들기2
    * 필터와 맵 활용1
    * 필터와 맵 활용2
    * 스트림 만들기1
    * 스트림 만들기2
    * 스트림 만들기3
    * 스트림 만들기4
    * 정리

    5. 람다 vs 익명 클래스

    * 람다 vs 익명 클래스1
    * 람다 vs 익명 클래스2
    * 정리

    6. 메서드 참조

    * 메서드 참조가 필요한 이유
    * 메서드 참조1 - 시작
    * 메서드 참조2 - 매개변수1
    * 메서드 참조3 - 임의 객체의 인스턴스 메서드 참조
    * 메서드 참조4 - 활용1
    * 메서드 참조5 - 활용2
    * 메서드 참조6 - 매개변수2
    * 정리

    7. 스트림 API1 - 기본

    * 스트림 API 시작
    * 스트림 API란?
    * 파이프라인 구성
    * 지연 연산
    * 지연 연산과 최적화

    8. 스트림 API2 - 기능

    * 스트림 생성
    * 중간 연산
    * FlatMap
    * Optional 간단 설명
    * 최종 연산
    * 기본형 특화 스트림

    9. 스트림 API3 - 컬렉터

    * 컬렉터1
    * 컬렉터2
    * 다운 스트림 컬렉터1
    * 다운 스트림 컬렉터2
    * 정리

    10. Optional

    * 옵셔널이 필요한 이유
    * Optional의 생성과 값 획득
    * Optional 값 처리
    * 즉시 평가와 지연 평가1
    * 즉시 평가와 지연 평가2
    * 즉시 평가와 지연 평가3
    * orElse() vs orElseGet()
    * 실전 활용1 - 주소 찾기
    * 실전 활용2 - 배송
    * 옵셔널 - 베스트 프랙티스
    * 정리

    11. 디폴트 메서드

    * 디폴트 메서드가 등장한 이유
    * 디폴트 메서드 소개
    * 디폴트 메서드의 올바른 사용법
    * 정리

    12. 병렬 스트림

    * 단일 스트림
    * 스레드 직접 사용
    * 스레드 풀 사용
    * ForkJoin 패턴
    * ForkJoin 프레임워크1 - 소개
    * ForkJoin 프레임워크2 - 작업 훔치기
    * 작업 훔치기 알고리즘
    * ForkJoin 프레임워크3 - 공용 풀
    * 자바 병렬 스트림
    * 병렬 스트림 사용시 주의점
    * 별도의 풀 사용
    * 정리

    13. 함수형 프로그래밍

    * 프로그래밍 패러다임
    * 함수형 프로그래밍이란?
    * 자바와 함수형 프로그래밍1
    * 자바와 함수형 프로그래밍2
    * 자바와 함수형 프로그래밍3
    * 정리

     

    감사합니다.

    27
  • 수정됨

    안녕하세요. 여러분^^! 자바 고급 2편 강의를 드디어 오픈했습니다.

    강의 링크: https://inf.run/puD14

     

    김영한의 실전 자바 - 고급 2편

    * 강의 시간: 21시간 35분
    * 강의 수: 100강
    * 강의 PDF 자료: 약 400장


    [강의 소개]

    I/O, 네트워크, 리플렉션, 애노테이션을 기본기부터 실무에 필요한 레벨까지 완전히 마스터하는 것을 목표로 합니다.

    그리고 이번 강의는 특히 코드와 예제 중심의 강의입니다.

    파일을 통한 회원 관리, 채팅, 웹 애플리케이션 서버 같은 다양한 예제를 직접 만들어가면서 - 자바 초급, 기본, 중급1,2, 고급1 - 멀티스레드까지 지금까지 학습한 내용을 모두 활용해봅니다.

    그래서 자바 로드맵을 통해 지금까지 학습한 자바의 내용들이 실제 어떻게 활용되는지 예제 코드로 깊이있게 배울 수 있습니다.

    제 목표는 단순히 자바 문법 교육에 그치지 않고, 실무에서 필요한 탄탄한 자바 기본기를 갖춘 유능한 개발자를 양성하는 것입니다.

    이를 위해 자바에 대해 깊이 있고 체계적인 자바 로드맵을 진행합니다. 기대해주세요.

    감사합니다.

    4
  • 수정됨

    안녕하세요. 여러분

    김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

    오픈 일정이 10월 7일(월) ~ 10월 11(금) 사이에 오픈하는 것으로 확정 되었습니다.

    • 강의 시간: 21시간 35분

    • 강의 수: 100강

    • 강의 PDF 자료: 약 400장

    [강의 소개]

    I/O, 네트워크, 리플렉션, 애노테이션을 기본기부터 실무에 필요한 레벨까지 완전히 마스터하는 것을 목표로 합니다.

    그리고 이번 강의는 특히 코드와 예제 중심의 강의입니다.

    파일을 통한 회원 관리, 채팅, 웹 애플리케이션 서버 같은 다양한 예제를 직접 만들어가면서 - 자바 초급, 기본, 중급1,2, 고급1 - 멀티스레드까지 지금까지 학습한 내용을 모두 활용해봅니다.

    그래서 자바 로드맵을 통해 지금까지 학습한 자바의 내용들이 실제 어떻게 활용되는지 예제 코드로 깊이있게 배울 수 있습니다.

     

    [전체 목차]

    1. 문자 인코딩

    * 프로젝트 환경 구성
    * 컴퓨터와 데이터
    * 컴퓨터와 문자 인코딩1
    * 컴퓨터와 문자 인코딩2
    * 문자 집합 조회
    * 문자 인코딩 예제1
    * 문자 인코딩 예제2
    * 정리

     

    2. IO 기본1

    * 스트림 시작1
    * 스트림 시작2
    * InputStream, OutputStream
    * 파일 입출력과 성능 최적화1 - 하나씩 쓰기
    * 파일 입출력과 성능 최적화2 - 버퍼 활용
    * 파일 입출력과 성능 최적화3 - Buffered 스트림 쓰기
    * 파일 입출력과 성능 최적화4 - Buffered 스트림 읽기
    * 파일 입출력과 성능 최적화5 - 한 번에 쓰기
    * 정리

     

    3. IO 기본2

    * 문자 다루기1 - 시작
    * 문자 다루기2 - 스트림을 문자로
    * 문자 다루기3 - Reader, Writer
    * 문자 다루기4 - BufferedReader
    * 기타 스트림
    * 정리

     

    4. IO 활용

    * 회원 관리 예제1 - 메모리
    * 회원 관리 예제2 - 파일에 보관
    * 회원 관리 예제3 - DataStream
    * 회원 관리 예제4 - ObjectStream
    * XML, JSON, 데이터베이스
    * 정리

     

    5. File, Files

    * File
    * Files
    * 경로 표시
    * Files로 문자 파일 읽기
    * 파일 복사 최적화
    * 정리

     

    6. 네트워크 - 기본 이론

    * 클라이언트와 서버
    * 인터넷 통신
    * IP(인터넷 프로토콜)
    * TCP, UDP
    * PORT
    * DNS

     

    7. 네트워크 - 프로그램1

    * 네트워크 프로그램1 - 예제
    * 네트워크 프로그램1 - 분석
    * 네트워크 프로그램2 - 예제
    * 네트워크 프로그램2 - 분석
    * 네트워크 프로그램3
    * 자원 정리1
    * 자원 정리2
    * 자원 정리3
    * 자원 정리4

     

    8. 네트워크 - 프로그램2

    * 네트워크 프로그램4 - 자원 정리1
    * 네트워크 프로그램5 - 자원 정리2
    * 네트워크 프로그램6 - 자원 정리3
    * 네트워크 프로그램6 - 자원 정리4
    * 네트워크 예외1 - 연결 예외
    * 네트워크 예외2 - 타임아웃
    * 네트워크 예외3 - 정상 종료
    * 네트워크 예외4 - 강제 종료
    * 정리와 문제

     

    9. 채팅 프로그램

    * 채팅 프로그램 - 설계
    * 채팅 프로그램 - 클라이언트
    * 채팅 프로그램 - 서버1
    * 채팅 프로그램 - 서버2
    * 채팅 프로그램 - 서버3
    * 채팅 프로그램 - 서버4
    * 정리

     

    10. HTTP - 기본 이론

    * HTTP 기본 이론
    * HTTP 메서드

     

    11. HTTP 서버 만들기

    * HTTP 서버1 - 시작
    * HTTP 서버2 - 동시 요청
    * HTTP 서버3 - 기능 추가
    * URL 인코딩
    * HTTP 서버4 - 요청, 응답
    * HTTP 서버5 - 커맨드 패턴
    * 웹 애플리케이션 서버의 역사
    * 정리

     

    12. 리플렉션

    * 리플렉션이 필요한 이유
    * 클래스와 메타데이터
    * 메서드 탐색과 동적 호출
    * 필드 탐색과 값 변경
    * 리플렉션 - 활용 예제
    * 생성자 탐색과 객체 생성
    * HTTP 서버6 - 리플렉션 서블릿
    * 정리

     

    13. 애노테이션

    * 애노테이션이 필요한 이유
    * 애노테이션 정의
    * 메타 애노테이션
    * 애노테이션과 상속
    * 애노테이션 활용 - 검증기
    * 자바 기본 애노테이션
    * 정리

     

    14. HTTP 서버 활용

    * HTTP 서버7 - 애노테이션 서블릿1 - 시작
    * HTTP 서버8 - 애노테이션 서블릿2 - 동적 바인딩
    * HTTP 서버9 - 애노테이션 서블릿3 - 성능 최적화
    * HTTP 서버 활용 - 회원 관리 서비스
    * 정리

     

    감사합니다.

     

    17
  • 수정됨

    안녕하세요. 여러분^^! 자바 고급1편 - 멀티스레드와 동시성 강의를 드디어 오픈했습니다.

    강의 링크: https://inf.run/RYNoL

    김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
    * 강의 시간: 20시간 48분
    * 강의 수: 118강
    * 강의 PDF 자료: 약 500장
    * 그림: 270장

    이번 강의는 멀티스레드와 동시성을 CS 기본기부터 실무에 필요한 활용 기술까지 완전히 마스터하는 것을 목표로 합니다. 그리고 복잡한 멀티스레드를 최대한 쉽게 설명하기 위해 약 500장의 PDF 자료와 그 안에 270장의 그림이 들어갑니다!

    단순히 스레드의 기초를 아는 것을 넘어서, 실무에 필요한 자바 멀티스레드 기술과 동시성 문제를 정말 깊이있게 제대로 이해하고, 또 실무에서 제대로 활용할 수 있게 가르쳐 드리겠습니다.

    제 목표는 단순히 자바 문법 교육에 그치지 않고, 실무에서 필요한 탄탄한 자바 기본기를 갖춘 유능한 개발자를 양성하는 것입니다. 이를 위해 자바에 대해 깊이 있고 체계적인 자바 로드맵을 진행합니다. 기대해주세요.

     

    0
  • 수정됨

    안녕하세요. 여러분
    김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
    오픈 일정이 7월 15일(월)로 확정 되었습니다.

    김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
    * 강의 시간: 20시간 48분
    * 강의 수: 118강
    * 강의 PDF 자료: 약 500장
    * 그림: 270장

    고급1편은 멀티스레드와 동시성을 CS 기본기부터 실무에 필요한 활용 기술까지 완전히 마스터하는 것을 목표로 합니다. 그리고 복잡한 멀티스레드를 최대한 쉽게 설명하기 위해 무려 270장의 그림이 들어갑니다!

    [앞으로의 계획]
    고급편은 1,2,3편으로 나누어 출시될 예정입니다.
    * 고급 1편: 멀티스레드와 동시성 (7/15)
    * 고급 2편: I/O, 네트워크, 리플렉션, 애노테이션 (10월 중 예정)
    * 고급 3편: 람다, 스트림, 모던 자바 (12월 중 예정)

    [강의 소개]

    김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

    강의 목표

    단순히 스레드의 기초를 아는 것을 넘어서, 실무에 필요한 자바 멀티스레드 기술과 동시성 문제를 정말 깊이있게 제대로 이해하고, 또 실무에서 제대로 활용할 수 있게 가르쳐 드리겠습니다.

    강의 내용

    기반을 다지는 CS 이론 학습
    * 프로세스와 스레드
    * 멀티태스킹
    * 스케줄링2

    스레드의 기본기
    * 스레드 제어
    * 스레드 생명 주기
    * 메모리 가시성, volatile
    * synchronized 동기화
    * ReentrantLock - 고급 동기화
    * 스레드 제어 - 다양한 예제

    스레드의 고급 기술들
    * 생산자 소비자 문제
    * CAS
    * 동기화 컬렉션

    실무에서 사용하는 멀티스레드 실전 기술들
    * Future의 작동 원리
    * 스레드 풀과 Executor 프레임워크 - 원리
    * 스레드 풀과 Executor 프레임워크 - 실전 활용


    [강의 전체 목차]

    1. 프로세스와 스레드 소개
    * 멀티태스킹과 멀티프로세싱
    * 프로세스와 스레드
    * 스레드와 스케줄링
    * 컨텍스트 스위칭

    2. 스레드 생성과 실행
    * 프로젝트 환경 구성
    * 스레드 시작1
    * 스레드 시작2
    * 데몬 스레드
    * 스레드 생성 - Runnable
    * 로거 만들기
    * 여러 스레드 만들기
    * Runnable을 만드는 다양한 방법
    * 문제와 풀이
    * 정리

    3. 스레드 제어와 생명 주기1
    * 스레드 기본 정보
    * 스레드의 생명 주기 - 설명
    * 스레드의 생명 주기 - 코드
    * 체크 예외 재정의
    * join - 시작
    * join - 필요한 상황
    * join - sleep 사용
    * join - join 사용
    * join - 특정 시간 만큼만 대기
    * 문제와 풀이

    4. 스레드 제어와 생명 주기2
    * 인터럽트 - 시작1
    * 인터럽트 - 시작2
    * 인터럽트 - 시작3
    * 인터럽트 - 시작4
    * 프린터 예제1 - 시작
    * 프린터 예제2 - 인터럽트 도입
    * 프린터 예제3 - 인터럽트 코드 개선
    * yield - 양보하기
    * 프린터 예제4 - yield 도입
    * 정리

    5. 메모리 가시성
    * volatile, 메모리 가시성1
    * volatile, 메모리 가시성2
    * volatile, 메모리 가시성3
    * volatile, 메모리 가시성4
    * 자바 메모리 모델(Java Memory Model)
    * 정리

    6. 동기화 - synchronized
    * 출금 예제 - 시작
    * 동시성 문제
    * 임계 영역
    * synchronized 메서드
    * synchronized 코드 블럭
    * 문제와 풀이
    * 정리

    7. 고급 동기화 - concurrent.Lock
    * LockSupport1
    * LockSupport2
    * ReentrantLock - 이론
    * ReentrantLock - 활용
    * ReentrantLock - 대기 중단
    * 정리

    8. 생산자 소비자 문제1
    * 생산자 소비자 문제 - 소개
    * 생산자 소비자 문제 - 예제1 코드
    * 생산자 소비자 문제 - 예제1 분석 - 생산자 우선
    * 생산자 소비자 문제 - 예제1 분석 - 소비자 우선
    * 생산자 소비자 문제 - 예제2 코드
    * 생산자 소비자 문제 - 예제2 분석
    * Object - wait, notify - 예제3 코드
    * Object - wait, notify - 예제3 분석 - 생산자 우선
    * Object - wait, notify - 예제3 분석 - 소비자 우선
    * Object - wait, notify - 한계
    * 정리

    9. 생산자 소비자 문제2
    * Lock Condition - 예제4
    * 생산자 소비자 대기 공간 분리 - 예제5 코드
    * 생산자 소비자 대기 공간 분리 - 예제5 분석
    * 스레드의 대기
    * 중간 정리 - 생산자 소비자 문제
    * BlockingQueue - 예제6
    * BlockingQueue - 기능 설명
    * BlockingQueue - 기능 확인
    * 정리

    10. CAS - 동기화와 원자적 연산
    * 원자적 연산 - 소개
    * 원자적 연산 - 시작
    * 원자적 연산 - volatile, synchronized
    * 원자적 연산 - AtomicInteger
    * 원자적 연산 - 성능 테스트
    * CAS 연산1
    * CAS 연산2
    * CAS 연산3
    * CAS 락 구현1
    * CAS 락 구현2
    * 정리

    11. 동시성 컬렉션
    * 동시성 컬렉션이 필요한 이유1 - 시작
    * 동시성 컬렉션이 필요한 이유2 - 동시성 문제
    * 동시성 컬렉션이 필요한 이유3 - 동기화
    * 동시성 컬렉션이 필요한 이유4 - 프록시 도입
    * 자바 동시성 컬렉션1 - synchronized
    * 자바 동시성 컬렉션2 - 동시성 컬렉션
    * 정리

    12. 스레드 풀과 Executor 프레임워크1
    * 스레드를 직접 사용할 때의 문제점
    * Executor 프레임워크 소개
    * ExecutorService 코드로 시작하기
    * Runnable의 불편함
    * Future1 - 소개
    * Future2 - 분석
    * Future3 - 활용
    * Future4 - 이유
    * Future5 - 정리
    * Future6 - 취소
    * Future7 - 예외
    * ExecutorService - 작업 컬렉션 처리
    * 문제와 풀이
    * 정리

    13. 스레드 풀과 Executor 프레임워크2
    * ExecutorService 우아한 종료 - 소개
    * ExecutorService 우아한 종료 - 구현
    * Executor 스레드 풀 관리 - 코드
    * Executor 스레드 풀 관리 - 분석
    * Executor 전략 - 고정 풀 전략
    * Executor 전략 - 캐시 풀 전략
    * Executor 전략 - 사용자 정의 풀 전략
    * Executor 예외 정책
    * 정리

    감사합니다.

    0
  • 안녕하세요. 여러분^^! 자바 중급 2편 강의를 드디어 오픈했습니다.
    오픈 기념으로 스프링, JPA를 포함한 저의 모든 강의를 30% 할인합니다^^!

    강의 링크: https://inf.run/NevkE

    김영한의 실전 자바 중급 2편 - 제네릭과 컬렉션

    * 강의 시간: 19시간 24분
    * 강의 수: 약 90강
    * 강의 PDF 자료: 355장

    이번 강의에서는 실무에 필요한 제네릭, 자료구조, 컬렉션 프레임워크를 깊이있게 다룹니다.

    특히 컬렉션에 쓰이는 다양한 자료 구조를 직접 구현하면서 원리를 깊이 있게 이해합니다. 그래서 각각의 자료 구조가 어떤 경우에 성능이 좋고, 어떤 경우에 성능이 나쁜지 근본적인 이유를 제대로 이해하고 실무에서 활용할 수 있게 됩니다.

    제 목표는 단순히 자바 문법 교육에 그치지 않고, 실무에서 필요한 탄탄한 자바 기본기를 갖춘 유능한 개발자를 양성하는 것입니다. 이를 위해 자바에 대해 깊이 있고 체계적인 자바 로드맵을 진행합니다. 기대해주세요.

    2
  • 안녕하세요. 여러분
    김영한의 실전 자바 중급 2편 - 제네릭과 컬렉션
    오픈 일정이 5월 8일(수)로 확정 되었습니다.

    김영한의 실전 자바 - 중급 2편 제네릭과 컬렉션
    * 강의 시간: 19시간 24분
    * 강의 수: 약 90강
    * 강의 PDF 자료: 355장

    [자바 중급 2편 강의 내용]

    [제네릭]
    자바(Java)에서 제네릭을 제대로 이해하는 것은 참 어렵습니다.
    이 강의에서는 제네릭을 최대한 쉽게 설명하기 위해 먼저 제네릭을 전혀 사용하지 않고 코드를 작성합니다. 그리고 이런 코드에 제네릭을 점진적으로 도입하면서 기존 방식으로는 해결이 어려운 코드 중복을 제네릭이 어떻게 해결하는지 자연스럽게 이해할 수 있습니다.

    [자료 구조의 이해]
    이 강의는 자료 구조를 제대로 이해할 수 있도록 자료 구조의 기초 이론을 설명하고, 또 실무에서 자주 사용하는 핵심 자료 구조들을 코드로 직접 구현해봅니다.

    * 배열 리스트 (ArrayList)
    * 연결 리스트 (LinkedList)
    * 해시 구조 (Hash)
    * 해시 알고리즘과 해시 테이블 (Hash)
    * 트리 구조 (Tree)
    * 세트(셋)와 맵 구조 (Set, Map)
    * 스택과 큐 구조 (Stack, Queue)

    [컬렉션 프레임워크]
    자바의 컬렉션 프레임워크는 자료 구조의 모음입니다.
    실무에서 자료 구조는 정말 자주 쓰이고 성능 문제와도 직결되는 만큼 자료 구조를 제대로 이해하고 사용하는 것이 정말 중요합니다.
    이 강의에서는 컬렉션에 쓰이는 다양한 자료 구조를 직접 구현하면서 원리를 깊이 있게 이해합니다. 그래서 각각의 자료 구조가 어떤 경우에 성능이 좋고, 어떤 경우에 성능이 나쁜지 근본적인 이유를 제대로 이해하고 실무에서 활용할 수 있게 됩니다.
    각 챕터에서는 다양한 자료 구조를 이론과 실제 구현을 통해 학습합니다. 이렇게 해서 자바 컬렉션 프레임워크 전반을 완성하고, 또 어떤 자료 구조를 어디에 사용해야 할지 제대로 이해할 수 있게 됩니다.

    [강의 전체 목차]

    1. 제네릭 - Generic1

    * 프로젝트 환경 구성

    * 제네릭이 필요한 이유

    * 다형성을 통한 중복 해결 시도

    * 제네릭 적용

    * 제네릭 용어와 관례

    * 제네릭 활용 예제

    * 문제와 풀이1

     

    2. 제네릭 - Generic2

    * 타입 매개변수 제한1 - 시작

    * 타입 매개변수 제한2 - 다형성 시도

    * 타입 매개변수 제한3 - 제네릭 도입과 실패

    * 타입 매개변수 제한4 - 타입 매개변수 제한

    * 제네릭 메서드

    * 제네릭 메서드 활용

    * 와일드카드1

    * 와일드카드2

    * 타입 이레이저

    * 문제와 풀이2

    * 정리

     

    3. 컬렉션 프레임워크 - ArrayList

    * 배열의 특징1 - 배열과 인덱스

    * 빅오(O) 표기법

    * 배열의 특징2 - 데이터 추가

    * 직접 구현하는 배열 리스트1 - 시작

    * 직접 구현하는 배열 리스트2 - 동적 배열

    * 직접 구현하는 배열 리스트3 - 기능 추가

    * 직접 구현하는 배열 리스트4 - 제네릭1

    * 직접 구현하는 배열 리스트5 - 제네릭2

    * 정리

     

    4. 컬렉션 프레임워크 - LinkedList

    * 노드와 연결1

    * 노드와 연결2

    * 노드와 연결3

    * 직접 구현하는 연결 리스트1 - 시작

    * 직접 구현하는 연결 리스트2 - 추가와 삭제1

    * 직접 구현하는 연결 리스트3 - 추가와 삭제2

    * 직접 구현하는 연결 리스트4 - 제네릭 도입

    * 정리

     

    5. 컬렉션 프레임워크 - List

    * 리스트 추상화1 - 인터페이스 도입

    * 리스트 추상화2 - 의존관계 주입

    * 리스트 추상화3 - 컴파일 타임, 런타임 의존관계

    * 직접 구현한 리스트의 성능 비교

    * 자바 리스트

    * 자바 리스트의 성능 비교

    * 문제와 풀이1

    * 문제와 풀이2

    * 정리

     

    6. 컬렉션 프레임워크 - 해시(Hash)

    * 리스트(List) vs 세트(Set)

    * 직접 구현하는 Set0 - 시작

    * 해시 알고리즘1 - 시작

    * 해시 알고리즘2 - index 사용

    * 해시 알고리즘3 - 메모리 낭비

    * 해시 알고리즘4 - 나머지 연산

    * 해시 알고리즘5 - 해시 충돌 설명

    * 해시 알고리즘6 - 해시 충돌 구현

     

    7. 컬렉션 프레임워크 - HashSet

    * 직접 구현하는 Set1 - MyHashSetV1

    * 문자열 해시 코드

    * 자바의 hashCode()

    * 직접 구현하는 Set2 - MyHashSetV2

    * 직접 구현하는 Set3 - 직접 만든 객체 보관

    * equals, hashCode의 중요성1

    * equals, hashCode의 중요성2

    * 직접 구현하는 Set4 - 제네릭과 인터페이스 도입

     

    8. 컬렉션 프레임워크 - Set

    * 자바가 제공하는 Set1 - HashSet, LinkedHashSet

    * 자바가 제공하는 Set2 - TreeSet

    * 자바가 제공하는 Set3 - 예제

    * 자바가 제공하는 Set4 - 최적화

    * 문제와 풀이1

    * 문제와 풀이2

    * 정리

     

    9. 컬렉션 프레임워크 - Map, Stack, Queue

    * 컬렉션 프레임워크 - Map 소개1

    * 컬렉션 프레임워크 - Map 소개2

    * 컬렉션 프레임워크 - Map 구현체

    * 스택 자료 구조

    * 큐 자료 구조

    * Deque 자료 구조

    * Deque와 Stack, Queue

    * 문제와 풀이1 - Map1

    * 문제와 풀이2 - Map2

    * 문제와 풀이3 - Stack

    * 문제와 풀이4 - Queue

    * 정리

     

    10. 컬렉션 프레임워크 - 순회, 정렬, 전체 정리

    * 순회1 - 직접 구현하는 Iterable, Iterator

    * 순회2 - 향상된 for문

    * 순회3 - 자바가 제공하는 Iterable, Iterator

    * 정렬1 - Comparable, Comparator

    * 정렬2 - Comparable, Comparator

    * 정렬3 - Comparable, Comparator

    * 컬렉션 유틸

    * 컬렉션 프레임워크 전체 정리

    * 문제와 풀이

    * 정리

     

    감사합니다.

    0

₩44,000