본문 바로가기

전체 글37

예외(Exception) 예외 검사 예외 호출 하는 쪽에서 복구를 해야하는 로직을 검사 예외로 잡습니다 호출자가 Catch문을 사용해서 예외를 잡아 처리하거나, 더 밖으로 전파 하도록 강제 해야합니다 복구 가능성이 존재할 떄 사용합니다 비검사 예외 모든 비검사 throwable은 RuntimeException을 상속받은 예외들이어야 합니다. 런타임 예외 프로그래밍 오류를 나타낼때 사용합니다 전제조건을 만족하지 못할때 주로 사용합니다 ArrayOutOfBoundException이 대표적인 예시입니다 에러 정의: 시스템 종료되어 할 수준의 상황이거나 수습이 불가능한 상황을 의미 OutOfMemorym StackOverFlow가 대표적인 예시 입니다 Checked Exception과 UnCheckedException Checked E.. 2022. 1. 20.
함수형 프로그래밍 필자의 생각 비즈니스 로직 복잡도가 높아짐에 따라 사이드 이펙트를 유지 보수성에 따라서 함수형이 뜨고 있습니다 필자는 Java카테고리에 넣기에는 애매한 부분이 있지만 다른 카테고리에 넣기 애매해서 java category에 넣는 걸 결정 했습니다 1. 함수형 프로그래밍 등장배경 비즈니스 로직이 복잡해 지기 때문에 여러 코드와 비즈니스 로직이 스파게티와 같이 엉키는 이슈가 자주 발생 사이드 이펙트와 같은 유지 보수에 어려움을 유발하는 요소들이 많이 발생하게 되었습니다. 사이드 이팩트를 제거 하기 위해서 일관적인 로직을 순수 함수로 정의하여 가독성을 높이고 유지 보수에 편리함을 제공하기 위해 나왔습니다. 2. 함수형 프로그래밍의 특징 순수 함수 정의 부수효과가 없는 함수 즉, 어떤 함수에 동일한 인자를 주었.. 2022. 1. 18.
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.