반응형

Programming/Java 70

Windows10 Java8 32bit 설치하기 jdk8(x86)

윈도우10 Java8, JDK8 32비트(x86) 버전 설치하는 방법입니다. (Windows10 64비트 환경에서 설치를 진행하였으며, 개발상 필요에 의해 32비트 jdk를 설치하게 되었습니다.) 일반적으로 대부분의 운영 체제가 64비트(x64)를 사용하겠지만 간혹 특별한 상황에서 32비트를 사용해야 하는 경우가 발생합니다. 32비트의 Java8을 설치하기 위해서는 아래 Oracel 사이트를 통해 Java SE Development Kit 8u202, Windows x86 버전을 다운로드합니다. Java SE (Standard Edition) https://www.oracle.com/kr/java/technologies/javase/javase8-archive-downloads.html (JDK 다운로드..

Programming/Java 2022.02.03

자바 소켓 통신(Socket)을 사용하는 이유와 동작 원리 및 코드

Java 소켓 통신(Socket)을 사용하는 이유 먼저 자바에서 소켓 통신은 C 또는 C++ 언어로 구현된 프로젝트와의 통신에 많이 사용됩니다. 이유는 Java와 C의 데이터 개념이 다르기 때문인데요. C에서는 구조체를 사용하는데 반해서 Java에는 구조체가 없습니다. 이처럼 Java의 Object 구조를 C에서 이해하지 못하고 C의 구조체를 자바에서 이해하지 못하기 때문에 서로 통신을 위해서는 byte 단위로 정보를 주고받아야 합니다. (Socket을 사용한 전문 통신) Http 통신과 Socket 통신의 차이점 - 단방향 통신인 Http 통신 Http 통신은 Client의 요청(Request)이 있을 때만 서버가 응답(Response)하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식입니다. Cl..

Programming/Java 2022.01.25

LocalDateTime toString() 메서드 사용 시 주의해야 할 점(00초 사라짐)

LocalDateTime의 toString() 메서드 사용 시 00초가 사라지는 경우 먼저 LocalDateTime은 java.time 패키지에 있는 시간을 다루는 클래스이며 jdk1.8부터 사용되었고 기존의 Date와 Calendar 클래스의 단점을 보완하기 위해서 나오게 되었습니다. 프로젝트 진행 중 LocalDateTime 타입의 값을 toString() 메서드로 문자열 형태로 가지고 와서 사용하는 과정에서 LocalDateTime의 기본 형태인 'yyyy-MM-ddTHH:mm:ss'에서 저장된 데이터의 마지막 ss 초 값이 00 일 경우에 값이 아예 출력되지 않고 'yyyy-MM-dd T HH:mm' 까지만 나오는 경우가 발생하였습니다. ex) mariaDB에 저장된 DateTime 값 '2022..

Programming/Java 2022.01.20

전문통신이란? Java 전문통신(Fixed Length Format) 문자열 길이 맞추는 메서드

전문 통신이란, 먼저 'Fixed Length Format'은 전문을 구성하는 field들의 길이를 입력받을 수 있는 최대 사이즈로 고정시키는 방식입니다. 대규모의 프로젝트를 진행하다 보면 서로 다른 시스템끼리 데이터를 주고받아야 하는 상황이 생깁니다. 이 경우 시스템 간의 통신에서 데이터 송수신 format을 정하는 것도 중요한데요. 일반적으로 데이터를 송수신하는 전문의 형태는 JSON, XML, Fixed Length 등 여러 가지로 구성할 수 있습니다. (요즘은 XML, JSON 등의 format 형태가 많이 사용되지만 C언어와의 통신에서는 데이터 송수신 format으로 C언어에서 사용하기 편리한 형태인 Fixed Length 형태도 많이 사용됩니다.) 전문은 일정한 크기의 공통된 데이터를 가진 h..

Programming/Java 2022.01.19

Java 대출 이자 계산기 구현하기 (원금균등, 원리금균등, 만기일시)

'자바 대출 이자 계산기 구현하기 (원금균등상환, 원리금 균등상환, 만기 일시상환)' 대출 시 이자 상환 방식에는 원금균등상환, 원리금 균등상환 그리고 만기 일시상환 세 가지가 있으며, 각 방식에 따라서 이자 금액에 차이가 있을 뿐만 아니라 재정 계획에 영향을 줄 수 있습니다. 아래에서는 각 방식에 대한 간단한 내용과 구현된 코드를 볼 수 있습니다. '원금균등상환' 매월 동일한 원금과 남은 잔금에 상응하는 이자를 더한 금액을 매월 상환하는 방식입니다. 즉, 1천만 원을 3%의 이율로 12개월간 대출한 경우 매월 833,333원의 원금을 상환하며, 대출 잔금에 3% 이자율을 적용한 이자를 함께 상환합니다. 잔금이 매월 줄어들기 때문에 그에 따른 이자가 줄어들어 3가지 방식 중 총이자 금액이 가장 저렴하다는..

Programming/Java 2022.01.13

Java 날짜와 문자열 LocalDateTime, String 변환하기

'LocalDateTime to String, String to LocalDateTime' 자바에서는 기존의 Calendar 클래스와 Date 클래스의 불편한 점을 보안하기 위해 JDK1.8부터 java.time API를 도입하였습니다. java.time 패키지에는 날짜와 시간을 나타내는 LocalDateTime, 날짜를 나타내는 LocalDate, 시간을 나타내는 LocalTime 외에 OffsetDateTime, ZonedDateTime, Instant 등의 클래스들이 있습니다. (LocalDateTime과 String의 변환에 대해 먼저 살펴보고, 아래에서는 OffsetDateTime, ZonedDateTime, Instant 등 java.time 패키지 내에 시간을 다루는 클래스들에 대해 간단하게..

Programming/Java 2022.01.08

자바 추상 클래스와 인터페이스의 차이점 이해하기

'is a kind of(~의 한 종류) 추상 클래스'와 'be able to(~할 수 있는) 인터페이스' - 추상 클래스 public abstract class 클래스이름 { ... public abstract void 메서드이름(); } class 앞에 'abstract' 키워드를 사용하여 정의하며, 하나 이상의 추상 메서드를 가지는 클래스를 말합니다. 추상 메서드를 선언하여 상속을 통해서 하위 클래스에서 (반드시) 구현하도록 강제하는 클래스입니다. (추상 메서드를 포함하지 않는 클래스에서도 abstract를 붙여서 추상 클래스로 지정할 수 있으며, 반대로 추상 메서드를 포함하는 클래스는 반드시 추상 클래스여야 합니다.) abstract로 선언된 추상 클래스는 상속을 위한 클래스이기 때문에 new 키..

Programming/Java 2022.01.06

메소드 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이 이해하기

'다형성과 오버로딩, 오버라이딩' 다형성이란 하나의 메서드나 클래스가 있을 때 그것이 다양한 방법으로 동작하는 것을 말하며, 자바에서는 주로 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해서 다형성을 지원합니다. 오버로딩과 오버라이딩은 이름이 비슷하여 헷갈릴 수 있지만 전혀 다른 개념이기 때문에 헷갈리지 않도록 확실한 차이점을 알아두는 것이 좋습니다. '오버로딩(Overloading) / 확장' 같은 이름의 메서드 여러 개를 가지면서 매개변수의 유형과 개수가 다르도록 사용하는 것 '오버라이딩(Overriding) / 재정의' 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것 '오버로딩(Overloading)' 오버로딩은 메서드 오버로딩과 생성자 오버로딩이 ..

Programming/Java 2022.01.03

자바 예외 처리 방법과 CheckedException, UncheckedException

*** Throwable 클래스는 예외 처리를 하기 위한 최상위 클래스로, 직접 사용되는 경우는 없지만 Throwable 타입과 이 클래스를 상속받은 서브 타입만이 JVM이나 throw 키워드에 의해 던져질 수 있습니다. '에러(Error) vs 예외(Exception)' '에러'는 시스템이 비정상적인 상황에서 발생합니다. 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 자바 가상 머신(JVM) 실행에 문제가 생겼을 때 발생하는 것이며, 시스템 레벨에서 발생하는 심각한 수준의 오류이기 때문에 예외와 다르게 개발자가 미리 예측할 수도 없고, 애플리케이션 코드에서 잡아서 처리할 수도 없습니다. (에러의 예로는 OutOfMemoryError, ThreadDeath, StackOver..

Programming/Java 2021.12.30

Java Generic 제네릭 기본적인 개념 이해하기

'제네릭(Generic) 기본적인 개념 이해하기' '데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법' 어떤 자료 구조를 만들어서 사용하려고 할 때 String 타입도 지원하고 싶고, Integer 타입도 지원하고 싶고, 다른 타입들도 지원하고 싶은 경우가 있습니다. 그럴 때 String에 대한 클래스, Integer에 대한 클래스 등 타입에 따라 각각의 클래스들을 모두 만드는 것은 너무 비효율적입니다. 자바에서는 이러한 문제를 해결하기 위해 java 1.5부터 제네릭을 사용하게 되었는데요. 제네릭(Generic)은 클래스 내부에서 지정하는 것이 아닌, 외부에서 사용자에 의해 지정되는 것을 의미하며, 한마디로 특정(Specific) 타입을 미리 지정해주는 것..

Programming/Java 2021.12.24
반응형