전체 글 32

패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_Java 과제 2

Java 심화 과제 2 Java 심화 과제 1 에 이어 이번 과제도 간단하게 요약하자면 카카오 Open API를 활용하여 사용자로부터 책 제목을 입력받고 JSON 데이터로 받은 책의 정보를 파싱하여 DB에 저장하고 테이블 리스트를 조회하는 가벼운 과제입니다. 이번에 작업 환경은 과제 1 때와는 다르게 웹으로 구현하였습니다. 기술 스택 및 구조: Java, Spring Boot, Gradle, Mysql, 헥사고날 아키텍처 핵심 코드를 간략하게 보겠습니다. 1. RestTemplate을 활용하여 Kakao Open API를 호출하여 책 정보에 대한 JSON 데이터를 받아옵니다. 2. 데이터베이스에 저장하고 책 제목을 기준으로 오름차순으로 정렬하여 조회합니다. 결론 DB 저장과 조회 과정을 제외하고 심화 과..

패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_Java 과제 1

갑자기 부트캠프? 계기 모든 것에 있어서 기본기는 백 번 말해도 부족하지 않다고 생각한 저는 이직을 준비하는 과정 중 초심으로 돌아가 기본기도 추가로 다지면 좋겠다고 생각을 하고 있었습니다. 그러던 중 마침, 패스트캠퍼스 부트캠프 커리큘럼이 저에게 도움이 될 것 같아 보였습니다. 자바, 스프링 관련 시험과 면접을 통하여 [패스트캠퍼스 X 야놀자] 백엔드 개발 부트캠프에 지원하였으며 '야놀자'라는 기업이 연계 되어서 그런지 높았던 경쟁률을 뚫고 운이 좋게 합격하게 되면서 합류하게 되었습니다. 사실 저는 경력자로써 남들과 같이 기본기에 모든 시간을 투자할 수 없다는 것을 잘 알기에 경력자로써 필요한 개인 공부를 메인으로 가져가고 과제나 중요한 교육들만 서브로 가져가고 있습니다. Java 심화 과제 1 202..

[4월 23일] 오늘의 주제: DB

Transaction isolation level 종류 및 특징 READ UNCOMMITTED (레벨 0) SELECT 문장이 수행되는 동안 해당 데이터에 Shared Lock이 걸리는 계층 각 트랜잭션에서의 변경내용이 commit 이나 rollback 여부에 상관없이 다른 트랜잭션에서 값을 읽을 수 있다. Dirty Read 발생! 정합성에 문제가 많은 격리 수준이기 때문에 사용하지 않는 것을 권장 READ COMMITTED (레벨 1) SELECT 문장이 수행되는 동안 해당 데이터에 Shared Lock이 걸리지 않는 계층 트랜잭션이 수행되는 동안 다른 트랜잭션이 접근할 수 없어 대기하게 됨 Commit이 이루어진 트랜잭션만 조회 가능 Oracle, SQL Server에서 기본으로 사용 Non-R..

[4월 16일] 오늘의 주제: 네트워크

Q. 개발자로서 DNS를 구현한다면 어떤 자료구조를 선택하고 어떤 프로토콜을 선택할 것 같은지? A. Map Q. 맵으로 자료구조를 선택하였을 때 유저의 DNS 쿼리가 들어온다면 처리하느데 소요되는 시간 복잡도는? A. 최선의 경우 O(1) 이고 해시충돌이 일어날 경우 O(N) Q. 그럼 해시 충돌은 왜 일어날까요? A. 먼저 해시 함수란 임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수 해시테이블은 해시함수(key값을 mod 연산)를 사용해서 나온 해시값을 key값으로 하고 데이터를 Value로 하여 테이블 형태로 만든다.여기서 해시값을 key값으로 해시 테이블에 insert 하려고 보니까 이미 데이터가 있는 경우를 해시충돌 이라고 한다. Q. 그렇다면 충돌을 해결하기 위한 ..

그놈의 N + 1 문제

즉시 로딩(FetchType.EAGER) @ManyToOne @OneToOne 지연 로딩(FetchType.LAZY) @OneToMany @ManyToMany JPA N + 1 문제란? 1번의 쿼리를 날렸을 때 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것을 의미한다.  1:N 또는 N:1 관계를 가진 엔티티를 조회할 때, JPA Repository를 활용해 인터페이스 findAll() 호출 시 Fetch EAGER 전략으로 데이터를 조회하는 경우 Fetch LAZY 전략으로 데이터를 가져온 이후에 연관 관계인 하위 엔티티를 다시 조회하는 경우 N + 1 문제가 발생한다. 기본 전략을 LAZY로 가져가고 필요 시 EAGER를 사용하는 방향으로 개발하던 중 2번과 같은 상황이 나에게도 드디어! ㅎ..

Development/JPA 2023.04.10

모든 개발자를 위한 HTTP 웹 기본 지식

OSI 7 계층과 인터넷 프로토콜 스택의 4 계층 TCP의 특징은 가상 연결, 데이터 전달보증, 순서 보장이 있으며 소켓이 연결됐다 라는것은 사실은 물리적으로 진짜 연결된 것이 아닌 논리적으로만 연결된 것이다. UDP의 특징은 IP와 같은데 + PORT, + 체크섬 정도만 추가된 단순하고 빠른 프로토콜이며 HTTP3에서 사용중이다. HTTP의 특징은 비연결성, 클라이언트 서버 구조, 무상태가 있으며 Stateless 하기 때문에 서버 확장성이 높음(스케일 아웃) HTTP 메서드의 속성 안전(Safe Methods): 호출해도 리소스를 변경하지 않는다. ➪ GET 멱등(Idempotent Methods): 몇번을 호출하든 결과가 똑같다. ➪ GET, PUT, DELETE 캐시가능(Cacheable Meth..

Development/Network 2023.04.08