Backend

· Backend/Java
서론이제 실제 콘솔 애플리케이션이 동작하도록 실제 View와 Controller의 결합을 해보도록 하겠습니다.View실제 사용자가 값을 입력하고, 로직이 실행된 뒤의 결과를 출력하기 위한 계층으로 우리는 콘솔 애플리케이션이니 입력은 Scanner 를 통해 받고, 출력은 System.out.println 을 통해 합니다.public static int inputGameRecordId() { System.out.println("게임 기록을 조회할 ID를 입력해주세요."); return scanner.nextInt();}입력 받는 값은 게임 기록을 조회할 ID입니다.단순히 이걸 입력 받을 수 있는 메서드를 만들어서 처리해주면 됩니다.package baseball.vi..
💡 원본글Top 10 REST Interview Questions for Java and Spring Developers Top 10 REST Interview Questions for Java and Spring DevelopersThese are the best REST Interview Questions for Java and Spring developers to prepare quicklymedium.com 여러분 안녕하세요. Java, Spring 개발자 면접을 준비하고 있으며 Spring REST 면접 질문을 찾고 계신다면 이 글에 잘 찾아왔습니다.이전에, 저는 Spring 개발자 면접을 위해 준비해야 할 13가지 필수 주제와 Spring Framework, Spring..
· Backend/Java
서론지금까지 우리는 요구사항 분석과 테크스펙 작성을 통해 전체적인 흐름을 살펴보았으며, 도메인, VO, 일급컬렉션 등을 작성하여 객체지향설계에서 가장 중요한 객체를 직접 구현해보았습니다.그 과정에서 우리는 테스트 코드를 추가하여 안정적으로 우리가 설계한 대로 동작하는지, 또한 요구사항 정책에 따라 정상적으로 동작하는지를 확인하보았습니다.이번 Step2의 목표는 기록 조회가 목표입니다.다른 것 보단, 기록을 조회를 중점으로 설명합니다.getGames(전체 기록 조회) / getGame(단건 기록 조회)사용자 스토리상 플로우를 생각한다면, 아래와 같습니다기록을 전체 조회해서 각 기록에 대해서 간단한 정보를 확인합니다.[1] / 시작시간: / 종료시간: / 횟수: [2] / 시작시간:..
· Backend/Java
서론 이전 장에서는 숫자야구게임의 정책문서를 작성하며, 테크스펙을 작성해 개발시 문제가 될 영역들을 체크해봤다. Step2에서 필요한 도메인 로직을 추가하고, Game이라는 도메인을 만들어서 하나의 Game에 도메인 관리를 하는 것을 목표로 리팩토링 및 구현을 해보겠습니다. 이번 미션부터는 인자, 멤버 변수, 지역 변수 등에 최대한 final을 붙여 불변을 유지하는 것이 목표입니다. 또한 Value Object를 record로 변경합니다. Java17부터는 record를 지원합니다. Value Object인 경우엔 record가 어울리는 형태이기 때문에 record로 변경해서 진행합니다. Game Game의 모든 정보를 가지고 있습니다. 유니크한 값으로 구분할 PK, 게임에 할당된 Computer, Pl..
· Backend/Java
💡 원본글 Five API Performance Optimization Tricks that Every Java Developer Must Know Five API Performance Optimization Tricks that Every Java Developer Must Know Why is your API response so slow? Maybe you need to solve these problems. medium.com 왜 당신의 API 응답이 느린가요? 이런 문제를 해결해야 할 필요가 있을수 있습니다. 백엔드 개발자로서, 프론트엔드 웹에 데이터를 제공하기 위한 HTTP REST API이든, 내부에서 사용을 위한 RPC API이든 우리는 항상 다양한 API들을 작성하고 있습니다. 이 API..
· Backend/Java
서론 Java의 학습을 위해, 미션 학습을 진행하고 있습니다. 첫번째 미션으로는 “숫자야구게임”을 진행해보려고 합니다. Step1을 종료하고, Step2로 넘어갈 예정입니다. Step1의 글을 작성하고 정리하면서 아쉬웠던 부분들을 Step2에서 같이 리팩토링을 진행해볼 예정입니다. 가장 중요한건 확장가능한 설계와 도메인 모델 정의, 테스트 코드 작성을 통한 안정적인 애플리케이션 구현을 가지고 해당 미션을 진행해보려고 합니다. 의도적으로 꼼꼼한 테스트 코드와 원시값 포장을 진행하였습니다. 해당 부분은 참고해주시면 좋을거 같습니다. 미션 요구사항 숫자야구게임이란? 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임입니다. 컴퓨터와 싸우는 게임으로 컴퓨터가 뽑은 랜덤의 숫자를 뽑을수 있도록 합니..
· Backend/Java
서론 이제 실제 콘솔 애플리케이션이 동작하도록 실제 View와 Controller의 결합을 해보도록 하겠습니다. View 실제 사용자가 값을 입력하고, 로직이 실행된 뒤의 결과를 출력하기 위한 계층으로 우리는 콘솔 애플리케이션이니 입력은 Scanner 를 통해 받고, 출력은 System.out.println 을 통해 합니다. import java.util.Arrays; import java.util.List; import java.util.Scanner; public class InputView { private static final Scanner scanner = new Scanner(System.in); private static final String INPUT_DELIMITER = ""; pri..
· Backend/Java
서론 지금까지 우리는 요구사항 분석과 테크스펙 작성을 통해 전체적인 흐름을 살펴보았으며, 도메인, VO, 일급컬렉션 등을 작성하여 객체지향설계에서 가장 중요한 객체를 직접 구현해보았습니다. 그 과정에서 우리는 테스트 코드를 추가하여 안정적으로 우리가 설계한 대로 동작하는지, 또한 요구사항 정책에 따라 정상적으로 동작하는지를 확인하보았습니다. 이제는 실제 숫자 야구게임이 동작하게 되는 큰 흐름을 살펴볼 예정입니다. Factory 메모리적인 성능을 위해 Factory를 만들어서 1~9까지의 Number를 재사용할 수 있게 하는게 좋다. Factory내에는 캐싱할 값들의 Collections이 있습니다. 해당 List에는 1~9까지의 Number 객체 9개가 있습니다. 이후에 내부의 값이 변경되지 않도록 불변..
· Backend/Java
원본글: https://dzone.com/articles/memory-hogging-enumvalues-method Memory-Hogging Enum.values() Method - DZone In this article, we'll discuss why the Java enum method has a tendency to hog memory, negatively impacting performance, and methods for preventing this. dzone.com Java Enum도 주의해야 할 점이 있습니다. 메모리를 잡아먹는 상황과 이를 막는 방법에 대해 이야기 해보겠습니다. 저는 Java Enum의 팬입니다.J2SE 5에서 Enum 도입되기까지 기다림이 있었지만, 출시되었을 때 C..
· Backend/Java
서론 이전 장에서는 숫자야구게임의 정책문서를 작성하며, 테크스펙을 작성해 개발시 문제가 될 영역들을 체크해봤다. 이번 장에서는 도메인을 실제 구현해볼 예정이다. Number BaseBall Game에서 사용할 숫자를 Value Object로 정의내린 클래스입니다. 일단 Validate가 필요합니다. 이전 장에서 정책 문서에서 보면 실제 숫자는 1~9의 값만 가능합니다. 실제 그 숫자가 아닌 다른 값이 들어온다면 예외가 발생하여 버그를 방지하는 코드를 작성하였습니다. 또한 Value Object이기 때문에 실제 value가 같으면 해당 객체는 같은것으로 보는것도 중요합니다. 해당 게임에선 주소값이 같은게 같은 Number가 아니라 실제 숫자가 같은지를 보고 판단합니다. 그러기 때문에 eqauls & has..
Seyun(Marco)
'Backend' 카테고리의 글 목록