Java
-
Java Heap (with GC)Java/Basics 2020. 6. 8. 21:14
■Heap이란 - 인스턴스와 배열이 동적으로 생성되는 공간. - 생성에 필요한 인스턴스와 배열의 메타 정보는 Heap 내의 Method Area에서 얻어온다. - 모든 Thread가 공유하기 때문에 동기화 문제가 발생할 수 있다. - Garbage Collection의 대상이 되는 영역. - 개발자는 객체를 제거하기 위해 별도의 코드를 작성할 필요가 없고 오히려 부작용만 낳을 가능성이 큼. GC에 맡기는 것이 좋다 ■Heap 구성Heap의 각 영역이 의미하는 것은 아래 GC의 프로세스를 이해하면 더 구체적으로 알 수 있다. Java 8 이전 Java 8 이전에는 Metaspace라고 지칭된 영역 대신에 PermGen(Permanat Generation Space) 라고 불리는 영역이 존재했었다. 이 영역..
-
[자바 디자인 패턴] 싱글톤 패턴(Singleton Pattern)Java/Design Pattern 2020. 6. 1. 22:44
■싱글톤 패턴 구현 방법 :: 정적 팩토리 메소드public class UserDao { private static UserDao INSTANCE; private UserDao(ConnectionMaker connectionMaker) { if(INSTANCE != null){ throw new IllegalStateException(); } this.connectionMaker = connectionMaker; } public static synchronized UserDao getlnstance() { if (INSTANCE == null) INSTANCE = new UserDao(???); return INSTANCE; } }먼저 클래스 밖에서는 객체를 생성하지 못하도록 생성자를 private으로 ..
-
자바 컨벤션 모음Java/Basics 2020. 5. 21. 09:22
■객체의 기본 유효성 체크 주요 타입 유효성 체크를 위한 유틸 사용 예시 Object? extends Object java.util.Objects Objects.isNull(object);Objects.nonNull(object); StringStringBufferStringBuilderorg.apache.logging.log4j.util.StringsStrings.isEmpty(str);Strings.isNotEmpty(str); ■날짜 버전사용 클래스사용 예시 java 8 이전SimpleDateFormat && Calendar && DateSimpleDateFormat dateFormat = new SimpleDateFormat(format); Calendar calendar = Calendar.ge..
-
자바 예외(Throwable)Java/Basics 2020. 5. 20. 00:48
■Throwable - 1depth 자바의 예외 계층의 최상위 클래스는 Throwable이다. 어떤 메서드가 Throwable을 throws하면 클라이언트는 무조건 throws된 Throwable에 대해 try-catch로 책임(?)을 지거나 다시 throws해서 자신의 클라이언트에게 책임을 떠넘겨야 한다. 이런 에러 클래스를 검사 예외(checked exception)라고 지칭한다.public class Test { public static void throwsToClient() throws Throwable{ ExceptionClasses.throwsThrowable(); } public static void catchImmediately() { try { ExceptionClasses.throwsT..
-
TDD 방식으로 아이디 중복 체크 API 개발하기Java/TDD 2020. 5. 18. 00:09
■개요 풋살모임 관리 앱을 개발중에 회원 아이디 중복 체크용 API가 필요한 상황이 생겼다 TDD 방식으로 개발하는 과정을 포스팅해보려고 한다 ■테스크 코드 작성 1. 성공 케이스- 아이디가 중복되는 경우(false)- 아이디가 중복되지 않는 경우(true)2. 실패 케이스- 아이디를 기입하지 않은 경우 간단한 기능이라 그런지 실패 케이스가 1개밖에 떠오르지 않았다 먼저 성공 케이스 2가지를 작성했다@Test @TestDescription("아이디 중복조회_false") public void isAlreadyExistId_false() throws Exception { String[] paramList = new String[]{"testUserNew"}; // request ResultActions r..
-
[자바 디자인 패턴] Flyweight 패턴Java/Design Pattern 2020. 5. 12. 00:55
■Flyweight 패턴이란? 영문 그대로 데이터를 표현하는 클래스를 좀 더 가볍게 사용하는 것이 목적인 패턴. 한번 생성된 클래스를 버리지 않고 모아뒀다가 필요할 때 계속 재사용. 정적 팩터리 메서드와 비슷한 기법이라고 할 수 있음. ■패턴 구현 간단 설명 데이터 클래스를 관리하는 팩토리 클래스를 준비한다. 데이터 클래스를 사용하고 싶은 사용자 클래스는 오직 팩토리 클래스를 이용해서 원하는 데이터 클래스를 얻어온다. 롤을 가끔 하는데, 롤 캐릭터와 무기를 이용해서 이 패턴을 설명해보겠다. 사용자 클래스 Talon.java Yasou.java Irelia.java 팩토리 클래스 WeaponFactory.java 데이터 클래스 InfinityEdge.java BlackCleaver.java 맨 위의 사용자..
-
TDD에 대해서Java/TDD 2020. 1. 27. 22:19
■TDD란? - Test Driven Development의 약자로서 테스트가 요구하는 '만큼' 구현하는 개발방법! - 단순히 테스트를 많이 개발하는 방법이 아님!!!!!!! - TDD를 따르기 위해, 테스트 없는 부분은 과감히 개발하지 않는다! - 의도적으로 실패하는 테스트를 반드시 구현한다! - 어떤 코드를 추가해야 할 지 예측이 되더라도 테스트 코드의 범위에서 조금이라도 벗어난다면 되도록 작성하지 않는다! - 표준 테스트 클래스 명 : 테스트대상클래스test.java ("자바와 JUnit을 활용한 실용주의 단위 테스트" 中) ■장점 - 코드를 작성할 때, 예상한 대로 동작하는지 쉽고 빠르게 확인 가능 - 테스트 코드가 프로젝트에 대한 문서화로서의 기능을 할 수 있음 - 리팩토링 후 변경된 사항이 기..