JAVA
-
Garbage Collector, GCJAVA/ETC 2024. 3. 28. 01:47
JVM에서 동적으로 할당된 메모리를 관리하는 구성 요소. 더 이상 사용되지 않는 객체를 식별하여 제거하여 메모리 누수를 방지하고 프로그램 성능을 최적화 함. 작동 방식 1. 객체를 추적 및 식별하여 객체의 상태를 모니터링함. 2. 객체의 참조를 카운트하며 더 이상 참조되지 않는지를 결정하기 위해 분석함. 3. 더 이상 참조되지 않는 객체를 식별하여 메모리에서 제거 (주로 힙 메모리) 4. 위에서 제거를 하여 메모리를 회수하여 다시 사용할 수 있는 메모리로 반환. --- 1. 힙 메모리는 Young Generation, Old Generation 2개로 나뉜다. 2. Young은 또 Eden, Survivor0, Survivor1 3개로 나뉜다. 3. 모든 객체의 생성은 Eden에서만 생성된다. 4. Ed..
-
2. JPA 프로젝트 테스트하기JAVA/JPA, QueryDSL 2022. 4. 22. 15:59
1. GO TO 를 이용하여 Test Class 생성 2. Mockito를 사용하기 위해 세팅 @ExtendWith : JUnit5 부터 사용되는 메소드로 service 영역에 대한 단위 테스트를 위해 사용. Mockito 프레임워크를 사용하기 때문에 MockitoExtension.class 를 작성하였다. @Mock : 실제 객체가 아닌 빈껍데기 객체를 생성하는 메소드 사용할 수 있지만 값이 0, false, null 중 하나다. @InjectMocks : Mock에서 정의한 빈껍데기를 가지고있는 빈껍데기 Service 객체이다. 3. 비교를 위한 예상 Board 객체 생성 4. C R U D 테스트 메소드 실행 1. boardRepository save() 메소드에 아무 Entity가 들어오면 boa..
-
1. JPA 프로젝트 생성하기 (intellij, gradle, h2 database)JAVA/JPA, QueryDSL 2022. 4. 22. 14:49
1. h2 database 다운로드 2. h2 database 설치 3. h2 database 실행 4. JPA 프로젝트 생성(클릭) 5. 프로젝트 다운로드 후 실행 6. application.properties 를 삭제하고 application.yaml을 생성후 내용 작성 spring: datasource: driver-class-name: org.h2.Driver username: sa password: url: jdbc:h2:tcp://localhost/~/test; jpa: show-sql: true open-in-view: false hibernate: ddl-auto: create naming: physical-strategy: org.hibernate.boot.model.naming.Came..
-
verify() - org.mockito.Mockito.verifyJAVA/CODE 2022. 4. 22. 11:01
참고글 : mockito 사용법(mockito usage) verify : 해당 구문이 호출 되었는지를 체크합니다. 단순한 호출뿐만 아니라 횟수나 타임아웃 시간까지 지정해서 체크해 볼 수 있다. 1. mock 객체로 가상의 MockTestClass 를 만든다. 2. mock 객체의 setAge 메소드를 실행하고 3. verify()메소드로 해당 메소드가 실행 되었는지 확인한다. 1. setAge() 메소드를 주석처리하여 메소드를 사용하지 않고 verify를 사용 verify() 메소드안에 여러가지 값을 추가하여 체크 할 수 있다. 🔴times(n) : 해당 메소드가 n 번 실행 했는지 체크하는 메소드 오류 내용을 읽어보면 10번 수행을 원했지만, 1번 수행 됬다고 적혀있다. 🔴never() : 메소드가 ..
-
TDD 예제 2 - MockitoJAVA/TDD 2022. 4. 22. 10:15
Mock : 프로그래머가 직접 행동을 관리하는 객체. 진짜 객체와 똑같이 움직이지만 실제로 구현되지 않음. Mockito : Mock 객체를 쉽게 만들고, 관리하고, 검증할 수 있는 방법을 제공하는 프레임워크. 참고 : Mockito란? Mockito 사용하기 Mockito란? Mockito 사용하기 Mockito란? · Mock 객체를 쉽게 만들고, 관리하고, 검증할 수 있는 방법을 제공하는 프레임워크 - Mock: 진짜 객체와 비슷하게 동작하지만, 프로그래머가 직접 행동을 관리하는 객체 - 공홈 https://si scshim.tistory.com build.gradle 설정 testImplementation 'org.mockito:mockito-core:3.11.2' testImplementatio..
-
Clean CodeJAVA/ETC 2022. 4. 21. 16:16
참고 : 깨끗한 코드를 위한 5가지 팁. 특정 값을 받아 해당하는 연산을 수행한 뒤 결괏값과 비교한 boolean 값을 가지고 다른 메소드를 실행하여 값을 얻는 메소드. 해당 코드를 최대한 Clean Code에 가깝게 수정. - 간단한 코드라 억지스러운 면이 없지 않아 있음.. 1. 특정 상수들도 변수로 만들어 사용한다. - inch 단위에서 centimeter 단위로 변경하기 위한 상수 2.54를 직접 넣으면 나중에 다른 개발자가 봤을 때 의미를 바로 알아차리기 힘들 수도 있다. 2. 메소드 명은 다른 사람이 봤을 때 한 번에 기능을 알 수 있어야 하고, 명사가 아닌 동사를 사용한다. - toProcess라는 메소드는 너무 포괄적인 메소드 명이므로 해당 연산 뒤 문자열 값을 얻는다는 메소드 명으로 변경..
-
TDD 예제 1JAVA/TDD 2022. 4. 21. 15:01
디자인 : cm의 단위를 입력 했을때, 원하는 길이의 단위로 변경하는 기능을 가진 기능 구현 기본적인 JAVA 프로젝트 생성 RED : 실패하는 Test코드 작성 GREEN : TEST코드에 맞는 실제 코드 작성 해야 할 일: 1. Centimeter Class와 Inch Class 생성. 2. Centimeter Class에 toInch 메소드 생성. 테스트 결과 Refactor : cm와 inch를 계산하는 TO_INCH, TO_CENTIMETER 값이 중복되고, 다른 단위까지 추가하였을 때에도 중복되는 값이 있기 때문에 변환하는 클래스를 가지는 TransferClass를 만들어 변환 값을 관리한다. 새로운 디자인 : cm 뿐만 아니라 다른 단위의 값이 들어와도 단위 변경이 가능하도록 수정 RED :..
-
TDDJAVA/TDD 2022. 4. 21. 13:36
Test Driven Development의 약자로 테스트 주도 개발이라 한다. 실제 코드를 작성하기 전 작은 단위의 테스트 케이스를 작성하고, 이를 통과시키는 코드를 작성하여 실제 프로젝트에 코드를 추가하는 단계를 반복하여 구현한다. 위 같은 과정으로 진행하게 된다면 서비스 메소드는 최소한의 기능을 가진 작은 단위로 코딩할 수 있고, 미래지향적인, 아직 사용되지 않을, 불필요한 코드들의 작성을 피할 수 있게 된다. 디자인 단계에서 프로그래밍 목적을 미리 정의해야 하고, 테스트 케이스를 작성한 후 코드 개발을 하여야 한다. 코드 개발에서 나오는 버그들을 수정하고, 리팩토링하여 다시 테스트 코드를 작성 후 코드 개발을 진행한다. RED : 실패하는 테스트 코드를 먼저 작성한다. GREEN : 테스트 코드를..