Java

    Java time 패키지 - Period, Duration 클래스

    Period와 Duration Period 클래스 : 두 날짜 간의 차이를 표현하기 위한것. 날짜 - 날짜 Duration 클래스 : 시간의 차이를 표현하기 위한 클래스. 시간 - 시간 duration에서 시/분/초/나노초 구하기 duration에서 시/분/초/나노초 구하기 - 1 ( 덜 안전함) 불편하지만 사용할 수 있는 방법 시간 : long hour = du.getSeconds() / 3600; 분 : long min = (du.getSeconds() - hour*3600) / 60; 초 : long sec = (du.getSeconds() - hour*3600 - min * 60) % 60; 나노 : nano = du.getNano(); duration에서 시/분/초/나노초 구하기 - 2 (좀 더..

    Java time 패키지 - Calendar와 Date

    1. Calendar 와 Date Date는 JDK1.0, Calendar는 JDK1.1 부터 제공되었다. JDK1.8부터 java.time 패키지로 Calendar와 Date의 단점을 개선한 클래스들이 추가되었다. Calendar는 추상클래스라서 객체를 직접 생성할 수 없고, 메소드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다. // 에러. 추상클래스는 인스턴스를 생성할 수 없다. Calendar cal = new Calendar(); // 굿. getInstance()는 Calendar 클래스를 구현한 클래스의 인스턴스를 반환 Calendar cal = Calendar.getInstance(); Calendar.getInstance() 가 static인이유 Calendar는 추상클래스 메소..

    Java time 패키지 - LocalDateTime, ZoneDateTime, OffsetDateTime

    ' 연산은 LocalDate, LocalTime 을 보면서 하면 된다. LocalDateTime LocalDate와 LocalTime을 합쳐서 LocalDateTime을 만들 수 있다. (둘의 기능을 합쳐놓았다고 보면 된다) LocalDate date = LocalDate.of(2018, 10, 05); LocalTime time = LocalTime.of(12,34,56); LocalDateTime dt = LocalDateTime.of(date, time); LocalDateTime dt2 = date.atTime(time); LocalDateTime dt3 = time.atDate(date); LocalDateTime dt4 = date.atTime(12, 34 ,56); LocalDateTime ..

    Java time 패키지 - LocalDate, LocalTime, Instant

    java.time 패키지 - LocalDate, LocalTime Java의 탄생과 함께한 Date와 Calendar의 단점을 해소하기 위해 JDK 1.8부터 java.time 패키지가 추가되었다. 이 패키지는 4개의 하위 패키지가 있다. 패키지 설명 java.time 날짜와 시간을 다루는데 필요한 핵심 클래스들 제공 java.time.chrono 표준(ISO)이 아닌 달력 시스템을 위한 클래스들 제공 java.time.format 날짜와 시간을 파싱, 형식화하기 위한 클래스들 제공 java.time.temporal 날짜와 시간의 필드와 단위(unit)을 위한 클래스들 제공 java.time.zone 시간대(time-zone)와 관련된 클래스들 제공 이 패키지의 클래스들은 다 불변이다. Immutable..

    Java UUID (+ IN MySQL )

    UUID란 UUID(Universally Unique Identifier)는 온라인 대전 시스템이나 랭킹 시스템 등에서 전 세계에서 유일한 값으로 서버에 연결하지 않고 만들 경우 활용하는 식별자다. UUID는 전 세계에 중복 없는 독특한 값이 되도록 설계되어 있으며 고유성이 중앙 서버 등 요소에 의존하지 않도록 되어 있다. 이런 특징을 가진 UUID를 데이터베이스 기본키에 이용하면 타인 데이터베이스와 결합하거나 데이터를 다른 데이터베이스로 이동하는 걸 자유롭게 할 수 있게 된다. 반면 누구나 UUID를 생성할 수 있기 때문에 현재 전 세계에 존재하는 UUID를 추적할 수 없다는 단점도 함께 갖고 있다. 전 세계에 중복이 없는 독특한 가치를 실현하는 방법은 다수 존재한다. 하지만 UUID 구현은 IETF의..

    예외 처리 방법(Exception Handling) - 복구, 회피, 전환

    예외 처리 방법(Exception Handling) 예외를 처리하는 방법에는 예외 복구, 예외 처리 회피, 예외 전환 방법이 있다. 예외 복구 예외 상황을 파악하고 문제를 해결해서 정상 상태로 돌려놓는 방법 예외를 잡아서 일정 시간, 조건만큼 대기하고 다시 재시도를 반복한다. 최대 재시도 횟수를 넘기게 되는 경우 예외를 발생시킨다. final int MAX_RETRY = 100; public Object someMethod() { int maxRetry = MAX_RETRY; while(maxRetry > 0) { try { ... } catch(SomeException e) { // 로그 출력. 정해진 시간만큼 대기한다. } finally { // 리소스 반납 및 정리 작업 } } // 최대 재시도 횟..

    예외 처리란

    예외 처리(Exception Handling) 프로그램 실행도중에 발생하는 에러는 어쩔 수 없지만, 예외(Exception)은 프로그래머가 미리 대처를 할 수 있다. 사용자의 원인으로 발생하는 예외는 개발자가 미리 대처를 해줄 수 있다. ​ 예외 처리(exception handling)란, 프로그래머가 예기치못한 예외의 발생에 미리 대처하는 코드를 작성하는 것으로, 실행중인 프로그램의 비정상적인 종료를 막고, 상태를 정상상태로 유지하는 것이 목적이다. 예외처리의 목적 정의 - 프로그램 실행 시 발생할 수 있는 발생할 수 있는 예외에 대비한 코드를 작성하는것 목적 - 프로그램의 비정상 종료를 막고 정상적인 실행상태를 유지하는것 Error(에러클래스) 와 예외(Exception)은 모두 runtime 시에 ..

    자바가 제공하는 기본 예외들과 자주 사용하는 예외들

    자바가 제공하는 기본예외들 Arithmetic Exception 산술연산에서 예외 조건이 발생했을 때 발생 대표적인 / by zero ArrayIndexOutOfBounds Exception 잘못된 인덱스로 Array에 엑세스 했을 경우 발생. 인덱스가 음수이거나 배열 크기보다 크거나 같을 때 발생 ClassNotFoundException 정의한 클래스를 찾을 수 없을 때 발생하는 예외 FileNotFoundException 파일에 엑세수 할 수 없거나 열리지 않을 경우 발생 IOException 입출력 작업이 실패하거나 중단될 때 발생 InterruptedException Thread가 waiting, sleeping 또는 어던 처리를 하고 있을 떄 interrupt가 되면 발생하는 예외 NoSuchM..

    에러와 예외 (Error, Exception)

    오류(error) : 시스템에 무엇인가 비정상적인 상황이 발생한 경우. 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있는데 이러한 결과를 초래하는 원인. Java에서는 주로 JVM(Java Virtual Machine)에서 발생시키는 것이고, 예외(Exception)와 반대로 Application Code에서 잡아도 처리할 제대로 방법이 없다. OutOfMemoryError, ThreadDeath, StackOverflowError 등 에러는 발생 시점에 따라서 3가지로 분류할 수 있다. Compile Error (컴파일 에러) : 컴파일 할 때 발생하는 에러. syntax error(문법 오류)도 포함됨. - 컴파일 시 발생하는 에러 소스코드를 컴파일을 하면 컴파..

    객체지향 관점에서의 is-a, has-a

    객체지향 관점에서의 is-a, has-a 클래스 간의 관계를 설정할 때 상속 관계를 맺을 지 포함관계를 맺을 지 헷갈리는 경우가 있다. 상속관계 : extends로 상속을 받은 관계 포함관계 : 내부 멤버로 갖고 있는 관계 이 때, 클래스간의 관계를 is-a, has-a 로 생각을 하면 조금 더 명확하게 구성할 수 있다. is-a : A is B - A는 B이다 has-a : A has B - A는 B를 가지고 있다. is - a (IS - A, ~는 ~이다. ) is-a는 상속관계에서 사용하는 것이 가장 효율적이다. 상속을 사용하면 하위 클래스가 상위 클래스에 종속되기 때문에 이질적인 클래스 사이의 관계에서는 상속을 사용하지 않는것이 좋다. 코드를 재사용할 목적으로 서로 관련이 없는 클래스들을 상속관계..