분류 전체보기

🌻 JAVA/자바 ORM 표준 JPA 프로그래밍

[JPA] N+1 문제와 해결 (feat. fetch join, EntityGraph)

💡 아래 실습에 진행한 모든 코드는 Github에 있습니다. JPA N+1이란? 실무에서 JPA를 사용하다보면, N+1 쿼리를 만나게 됩니다. 여기서 N+1이란 Team(1) ↔ Member(N) 연관관계가 있다고 가정했을 때, 하나의 팀을 조회했지만 팀 내부에 있는 모든 멤버들이 함께 조회되면서 1+N 개의 쿼리가 발생하는 것을 의미합니다. 직접 테스트 코드를 통해 이러한 상황들을 해결할 수 있는 방법들을 살펴보고 각 상황이 또 어떤 사이드이펙트가 있는지도 알아보겠습니다. Entity 및 Repository 코드 실습에 사용될 코드는 다음과 같습니다. @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Membe..

🐍 Python

[Python] influxdb 삽입 시 timezone 주의사항 (feat. datetime.now()를 지양하자)

Intro 파이썬으로 InfluxDB에 데이터를 저장시키는 모듈을 개발하다 이상한점이 생겼습니다. KST로 넣었는데 이게 그대로 UTC로 들어가 있거나 분명 UTC로 저장시켰는데 KST로 저장되어있거나.. 희한한 현상이 발생했습니다. 그래서 파이썬 코드를 전부 까보며 influxDB 저장할 때 시간을 변환하는지와 서버 타임존과 관련이 있는지 알아보도록 하겠습니다. 서버의 타임존이 다르면, influxdb에는 시간이 어떻게 찍힐까? TL;DR 💡 서버 시간에 따라서 `datetime.timestamp()` 함수가 UTC 시간으로 보정하여 변환한다. 그렇기 때문에 서버 타임존에 따라서 timestamp()의 결과가 달라질 뿐, influxdb_client 라이브러리를 통해 데이터 삽입 시에는 따로 시간이 변..

🔥 Computer Science/📡 네트워크

5. 전송 계층에서는 어떤 일을 할까? (TCP/IP 4 Layer)

개요 이전 시간에는 TCP/IP 3계층인 네트워크 계층을 배웠는데요. 네트워크 계층에서는 라우터와 IP를 통해 외부 네트워크에 있는 목적지로 전송할 수 있는 것을 알아봤습니다. 그렇다면 그렇게 전송받은 데이터를 PC 내부에서 어떤 응용프로그램으로 전달해줘야 할까요? 그 해답은 바로, 이번 시간에 배울 전송 계층입니다. 전송계층의 특징 데이터를 받긴 받았는데.. 데이터를 받긴 받았는데.. 이거 누구꺼야? 예를 들어, 내가 게임을 하고 있는데 브라우저에서 요청한 데이터가 게임한테 가면 안되겠죠? 이 데이터가 누구로부터 온것인지, 누구한테 보내는건지에 대한 정보를 바로 네트워크 계층에서 알고 있습니다. 연결형 통신(TCP), 비 연결형 통신(UDP) 전송 계층의 또 다른 특징으로는 신뢰성/정확성 그리고 효율성..

🔥 Computer Science/📡 네트워크

4. 네트워크 계층에서는 어떤 일을 할까? (TCP/IP 3 Layer)

Goal IP를 이해한다 라우터를 이해한다 IP 주소를 이해한다 서브넷을 이해한다 라우팅을 이해한다 역할 이전 시간에 배운 OSI 2계층 데이터 링크 계층에서는 이더넷을 통해 데이터를 전송했습니다. 하지만 같은 네트워크에 속한 컴퓨터에게만 보낼 수 있고 다른 네트워크에 있는 컴퓨터로는 보낼 수 없습니다. 왜 그럴까요? 내부 네트워크에서는 MAC 주소만으로도 찾아갈 수 있지만, 다른 네트워크에 있는 컴퓨터는 찾아갈 수 없습니다. 외부 네트워크로 찾아가기 위해서는 라우터라는 장비가 필요합니다. 라우터란? 라우터를 통해 네트워크를 분리 할 수 있습니다. (스위치나 허브는 분리가 안되고 같은 네트워크로 잡힙니다) 또한 라우터는 다른 네트워크로 데이터를 전송하기 위해 필요한 장비입니다. 데이터의 목적지가 정해지면..

🌻 JAVA/알고리즘, 자료구조

ArrayList 내부구현 간단하게 살펴보기 (feat. Array)

개요 ArrayList를 자주 사용하는 편인데 ArrayList는 왜 Array와 다르게 초기 사이즈를 정해주지 않아도 되고, 무한정으로 원소가 추가되는 것 입니다. 이 부분이 리스트를 사용하면서도 늘 의문이였습니다. 오늘은 ArrayList를 간단하게 해부해볼 것 입니다. 원소 추가하는 부분을 중점적으로 살펴보겠습니다. ArrayList 내부적으로는 어떻게 되어있을까? public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable { private static final long serialVersionUID = 8683452581122892189L; /** * Default..

🔥 Computer Science/📡 네트워크

3. 데이터링크 계층에서는 어떤 일을 할까? (TCP/IP 2 Layer)

이더넷이란? 윈도우를 사용해보셨다면, 인터넷 연결 확인을 위해 한번쯤은 봤을 법한 화면입니다. 위에서 말하는 이더넷이란 무엇일까요? 일단 데이터 링크 계층의 중요한 역할은 네트워크 장비간에 신뢰를 주고 받는 규칙을 정하는 역할을 합니다. 랜에서 데이터를 정상적으로 받기위해 필요한 계층인데요. 데이터를 주고 받기위해 정해진 규칙들 중 현재는 이더넷이라는 방식을 채택해서 사용중입니다. 그럼 우리는 이제 이더넷이 데이터를 주고 받기 위한 규칙이라고 이해할 수 있겠네요! 왜 이런 규칙들이 만들어졌을까요? 아래와 같은 상황을 살펴봅시다! 위와 같이 동시에 데이터를 송신한다면 어떻게 될까요? 네! 바로 데이터 간 충돌이 일어나게 됩니다. 이러한 현상을 이더넷은 어떻게 해결했을까요? CSMA/CD 반송파 감지 다중 ..

iseunghan
'분류 전체보기' 카테고리의 글 목록 (2 Page)