Java

· Java
자바(Java)와 같은 객체 지향 프로그래밍 언어에서, 추상 클래스(Abstract Class)와 인터페이스(Interface)는 클래스가 어떤 메서드를 가져야 할지를 정의하고 그 구조를 설계하는 데 있어 중요한 역할을 합니다. 그러나 이 두 개념 사이에는 중요한 차이점이 있습니다. 추상 클래스(Abstract Class) 추상 클래스는 추상 메서드(즉, 선언만 있고 구현 내용이 없는 메서드)를 포함할 수 있는 클래스입니다. 추상 클래스는 객체를 직접 생성할 수 없습니다. 대신에 다른 클래스가 이를 상속 받아서 추상 메서드를 구현하도록 설계됩니다. 추상 클래스의 특징: 추상 메서드를 포함할 수 있습니다. 구현된 메서드도 포함할 수 있습니다. 클래스를 상속하면 추상 클래스의 메서드를 모두 구현해야 합니다...
· Java
멀티스레딩 환경은 레이스 컨디션, 데드락, 스타베이션, 라이브락 등 다양한 문제를 야기할 수 있습니다. 이러한 문제들을 해결하는 방법은 여러 가지가 있습니다. 그 중 몇 가지 주요한 방법들을 아래에 살펴봅니다: 1. 동기화: 동시에 여러 스레드가 데이터에 접근하는 것을 제어하기 위해 사용합니다. 자바에서는 synchronized 키워드와 Lock 인터페이스를 사용하여 동기화를 구현할 수 있습니다. public class Counter { private int count = 0; public synchronized void increment() { count++; } public synchronized int getCount() { return count; } } 2. 불변성: 객체가 한 번 생성되면 그 ..
· Java
해시는 자료구조 중 하나로, 효율적인 검색을 가능하게 합니다. 해시는 '키'와 '값'의 쌍으로 이루어진 데이터를 저장하는 데 사용되며, 키를 통해 값을 빠르게 검색할 수 있습니다. 자바에서는 HashMap, HashSet, HashTable 등의 클래스를 통해 해시를 사용할 수 있습니다. 자바에서 해시를 사용하면 데이터 검색에 소요되는 시간을 크게 줄일 수 있습니다. 해시 테이블에서의 검색, 삽입, 삭제 연산의 시간 복잡도는 일반적으로 O(1)입니다. 이는 해시 테이블이 키를 해시 함수에 입력하여 반환된 해시 값을 인덱스로 사용하기 때문입니다. 다음은 자바에서 HashMap을 사용하는 예입니다: import java.util.HashMap; public class Main { public static v..
· Java
자바 컬렉션 프레임워크 자바 컬렉션 프레임워크는 데이터를 저장하고 처리하는 데 필요한 클래스와 인터페이스의 모음입니다. 이 프레임워크를 이용하면 프로그래머들은 데이터를 효율적으로 처리하고 조작할 수 있습니다. 컬렉션 프레임워크는 주로 List, Set, Queue, Deque, Map 인터페이스를 통해 구현됩니다. 리스트(List) List 인터페이스는 순서가 있는 컬렉션을 정의합니다. 즉, 요소들이 특정 순서로 저장되며 중복 요소를 허용합니다. List의 주요 구현체로는 ArrayList, LinkedList 등이 있습니다. ArrayList: 동적 배열을 구현한 클래스로, 크기를 자동으로 조정하는데 효율적입니다. 랜덤 액세스가 가능하여 특정 인덱스의 요소에 빠르게 접근할 수 있습니다. LinkedLi..
· Java
자바의 멀티스레딩이란? 멀티스레딩은 여러 작업을 동시에 수행하는 기능을 가진 프로그래밍 패러다임입니다. 간단히 말해, 멀티스레딩은 하나의 프로세스 내에서 두 개 이상의 작업을 동시에 진행할 수 있게 합니다. 각 스레드는 독립적인 실행 경로를 가지며, 자바 가상 머신(JVM)은 운영 체제와 함께 이러한 여러 스레드를 관리합니다. 자바에서는 'Thread' 클래스와 'Runnable' 인터페이스를 통해 멀티스레딩을 구현합니다. 'Thread' 클래스를 상속받거나 'Runnable' 인터페이스를 구현하여 스레드를 생성하고 'start()' 메소드를 호출함으로써 스레드를 시작할 수 있습니다. 멀티스레딩의 장점 응답성 향상: 한 스레드가 긴 작업을 수행하고 있는 동안, 다른 스레드는 사용자의 입력과 같은 추가 작..
· Java
SOLID 원칙은 다음과 같습니다: Single Responsibility Principle (SRP, 단일 책임 원칙) Open-Closed Principle (OCP, 개방-폐쇄 원칙) Liskov Substitution Principle (LSP, 리스코프 치환 원칙) Interface Segregation Principle (ISP, 인터페이스 분리 원칙) Dependency Inversion Principle (DIP, 의존성 역전 원칙) 1. Single Responsibility Principle (SRP, 단일 책임 원칙) 단일 책임 원칙은 클래스는 단 한 개의 책임을 가져야 한다는 원칙입니다. 이를 통해 클래스의 변경이 한가지 이유로 제한될 수 있습니다. 예를 들어, Book 클래스를 만..
· Java
자바의 스프링 프레임워크에서는 의존성 주입(Dependency Injection, DI)을 위해 @Autowired 어노테이션을 자주 사용합니다. 그러나 최근에는 @Autowired를 이용하는 대신 생성자 혹은 @RequiredArgsConstructor 어노테이션을 사용하는 방법이 더 권장되고 있습니다. 이는 명확한 코드 작성과 테스트 용이성 등 다양한 이유로 인한 것입니다. 이 글에서는 이 세 가지 방법의 특징과 이를 사용하는 이유에 대해 상세히 살펴보겠습니다. @Autowired @Autowired는 Spring에서 제공하는 어노테이션으로, 의존성 주입을 자동화합니다. 필드 주입(Field Injection) 방식이 가장 일반적이지만, 생성자 주입(Constructor Injection)과 세터 주..
· Java
1. 캡슐화 (Encapsulation) 캡슐화는 데이터와 해당 데이터를 다루는 메소드를 하나로 묶는 것을 의미합니다. 이는 클래스라는 '캡슐' 내에 데이터와 함수를 담아 관리합니다. 캡슐화를 통해 클래스의 내부 데이터는 외부에서 직접 접근할 수 없으며, 오직 클래스 내부 메소드를 통해서만 접근할 수 있습니다. 이렇게 하면 데이터를 보호하고, 클래스의 내부 구현을 외부로부터 숨길 수 있습니다. 2. 상속 (Inheritance) 상속은 기존 클래스의 특징과 기능을 물려받아 새로운 클래스를 생성하는 것입니다. 이를 통해 코드의 재사용성을 높이고, 중복된 코드를 줄일 수 있습니다. 자바에서는 extends 키워드를 사용하여 상속을 구현합니다. 상속받는 클래스를 '하위 클래스' 또는 '자식 클래스', 상속하는..
· Java
가비지 컬렉터 특징 장점 단점 적합한 상황 G1 GC 영역별 관리, 동시성 GC 정지 시간 최소화, 가비지가 많은 영역 우선 처리 작은 힙에서 상대적으로 비효율적 대용량 힙, 낮은 정지 시간이 필요한 경우 Parallel GC 병렬 처리 전체 처리 시간 단축 정지 시간이 길 수 있음 병렬 처리 성능을 중요시하는 경우 CMS GC Old 영역 동시성 GC 정지 시간 최소화 메모리 추가 사용, 고부하에서 성능 저하 정지 시간이 짧아야 하는 경우 ZGC 저지연, 대용량 힙 처리 대용량 힙, 매우 낮은 정지 시간 메모리 오버헤드가 높을 수 있음 대용량 힙과 매우 낮은 정지 시간이 필요한 경우 Shenandoah GC 저지연, 다양한 플랫폼 지원 정지 시간 최소화, 다양한 환경에서 사용 가능 메모리 오버헤드가 높..
· Java
오늘은 자바(Java)라는 컴퓨터 프로그래밍 언어의 두 가지 버전, 자바 11과 자바 17의 차이점에 대해 알아볼 거예요. 컴퓨터 언어도 사람들이 사용하는 언어처럼 발전하고 변화해요. 자바도 계속 발전하면서 새로운 버전이 나오고 있어요. 그럼 이 두 버전의 주요 차이점을 알아볼까요? 1. 새로운 기능 자바 17 버전은 자바 11 버전보다 더 많은 기능을 가지고 있어요. 이런 기능들은 프로그래머들이 더 쉽게 작업을 할 수 있도록 도와줘요. 예를 들어, 자바 17에는 패턴 매칭, 레코드, 씰드 클래스 등의 새로운 기능이 추가되었어요. 패턴 매칭 (Pattern Matching) 패턴 매칭은 Java 17에서 도입된 instanceof 연산자에 추가된 개념입니다. 패턴 매칭을 이용하면 특정 타입에 대한 ins..
개발만파볼까
'Java' 카테고리의 글 목록 (2 Page)