일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 투 포인터
- 세그먼트 트리
- 백준
- 시뮬레이션
- 그리디
- 동적계획법
- 위상정렬
- Kotlin
- Effective Java
- swea
- 완전탐색
- java
- 프로그래머스
- BFS
- 스택
- 유니온 파인드
- 에라토스테네스의 체
- JUnit 5
- Network
- 후니의 쉽게 쓴 시스코 네트워킹
- 구현
- 수학
- CS
- 알고리즘
- 문자열
- dfs
- 플로이드-와샬
- 이분탐색
- 백트래킹
- mst
목록java (6)
반갑습니다!
테스트 이름 표기하기 테스트를 실행시키면 메소드 이름으로 테스트가 진행되는 것을 볼 수 있다. 때문에 메소드 이름이 길어질수록 가독성이 떨어진다는 단점이 있다. 이를 보완하기 위해서 JUnit 5에서는 테스트의 이름을 표시할 수 있는 기능을 제공한다. Java에서는 메소드 이름을 Camel 표기법으로 작성한다. 하지만 이는 가독성 측면에서 봤을 때 Snake 표기법보다 떨어진다. 이 때문에 테스트 코드를 작성할 때는 Snake 표기법으로 작성한다. @DisplayNameGeneration 이 Annotaion은 DisplayNameGenerator 클래스에 구현된 몇 가지 옵션을 통해 테스트의 가독성을 올려준다. Standard : 기본 JUnit 5의 이름 생성과 동일 ReplaceUnderscores..
테스트를 작성하는 자바 개발자 90% 이상이 사용하는 JUnit에 대해서 알아보도록 하자. 해당 포스트에서는 가장 최신 버전인 JUnit 5를 기준으로 한다. 구조 우선 JUnit 5가 어떻게 구현되어있는지 간단하게 알아보자. JUnit 5는 이전 버전의 JUnit들과 다르게 여러 개의 모듈로 구성되어있다. 공식 가이드에서는 JUnit 5를 다음과 설명한다. JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage 즉, JUnit 5는 JUnit Platform과 JUnit Jupiter, JUnit Vintage라는 3개의 모듈로 구성되어 있다. JUnit Platform JUnit Platform은 JVM 환경에서 테스트 프레임워크를 시작할 수 있는 기초 ..
생성자 대신 정적 팩토리 메소드를 고려하라 클래스는 생성자와 별도로 정적팩토리 메소드(static factory method)를 제공할 수 있다. 이 방식에는 장점과 단점이 모두 존재한다. 우선 장점을 먼저 알아보자. 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못하지만, 정적 팩토리 메소드는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 예제를 보며 이해해보자. 위의 예제 코드에서 withAge(), withHeight()와 같은 정적 팩토리 메소드를 사용함으로써 반환될 객체의 특성을 쉽게 파악할 수 있게 된다. 그리고 하나의 시그니처로는 생성자를 하나만 만들 수 있기 때문에 한 클래으세 시그니처가 같은 생성자가 여러 ..
참조 유형 Java의 참조 유형에는 크게 4가지가 있다. 그리고 이 유형에 따라서 GC 실행 대상 여부와 실행 시점이 달라진다.아래 위에서 아래로 갈수록 GC의 대상이 될 확률이 높아지고 실행 시점이 앞당겨진다. Strong Reference (강한 참조) Soft Reference (소프트 참조) Weak Reference (약한 참조) Phantom Reference (팬텀 참조) Strong Reference (강한 참조) 일반적으로 Java에서 new키워드를 사용해서 객체를 생성했을 때 '강한 참조'가 된다. SampleObject obj = new SampleObject(); 위의 코드에서 obj 변수가 SampleObject 객체의 참조를 가지고 있는 동안에는 해당 객체는 GC의 대상이 되지 ..
STW(Stop The World)J C/C++와 Java의 가장 큰 차이는 '메모리 관리의 주체' 이다. C/C++ 프로그래밍에서는 개발자가 직접 메모리 관리를 해줬다. C에서는 malloc() 계열의 함수들로 메모리 할당을, free() 함수로 메모리 해제를 해주었고, C++에서는 new 키워드를 통해 객체를 생성하고 delete 키워드를 통해 객체를 제거해주었다. 하지만 Java 프로그래밍을 하다보면 new 키워드는 사용하지만 delete 키워드를 사용하지 않는다. (Java에는 delete 키워드가 없다) 즉, 개발자가 메모리 관리를 하지 않는다는 것이다. 이는 JVM (Java Virtual Machine)속의 Garbage Collector가 사용하지 않는 객체를 제거하는 GC(Garbage ..