본문 바로가기
반응형

CS19

LocalDatetime, LocalDate, LocalTime 개요 java 8부터 날짜 계산 코드를 Date, Calendar객체대신 LocalDatetime을 주로 사용하게 되었습니다. 사용하게 된 이유와 원인 그리고 기존 객체들의 문제점을 확인 하고자 글을 적게 되었습니다. 1. Calendar와 Date 문제점 1.1 불변객체가 아니다 calendar와 date클래스에서 set method를 호출해서 언제나 저장된 날짜 정보 변경 가능 사이드 이펙트 이슈가 많음 1.2 int 상수 필드의 남용 calendar.add(Calendar.SECOND, 1); calendar.add(Calendar.JUNE, 1); 첫 번째 파라미터에는 JUNE과 같은 전혀 엉뚱한 값이 들어가도 컴파일 시점에서 확인할 방법이 없음 1.3 month 지정 이슈 Calendar.OCT.. 2022. 1. 12.
Thread 1. Thread 정의 CPU의 코어를 최대한 사용해서 많은 업무를 동시에 처리할 수 있게 도와 주는 것이다 특징 생성 관정에서 조금의 시간이 소요가 된다. 쓰래드 생성에 필요한 메모리 공간이 필요(stack 영역) thread 개수 제한을 두지 않기 때문에 너무 많은 thread를 생성하면 메모리 고갈과 같은 이슈가 발생할 수 있습니다 Thread 생성 방식(Task 등록) Runnable/Callable interface를 상속받은 객체를 실행하는 방식 관리의 편의 성을 더해주기위해서 Java 5부터 Thread pool을 사용 합니다 현재 대부분 Thread Pool과 ForkJoinPool을 응용하고 있습니다. thread 객체를 생성해서 task queue에 등록 후 하나씩 thread 와 매칭.. 2022. 1. 1.
RDB Semi Join을 이용한 성능 최적화 Table 구조 CREATE TABLE `food` ( `food_id` bigint NOT NULL AUTO_INCREMENT, `create_date` datetime(6) DEFAULT NULL, `last_modified_date` datetime(6) DEFAULT NULL, `food_status` varchar(255) NOT NULL, `food_title` varchar(255) NOT NULL, `number_of_likes` bigint NOT NULL, `price` int NOT NULL, `review_msg` varchar(255) DEFAULT NULL, `writer_nickname` varchar(50) DEFAULT NULL, `category_id` bigint DEF.. 2021. 12. 12.
RDB Index 성능 이슈발생 원인 대부분 성능 이슈는 index 선언과 잘못된 query문으로 인해 slow 이슈가 발생하게됩니다. 부수적으로 replication과 리눅스 connection개수와 같은 여러 방식으로 성능 이슈를 해결하는 경우도있지만 애플리케이션에서 index와 slow 쿼리를 빠르게 찾는게 중요합니다. 간단한 용어 정리 카디널리티: 겹치지 않는 row의 수 선택도 카디널리티를 전체 조회된 데이터 개수로 나눈것 : 카디널리티/전체row수 1에 근접할 수록 좋습니다. 분포도: 특정 컬럼에 대해서 전체 건수 대비 특정 값이 차지하는 비율(만약 Y/N이고 100개중 50/50비율이면 50%입니다) Index 정의 Database의 데이터를 빠르게 찾기 위해서 사용하는 테이터 구조 MySQL innoDB에서.. 2021. 12. 9.
반응형