| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 일정관리 프로젝트
- S3
- mysql
- 이것이 자바다
- 데이터 베이스
- spring boot
- Join
- 디자인 패턴
- 일정관리프로젝트
- LV1
- SQL
- Lv.0
- 알고리즘
- LV.02
- LV02
- 포트폴리오
- JPA
- Java
- GIT
- LV03
- Redis
- 코테
- docker
- LV0
- Kafka
- CoffiesVol.02
- 연습문제
- CI/CD
- 프로그래머스
- LV01
- Today
- Total
목록Java (17)
코드 저장소.
목차1.도입2제네릭이란 ?3.와일드 카드4.제네릭 소거5.정리 1.도입평소에 자바로 코드를 작성을 하다보면 제네릭을 쓰는 경우가 많다. 하지만 막상 떠올리는 것은 "컴파일시 타입을 체크해준다","API의 표현력을 높여준다" 정도로 알고 있었다. 이번 글에서는 그 동안 애매하게 알고 있었던 제네릭에 대한 내용을 다시 정리해 보려고 한다. 기본 문법부터 와일드카드, 그리고 제네릭 소거까지 살펴보면서 실제 코드 예제도 같이 다뤄보려고 한다.2.제네릭이란 ?2-1. 제네릭이 필요한 이유자바 1.4 시절에는 컬렉션이 전부 Object 타입으로 동작했다. 이 경우 타입 체크가 컴파일 시점에 이뤄지지 않아서 런타임 오류로 이어질 수 있었다.List list = new ArrayList();list.add("hell..
목차1.GC?2.GC의 구조 및 작동원리3.GC의 종류 1.GC? GC는 JVM에서 메모리 관리를 위해 사용이 되며 ‘더 이상 참조되지 않는 객체들을 자동으로 탐지하고 해제’하는 역할을 수행합니다. 이를 통해 메모리 관리를 효율적으로 처리하며 프로그램 실행 중에 메모리 누수를 방지하고 메모리 사용을 최적화합니다. 개발자들은 가비지 컬렉터를 통해서 메모리 관리에 대한 직접적인 관여 없이도 안정적인 프로그램을 작성을 할 수 있습니다.가비지 컬렉터는 메모리 영역에서 중에서 힙 영역 내에서 이를 관리를 하고 사용을 합니다. 2.GC의 구조 및 작동원리GC의 구조는 힙영역에서 Young Generation, Old Generation, Meta space로 나뉘어집니다. Young Generation 이 부분..
목차1. 객체 비교가 중요한 이유2.== 연산자의 의미3.equals() 메서드의 의미4.hashCode() 와의 관계5. ==, equals(), hashCode() 차이 정리6.적용 1. 객체 비교가 중요한 이유JPA로 엔티티를 작성하다 보면, 꼭 등장하는 메서드가 있습니다. 바로 equals()와 hashCode()입니다. 단순 CRUD 수준에서는 크게 티가 안 나지만, 엔티티를 컬렉션(Set, Map)에서 다루거나, 영속성 컨텍스트에서 동등성을 판별할 때는 이 두 메서드가 핵심 역할을 합니다. 여기서 의문이 생깁니다. “왜 굳이 엔티티에서 hashCode까지 구현해야 할까?” 그 이유는 객체를 비교하는 방식이 세 가지로 나뉘기 때문입니다.== : 두 객체가 **동일한 메모리 주소(참조)**를 가리..
목차1.작성하게 된 계기2.예외(Exception)란?3. Checked Exception4. Unchecked Exception5. Checked vs Unchecked 비교6. 실무 적용 관점7. 결론 1.작성하게 된 계기일전에 일정관리 프로젝트를 하면서 OpenAI API 응답(JSON 파싱)과 DB 조회를 묶어서 처리하는 코드를 작성했다.@CircuitBreaker(name = "openAiClient", fallbackMethod = "fallbackRecommendSchedules")public List recommendSchedules(String userId, Pageable pageable) throws Exception { Long memberId = memberRepository..
목차1.String2.StringBuilder3.StringBuffer4.성능 실험5.후기 1.String우선 String은 아래와 같은 특징을 가지고 있습니다. 1-1.불변객체 String은 한 번 생성되면 내부 값을 바꿀 수 없음."abc" + "d" → 기존 객체 수정 X , 새로운 객체 생성 O 1-2.문자열 상수 풀 String 리터럴은 Heap 영역의 String Pool에 저장됨.동일한 리터럴을 재사용하여 메모리를 절약.String a = "hello";String b = "hello";System.out.println(a == b); // trueString c = new String("hello");System.out.println(a == c); // false new String..
목차1.GraalVM?2.기존의 JVM과의 작동 차이점 1.GraalVM?GraalVM은 사전 네이티브 이미지 컴파일 기능을 갖춘 고급 JDK입니다. 그리고 단순히 새로운 JVM이 아니라, 여러 언어(Java, JavaScript, Python 등)를 실행할 수 있는 멀티랭귀지 실행 환경이기도 합니다. GraalVM의 주요 이점은 공식 사이트에서 아래와 같이 적혀 있습니다. 낮은 리소스 사용량 : GraalVM에서 사전 컴파일된 Java 애플리케이션은 실행에 필요한 메모리와 CPU 사용량이 적습니다. JIT(Just-In-Time) 컴파일에는 메모리와 CPU 사이클이 소모되지 않습니다. 결과적으로 애플리케이션 실행에 필요한 리소스가 줄어들고 대규모 운영 비용도 절감됩니다. 빠른 시작 : GraalVM..