일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Lv.0
- CI/CD
- spring boot
- Redis
- SQL
- LV01
- Java
- 알고리즘
- 포트폴리오
- 데이터 베이스
- Kafka
- CoffiesVol.02
- 코테
- 이것이 자바다
- 프로그래머스
- LV03
- mysql
- LV.02
- Join
- 연습문제
- 일정관리 프로젝트
- 디자인 패턴
- 일정관리프로젝트
- JPA
- GIT
- LV0
- LV1
- S3
- LV02
- docker
- Today
- Total
목록Java (38)
코드 저장소.
목차1.도입2제네릭이란 ?3.와일드 카드4.제네릭 소거5.정리 1.도입평소에 자바로 코드를 작성을 하다보면 제네릭을 쓰는 경우가 많다. 하지만 막상 떠올리는 것은 "컴파일시 타입을 체크해준다","API의 표현력을 높여준다" 정도로 알고 있었다. 이번 글에서는 그 동안 애매하게 알고 있었던 제네릭에 대한 내용을 다시 정리해 보려고 한다. 기본 문법부터 와일드카드, 그리고 제네릭 소거까지 살펴보면서 실제 코드 예제도 같이 다뤄보려고 한다.2.제네릭이란 ?2-1. 제네릭이 필요한 이유자바 1.4 시절에는 컬렉션이 전부 Object 타입으로 동작했다. 이 경우 타입 체크가 컴파일 시점에 이뤄지지 않아서 런타임 오류로 이어질 수 있었다.List list = new ArrayList();list.add("hell..

목차1. 객체 비교가 중요한 이유2.== 연산자의 의미3.equals() 메서드의 의미4.hashCode() 와의 관계5. ==, equals(), hashCode() 차이 정리6.적용 1. 객체 비교가 중요한 이유JPA로 엔티티를 작성하다 보면, 꼭 등장하는 메서드가 있습니다. 바로 equals()와 hashCode()입니다. 단순 CRUD 수준에서는 크게 티가 안 나지만, 엔티티를 컬렉션(Set, Map)에서 다루거나, 영속성 컨텍스트에서 동등성을 판별할 때는 이 두 메서드가 핵심 역할을 합니다. 여기서 의문이 생깁니다. “왜 굳이 엔티티에서 hashCode까지 구현해야 할까?” 그 이유는 객체를 비교하는 방식이 세 가지로 나뉘기 때문입니다.== : 두 객체가 **동일한 메모리 주소(참조)**를 가리..

목차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.Comparable 인터페이스2.Comparator 인터페이스 1.Comparable 인터페이스Comparable 인터페이스는 객체 자신이 기본 정렬 방식을 정의할 때 사용됩니다. 즉, 특정 객체가 어떻게 비교될 것인지(순서 지정)를 해당 클래스 내에서 직접 정의합니다.Comparable 인터페이스의 특징compareTo() 메서드를 오버라이드하여 비교 로직을 정의함같은 타입의 객체끼리 비교 가능자연 정렬(Natural Ordering)을 제공Collections.sort()에서 사용 가능Comparable을 사용한 예시import java.util.*;class Person implements Comparable { private String name; private int age;..
목차1.개요2.각 라이브러리의 특징 1.개요Java에서는 다른 서버와 통신하기 위해서 즉, REST API로 서비스 간 통신하기 위해서 FeignClient, WebClient, RestTemplate 등을 활용하곤 합니다. 대표적인 이 3가지의 특징에 대해서 알아보도록 하겠습니다.2.각 라이브러리의 특징RestTemplate이란?HTTP 요청을 만들기 위해 Spring Framework에서 제공하는 동기식 클라이언트 라이브러리입니다. 아래는 RestTemplate의 특징입니다. RestTemplate은 Spring 4에서부터 사용되었으며, Spring 5 이후로는 비권장(deprecated) 상태입니다.요청과 응답에 대한 JSON 변환, 오류 처리 등을 수동으로 설정해야 합니다.멀티파트 파일 전송, 인..

JVM ?jvm은 Java Virtual Machine으로 컴퓨터가 자바 프로그램을 실행할 수 있도록 도와주는 가상머신이다. jvm을 사용하게 되면 OS가 다 달라도 JVM 버전이 OS마다 있기 때문에 JVM은 OS에 의존적이지만 자바 파일은 OS에 의존적이지 않고 JVM에서 실행될 수 있습니다. 아래의 사진은 JVM의 구조입니다. Jvm의 구조를 보면 Garbage Collector, Execution Engine, Class Loader, Runtime Data Area로 나눠질 수 있습니다. Class Loader Jvm 내로 클래스 파일을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈이다. 런타임 시에 동적으로 클래스를 로드한다. Execution Engine 클래스 로더를 통해 JVM ..