1. 다형성의 기본 개념다형성은 객체 지향 프로그래밍의 핵심 개념 중 하나로, "많은 형태를 가진다"는 의미를 가지고 있다. 다형성을 통해 하나의 Interface나 Method가 여러 다른 구현을 가질 수 있다.2. 다형성의 주요 유형a) 컴파일 타임 다형성 (정적 바인딩)- Method 오버로딩을 통해 구현됨- 동일한 이름의 Method가 다른 매개변수를 가질 수 있다- 컴파일 시점에 어떤 Method가 호출될지 결정됨b) 런타임 다형성 (동적 바인딩)- Method 오버라이딩을 통해 구현됨- 부모 클래스의 Method를 자식 클래스에서 재정의- 실행 시점에 어떤 Method가 호출될지 결정3. 메소드 오버로딩 (Method Overloading)- 같은 Class 내에서 동일한 이름의 Method를..
요약Class(클래스): Object를 만들기 위한 설계도. 객체의 상태(Field)와 행동(Method)를 정의한다.Instance(인스턴스): Class의 설계도를 바탕으로 생성된 실제 객체.Object(객체): Class에 의해 정의된 Instance, 상태와 행동을 가지며 특정 클래스의 Instance이다.1. Class (클래스)Class는 Object를 생성하기 위한 설계도에 빗대어 설명할 수 있다.Class는 객체의 상태(Field)와 행동(Method)을 정의한다.즉, Class는 특정 타입의 Object가 가져야 할 Attribute와 Method를 정의하는 틀이 된다. 자동차를 모델링을 예를 들면 자동차 클래스에는 차의 속도, 색상, 제조사와 같은 Attribute(Field)와 가속,..
Database는 무엇인가?프로젝트를 진행하면서 필수적으로 사용해야 하는 Database에 대해 알아보려고 한다. 우선 정의는 아래와 같다데이터베이스(database, DB)는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다.데이터 베이스는 우리의 일상생활과 밀접 연관이 있다. 예시로 SNS 활용, 대중교통 기록, 은행업무 등이 있다. 예시와 같이 데이터베이스는 현대 사회의 거의 모든 분야에서 필수적인 요소로 자리 잡고 있다. 데이터베이스를 사용하기 전 특징과 다양한 기본지식이 필요하므로 기본개념과 유형에 대해 알아보도록 하자. DB의 기본 개념데이터베이스는 단순히 데이터를 저장하는 것 이상의 중요한 목적을 가지고 있다.주된 목적은 데이터의 무결성을 유지하고, 중복을 최소..
동시성 문제?여러 스레드가 동시에 같은 리소스에 접근할 때 발생할 수 있는 문제를 의미한다.Spring Boot(Java) 환경 에서 발생하는 이유Java는 멀티 스레드 환경이므로 여러개의 요청이 재고의 값을 변경하려고 할 때, 정상적으로 변경되지 않는 문제가 발생한다.@SpringBootTest@ActiveProfiles(profiles = "test")class ProductStockServiceTest { @Autowired private ProductStockService stockService; @Autowired private ProductStockRepository stockRepository; @Autowired private ProductRepository..
프로젝트 개선 사항1. 사용자 요청 Route 필요프로젝트에 MSA 아키텍처를 적용하면서 사용자가 각 Service EndPoint에 직접 요청을 해야함.Service 트래픽 증가를 Scale-Out 해결할 계획. 따라서 Service의 인스턴스가 증가하면 해당 Service의 EndPoint를 전부 알고 있어야 하고 변동 내역을 설정에 추가해야 하는 불편한 부분 발생.2. JWT 유효성 검증 로직 중복Service가 분리되면서 로그인 사용자를 User Service에서 JWT로 관리 하는 중. User Service 외 인증이 필요한 부분에 Token을 검증해야 하는 로직이 필요함.결론Spring Gateway를 선택한 이유Spring 생태계에 적합: Spring Cloud Gateway는 Spring..
이번 주 항해 취업 리부트코스에서 내가 구현한 기능은 무엇인가요?1. Order 기능 구현2. 기존 Monolith Architecture에서 MSA로 전환하기 위한 Spring Cloud Gateway, Eureka 도입해당 기능을 구현하기 위해, 어떤 기술적 의사결정을 거쳤나요? 1. Order에는 Product, Payment ... 등 기존 Service 기능을 가져와서 사용하게 되는데, Order라는 기능에 대해 구현해 본 경험이 없어서 고민을 오래했던 것 같다. 2. Service를 분리하게 된다면 각 서버에 배포가 예상된다.2-1. 각 Service간 통신을 원활하게 하기 위해 Spring Gateway, Eureka를 선택하였다. 위 기술들별로 각각의 장단점이 있다면 무엇인가요?2. Spr..
항해 취업 리부트코스 커리큘럼에 있는 프로젝트 주차가 진행되었다. 프로젝트를 진행하기에 앞서 3가지의 시나리오가 주어졌는데 내가 선택한 시나리오는 예약구매 이다.1주차 구현회원이메일 인증 기능 구현 (Google SMTP, Redis TTL)회원 가입 기능회원 정보 수정로그인 & 로그아웃JWT 로그인 기능 구현advanced 기능에 전체 로그아웃 기능을 구현하기 위해서 기존에 발급한 access token은 blacklist에 추가하여 관리하게 되었다.다만 token을 server에 저장한다면 session과의 차이점이 없다고 생각이 들었다.token 자체에 권한, 필요한 정보를 담고 있어서 저장소를 거치지않고, 값을 사용할 수 있는 점이 더 나아보여서 선택하였다.Spring Security 적용 및 f..
우리는 다양한 사이트를 방문하다 보면 아래와 같은 알림을 받을 때가 있다. 사이트에서 Cookie에 대한 내용은 2가지만 설명하고 넘어가겠다.해외 사이트에서 유독 물어보는 이유는 유럽 연합의 GDPR(General Data Protection Regulation) 때문이다.법적 규제로 사용자의 개인 데이터를 수집하기 전 동의를 얻는 과정이다.개인 정보 보호 : 쿠키는 사용자의 방문 기록, 로그인 정보 등등에 대한 내용을 저장할 수 있다.2번째 내용이 이 글의 중요한 주제이므로 설명하자면,Cookie란 무엇인가?정의 : 쿠키는 웹 브라우저에서 저장되는 작은 데이터 파일이다. 서버가 사용자의 브라우저에 전송하며 이후 사용자가 재 방문하였을 때 쿠키에 담긴 정보를 다시 서버로 전송할 수 있다. 그렇다면 왜 사..
Heap, Hash Table.오늘 강의에서 Heap의 특성과 Priority Queue, Hash Table에 대해 학습하였습니다. 간혹 알고리즘 문제에 최소값, 최댓값을 출력해야하는 문제들이 있었는데 우선순위 Queue를 사용하면 오늘 주어진 문제를 해결할때 조금 더 수월하지 않았나 하는 생각이 들었습니다. 다른 문제에 적용하기도 좋아보였고 자료구조를 알면 알수록 문제풀이를 보는 시야가 더 넓어지는것 같아서 좋습니다.오늘의 질문Q. 오늘 진행된 강의에서 학습한 내용은 무엇인가요?A. Heap과 Hash Table에 대해 학습하였습니다. 특정 상황에서 사용할 수 있는 우선순위 Queue와 Hash 형식을 가지는 자료구조를 사용하여 문제풀이에 걸리는 시간을 단축할 수 있었습니다. 👍항해99 취업 리부트..