분류 전체보기 16

Lazy Loading과 Eager Loading 정리

어느 강의를 듣다가 LAZY를 사용해야 된다는 말을 듣고 자세한 내용은 보지 않아 계속 LAZY 만을 사용했는데요 그래서 이 부분에 자세히 알아보기 위해 조사했습니다.JPA를 사용할 때 엔티티 간 연관 관계를 매핑할 때 fetch 전략을 설정하는 것이 매우 중요합니다 LAZY와 EAGER 두 가지 방식이 존재하는데 이 설정이 개발 성능과 직접적으로 연결됩니다 Lazy Loading과 Eager Loading 개념Lazy Loading Lazy Loading 또는 지연 로딩이라고 불리는 로딩은 연관된 엔티티를 즉시 가져오지 않고 실제로 필요한 시점에서 쿼리를 실행하여 데이터를로딩하는 방식입니다. JPA를 사용면@OneToMany(fetch = FetchType.LAZY) 또는 @ManyToOne(fetch..

카테고리 없음 2025.02.07

CORS란?

백엔드를 시작하기 전 작은 프로젝트를 진행하면서 Django로 Rest api를 만들었는데요 만들다가 프론트단과 통신을 진행했는데 CORS라는 오류가 나왔었습니다 그 오류 때문에 고생했던 적이 있는데요 오늘은 그 오류에 대해서 알아보겠습니다.CORS란?cors는 Cross-Origin Resource Sharing의 약어로 웹 브라우저에서 보안상의 이유로 적용되는 정책으로 출저(origin)가 다른 도메인 간의 리소스 요청을 제한하는 기능입니다.Origin(출처)란? 출처는 프로토콜 + 도메인 + 포트로 구성됩니다. 예를 들어 설명을 해보겠습니다.https://skgur.com:443http://skgur.com:80https://api.skgur.com:443와 같은 출처가 있는데요? 지금 모든 출처가..

백엔드 2025.02.07

람다 표현식

람다 표현식은 Java 8에서 도입된 기능으로, 익명 함수를 더욱 간단하게 사용하기 위한 간단한 문법입니다. 람다 표현식을 사용하면 불필요한 코드를 줄이고, 함형 프로그래밍 스타일을 Java에서도 쉽게 활용할 수 있게 됩니다. 람다 표현식은( parameters ) -> { body } 이런 식으로 사용됩니다. parameters : 입력 매개변수 (0개 이상)-> : 람다 연산자body : 실행할 코드로 분류할 수 있습니다. 람다 표현식은 왜 필요할까?람다 표현식의 가장 큰 장점은 간결함과 가독성이라고 할 수 있는데요. 기존의 Java 코드에서 사용되던 익명 클래스 코드가 길고 복잡하며 불필요한 구문으로 인해 핵심 로직을 파악하기 어려운 문제가 있었는데요 때문에 Java 8 부터는 람다 표현식이 나왔습..

백엔드 2024.12.30

컨테이너, 도커, 쿠버네티스가 뭐길래 사람들이 그래?

컨테이너 기술이란?컨테이너는 애플리케이션 실행 환경을 표준화하고 격리하여, 시스템 리소스를 효율적으로 사용할 수 있게 해주는 기술입니다. 이를 통해 개발자는 애플리케이션과 실행에 필요한 모든 요소(코드, 라이브러리, 환경 설정 등)를 하나의 독립된 유닛으로 묶어 어디서든 동일하게 실행할 수 있습니다.그렇다면, 컨테이너가 왜 필요할까요?컨테이너의 가장 큰 장점은 일관된 환경 보장입니다. 기존의 개발/운영 환경에서는 다음과 같은 문제가 자주 발생하곤 했습니다:"내 로컬에서는 잘 돌아갔는데..."개발 환경과 운영 환경의 차이로 인해 코드가 예상대로 동작하지 않는 문제.복잡한 배포 과정애플리케이션 실행을 위해 수많은 설정과 의존성을 맞춰야 했던 번거로움.컨테이너는 이런 문제를 해결합니다. 운영체제 커널을 공유하..

TIL 2024.12.16

서버리스

서버리스는 클라우드 컴퓨팅 모델의 한 형태입니다. 개발자가 서버를 직접 관리하거나 설정하지 않고 애플리케이션을 개발하고 실행할 수 있도록 해주는 서비스입니다. 서버리스(Serveless) 말은 서버가 없다는 뜻이지만 실제로 서버가 없는 게 아니라, 개발자가 서버 관리에 신경 쓰지 않아도 된다.라는 점을 서버리스라고 합니다.특징1. 위에서 말했던 것처럼 관리하지 않아도 됩니다.개발자는 인프라를 설정하거나 관리하지 않아도 되고, 클라우드 제공자가 서버의 프로비저닝, 유지보수, 확장 등을 처리합니다.2. 요청 기반 실행으로 원할때 실행되게 만들 수 있습니다.서버리스 애플리케이션은 이벤트에 의해 작동됩니다. 예를 들어, HTTP 요청, 데이터베이스 변경 요청 등이 트리거가 될 수 있습니다.3. 자동 확장 할당을..

백엔드 2024.12.10

JPA vs Mybatis

JPAJPA는 자바 애플리케이션에서 객체와 관계형 데이터베이스 테이블 간의 매핑을 관리하는 API로, 객체 관계 매핑(ORM)을 지원합니다. JPA는 SQL 쿼리를 직접 작성할 필요 없이 객체 모델을 기반으로 데이터베이스에 접근할 수 있는 방법을 제공합니다.  특징JPA는 객체 모델을 사용하여 관계형 데이터베이스를 다루기 대문에, 개발자는 SQL을 신경 쓸 필요 없이 객체 간의 관계를 설정하고 자동으로 데이터를 저장하거나 로드할 수 있습니다.JPQL(Java Persistence Query Language)을 사용하여 SQL처럼 쿼리를 작성하되, 데이터베이스 독립적으로 쿼리를 생성할 수 있습니다.JPA는 데이터베이스 벤더에 의존하지 않으므로, 데이터베이스 교체 시 코드 수정이 적습니다. 장점JPA는 객체..

백엔드 2024.11.25

재미있는 심리 게임과 이론!

게임이론이란?게임이론은 상호 의존적이고 이성적인 의사결정에 관한 수학적 이론입니다. (오스카 모겐스턴과 폰 노이만이 발전시켰습니다!)개인 또는 기업이 어떠한 행위를 했을 때, 그 결과가 게임에서와 같이 자신뿐만 아니라 다른 참가자의 행동에 의해 서도 결정되는 상황에서, 자신의 최대 이익에 합하는 행동을 추구한다는 수학적 이론입니다. 게임이론은 과학적 비유, 즉 경제적 경쟁, 전쟁, 선거 등 우리가 통상 게임으로 생각하지 않는 많은 상호작용이 마치 게임처럼 취급되고 분석될 수 있다는 발상에 기초를 둡니다. 간단하게 경제 + 수학 + 심리학 분야를 합쳐놨다고 생각하면 됩니다. 벌써 재미있죠? 이번에는 간단하게 게임이론에서 언급되는 게임을 설명해 보겠습니다.최후통첩 게임최후통첩 게임도 간단합니다. 이 이론은 ..

TIL 2024.10.07

Diffie-Hellman (디피-헬만) 키 교환

배경 :Diffie Hellman 알고리즘은 1976년 발표된 비밀키 교환 방법입니다.이산 로그 문제에 대해 그 안전성을 두고 있는 알고리즘입니다. 이산 로그 문제이산 로그 문제에 대해 알아보기 전에 일단 수식에 대해 이해해 보겠습니다.y = g^x (mod p)위 사진에서 뒤에 나오는 Mod 연산자는 모듈러 연산이라고 합니다. 나누기를 한 나머지 값을 뜻합니다.그럼 y는 g에 x제곱한 값을 p로 나눈 나머지 값이라는 겁니다.여기서 g, x, p를 알고 있으면 y를 구하는 건 쉽지만, 만약 y, g, p를 알고 있어도 x를 알기 어렵다는 특징을 말합니다. Diffie-Hellman 키 교환 : 암호화는 크게 비대칭키와 대칭키 암호화 알고리즘.현대 암호화는 키를 가지고 암복호화를 진행합니다. 암호화와 복호..

TIL 2024.09.10