본문 바로가기

Programing

(403)
[Java] Scope shadowing과 DCL51-J 가끔 sonarqube 돌려보면 DCL51-J 에 대한 코드 냄새가 잡힌다. 예를 들면 아래와 같다. 5번째 라인에서 지역변수 value를 사용하면 멤버변수인 value와 이름이 동일한데 사용했다고 경고를 한다. public class Foo { private String valueType; public void foo(SomeParameter someParameter) { ValueType valueType = someParameter.getValueType(); if (valueType != null) { this.valueType = valueType.name(); } } } 이럴 경우 어떠한 방법이 좋을까? 방법1. 지역 이름을 바꾼다. - 쉬우면서 명시적인 방법이다. public class Fo..
[Spring] spring-retry 재시도 및 백오프 정책 정리 재시도에 대한 생각을 할 때 일반적으로 참고를 할 수 있을 것 같아서 정리했다. 현재 사용하고 있는 spring-retry 1.2.5 기준이다. RetryPolicy (재시도 정책) SimpleRetryPolicy 주어진 횟수만큼만 반복 수행 AlwaysRetryPolicy 항상 재시도를 수행 - 테스트 용도나 수동 설정시 이용 NeverRetryPolicy 1회만 수행(재시도를 안함) - 테스트 용도나 수동 설정시 이용 CircuitBreakerRetryPolicy 서킷 브레이커 방식의 재시도 - 시스템 장애시 유용 ExceptionClassifierRetryPolicy 최종 예외 클래스에 기반한 재수행 TimeoutRetryPolicy 제한을 시간을 가지고 반복을 수행 ExpressionRetryPo..
[Java] 내가 사용하는 GC 알고리즘은 무엇일까? 자바에서는 보통 아래 다섯가지를 주요 GC 타입을 기술한다. Serial Garbage Collector- S GC Parallel Garbage Collector- P GC CMS Garbage Collector- CMS GC G1 Garbage Collector- G1 GC The Z Garbage Collector- ZGC 웹에서 기본 CG를 찾아보면 자바 버전에 따라 달라졌음을 알 수 있다. stackoverflow: Default garbage collector for Java 8 Java 7 - P GC Java 8 - P GC Java 9 - G1 GC Java 10- G1 G 시간대에 따라 힙의 증감 톱니바뀌는 다름을 알 수 있다. 트래픽이 적은 새벽 3시~8시에는 주기가 길고, 많은 주간..
[라이선스] Wunderlist 3.19.41 Wunderlist가 2020년 5월 6일부로 사용이 중단된다고 해서 라이선스 스냅샷을 찍어둔다. 목록 Wunderlist 3.19.41 Copyright © 2015 6 Wunderkinder GmbH All Rights Reserved 개인정보처리방침 - 임프린트 - 사용 약관 Imprint 6 Wunderkinder GmbH Karl-Liebknecht-Straße 32 10178 Berlin Contact Mail: hello@6wunderkinder.com Handelsregister AG Charlottenburg HRB 128663 B UstID DE815214657 Geschäftsführer Christian Reber Privacy Policy We, 6Wunderkinder GmbH ..
[Java] JMM 에 대한 글들 자바에서 동시성에 대해 알기위한 기초. 자바 메모리 모델의 줄임말 JMM에 대한 JSR-133 스펙을 대신할 수 있는 좋은 글들이 있어서 블로그에 링크를 달아둔다. Java 5의 동시성 라이브러리를 많이 만든 더그 리(Doug Lea)의 The JSR-133 Cookbook for Compiler Writers 그림이 곁들어져 있는 Aleksey Shipilёv의 Close Encounters of The Java Memory Model Kind
[Java 11] 자바11 에서 테스트가 깨진다!? Spock Framework 로 테스트 코드를 짜고 있다. 이상하게 자바8에서는 잘 동작하던 것이 11에서 깨지는 것이 발견되었다. 두 개의 테스트가 실패했는데 공통점은 인터페이스를 익명클래스로 상속해서 오버라이딩하는 부류의 코드였다. 결국 Spock Framework에서 제공하는 Stub()으로 그 인터페이스를 대체했더니 사라지긴 했다. 에러 스택은 아래와 같았다. 클래스로더가 테스트 메소드에서 오버라이딩한 클래스를 로딩을 못하는 느낌이 든다. (모듈 때문일까?) java.lang.ClassFormatError: Illegal method name "어떤 테스트..." in class com/tistory/namocom/service/FooSpec$1 at java.base/java.lang.Class..
[macOS] git 에러 에러 화면 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 해결책 xcode를 설치하지 않았을 때 발생한다. 아래 명령을 이용하여 설치 가능하다. xcode-select --install 라이센스 더보기 APPLE INC. MACOS SDK 및 XCODE계약 개발자 소프트웨어(아래에 정의됨)를 사용하기 전에 반드시 본 MACOS SDK 및 XCODE 계약(이하 “사용권”)을 유의하여 읽어 주십시오. 개발자 소프트웨어를 사용함으로써, 귀하는 본 사용권의 약관을 준수하기로 동의하는 것입니다..
[spring boot] 2.1.6 -> 2.2.0 테스트 깨짐(인코딩) 무엇이 바뀌었길래 테스트가 깨지는가? org.springframework.test.web.servlet.MockMvc 를 이용한 Mock 컨트롤러 테스트. 한글 인코딩이 깨진다. MockMvc의 경우 perform이 수행되면 MockFilterChain -> HttpServlet -> TestDisplacherServlet -> FrameworkServlet -> HttpServlet - FrameworkServlet -> DispatcherServlet -> AbstractHandlerMethodAdapter ... 등을 거치다. application/json의경우 HttpEntityMethodProcessor 의 handleReturnValue에서 AbstractMessageConverterMetho..