분류 전체보기

프로그래머스 데브코스

프로그래머스 데브코스 18일차 - 예외처리 트러블 슈팅

먼저 해당 글을 작성하게 된 계기는 예외처리 테스트를 하던 와중에 assertThatThrownBy()로 예외가 발생하지 않는 경우를 처리를 하려고 했는데, 처리가 되지 않아 해당 내용에 대해 자세하게 알아보게 되었다. 그 과정에서 동료와 얘기를 나누면서 좋은 자료를 공유해주어서 정리하게 되었다. 설정 spring-boot-starter-web 을 선택했다면 spring-boot-start-test 의존성이 추가되어있다. 최근 버전은 Junit5가 기본적으로 되어 있어서 바로 Junit5를 사용할 수 있으나, 자바 프로젝트에서는 바로 주입이 안되어 있으므로 따로 설정이 필요하다. Maven Repository: org.junit.jupiter » junit-jupiter-api 해당 레포지토리에서 Jun..

프로그래머스 데브코스

프로그래머스 데브코스 17일차 - 자바 타입추론 var

타입 추론 var 타입추론은 개발자가 변수의 타입을 명시적으로 적어주지 않고도, 컴파일러가 알아서 이 변수의 타입을 대입된 리터롤로 추론하는 것. JDK 10에서 type-inference(타입 추론)이 적용되었다. JDK 10 이전과 이후의 차이를 한 번 살펴보자 String str = "Hello"; // JDK 10 이후의 var 적용 var str = "Hello"; 그리고 컴파일러는 var을 String으로 컴파일 단계에서 타입 추론을 해준다. 하지만 var은 아무때나 사용 할 수 있는 것은 아니다. 💡 Var은 초기화 값이 있는 지역변수로만 선언이 가능하다. 즉, var은 멤버변수, 파라미터, 리턴 타입으로는 사용이 불가능하다는 것이다. 혹시나 멤버변수를 final을 사용해서 var을 적용하면..

프로그래머스 데브코스

프로그래머스 데브코스 2주차 회고

프리팀 기간이 이번 주를 기준으로 종료되게 되었다. 프리팀을 정말로 잘 만나서 앞으로 공부를 해나가야 할 방향성이라고 해야 할까? 정말 얼마만큼 공부를 해야 될지에 대해서 메타 인지를 할 수 있는 좋은 시간이었다. 못한 점 잘한 점 보다 못한 점 부터 먼저 파악을 해야겠다. 전반적으로 정말 바쁜 시간을 보냈지만, 나 자신과 지키지 못한 약속이 있다. 일일 TIL을 꼭 적기로 하였는데, 적지 못하였다. 정말로 시간을 쪼개고 쪼개어서 한다면 솔직히 가능한 영역이었다고 생각했지만 TIL보다 다른거에 더 치중해야겠다고 생각한 개인의 판단이다. 하지만, 이건 핑계일 수 있고 어떻게 TIL을 효율적으로 써내려갈지에 대해서 고민을 할 필요가 있는 것 같다. 현재 방향성은 일단 전반적으로 먼저 하루 공부한 내용에 대해..

프로그래머스 데브코스

프로그래머스 데브코스 12일차 - 테코톡 발표 & EC2 spot Instance 구매 옵션

클라우드와 AWS에 대해서 학습을 하였다. 그 과정에서 EC2 의 구매옵션에 대해서도 다루게 되었는데 종량제 방식인 On-demand 옵션, Reserved 옵션, Spot Instance에 대해서 배우게 되었다. 하지만 여기서 기존의 알고 있던 Spot Instance를 잘 못 알고 있었기에 다루게 되었다. Spot Instance Spot Instance 방식은 사전 약정없이 사용 할 수 있는 EC2 Instance 이다. 위의 사진처럼 스팟 인스턴스는 사용자 제시 가격(입찰가격)을 정해놓고 저렴할 때 이용하는 방식이다. 일반적으로 On-Demand 방식 대비 80 ~ 90%의 저렴한 가격으로 구매를 할 수 있다. 하지만 여기서 내가 잘 못(?) 이라기 보다 얕게 알고 있던 개념으로 Spot Inst..

프로그래머스 데브코스

프로그래머스 데브코스 11일차 - 싱글톤 패턴

화요일 날 진행했던, 팩토리 패턴과 싱글톤 패턴 발표자료 중 싱글톤 패턴의 발표 자료이다! 싱글톤 패턴 : 애플리케이션에 단 하나의 유일한 객체를 만들기 위한 패턴 싱글톤을 사용해야 하는 이유 위 처럼 각 각 독립된 기능을 수행하는 클래스를 클라이언트 각각이 클래스를 생성해서 사용하게 되면, 메모리 누수가 발생하게 됩니다. 물론 새롭게 생성된 객체들이 GC 를 통해서 자동으로 비워지기는 할 테지만 잦은 GC는 Stop the World 를 발생시켜 프로그램 사용에 있어서 느려짐을 겪을 수 있습니다. 또한, 만약 해당 클래스를 생성하는데 발생하는 리소스가 많다면 이는 더 심하게 발생할 것입니다. 따라서, 싱글톤은 한 번 생성하고 돌려쓰는 용도로 사용을 하는 방식이고 싱글톤 방식을 채택한다면 다음과 같아집니..

프로그래머스 데브코스

프로그래머스 데브코스 10일차 - 팩토리 패턴

매일 매일 적었어야 했는데..! 발표에 과제에 너무나도 치였다..! 몰아적는건 좋지 않지만 그래도 했던 기록은 남기고자 한다. 다음 날 있을 디자인 패턴 스터디의 발표 자료를 준비했다! 해당 발표 자료를 올리고자 한다. 기본적으로 간단한 팩토리는 패턴으로 사용하지 않고 관용구로 사용한다고 하는데, 팩토리 메서드 패턴과 추상 팩토리 패턴의 기본적인 틀은 Simple Factory를 따라가는 것 같아서 위와 같이 표현을 했다. Simple Factory 자체는 프로그래밍에서 자주 쓰이는 관용구이고, 디자인 패턴은 아닙니다. 하지만 같은 개념을 확장한 Factory Method와 Abstract Factory는 패턴입니다. 팩토리 : 주로 객체 생성을 처리하는 클래스를 의미합니다. 팩토리 패턴은 왜 사용하는가..

프로그래머스 데브코스

프로그래머스 데브코스 9일차 - Static Inner 클래스를 사용해야 하는 이유, Optional orElse, orElseGet의 차이

static 클래스 및 변수 메소드등이 메모리에 적재되는 시점과 Static Inner 클래스를 사용해야하는 이유 여러 책에서 static 클래스가 메모리에 적재되는 시점은 클래스 로더를 통해서 Application이 실행 될 때 메모리에 올라가는 것으로 이해하는 경우가 많다. 하지만 이 경우는 final 키워드를 사용하여 Constant Pool 에서 관리되는 경우에 해당하고, 실제 static 키워드를 사용한 inner 클래스는 일반적인 클래스와 동일하게 생성자 혹은 블럭을 통해 생성되거나 static 변수 혹은 메서드등이 사용되는 시점에 최초로 메모리에 적재되는 것이다. (JDK8 이전에는 사용되지 않는 static 변수 혹은 메서드, 컬렉션 등이 GC 대상에 포함되지 않아 memory leak가 ..

프로그래머스 데브코스

프로그래머스 데브코스 8일차 - Null 제거와, Pattern 객체 캐싱

오늘은 코드 리뷰를 해주신 것에 대해서 리팩토링을 진행하는 것에 상당히 많은 시간을 할애했다. 먼저 기존의 코드에서 null 을 제거하는 것 부터 진행하기로 했다. Optional을 이용한 null 제거 리팩토링 하기 전의 코드는 다음과 같이 구성이 되어있다. private MenuType makeMenuType(String inputMenuNumber) { MenuType menu = null; try { menu = MenuType.findMenuType(inputMenuNumber); } catch (WrongInputMenuException e) { Console.printError(e.getMessage()); } return menu; } private String calculate(Strin..

Bombo_
'분류 전체보기' 카테고리의 글 목록 (4 Page)