전체 글(409)
-
(프로그래머스) 실패율(자바/Java) - 2019 카카오 문제
문제는 여기에 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 재미있는 문제다. 간단하긴 한데, 다른 사람들이 푼 풀이를 보니 전부 Map의 sort기능만 사용하고, stream을 사용한 사람이 거의 없다시피 해서 내가 작성한 코드를 공유하려 한다. import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; // 실패율 class Solution { public int[] solution(int N, int[] stages) { int[] answer = {}..
2022.09.22 -
(TIL) 20220920/ 독서 등
🏴Facts(한 것) & Findings(배운 것) 아침에 일어나서 1일 1로그 100일 완성 IT 지식 책을 읽었다. 오늘은 오픈소스와 저작권 법 등에 관한 부분을 읽었다. 읽으면서 나도 좋은 오픈소스 코드를 작성하고 싶다는 생각이 들었다. 이펙티브 자바를 읽고 정리했다. 오늘은 파트가 적당해서 3개를 읽었다. (Effective Java) 싱글턴 패턴을 만드는 방법 + 싱글턴 패턴 private 생성자나 열거 타입으로 싱글턴임을 보증하라. 이펙티브 자바 아이템 3에서는 싱글턴에 대해서 간략하게 설명하고 있다. 싱글턴은 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한 mirrorofcode.tistory.com (Effective Java) 인스턴스 생성 막기 인스턴스 생성을 막는다니 무..
2022.09.21 -
(Effective Java) 의존 객체 주입(DI), 의존 객체 주입 패턴
자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 의존 객체 주입 패턴은 아주 단순하여 수많은 프로그래머가 이 방식에 이름이 있다는 사실도 모른 채 사용해왔다. 많은 클래스가 하나 이상의 자원에 의존한다. 책의 예제를 살펴보자. public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} public static boolean isValid(String word) {...} public static List suggestions(String typo) { ... } } 이 예제는 정적 팩터리 메서드를 사용해서 구현한 예시이다. 실제로 사용할때는 이런 식으로 사용할 것이다. publi..
2022.09.20 -
(Spring) DI/의존 객체 주입 패턴 + Lombok
🧐 스프링의 DI 스프링의 특징이라고 할 수 있는 DI는 Dependency Injection의 준말이다. 말 그대로 의존성 주입이며, 기본적으로 의존 객체 주입 패턴으로 이루어져 있다. 스프링에서는 bean을 직접 생성하는 것이 아닌 IoC, 즉 스프링 컨테이너가 관리하고 있다. 스프링은 가장 먼저 Controller 어노테이션을 찾고 이후 wiring 되어 있는 객체를 순차적으로 생성해서 컨테이너에 등록하는데, 이때 DI, 즉 의존관계 주입이 필요하다. 의존관계 주입에는 다음과 같은 방식이 주를 이룬다. 생성자 주입 방식 setter 주입 방식 autowired 어노테이션 주입 방식 🧐 생성자 주입 방식 public class MovieController { private final MovieServ..
2022.09.20 -
(Effective Java) 인스턴스 생성 막기
인스턴스 생성을 막는다니 무슨말인가? 인스턴스가 필요 없다니! 그런 클래스가 필요해?라는 의문이 든다면 자바 기본 패키지를 한 번도 까보지 않은 것임이 틀림 없다. 책에서 소개하는 Collections나 Arrays처럼 인스턴스 생성을 막아놓은 클래스가 존재하기 때문이다. 🧐 인스턴스 생성을 막는 방법 인스턴스 생성은 어떻게 하면 막을 수 있을까? 먼저 인스턴스가 어떻게 생성되는지를 알면 쉽다. 인스턴스를 생성하려면 '생성자'가 필요하다. 다른 클래스에서 생성자 호출이 가능하려면(최소 같은 패키지) 생성자가 private이면 안 된다. 그럼 간단하다. 생성자를 private으로 만들어버리면 된다. 아래 코드를 보자. public class Calculator { private Calculator() {}..
2022.09.20 -
(Effective Java) 싱글턴 패턴을 만드는 방법 + 싱글턴 패턴
private 생성자나 열거 타입으로 싱글턴임을 보증하라. 이펙티브 자바 아이템 3에서는 싱글턴에 대해서 간략하게 설명하고 있다. 싱글턴은 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 스프링 사용자들은 싱글턴에 대해서 알고 있을 것이다. 왜냐하면 스프링의 컨테이너가 객체를 싱글턴으로 관리하기 때문이다. 각설하고 싱글턴을 만드는 방식에 대해서 책에서는 2가지를 소개하고 있다. 🧐public static final 필드 방식의 싱글턴 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuilding() { ... } } Elvis.INSTAN..
2022.09.20