[프로그래머스] 서버 증설 횟수 -java
·
CodingTest/programmers
문제 설명 당신은 온라인 게임을 운영하고 있습니다. 같은 시간대에 게임을 이용하는 사람이 m명 늘어날 때마다 서버 1대가 추가로 필요합니다. 어느 시간대의 이용자가 m명 미만이라면, 서버 증설이 필요하지 않습니다. 어느 시간대의 이용자가 n x m명 이상 (n + 1) x m명 미만이라면 최소 n대의 증설된 서버가 운영 중이어야 합니다. 한 번 증설한 서버는 k시간 동안 운영하고 그 이후에는 반납합니다. 예를 들어, k = 5 일 때 10시에 증설한 서버는 10 ~ 15시에만 운영됩니다. 하루 동안 모든 게임 이용자가 게임을 하기 위해 서버를 최소 몇 번 증설해야 하는지 알고 싶습니다. 같은 시간대에 서버를 x대 증설했다면 해당 시간대의 증설 횟수는 x회입니다. 모든 게임 이용자를 감당하기 위해 최소 7..
[Spring] Enum에 i18n 적용하는 방법
·
Framework/Spring
부트캠프 과제 中 트러블슈팅 과정 작성 글일정 관리 앱 서버 ver.2  ※ 이용 방법만 필요하면 목차에서 [구현 과정] 클릭    💡트러블 슈팅 1. 문제Exception을 처리할 Enum을 만들 때 message_ko와 message_en을 한번에 같이 전달하고 있었다.USER_NOT_FOUND(HttpStatus.NOT_FOUND,"해당 id를 찾을 수 없습니다.", "The ID cannot be found.")   2. 원인다국어처리를 지원하는 i18n에 대해서 이야기를 들었고, 이 방법을 이용하면 사용자가 설정한 언어에 따라서 그에 맞는 메세지가 전달할 수 있다는 방법을 알았다. 이 방법을 이용하기 위해서 i18n에 대해서 알아보았지만, Enum에서 이 값을 전달하기 위해서는 추가 설정이 필..
[Spring] try-catch에서 SQLException이 잡아지지 않을 때 해결
·
etc/error
부트캠프 과제 中 트러블슈팅 과정 작성 글일정 관리 앱 서버 ver.2    1. 문제Spring Data Jpa 실습 중 [회원가입]을 시도하는 부분에서 email을 Unique로 지정해 가입을 하려고 했다.만약 같은 email로 가입을 시도하면, 이미 존재하는 email이라는 메세지를 전달하려고 했지만 그 예외가 잡히지 않았다.   2. 원인 java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '_@email' for key 'user.UKob8kqyqqgmefl0aco34akdtpe'  분명 같은 email로 가입을 시도하면 SQLIntegrityConstraintViolationException 예외가 뜬다.가입 시도를 위해 jp..
[Spring] Global Exception Handler에서 Enum 사용하기
·
Framework/Spring
부트캠프 과제 中 트러블슈팅 과정 작성 글일정 관리 앱 서버 ver.2  ※ 이용 방법만 필요하면 목차에서 [구현 과정] 클릭    💡트러블 슈팅 1. 문제상황마다 Exception을 만들고, Global Exception Handler를 사용하다 Exception Class를 여러 개 만들어야 하는 문제가 생겼다. 상황에 맞는 정확한 이름이 담긴 Exception을 만드는 것이 좋지만, 대부분 접근 권한이나 path입력, null입력 등 유효성 문제에 대한 예외 처리였기 때문에 그 의도는 모두 같았다. 발생되는 원인만 다른 것 뿐. 2. 원인문제가 발생될 시점에서 if로 확인하고, throw new로 상황에 맞는 Exception을 만들어 발생시키고 있었지만, 최종 응답은 같은 모양이었다. 응답에 필..
[JPA] persist(), flush() 그리고 commit() 어떻게 DB에 반영될까?
·
Database/JPA
영속성[명사] 영원히 계속되는 성질이나 능력.- 국립국어원 표준국어대사전  영속성 컨텍스트 Persistence ContextEntity 객체를 영속성 상태로 관리하는 공간.자바에서 작성된 Obejct를 DB Table에 저장하기 위해 사용한다.  JPA를 공부할 때 만나는 '영속'이라는 말이 있다.영속 상태로 둔다, 영속을 시킨다, 영속성 컨텍스트에 저장한다 … 등등 '영속성'이라는 말은 영원히 계속되는 성질이나 능력이라는 의미를 가지고 있다.말 그대로 DB와 동기화하여 오래 지속 되도록 하는 것이다.   ✔️EntityManagerEntityManager를 통해서 Persistence Context에 접근할 수 있다.EntityManager를 사용하는 방법에 대한 설명 글이 아니니 사용하는 방법은 다..
[JAVA] 컬렉션 프레임워크 (Java Collection Framework:JCF) 간단하게 알아보기
·
Language/JAVA
JCF, Jaca Collection Framework자바는 데이터를 저장하는 자료구조와 활용하는 알고리즘을 구조화하여 사용자에게 제공한다. 자료구조가 정의된 인터페이스와 구현하는 클래스로 구분되어 있다. c언어에서 스택을 구현하기 위해서는 직접 push, pop, peek을 만들어야 한다. 하지만 자바를 이용하면 Stack 클래스의 객체를 선언해 push, pop, peek을 가져와 사용할 수 있다.이렇게 제공되는 프레임워크를 JCF라고 한다.    컬렉션 프레임워크 사용의 장점컬렉션 프레임워크는 인터페이스와 다형성을 이용한 객체 지향적 설계를 통해 표준화되어 있다. 자바에서 직접 제공하는 것이기 때문에 안정적으로 사용할 수 있으며 알고리즘을 고성능으로 구현할 수 있다. 재사용이 높고, 사용이 편리하다..
[JAVA] 예외 처리(Exception Handling) 하는 이유와 방법 알아보기
·
Language/JAVA
오류 Error & 예외 Exception프로그래밍을 하다가 오류가 발생했을 때, 회복이 가능한가를 기준으로 오류와 예외로 나눈다.오류 Error일반적으로 회복이 불가능한 문제환경적인 이유로 발생발생하는 경우 회복이 불가능하며 어떤 에러로 종료됐는지 확인할 수 있다.예외 Exception회복이 가능한 문제발생할 수 있는 문제에 대해 대응하는 예외 처리가 가능   예외 종류확인된 예외 Checked Exception컴파일 시점에 확인하는 예외로 특정 문제를 인지하고, 정의해두어서 확인이 가능하다.checked exception은 예외 처리를 하지 않으면 compile error가 발생한다.compile error - 프로그래밍 언어 규칙을 지키지 않았을 때 발생하는 에러, 문법에 맞게 작성미확인된 예외 U..
[자바] 자바 가상 머신, JVM(Java Virtual Machine) 자세히 이해하기
·
Language/JAVA
VM (Virtual Machine) 이란?프로그램 실행을 위해 물리적 머신과 유사한 소프트웨어를 가상 머신이라고 한다. 소프트웨어로 구성된 하드웨어(머신)을 의미한다. 1960년대 중반 처음 개발되어 메인 프레임의 중요한 부분으로 자리 잡았다. 가상 머신을 사용하는 이유는 다음과 같다.격리와 보안 중요도 증가표준 운영체제 보안성과 신뢰성 실패클라우드 컴퓨팅과 같이 많은 사용자가 한 컴퓨터를 공유   JAVA Virtual MachineVM은 프로그램 실행을 위한 소프트웨어 가상 머신, 자바 가상 머신은 자바 실행을 위한 가상 머신으로 생각하면 된다.자바의 실행을 위해서 사용하는 JVM은 어떤 방식으로 동작될까? 먼저 자바는 운영체제에 종속적이지 않다는 사실을 알아야 한다. 자바를 설명할 때 "한번 동작..
[자바/JAVA] HashSet을 사용해서 정렬이 되는 이유 찾아보기
·
Language/JAVA
HashSetHashSet은 인터페이스 Set을 구현할 때 사용하며 HashMap 인스턴스로 Set 자료구조 형식을 나타낸다.Set은 비선형 자료구조로 순서가 보장되지 않고, 중복이 허용되지 않는 특징이 있다.HashSet말고도 TreeSet, LinkedHashSet, SortedSet과 같은 방식을 사용하기도 한다.  순서가 보장되지 않는 Set의 성질자바 컬렉션은 Set을 기본으로 제공한다. Set을 구현하는 방법은 여러가지가 있지만, 각자 성질이 조금씩 다르다. SortedSet과 이를 상속받은 TreeSet은 오름차순으로 정렬이 되고, HashSet을 상속받은 LinkedHashSet은 저장된 순서에 따라서 해시테이블에 저장된다.순서 없이 나오는 Set을 보기 위해 HashSet을 통해서 동작을..