전체 글
Java - 함수(function)와 메서드(method), 일급 객체
함수 vs 메서드 자바에서 함수(function)는 일반적으로 정적 메서드(static method)와 같은 의미로 사용된다. 또 일반적으로 함수는 특정 클래스에 속하지 않고 전역적으로 호출될 수 있다. 하지만 메서드는 보통 특정 클래스에 선언되기에 종속적이다. 즉, 함수는 전역적으로 사용될 수 있는 독립적인 존재, 메서드는 클래스와 같은 구조체에 종속적인 존재다.아래의 코드를 통해 확인해보자.public class FirstClass { public static void callFunction() { System.out.println("함수"); }}public class SecondClass { public void callMethod() { System.out.println("메..
Java - List의 제네릭 타입이 달라도 오버로딩은 불가하다.
문제 상황 토이 프로젝트 진행 중 인자로 List의 제네릭 타입을 다르게 해서 메서드를 오버로딩하려고 했다. 아래와 같이 코드를 작성하면 이와 같은 컴파일 오류가 발생한다. 'calculatePeriodBy(List)' clashes with 'calculatePeriodBy(List)'; both methods have same erasure public int calculatePeriodBy(List functions) { int totalExpectedTime = functions.stream() .mapToInt(RequiredFunction::getExpectedTime) .sum(); return calculatePeriod(totalExpectedTime); } public int calcu..

JPA - 상속 관계 Single Table 전략에서 DiscriminatorColumn 접근하기
문제 상황 토이 프로젝트 진행 중 상속 관계 매핑을 싱글 테이블 전략으로 진행했다. 아래는 상속 관계에 있는 클래스의 다이어그램이다. 공통 사항은 Study 필드에 있고 자식 클래스들의 세부사항은 각각의 필드에 있다. 이 때 StudyRepository 하나로 기본적인 CRUD작업을 할 경우 해당 행의 타입이 어떤 타입인지 구분하기가 어려웠다. 예를 들어, id값으로 데이터를 조회할 때 해당 row의 타입이 무엇인지 알 수 없기 때문에 데이터를 매핑할 Entity의 타입을 지정할 수 없었다. 물론 요청이 들어올 때 타입을 구분하는 변수를 하나 추가하고 자식 클래스별로 repository를 만들면 해결 할 수도 있다. 하지만 상속 관계 매핑 시 @DiscriminatorColumn을 통해 DB에 생성되는 ..

Java - List vs Map
List vs Map 인프런 강의를 듣던 중 "List로 조회를 하면 성능이 저하될 수 있으니 Map으로 바꾸자"라는 말을 들었다. 사실 별다른 생각 없이 두 컬렉션을 사용해왔다. 키를 통해 값을 조회해야하는 상황에선 Map을 쓰고, 그 외의 상황에선 일반적으로 List를 사용해 왔다. 특정 상황에서 분명 유리한 컬렉션이 있다. 그렇기에 두 컬렉션의 구조적 차이와 성능 차이에 대해 알아보고자 한다. List vs Map(조회 시 성능 차이) 두 컬렉션에서 주로 사용되는 구현체인 ArrayList와 HashMap을 사용해 비교를 해보자 1. 저장 성능 차이 1-1. List - 순차 저장 // ArrayList - 순차 저장 saveListSequentially(1000); saveListSequentia..

서평 - 소프트웨어 장인
직업을 대하는 태도 개발자는 내가 가져왔던 여러 직업들 중 하나다. 그리고 평생 업으로 삼을 듯하다. 그렇기에 직업을 대하는 나의 태도 또한 달라져야만 했다. 이전에 다른 일들을 하며 수동적인 태도를 가지는 문제가 있었다. 삶에 대한 나의 태도 또한 비슷하게 변해갔다. 이 태도는 나의 자존감을 서서히 갉아 먹었고, 삶의 의미를 잃게 만들었다. 나의 문제가 일반적인 성향이라고 볼 수도 있다. 하지만 타인에게도 비슷한 문제가 있다고 나 또한 그래도 괜찮다는 것은 내 가치관과 맞지 않다. 문제를 해결하기 위해(정확히는 현실 도피) 퇴사를 했다. 휴식기를 보내던 중 개발자라는 직업을 알게 됐다. 그동안에 고민했던 내 가치관과 적합하기에 선택했다. 또 개발자라는 직업을 통해 역으로 얻고 싶은 삶의 태도가 있었다...