본문 바로가기

Programing

(282)
[Sonarqube] Functional Interfaces should be as specialised as possible 함수형 인터페이스는 가능하면 스페셜한 놈을 찾아써라... Core Java SE 9 For the impatient (가장 빨리 만나는 코어자바9)책에도 한 페이지지만 분명 언급되어 있었다. (158쪽) 기본 타입 int, long, double에 특화된 함수형 인터페이스 34개... 이것을 사용을 하면 오토박싱을 줄일 수 있어서 성능에 향상을 줄 수 있다. Current Interface Preferred Interface Function IntFunction Function LongFunction Function DoubleFunction Function DoubleToIntFunction Function DoubleToLongFunction Function LongToDoubleFunction Fu..
[Spring] Bean 생성시 필드주입 시점은? 객체의 생성은 프레임워크가 해준다. 문제는 프레임워크가 JVM을 넘어 마술을 부리는 줄 아는 경우가 있다. 아래 글을 읽어보면 결국 프레임워크도 JVM이 제공해주는 리플렉션 도구들을 이용해서 객체를 만들고 private 필드에 값을 설정함을 알 수 있다. 질문 import org.springframework.stereotype.Service; @Service public class TestService { public void print() { System.out.println("TestService - print"); } } import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype..
[spring] stream 사용 예, 하지만 없어졌지... ControllerAdviceBean#findAnnotatedBeans ~v5.0.9.RELEASE v5.0.9.RELEASE 까지는 enhanced for 로 구성이 되어 있었다. package org.springframework.web.method; public class ControllerAdviceBean implements Ordered { // ... /** * Find the names of beans annotated with * {@linkplain ControllerAdvice @ControllerAdvice} in the given * ApplicationContext and wrap them as {@code ControllerAdviceBean} instances. */ publi..
성지순례와 인터페이스 과거에 쓴 글이 미래에 갑자기 흥(?)하는 경우가 있다. 인터페이스를 보면서 그런 생각을 했다.
[Java] Wrapper 클래스 vs Overload 메서드 중 우선순위는? 카페에 어떤 분이 아래와 같은 질문을 올렸다. 질문 public class OverrideVsAutoUnboxing { public static void main(String[] args) { System.out.println(new Integer(59)); } } 위와 같은 코드가 59로 출력되는 원리가 궁금합니다. 'new Integer(숫자)'를 system.out.println하면 숫자가 출력되는 원리에 대해 설명주세요. 코드리뷰 일단 위와 같은 코드는 여러 안티패턴(피해야 되어야 할 코드)이 들어가 있다. 불변 클래스의 생성자 생성 아래의 코드에 대한 내용이다. new Integer(59) 자바에서 문자열 타입으로 문자열을 생성할 때 new String()으로 문자열을 만들지 말라고 하는 이유가..
[Java] forEach와 for each 의 차이점은? 카페에 올라온 질문이다. import java.util.ArrayList; import java.util.List; public class LoopTest { public static void main(String[] args) { List list = new ArrayList(); for (int i=0; i { System.out.println(str); }); // 2 for(String str : list) { System.out.println(str); } } } 1번과 2번의 차이점은 무엇인가요? 코드리뷰 일단 차이점을 알아보기 전에 코드를 리뷰해보자. Review 1. ArrayList 객체 생성 일단 ArrayList를 List 인터페이스로 받은 것은 잘한 것 같다. 왜 그런지는 이펙티브자..
일주일이 지난 로그파일 정리 하기 로그 파일 서버를 운영하다보면 로그파일이 지속적으로 쌓입니다. 트래픽이 많은 로그 파일이라면 로그파일 역시 용량이 클 것이고 Disk 자원에 부담이 될 것입니다. 로그 파일을 정리하는 수행하는 간단한 애플리케이션을 만들어보겠습니다. 만약 cron 등 스케쥴링을 할 수 있는 시스템을 같이 이용하면 배치처리에 범주로 볼 수 있을 것 같습니다. (우겨봅....세) 첫 번째 코드 스프링 배치 같은 것을 사용할 수 있겠지만 단순히 하기 위해 node.js 를 사용합니다. JavaScript의 date 라이브러리는 Java Date 처럼 악명이 높기 때문에 moment.js 라는 라이브러리를 사용하겠습니다. 앞으로 나오는 코드를 실행하려면 먼저 아래 명령으로 moment.js 를 추가가 필요합니다. npm inst..
[Java] 인스턴스 변수 초기화 어떤분이 초기화 블럭을 물어본 사항이 있어서 확인한 사항을 첨가해서 기록으로 남깁니다. 질문 - 제목 : 클래스 초기화 블럭 사용하는 이유 - 내용 : 초기화 블럭 부분을 공부하면서 느낀건데 왜 굳이 클래스 초기화 블럭을 사용해야 하는지 잘 모르겠어요. 그냥 초기화 코드를 분리해서 관리하기 위함이 전부인가요? 개인적으로 이런 존재의 이유(raison d'être)에 대해 고민을 하는 것은 좋다고 생각한다. 문제는 혼자서 고민을 하다가 주제에서 벗어난 곳으로 빠질 위험이 있고 답을 찾기 어려울 수도 있다. 이럴 경우 친구나 커뮤니티에 물어봐서 어느정도 답을 찾는 것이 좋을 것 같다. (좋은 질문이었다는 이야기를 어렵게 하고 있음..) 접근법 일단 초기화 블럭에 대해서는 Java Tutorials 중 Cla..