Spring Projcect/배당금 프로젝트 8

Chanpter 08. 기술 면접 준비

Java 객체 지향의 3가지 특징은? GC(Garbage Collector)란? STW(stop the world) Spring 스프링 프레임워크의 장점과 단점 DI? AOP란? Thread thread와 process 의 차이는? 스레드 메모리 구조는? 스레드 간 공유되는 공간과 공유되지 않는 공간 ? 메서드 내에서 선언된 변수가 위치하는 공간 context switching Data Structure Hash hash 함수 hash 컬렉션 hash 충돌, 비둘기집 원리 시간 복잡도 ArrayList vsLinkedList DateBase index의 어떤 구조 때문에 빠르고 어떤 한계가 있는지 transaction HTTP Rest API Status Code POST vs GET DELETE, PU..

Chapter 07. README

7.1 MD(Mark Down) 문법 MarkUp 언어(ex) HTML)보다 쉽고 간단하게 쓸 수 있는 언어 링크나 이미지 삽입 가능 '*' 또는 '-' 을 이용하면 리스트 목록 기호를 붙일 수 있다. 강조 굵게: **강조할 문구**, __강조할 문구__ 기울게: *강조할 문구*, -강조할 문구- 하이퍼링크: [링크 연결할 문구](링크 주소) 이미지: ![이미지 이름](사진.경로) 아래처럼 표 작성 가능 출처 - https://zero-base.co.kr/ 제로베이스 - 누구나 취업하는 가장 합리적인 취업 스쿨 코딩 부트 캠프 개발자, 데이터 사이언티스트, 마케터, PM, 디자이너 등 제대로 공부하고 확실하게 취업하세요. 당신의 삶의 전환점이 될 제로베이스 스쿨입니다. zero-base.co.kr

Chapter 06. 완성도 높이기

6.1 예외 처리 Ex) 존재하지 않는 회사명을 조회하는 경우 http://localhost:8080/finance/dividend/3M Note) 실행 결과 - 500 에러 (서버 에러) 그런데, 존재하지 않아서 나는 오류이므로 이는 400번 대의 에러가 더 적절하다. 따라서, 새로운 예외를 만든다. Ex) 예외 구현하기 예외 클래스를 새로 만든다. package com.dayone.exception; public abstract class AbstractException extends RuntimeException { abstract public int getStatusCode(); abstract public String getMessage(); } NoCompanyException public c..

Chapter 05. 회원 관리

5.1 회원 가입 Ex) 보안 관련 메서드, 클래스 추가 implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1' 권한 정보를 만든다. package com.dayone.model.constants; public enum Authority { ROLE_READ, ROLE_WRITE } security 사용자가 여러 권한을 가질 수 있으므로 List 타입으로 roles를 만든다. 스프링 시큐리티를 사용하기 위해 UserDetails를 구현한다. package com.dayone.model; import java.util.Collection; import java.util.List; import java.util.stream.Collec..

Chapter 04. 서비스 구현

4.1 배당금 저장 구현 계획 input으로 저장할 회사의 ticker(증권 거래소에서 변동하는 시세를 통보, 수신하는 주식 가격 표시기)를 받는다. 이미 저장된 회사의 ticker 인 경우, 오류 처리 받은 ticker 의 데이터를 야후 파이낸스에서 스크래핑한다. 스크래핑한 데이터가 야후 파이낸스에서 조회되지 않는 경우, 오류 처리 스크래핑한 회사의 메타 정보와 배당금 정보를 각각 DB에 저장한다. 저장한 회사의 메타 정보를 응답으로 내려준다. Ex) 엔티티, result 클래스 생성 model 패키지 아래에 company 클래스를 생성한다. 엔티티와 다르게 id 없이 ticker, name만 있다. 엔티티와 모델의 역할을 구분한다. package com.dayone.model; import lombo..

Chapter 03. 서비스 설계

3.1 API 설계 (1) 특정 회사의 배당금 조회 GET 배당금 조회는 배당금 프로젝트에서 핵심이자 기본적인 서비스 모바일 앱에 저장이되어 있는 게 아니라 사용자가 해당 데이터에 접근할 때, 배당금이 조회되도록 한다. 응답은 Json 형태로 줄 예정 - 회사명, 배당금(날짜, 금액) 배당금 검색 - 자동 완성 기능 GET 키워드 기준으로 회사 이름을 조회하는 기능 3.2 API 설계 (2) 관리자 API 배당금 저장 POST /company { ticker: “GOOD” } 배당금 삭제 DELETE /company?ticker=GOOD DELETE를 request body가 아닌 request parameter로 넘겨주는 이유는? body에 넘겨줄 수도 있기는 한다. POST에는 request body..

Chapter 02. 스크래핑(Scraping)

2.1 스크래핑(Scraping)이란? 스크래핑(scraping)이란? 웹 스크래핑은 HTML문서를 받은 후, 문서를 파싱(parsing)해서 필요한 데이터만 추출하는 것을 말한다. 자바보다는 파이썬으로 스크래핑을 많이 이용한다. 요청 수가 몰리는 경우, 요청을 받는 서버는 부하가 걸릴 수밖에 없다. DDOS 공격이란 서버에 부하를 주면서 트래픽을 폭주 시켜서 서버가 다운되도록 하는 악의적인 공격 방식이다. DDOS(Distribited Denial Of Service, 분산 서비스 거부 공격): 시스템을 악의적으로 공격해서 해당 시스템의 리소스를 부족하게 해서 사용하지 못하도록 하는 공격을 말한다. ex) 대량의 데이터 패킷을 통신망으로 보내고 특정 서버에 수많은 접속 시도를 하는 등 다른 이용자가 정..

Chapter 01. 프로젝트 환경 설정

1.0 소개 주식(stock): 회사의 자본을 구성하는 단위 기업의 자본금: 1주당 액면가 * 발행한 주 수 배당금: 회사의 이익을 주주들에게 배부하는 금액 기술 스택 Spring Boot Java JPA H2 Redis Jsoup Docker 1.1 환경 설정 gradle 7.2 version Java 11 "어노테이션 처리 활성화"를 체크한다. 어노테이션을 추가했을 때 사용가능하도록하는 기능이다. build.gradle 파일 plugins { id 'org.springframework.boot' version '2.5.6' id 'io.spring.dependency-management' version '1.0.13.RELEASE' id 'java' id 'war' } group = 'com.exam..