Java 중급 핵심: 제네릭, 컬렉션 프레임워크, 반복자
김영한의 실전 자바 중급 2편에서 학습한 내용을 정리한 글입니다. 제네릭 제네릭이 필요한 이유 제네릭을 사용하면 코드 안정성과 다형성을 확보할 수 있다. //제네릭 클래스 //T는 "타입 매개변수"라고 함 public class GenericBox<T> { private T value; public voi...
김영한의 실전 자바 중급 2편에서 학습한 내용을 정리한 글입니다. 제네릭 제네릭이 필요한 이유 제네릭을 사용하면 코드 안정성과 다형성을 확보할 수 있다. //제네릭 클래스 //T는 "타입 매개변수"라고 함 public class GenericBox<T> { private T value; public voi...
최상용님의 재고시스템으로 알아보는 동시성이슈 해결 방법에서 학습한 내용을 정리한 글입니다. 1. 쓰레드를 사용하여 재고 감소 테스트 하기 동시성을 고려하지 않고 재고 감소 기능을 구현할 할 경우, 경쟁상태 문제가 발생한다 @DisplayName("동시에 재고 감소를 요청한다.") @Test void decreaseWi...
김영한님의 스프링 핵심 원리 기본편에서 학습한 내용을 정리한 글입니다. 스프링 기본 원리 - 기본편 좋은 객체 지향 프로그래밍이란? 객체 지향 특징 추상화 캡슐화 상속 다형성 유연하고 변경이 용이하다 레고 블럭 조립하듯 키보드, 마우스 갈아 끼우듯이 개발한다 ...
김영한의 실전 자바 중급 1편에서 학습한 내용을 정리한 글입니다. 날짜와 시간 자바 날짜와 시간 라이브러리 소개 Local은 세계 시간대를 고려하지 않은 시간으로 국내 서비스만 고려할 때 사용된다. LocalDateTime LocalDateTime : Localdtae와 LocalTime을 합한 개념으로 날짜와 시간을 나타낸다. ...
김영한의 실전 자바 중급 1편에서 학습한 내용을 정리한 글입니다. Object 클래스 java.lang java.lang 패키지는 모든 자바 애플리케이션에서 자동으로 import 된다. Object 클래스 자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object 클래스이다. 자바에서 Object 클래스가 최상위 부모 클래스인 이...
박우빈님의 Practical Testing: 실용적인 테스트 가이드 를 정리한 내용입니다. 테스트는 왜 필요할까 테스트 코드를 작성하지 않고 수동으로 테스트를 하면 아래와 같은 단점들이 있다. 테스트에 누락이 있을 수 있다. 경험과 감에 의존한다. 피드백이 늦다 소프트웨어의 신뢰도가 낮아진다 테스트 코드 작성도 중요하지...
모비닥은 환자 본인 뿐만 아니라 가족 구성원과 함께 병원 진료 신청 할 수 있는 “함께 진료” 기능이 있습니다. 하지만 이 “함께 진료” 는 여러 환자를 하나의 그룹으로 묶어 처리하기 때문에 몇 가지 문제점이 있었습니다. 가장 큰 문제점은 하나의 증상 & 문진표만 작성한 구조입니다. 만약 자녀A는 타박상, 자녀B는 기침 증상이 있는 경우 대표...
Real MySQL 8.0 8장 “인덱스”를 학습한 내용입니다. B-Tree 인덱스 최사위에 하나의 루트노드가 존재하고 그 하위에는 브랜치 노드, 가장 말단에는 리프노드가 붙어 있다. 데이터베이스에서 인덱스와 실제 데이터가 저장된 데이터는 따로 관리되는데 인덱스 리프 노드에 항상 실제 데이터 레코드를 찾아가기 위한 주솟값이 저장된다. 인...
슬로우 쿼리 개선 사내 서비스 개선 프로젝트 후 모니터링 과정에서 쿼리 실행 시간이 1초 이상 소요되는 쿼리를 발견하였고 이를 개선해보았습니다. 첫 번째 슬로우 쿼리 개선 전 슬로우 쿼리 SELECT c.*, (subquery1) AS total_price, (subquery2) AS last_payment_seq, ...
Real MySQL 8.0 10장 실행계획을 학습한 내용입니다. 실행계획 1.통계정보 MySQL 8.0부터는 인덱스되지 않는 칼럼들에 대해서도 데이터 분포도를 수집하고 저장하는 히스토그램 정보가 도입되었다. 테이블 및 인덱스 통계 정보 MySQL 5.6 버전부터 InnoDB 스토리지 엔진을 사용하는 테이블에 대한 통계 정보를 영구적으로...