분류 전체보기95 데이터베이스 인덱스 1 - 인덱스 개념, 종류 등 데이터베이스 인덱스란? 데이터베이스에서 데이터의 조회 속도를 높일 수 있는 자료구조이고, 주로 where 절에서 사용된다. 인덱스의 사전적인 의미로는 색인이다. 색인은 쉽게 찾아볼 수 있도록 일정한 순서에 따라서 놓은 목록을 말한다. 책으로 비유하자면 목차에 비유할 수 있다. 우리가 책에서 원하는 내용을 찾는다고 가정하면, 책의 모든 페이지를 찾아보는 것은 시간이 많이 걸린다. 이를 위해서 책의 뒷편에는 핵심 키워드 기준으로 그 키워드가 어느 페이지에 있는지 알려주는 페이지가 있다, 즉, 데이터베이스에서도 데이터를 조회하기 위해서 모든 테이블을 다 탐색하면 시간이 오래 걸리므로 데이터와 데이터의 위치를 저장해두는 자료구조를 따로 생성해서 이를 통해서 빠르게 데이터 조회가 가능하도록 한다. 이것이 바로 데.. 2023. 5. 31. 웹 브라우저에서 www.google.com을 입력했을때 면접 단골 질문인 웹 브라우저에서 www.google.com을 입력했을때 동작 방식을 정리하기 위해서 이 주제에 대해서 포스팅한다. 동작 방식 1. 유저가 웹 브라우저의 검색창에 www.google.com을 입력한다. 2. 웹 브라우저는 캐싱된 DNS 기록을 확인해서 해당 도메인 주소와 대응되는 IP주소가 캐싱되어 있는지 확인한다. OS DNS Cache, Router DNS Server, Root DNS Server를 확인한다. 3. 웹 브라우저는 해당 도메인 주소와 대응되는 IP주소를 얻기 위해서 DNS 서버에게 HTTP 요청을 한다. 2번 과정을 거쳐서 캐시된 IP주소를 찾지 못하였다면 DNS 서버에게 IP주소를 요청한다. 4. DNS 서버는 해당 도메인 주소에 대응되는 IP주소를 응답값으로 준다... 2023. 5. 28. CORS란? CORS에 대해서 한번 정리해보고자 한다. 프로젝트를 진행하면서, 웹 프론트엔드 작업을 하였는데 이때도 CORS에 대해서 많이 접하였고 또 기술 면접에서도 이에 대해서 질문을 많이 받았다. 한번 정리하는 김에 제대로 정리하고 싶어서 CORS에 대해서 포스팅한다. CORS란? CORS는 Cross-Origin Resources Sharing으로 교차 출처 자원 공유 원칙이다. 웹 브라우저에서는 교차 출처(Cross-Origin)의 HTTP 요청이 제한된다. 즉, 이를 허용하려면 서버에서 HTTP 헤더를 통해서 허용 정보를 보내주어야 한다. 즉, CORS는 추가 HTTP 헤더를 사용하여, 브라우저에서 교차 출처(Cross-Origin) HTTP 요청을 안전하게 할 수 있도록 하는 체제이다. (한 출처에서 실.. 2023. 5. 28. 조회 API 성능 개선하기 조회 API 성능 개선하기 도서 문장 공유 서비스 "스피딧" 프로젝트를 하다가 프로젝트에서 조회 API가 있었다. 아무래도 도서 문장 공유 서비스다 보니 유저들이 작성한 정보를 공유하는 서비스이므로 조회 API가 매우 많았다. 대표적으로 메인 기능인 피드 조회 API와 유저 조회 API이다. 두개의 조회 API 모두 피드의 개수가 많아질 시를 대비해서 페이징을 적용하였고, 피드와 연관된 엔티티인 유저, 책 엔티티도 조회할때 함께 조회하는 경우가 많았다. N+1문제도 자주 발생해서 fetch join 등을 적극 사용해서 JPA N+1 문제는 해결을 하였다. 이후, ngrinder로 성능 테스트를 해본 결과, 두개의 조회 API가 처리속도도 매우 낮았고 중간에 제대로 응답을 반환하지 못하는 에러율도 50%를.. 2023. 5. 13. 자바의 GC GC(Garbage Collection)란? JVM의 Heap영역에서 사용하지 않는 객체를 삭제하는 프로세스를 말함. 메모리 관리 기법 중 하나임. ❗JVM(Java Virtual Machine) : 자바를 실행하기 위한 가상 기계(컴퓨터) Java는 OS에 종속적이지 않는다라는 특징을 가짐. -> JVM은 OS에 종속받지 않고, CPU가 Java를 인식하고 실행할 수 있게 하는 가상의 컴퓨터 메모리 관리, GC등을 수행함. GC는 왜 필요한 것인지? JVM의 메모리의 비어있는 공간을 확보하기 위해서 필요함. ❗프로그램을 개발하다보면 유효하지 않은 메모리인 가비지(Garbage)가 발생함 -> JVM의 비어있는 메모리 공간을 확보하기 위해서 필요함 -> Java는 메모리 관리를 개발자가 수동으로 하는 것.. 2023. 5. 8. 06. 다양한 연관관계 매핑 ** 이 글은 자바 ORM 표준 JPA 프로그래밍 6장을 읽고 정리한 것입니다. ** 다대일 객체 양방향 관계에서 연관관계의 주인은 항상 다쪽이다. 앙방향은 외래 키가 있는 쪽이 연관관계의 주인이다. 양방향 연관관계는 항상 서로를 참조해야 한다. 다대일 단방향(N:1) 다대일 양방향(N:1, 1:N) 일대다 엔티티를 하나 이상 참조할 수 있으므로 자바 컬렉션인 Collection, List, Set, Map 중에 하나를 사용해야 한다. 일대다 단방향(1:N) 일대다 단방향 매핑의 단점 : 매핑한 객체가 관리하는 외래 키가 다른 테이블에 있다는 점 -> 다른 테이블에 외래키가 있으면 연관관계 처리를 위한 UPDATE SQL을 추가로 실행해야 한다. 일대다 단방향 매핑보다는 다대일 양방향 매핑을 사용하자 다.. 2023. 5. 8. 05. 연관관계 매핑 기초 ** 이 글은 자바 ORM 표준 JPA 프로그래밍 5장을 읽고 정리한 것입니다. ** 객체의 참조와 테이블의 외래 키를 매핑하는 것이 이 장의 목표 엔티티들은 대부분 다른 엔티티들과 연관관계가 있음. 객체와 테이블 객체 참조(주소)를 사용해서 관계를 맺는다. 테이블 테이블은 외래 키를 사용해서 관계를 맺는다. 방향 : 테이블은 항상 양방향 관계를 가짐. 객체는 단방향, 양방향 관계가 존재함 다중성 : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 연관관계의 주인 : 객체를 양방향 연관관계를 가지도록 만들면 이 연관관계의 주인이 존재해야 함. 연관관계 다대일(N:1) 단방향 관계 (ex) 회원 객체와 팀 객체는 단방향 관계(회원은 Member.team 필드를 통해서 팀을 알 수 있지.. 2023. 5. 8. 모던 자바 인 액션 정리(람다, 스트림, 옵셔널) ** 이 글은 책 모던 자바 인 액션 (람다, 스트림, 옵셔널 부분)을 읽고 정리한 것입니다 ** Chapter 03. 람다 람다 표현식 메서드로 전달할 수 있는 익명 함수를 단순화한 것 (ex) (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()); -> 람다 파라미터, 화살표, 람다 바디값으로 이루어져 있음. 람다를 어디에서 사용할 수 있는 것인가? 함수형 인터페이스라는 문맥에서 람다 표현식을 사용 가능함. 함수형 인터페이스 : 하나의 추상메서드를 가지고 있는 인터페이스 자바 API의 함수형 인터페이스는 Comparator와 Runnable등이 있음. Predicate java.util.function.Predicate 인터페이스는 tes.. 2023. 5. 8. 이전 1 2 3 4 5 ··· 12 다음