전체 글

전체 글

    이펙티브 자바, 쉽게 정리하기 - item1. 생성자 대신 정적 팩터리 메서드를 고려하라

    생성자 대신 정적 팩토리 메서드를 고려하라 핵심 요약 객체 생성에는 보통 생성자만 있다고 생각하기 쉽다. 정적 팩토리 메서드를 객체 생성 용도로 쓰는 것도 경우에 따라 좋다. 생성자 대신 정적 팩터리 메서드를 만들면 가지는 장점들 장점1: 생성자가 이름을 가질 수 있다. public class Test { @org.junit.jupiter.api.Test public void bigInteger() { BigInteger bigInteger = new BigInteger(10, 100, new Random()); BigInteger probablePrime = BigInteger.probablePrime(10, new Random()); System.out.println("bigInteger = " + ..

    이펙티브 자바 - 들어가면서...

    이펙티브 자바에서 추구하는 코드의 목적 명료성 (clearity) 단순성 (simplicity) 컴포넌트에 대해서 이 책에서 설명하는 컴포넌트란 개별 메서드부터 여러 패키지로 이뤄진 복잡한 프레임워크까지 재사용 가능한 모든 소프트웨어 요소를 뜻한다. 컴포넌트의 규칙 사용자를 놀라게 하는 동작을 해선 절대 안 된다. 정해진 동작이나 예측할 수 있는 동작만 해야 한다. 가능한 작되, 너무 작아서는 안된다. 복사되는 것이 아니라 재사용되어야 한다. 컴포넌트간 의존성은 최소로 유지해야 한다. 오류는 만들어지자마자 가능한 빠른 시간(컴파일 타임)에 잡아야 한다. 위 규칙은 매번 정확히 지켜질 순 없다. 다만, 어겨야할 때는 합당한 이유가 있어야 한다. 프로그래밍 고수가 되기 위해서는 정석이 되는 규칙을 먼저 배운..

    walls and gates 풀이

    https://leetcode.com/problems/walls-and-gates/ 문제 재정의 m x n 배열이 들어온다. m과 n은 각각 1보다 크거나 같고 250 보다 작거나 같다. 각 배열은 3가지 상태가 있다. 통과하지 못하는 벽 (-1) 빈 공간 (INF) 게이트 (0) 장애물이 없는 공간에서 게이트까지의 길이를 채워라. 입출력 Input: [ [2147483647,-1,0,2147483647], [2147483647,2147483647,2147483647,-1], [2147483647,-1,2147483647,-1], [0,-1,2147483647,2147483647] ] Output: [ [ 3,-1, 0, 1], [ 2, 2, 1,-1], [ 1,-1, 2,-1], [ 0,-1, 3, 4..

    Moving average from data stream 풀이 [슬라이딩 윈도우 기본 문제]

    Moving average from data stream 풀이 [슬라이딩 윈도우 기본 문제]

    문제 정의 https://leetcode.com/problems/moving-average-from-data-stream window size가 주어진다. window size안에 들어있는 숫자들의 평균을 구해라. 숫자는 1개씩 들어온다. 예제 입출력 Input ["MovingAverage", "next", "next", "next", "next"] [[3], [1], [10], [3], [5]] Output [null, 1.0, 5.5, 4.66667, 6.0] Explanation MovingAverage movingAverage = new MovingAverage(3); movingAverage.next(1); // return 1.0 = 1 / 1 movingAverage.next(10); // ..

    토비의 스프링 0장 정리

    스프링이란 무엇인가? 자바 기반의 다양한 애플리케이션을 만드는 것을 도와준다. 웹 뿐만 아니라 배치 등 다양한 영역을 포괄한다. 애플리케이션 코드에 언제나 존재하는 공통 영역에 대한 작성을 쉽고 깔끔하게 만들어준다. 공통 프로그래밍 모델이라는 것을 지원한다. 트랜잭션 처리, 다국어 처리, AOP 처리 등 애플리케이션에는 언제나 공통 영역이 존재한다. 애플리케이션에 자주 사용되는 다양한 기술 API도 제공한다. CGLIB, Jackson(Object Mapper) 등 ... 스프링 컨테이너 스프링 설정 정보(@Configuration)로 생성된 객체들을 일반적으로 싱글톤으로 관리한다. 물론 빈 스코프 설정에 따라 항상 싱글톤은 아닐 수 있다. 객체지향 원칙을 지키기 어려운 싱글톤의 단점을 해소해준다. 공통..

    백준 9251 LCS 문제풀이

    백준 9251 LCS 문제풀이

    LCS 설명 LCS란 Longest Common Subsequence의 약자로 최장 공통 부분 문자열을 뜻한다. LCS는 Dynamic Programming에서 흔히 나오는 문제 중 하나이다. DP 문제는 항상 최대, 최소, 가장 긴, 가장 짧은 값 등을 구하라는 문구가 많다. Subsequence란 무엇인가? Subsequence 를 우리가 흔히 쓰는 Substring과 비교하며 이해해보자. Substring은 Subsequence의 슈퍼셋이다. 즉, Substring인 문자열은 Subsequence이기도 하다. 단, Subsequence인 문자열은 Substring이 아닐 수도 있다. Substring: 반드시 연속되는 형태로 이루어진 부분 문자열이다. ex) abcdefg라는 문자열이 존재할 때, ..

반응형