일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 42서울
- 도커
- Spring boot
- 티스토리챌린지
- openAI API
- 인프라
- EC2
- 프로그래밍
- 개발공부
- 프롬프트엔지니어링
- 라피신
- 체크인미팅
- 백엔드개발자
- AWS
- Route53
- UNICON2023
- UNIDEV
- 프리티어
- 전국대학생게임개발동아리연합회
- 생활코딩
- 캡스톤디자인프로젝트
- 오블완
- CICD
- NAT gateway
- bastion host
- UNICON
- 스프링부트
- Redis
- spring ai
- 게임개발동아리
- Today
- Total
목록Study/Java (7)
Hyun's Wonderwall
7장 람다와 스트림아이템 46. 스트림에서는 부작용 없는 함수를 사용하라스트림 패러다임의 핵심: 계산을 일련의 변환으로 재구성.- 각 변환 단계는 가능한 한 이전 단계의 결과를 받아 처리하는 순수 함수여야 한다. - 순수 함수: 오직 입력만이 결과에 영향을 주는 함수. 다른 가변 상태를 참조하지 않고, 함수 스스로도 다른 상태를 변경하지 x - 이렇게 하려면 스트림 연산에 건네지는 함수 객체가 모두 side effect이 없어야 한다.forEach 연산은 스트림 계산 결과를 보고할 때만 사용하고, 계산 자체에 쓰지 말자.- collect: 축소 전략을 캡슐화한 블랙박스 객체. 스트림의 원소들을 객체 하나에 취합함. 수집기가 생성하는 객체는 일반적으로 컬렉션.- 수집기를 사용하면 스트림의 원소를 손..
6장 열거 타입과 애너테이션 (2/2)아이템 37. ordinal 인덱싱 대신 EnumMap을 사용하라EnumMap: 열거 타입을 키로 사용하도록 설계한 아주 빠른 맵 구현체- 내부에서 배열을 사용해 빠름..- EnumMap의 생성자가 받는 키 타입의 Class 객체는 한정적 타입 토큰. 런타임 제네릭 타입 정보를 제공.Map> plantsByLifeCycle = new EnumMap(LifeCycle.class); for (LifeCycle lc : LifeCycle.values()) { plantsByLifeCycle.put(lc, new HashSet()); // 빈 Set 초기화 } for (Plant p : garden) { ..
5장 제네릭 (2/2)아이템 28. 배열보다는 리스트를 사용하라배열와 제네릭 타입의 중요한 차이 2가지: 1. 배열은 공변이다. 2. 배열은 실체화된다. 1. 배열은 공변이다. - 배열: 공변 (variant, 함께 변한다.) (예로 Sub가 Super의 하위 타입이라면 Sub[]는 Super[]의 하위 타입)- 제네릭: 불공변 (invariant) (예로 Type1과 Type2가 있을 때, List은 List의 하위 타입도 상위 타입도 아니다.- 배열에서는 타입호환이 안 되는 곳에 넣는 실수를 런타임에서 알게 되는데(->ArrayStoreException), 리스트는 컴파일할 때 알게 되어 더 타입 안전한 프로그래밍을 할 수 있다. 2. 배열은 실체화된다.- 배열은 런타임에도 자신이 담기로 한 원소의 ..

4장 클래스와 인터페이스 (2/2)아이템 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라.상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 사용하는지(자기사용 패턴) 내부 구현 방식을 설명해 문서를 남겨야 한다.- @implSpec 태그 붙이면 javadoc이 Implementation Requirements 생성해준다 (메서드의 내부 동작 방식 설명.) 효율적인 하위 클래스를 만들 수 있도록 (클래스의 내부 동작 과정 중간에 끼어들 수 있는 훅을 잘 선별하여) 일수 메서드를 protected로 제공해야 할 수도 있다. (드물게는 protected 필드도) 문서화한 것은 그 클래스가 쓰이는 한 반드시 지켜야 한다. 그러지 않으면 내부 구현 방식을 믿고 활용하던 하위..
3장 모든 객체의 공통 메서드아이템 10. equals는 일반 규약을 지켜 재정의하라equals 메서드는 기본적으로 클래스의 인스턴스가 오직 자기 자신과만 같도록 구현되어있다.- 꼭 필요한 경우가 아니면 equals를 재정의하지 않아도 된다.- equals 메서드를 재정의하지 않는 것이 좋은 경우 예시각 인스턴스가 본질적으로 고유 (ex. Thread)인스턴스의 논리적 동치성을 검사할 일이 없음 (ex. Pattern)상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞음클래스가 private이거나 package-private이고 equals 메서드를 호출할 일이 없음equals를 재정의해야 할 때: 객체 식별성이 아니라 논리적 동치성을 확인해야 하는데, 상위 클래스의 equals가 논리적 ..
자바와 더욱 친해지고 싶어 이펙티브 자바 3판을 읽기 시작했습니다. 책을 읽으며 배운 내용, 관련해 경험했던 사례, 추가로 찾아본 점 등을 작성합니다.1장📎📎📎이 책은 자바 11 버전에 기반한다. 최신 자바 LTS 버전은 21이기에 자바 11 이후 주요 업데이트 사항을 따로 찾아보고 인상적인 것들을 메모했다.Java SE 12: switch문 확장 ('->' 함수형 방식), switch문 값 리턴 가능Java SE 13: switch에서 yield 키워드로 break value;처럼 사용 가능Java SE 14: instanceof 패턴 매칭, record 타입 지원Java SE 15: sealed(클래스 봉인), 다중 텍스트 블록(""" 방식)Java SE 16: Vector API 인큐베이터Ja..

생활코딩 Java 입문 수업 수강 기간: 2023.1.20~2023.2.03 (1/20, 1/25, 2/3) 강의 링크: https://opentutorials.org/course/3930 생활코딩 JAVA 입문 수업 - 생활코딩 본 수업은 2019년에 제작된 자바 수업으로 2013년에 제작된 생활코딩 JAVA 수업의 리뉴얼된 수업입니다. 수업소개 이 수업은 가장 인기있는 컴퓨터 언어인 Java의 기본을 알려드리는 수업입니다. opentutorials.org [01. 수업소개] - 뒤로 갈수록 덜 중요한 게 나온다. 빨리 그만두는 것 = 졸업하는 것! [02. 자바 설치] - 온라인 편집기를 개발환경으로 이용하기: jdoodle https://www.jdoodle.com/online-java-compil..