전체 글(187)
-
Stream 사용시 주의사항
Stream 재사용 문제 IntStream stream = IntStream.of(1, 2, 3); stream.forEach(x -> System.out.println(x)); //첫번째 stream 사용 stream.forEach(x -> System.out.println(x)); //두번째 stream 사용 stream은 오직 한번만 소비할 수 있기 때문에 두 번째 사용할 경우 IllegalStateException이 발생할 수 있습니다. Stream의 동작 순서 Arrays.stream(new String[] {"c", "python", "java"}) .filter(word -> { System.out.println("filter method : " + word); return word.leng..
2023.07.05 -
Timestamp, Datetime
Timestamp 1970-01-01 00:00:01 ~ 2038-01-19 08:44:07 까지의 데이터만 지원 4byte 크기가 필요 TIMEZONE에 따라 시간 변화 가능 데이터가 숫자형으로 저장 Datetime 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 사이의 데이터 지원 5byte + 3byte(초단위를 저장하기 위함) 크기가 필요 TIMEZONE에 따라 시간 변화 불가 데이터가 문자형으로 저장
2023.06.19 -
varchar, char, text
char 고정 크기의 문자열을 담는 데이터 타입 경우에 따라 데이터가 낭비될 수 있음 크기가 고정이라 남는 부분에 대한 연산이 필요 없기에 조회시 속도가 varchar에 비해 빠른 속도를 보임 varchar 가변 크기의 문자열을 담는 데이터 타입 인덱스 생성이 가능 text 가변 크기의 문자열을 담는 데이터 타입 최대 65535 글자를 담을 수 있지만 크기 지정 불가 길이를 표현하기 위한 2byte의 공간복잡도 존재 인덱스를 제한적으로 생성 가능. 부분 prefix 인덱스만 가능 text를 사용하는 이유 varchar 타입은 한 레코드에 65535 글자만 적재할 수 있음(한 레코드 모든 글자의 합 - InnoDB의 레코드 크기 제한사항) text 타입은 위와 같은 제한이 없고 다른 속성들과 별도로 다른 ..
2023.04.22 -
SQL SELECT 쿼리문 문법 순서와 실행 순서
문법 순서 SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY 실행 순서 FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY FROM: 조회 테이블 확인 ON: 조인 조건 확인 JOIN: 테이블 조인 WHERE: 데이터 추출 조건 확인 GROUP BY: 특정 컬럼 그룹핑 HAVING: 그룹핑 이후 데이터 추출 조건 SELECT: 데이터 추출 DISTINCT: 중복 제거 ORDER BY: 데이터 순서 정렬
2023.03.11 -
JPA
JPA의 개념 JPA는 자바에서 ORM 기술 표준으로 사용되는 인터페이스의 모음입니다. 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크입니다. ORM(Object Relational Mapping) ORM이란 우리가 일반적으로 알고 있는 어플리케이션 Class와 RDB의 테이블을 매핑한단느 뜻이며 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화해주는 것입니다. ORM의 장점 SQL 문이 아닌 Method를 통해 DB를 조작할 수 있어 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중 Query와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임 객체지항적인 코드..
2023.01.22 -
Http3
Http2의 단점 TCP 고유의 문제 Http2 까지 모든 Http 프로토콜은 신뢰성을 높이기 위해 TCP를 사용하고 있었습니다. 신뢰성을 높이기 위해 TCP는 몇 가지 방법을 사용하는데 이 방법을 또한 클라이언트와 서버 간의 통신이기 때문에 레이턴시가 발생할 수 밖에 없습니다. 대표적으로 3 Way Handshake와 4 Way Handshake가 있습니다. 물론 Http2 에서 많이 개선되었지만 TCP를 사용하는 이상 Handshake는 반드시 있어야 하는 과정이기 때문에 레이턴시는 여전히 존재합니다. Head of line Blocking(HOLB) TCP를 사용한 통신에서 패킷은 무조건 정확한 순서대로 처리되어야 합니다. 수신 측은 송신 측과 주고받은 시퀀스 번호를 참고하여 패킷을 재조립해야하기 ..
2023.01.12