전체 글
-
JPA 1대다 fetch join 주의사항공부방 2024. 4. 2. 01:34
더보기 김영한님의 JPA 강의를 보다가 1대다 fetch join 시 주의해야할 사항이 있고 어떤식으로 처리하는지 정리해두면 나중에 보기 좋을것 같아 정리 도메인 사용 쿼리 public List findAllWithItem() { return em.createQuery( "select distinct o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi" + " join fetch oi.item i", Order.class) .getResultList(); } 문제 사항 기본적으로 쿼리에 distinct 가 들어간 이유는 Order 와 OrderItem 이 일대다 관계이기때문..
-
ElasticSearch 정리공부방 2023. 12. 25. 22:42
ElasticSearch 란? 1. 검색엔진 엘라스틱서치는 이름 그대로 검색 엔진입니다. 다른 RDBMS 또는 NoSQL에 비해 매우 강력한 검색 기능을 지원합니다. 역색인을 사용하여 검색 속도가 굉장히 빠르고 다양한 애널라이저를 조합하여 여러 비즈니스 요구사항에 맞는 색인을 구성할 수 있습니다. 2. 분산처리 엘라스틱서치는 분산 처리를 고려하여 설계되었습니다. 데이터를 여러 노드에 분산 저장하고 이 때문에 수평적 확장성이 좋고 고가용성을 제공할 수 있습니다. 3. JSON 기반 엘라스틱서치는 문서를 JSON 형태로 저장하고 관리합니다. 요청 역시 JSON 기반으로 받기 때문에 환경에 구애받지 않고 HTTP를 통해 쉽게 이용할 수 있습니다. 4. 트랜잭션이 지원되지 않음 엘라스틱서치는 RDBMS와 다르게..
-
파이프라인 프로토콜공부방 2023. 11. 22. 23:24
Pipeline Protocol 기존 전송후 대기(Stop and wait) 프로토콜 같은 경우는 한번에 하나의 패킷만 보내고 ACK를 받을때까지 대기하게되면서 비효율적인 측면이 있었다. 이를 보완한 Pipeline Protocol은 정해진 크기만큼 패킷을 한번에 여러개를 보내는 방식이다. 이런 Pipeline Protocol의 대표적인 두가지 방법으로는 Go-Back-N 방식과 Selective repeat 방식이 있다. Go-Back-N 송신자는 윈도우 크기만큼의 패킷을 한번에 보낼 수 있다. 수신자는 패킷을 받으면 ACK 신호를 보낸다. ACK를 받으면 윈도우가 이동하여 다음 패킷을 보낼 수 있게된다. Go Back N 에서는 ACK(n) 의 의미는 n번째 패킷 까지 정상적으로 받았다 라는 의미이다..
-
HTTPS 통신 과정공부방 2023. 11. 15. 22:31
HTTPS HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다 기존 HTTP 통신에서 사용되는 일반 텍스트를 SSL 또는 TLS 를 이용하여 암호화 하여 데이터의 보호를 보장한다. TLS/SSL Handshake 공개키 방식으로 대칭키를 생성할 키 정보를 교환하고, 대칭키를 생성하여 메시지는 대칭키 방식으로 암호화하여 주고 받는다. 1. Client Hello 브라우저에서 지원하는 암호화 알고리즘 (Cipher Suites)과 TLS 버전, 난수를 생성하여 전달한다. 2. Server Hello Client..
-
OSI 7계층과 TCP/IP 4계층공부방 2023. 11. 7. 22:56
OSI 7계층 osi 7 계층은 1984년 ISO(국제표준화기구) 에서 정의한 것으로, 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 상호 작동하는 방식을 정해 놓은 것이다. 1계층 - 물리 계층(Physical Layer) PDU : Bit Protocol : 10BASE-T 등 디바이스: 허브, 리피터 OSI 7계층 중 가장 아래에 있는 계층으로 물리적인 매체이다. 0과 1로 이루어진 비트 데이터로 통신을 하며 전기적 신호 On, Off로 이루어져 있다. 실제 데이터가 어떤것이 있는지는 알지 못하고 단순히 전기적 데이터를 통신할 뿐이다. 2계층 - 데이터링크 계층(DataLink Layer) PDU : Frame Protocl : Ethernet 등 디바이스 : 브릿지, 스위치 물리계층..
-
Session과 Token공부방 2023. 10. 20. 17:10
인증과 인가 인증과 인가는 비슷해 보이는 단어이지만 그 의미가 다르다. 먼저 인증(Authentication)은 쉽게 로그인이라고 생각하면 된다. 아이디와 비밀번호를 통해 내가 사용자임을 인증받는다. 인가(Authorization)는 인증을 받은 후, 내가 로그인 되어있음을 알아보고 내 친구목록 보기, 댓글 달기 등을 허가해주는 것을 말한다. Session과 Token 세션과 토큰 모두 인가와 관련된 기술이다. 서버에서 요청한 사용자가 로그인 해 있다는 사실을 인지하기 위한 기술이다. Session 세션의 경우 서버에서 별도의 세션 저장소에 유저 정보를 저장하고 있는 것이다. 사용자가 로그인 할 경우 세션을 생성하여 저장하고 해당 세션의 ID를 쿠키로 주고 받아 해당 유저 정보를 알아오는 방식이다. 세션..
-
Java mutable 과 immutableJAVA 2023. 10. 8. 23:06
Mutable 과 Immutable Java에는 가변(mutable)객체와 불변(immutable)객체가 존재한다. 가변 객체는 힙 영역에 생성된 객체를 변경할 수 있는 객체이고 불변 객체는 반대로 힙 영역에 생성된 객체를 변경할 수 없는 객체이다. 대표적인 불변 객체인 String 으로 예시를 보면 다음과 같다. String val1 = "abc"; System.out.println("val1 initial " + System.identityHashCode(val1)); val1 += "xyz"; System.out.println("val1 after "+System.identityHashCode(val1)); // output val1 initial 1435804085 val1 after 179828..
-
Java와 일급 함수JAVA 2023. 9. 18. 18:26
일급함수 프로그래밍 언어는 해당 언어의 함수들이 다른 변수처럼 다루어질 때 일급 함수를 가진다고 합니다. 예를 들어, 일급 함수를 가진 언어에서 함수는 다른 함수들에 전달인자로 제공되고, 다른 함수에 의해 반환될 수 있으며, 변수에 값으로서 할당될 수 있습니다. 일급 객체가 되기위한 충족 조건은 세가지가 있다. 변수나 데이터에 할당 할 수 있어야 한다. 객체의 인자로 넘길 수 있어야 한다. 객체의 리턴값으로 리턴 할 수 있어야 한다. Java 에서는 위의 조건을 충족하지 않지만, 람다식을 이용하여 함수의 매개변수로 전달 할 수 있다. 함수형 인터페이와 람다 구현해야 할 abstract method를 하나만 갖고 있는 인터페이스를 함수형 인터페이스라고 한다. @FunctionalInterface 어노테이션..