🧐 계산기 과제를 마무리하는데 생겨난 궁금증
·
TIL
Generics의 사용Generics를 사용해서 기존엔 int였던 피연산자 타입을 double로도 받아올 수 있도록 하는 것이 Lv.3의 요구사항 중 하나였다.내가 구현한 내용은 다음과 같다.public class ArithmeticCalculator { private final List result = new LinkedList(); public Double calculate(T firstNum, T secondNum, String operator) { double result = OperatorType.fromSymbol(operator).operate(firstNum,secondNum); setResult(result); return result; ..
[프로그래머스] Lv.2 시소 짝꿍 (Java)
·
알고리즘/문제 풀이
문제https://school.programmers.co.kr/learn/courses/30/lessons/152996 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이이진탐색 이용 우선 몸무게를 오름차순으로 정렬한다.이제 몸무게가 a,b (a2a = 2b (즉 몸무게가 같은 경우, a=b)문제 조건에 의해 시소의 1(m)거리 지점에 앉을 수 없으므로 2a = 2b라고 나타낸 것이다.2a = b3a = 2b4a = 3bweights 배열을 오름차순으로 정렬한 뒤 weights[i]를 하나씩 방문하고, i보다 큰 j에 대해서 weights[i]와 시소 짝꿍이 되는 경우의 수를 만족하는 weights[j..
계산기 과제 : 계산 결과 Lambda&Stream 필터링 조회 구현하기
·
TIL
Lv.3 의 구현사항계산기 클래스의 메서드 calculate의 피연산자로 모든 타입의 숫자를 받아올 수 있어야 한다. (int, double, 양수, 음수)enum 으로 연산자 타입을 관리하고 활용한다.계산기에 저장된 연산 결과를 Lambda & Stream을 활용하여 조건에 맞도록 조회하는 메서드를 구현한다.오늘은 어제 1,2를 구현하면서 대강만 짜놨던 3번 요구사항을 세부 구현해보았다.어제는 아래 코드와 같이 메서드를 하나만 추가해놨었다. public void printResultGreaterThan(Number value) { String str = result.stream() .filter(v -> v > value.doubleValue()) ..
추상클래스 vs 인터페이스, 언제 어떤 것을 사용할까?
·
프로그래밍 언어/Java
추상 클래스`class` 앞 `abstract` 키워드 사용추상 메서드를 포함한 클래스그러나 추상 메서드를 포함하지 않더라도 abstract 키워드를 통해 추상 클래스 처리가 가능하다. ( -> 인스턴스 생성 불가하도록 만들 수 있음)기존 클래스처럼 멤버변수와 메서드, 생성자를 가질 수 있음인스턴스를 생성할 수 없음추상 클래스를 상속받는 클래스는모든 추상 메서드를 구현하여 인스턴스 생성이 가능한 `클래스`가 되거나,모든 추상 메서드를 구현하지 않은 경우 `추상 클래스`가 된다.인터페이스오직 `추상 메서드`와 `상수`만을 멤버로 가진다 ( *default/static 메서드 예외 )모든 메서드는 `public abstract`모든 멤버 변수는 `public static final`인스턴스를 생성할 수 없음..
계산기 과제 : Java Generics, Enum 활용기
·
TIL
구현 요구사항Lv.3 의 구현사항은 아래와 같다.계산기 클래스의 메서드 `calculate`의 피연산자로 모든 타입의 숫자를 받아올 수 있어야 한다. (int, double, 양수, 음수)enum 으로 연산자 타입을 관리하고 활용한다.계산기에 저장된 연산 결과를 Lambda & Stream을 활용하여 조건에 맞도록 조회하는 메서드를 구현한다.오늘은 1과 2를 중점적으로 고민하여 구현하였다.Generics  : 피연산자 타입 확장하기먼저 기존 Lv.2의 계산기 클래스이다.기존의 피연산자 입력으로 0을 포함한 양의 정수만을 받아왔기 때문에 `calculate` 메서드의 피연산자 타입이 int로 지정되어있다.결과 값은 double로 지정되어있는데, 피연산자가 모두 정수여도 나누기 연산 시 실수가 될 수 있기 ..
Java Enum 이놈아
·
프로그래밍 언어/Java
오늘은 Java Enum에 대해서 복습해보았다.되게 신기한게 책에 밑줄이 좍좍 그어져 있는데 마치 새로 알게 된 정보처럼 느껴진다는 것이었다.  ㅠㅠ 떵뇌 인간 그렇지만 이번엔 완벽하게 기억할 것만 같은 느낌인데책에 기억에 없는 밑줄을 그었던 순간에도 이렇게 느꼈을지도 ...그럴지도 ...Enum열거형열거형 데이터란, 서로 관련된 상수들을 묶어서 관리하는 틀 역할을 제공하는 것이다.예를 들어서 월 화 수 목 금 토 일의 내용을 상수로 관리하고 싶다면 다음과 같이 정의한다.// enum 열거형이름 { 상수명1, 상수명2, 상수명3, ... }enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDA..
Java의 예외처리 (함수 너 회피형이야?)
·
프로그래밍 언어/Java
오늘은 Java의 예외 처리에 대해 복습을 해 보았다. 예외를 처리하는 방법Java에서 예외를 처리하는 방법은, try-catch문을 사용하는 것이다.예외가 발생할 수 있는 코드, 즉 예외가 발생한다면 처리를 해주고 싶은 부분을 try 블럭으로 감싸준다.그리고 catch 블럭을 이용하여 각 Exception이 발생할 경우를 처리해준다.만일 예외 발생 여부에 상관없이 공통적으로 수행하고 싶은 작업이 있다면, finally 블럭을 추가하여 적어준다.try { // 여기에 쓰인 코드들에서 예외가 발생한다면 // 해당하는 catch문 블럭이 실행된다.} catch (ArithmeticException e) { // ArithmeticException이 발생한 경우} catch (IllegalArgumen..
잠깐 ! JVM 정리하고 갑시다
·
프로그래밍 언어/Java
오늘부터 Java 강의를 듣고 과제를 수행한다.1~3주차 강의의 내용은 아주 기본적인 내용들이었다.몇몇은 건너뛰기도 하고, 1.5배속으로 훑으면서 가물가물한 부분들은 따로 공부를 진행하려고 메모를 해두었다.그리하여 이제 메모한 내용들을 공부할 시간 ... 먼저 JVM에 대해 정리하고 넘어가자   JVM이란?JVM은 Java Virtual Machine의 줄임말로, Java로 짜여진 코드들을 운영체제에서 실행할 수 있도록 만들어주는 가상의 기기(소프트웨어)이다.자바로 작성된 어플리케이션이 컴퓨터에서 동작하기 위해서는 반드시 JVM이 필요하다.일반적인 다른 어플리케이션이 바로 OS와 상호작용하는 것과 달리 자바 어플리케이션은 JVM과 상호작용하며, JVM이 OS와 상호작용하는 역할을 한다.이 때문에 어플리케..
날아갈랑말랑했던 SQL 문법 복기 (2)
·
TIL
SQL 강의를 마저 들었다 !REPLACE : 글자 대치하기replace(컬럼, 대상 글자, 바뀔 글자) CONCAT : 문자열 합치기concat(합칠 문자열, 합칠 문자열, ...)select concat('[',substr(addr,1,2),']',restaurant_name,' (',cuisine_type,')') "음식점", count(1) "주문 건수"from food_ordersgroup by 1 SUBSTR : 원하는 위치의 글자만 가져오기substr(컬럼, 시작 인덱스, 가져올 글자 수)시작 인덱스 >= 1'가져올 글자 수'를 명시하지 않고 substr(컬럼, 시작 인덱스)로 적을 경우, 시작 인덱스부터 끝까지 가져옴 GROUP BY : select 절의 n번째 컬럼으로 묶기group b..
날아갈랑말랑했던 SQL 기본 문법 복기 (1)
·
TIL
SQL 강의를 들으면서 정처기 공부할 때 또 바짝 공부했었던 SQL 문법들을 복습했다대부분 아는 내용들이었지만, 머릿속에서 사라져가려고 했던 몇몇 문법들을 다시 붙들어잡을 수 있었던 좋은 시간이었던 듯 ...너무 잘 아는 내용은 생략하고, 다시 붙잡을 수 있었던 내용들을 정리해본다 SELECT 시 별명(alias) 설정하기컬럼1 as 별명1ex) order_id as ord_no컬럼2 별명2ex) order_id as "주문 번호"⚠️ 주의할 점별명이 '영어'와 '언더바'로만 이루어져 있는 경우에만 "" 기호 없이 별명을 설정할 수 있다.  조건 필터링 IN : ~ 중에 하나인가?in (A, B, C) A, B, C 중 하나에 해당 된다면 선택됨ex) age in (15,21,31)  조건 필터링 LIK..
SpringBoot + QueryDSL 적용 살펴보기
·
Project
QueryDslConfig.javapackage com.lettrip.lettripbackend.configuration;import com.querydsl.jpa.impl.JPAQueryFactory;import jakarta.persistence.EntityManager;import jakarta.persistence.PersistenceContext;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class QueryDslConfig { @PersistenceContext private EntityMan..
[JPA] 지연 로딩, 즉시 로딩, N+1 문제
·
개발 공부
지연 로딩객체가 실제 사용될 때 조회즉시 로딩JOIN SQL으로 한번에 연관된 객체까지 미리 조회N+1 문제하나의 객체를 조회하는데 +N개의 쿼리가 함께 나가는 문제