본문 바로가기

728x90

java

(25)
LocalDateTime와 Instant (+ ZonedDateTime) 현업에서 LocalDateTime과 Instant를 사용하다가 문제를 봉착하게 되어서 해당 블로그를 쓰게 되었습니다. Java에서는 LocalDateTime, Instant, ZonedDateTime과 같은 날짜와 시간을 다루기 위한 클래스들을 제공합니다. 하지만 각 클래스는 다른 용도와 특성을 가지고 있습니다. 이들을 잘 활용하는 것이 중요합니다.  1. LocalDateTimeLocalDateTime은 시간대 정보를 포함하지 않는 날짜와 시간을 다룰 때 사용합니다. 즉, 시간대가 중요하지 않고 단순히 날짜와 시간만 필요한 경우에 적합합니다.주요 특징:시간대 정보 없음: LocalDateTime은 시간대 정보 없이 로컬 날짜와 시간만을 표현합니다.불변 객체: LocalDateTime은 불변 객체이므로 ..
[Multi-Thread] execute() vs submit() execute()와 submit()은 모두 ExecutorService 인터페이스에서 제공되는 메서드로, 작업을 쓰레드 풀에 제출하여 실행하는 데 사용됩니다. 하지만 두 메서드 간에는 몇 가지 차이점이 있습니다. execute(Runnable command) 해당 메소드는 Executor 인터페이스 내부에 아래와 같이 정의되어 있습니다. void execute(Runnable command); execute 메서드의 특징은 아래와 같습니다. Runnable 타입의 작업만 처리 가능합니다. 반환 값이 없습니다. execute() 메서드는 작업이 완료되면 어떠한 결과값도 반환하지 않습니다. 따라서 Future 객체를 통해 작업의 상태를 추적하거나 결과를 얻을 수 없습니다. 작업 실패 시 예외 처리 만약 작업..
[Multi-Thread] ThreadPoolExecutor 사용법 및 주의사항 아래 포스팅에서 멀티 쓰레드 환경에서의 작업을 위한 쓰레드 풀을 생성하기 위한 다양한 인터페이스에 대해서 작성하였습니다. https://silver-programmer.tistory.com/entry/Executor-ExecutorService%EC%99%80-ThreadPoolExecutor [Multi-Thread] Executor, ExecutorService와 ThreadPoolExecutor 자바에서는 다중 쓰레드 환경에서 작업을 비동기적으로 실행하기 위한 다양한 인터페이스와 클래스를 제공하고 있습니다. 대표적으로 Executor 인터페이스가 있고, Executor를 확장한 인터페이스인 silver-programmer.tistory.com 여기에서 ThreadPoolExecutor에 대해서도 간..
스프링 부트: Spring Initializr 예제 프로젝트 생성 이번 포스팅은 Spring Initializr을 이용하여 쉽게 스프링 부트 예제 프로젝트를 생성하는 법에 대해서 작성하였습니다. 1. Spring Initializr로 프로젝트 구성하기 위 사이트로 들어가 프로젝트의 구성을 원하는 대로 설정하여 다운로드하면 쉽게 Spring Boot 프로젝트 생성이 가능합니다. 저는 아래와 같이 구성한 후, Generate 버튼을 눌러 프로젝트를 생성하였습니다. Project: Gradle Language: Java 17 Spring Boot: 3.2.0 (SNAPSHOT이나 M 버전 같은 것들은 아직 완전히 개발되지 않은 것들이라 보시면 됩니다.) Project Metadata Group: hello Artifact: core (Artifact을 수정하면 Name 속성..
ORM 이란? Object-Relational Mapping ORM이란, 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법입니다. 만약, SQL이라는 언어로 데이터를 데이터베이스로부터 꺼내 사용해야 한다면 SQL 언어를 별도로 공부해서 사용할 줄 알아야 하는 번거로움이 있습니다. 이 번거로움을 해결하고자 ORM이 탄생을 했는데요. ORM을 통해 우리는 SQL 언어를 전혀 몰라도 Java 언어로만 데이터베이스에 접근해서 원하는 데이터를 받아올 수 있습니다. 즉, 객체와 데이터베이스를 연결해 JAVA 언어로만 데이터베이스를 다룰 수 있게 하는 도구라고 할 수 있습니다. ORM의 장점과 단점을 알아보면 아래와 같습니다. 장점 데이터베이스 시스템에 대한 종속성이 줄어듭니다.: 데이터베이스 시스템이 추상화되어 있기 때문에 ..
객체지향 4대 특성 객체지향의 4대 특성에는 아래가 있습니다. 캡슐화: 정보 은닉 상속: 재사용 추상화: 모델링 다형성: 사용 편의 각각의 특성에 대해서 살펴보겠습니다. 추상화 - 모델링 OOP의 추상화는 모델링이라고 할 수 있습니다. 클래스 설계에서 추상화가 사용됩니다. 클래스 설계를 위해서는 애플리케이션 경계부터 정해야 합니다. 객체 지향에서 추상화의 결과는 클래스입니다. 추상화 = 모델링 = 자바의 class 키워드 상속 - 재사용 객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것입니다. (부모-자식 관계가 X) 객체 지향의 상속은 상위 클래스의 특성을 확장하는 것입니다. 객체 지향의 상속은 is kind of 관계를 만족해야 합니다. (즉, 하위 클래스 is kind of 상위 클래스): 하위 클래스는 상위 클..
객체 지향 설계 5원칙 - SOLID SOLID란? 객체 지향 프로그래밍 및 설계의 5가지 기본 원칙을 두문자어로 나타낸 것입니다. 응집도는 높이고, 결합도는 낮추라는 고전 원칙 (High cohesion, Loose coupling)을 객체 지향 관점에서 재정립한 것입니다. SOLID는 아래의 5가지에 해당합니다. SRP (Single Responsibility Principle): 단일 책임 원칙 OCP (Open Closed Principle): 개방 폐쇄 원칙 LSP (Liskov Substitution Principle): 리스코프 치환 원칙 ISP (Interface Segregation Principle): 인터페이스 분리 원칙 DIP (Dependency Inversion Principle): 의존 역전 원칙 ※ 결합도와 응집..
자바의 직렬화 (Serialization) 직렬화란, 객체를 데이터 스트림으로 만드는 것입니다. 객체에 저장된 데이터를 스트림에 쓰기(write) 위해 연속적인(serial) 데이터로 변환하는 것입니다. 반대로, 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화(deserialization)라고 합니다. 객체를 저장한다는 것은, 객체의 모든 인스턴스변수의 값을 저장한다는 것을 의미합니다. 그리고, 저장했던 객체를 다시 생성하려면, 객체를 생성한 후에 저장했던 값을 읽어서 생성한 객체의 인스턴스변수에 저장하면 됩니다. 인스턴스변수가 단순한 기본형일 때는 인스턴스변수의 값을 저장하는 일은 간단합니다. 하지만, 인스턴스변수의 타입이 참조형일 때는 그냥 저장할 수가 없습니다. 이러한 변수를 저장하기 위해서 자바에서는 ObjectInputStre..

728x90
반응형