1. 예제코드에 사용된 개념 네트워크 소켓 스트림 직렬화와 역직렬화 스레드 2. 개념정리 1) 네트워크 - 컴퓨터나 장치 사이에서 데이터를 주고받는 과정 - 네트워크 통신을 통해 원격 위치에 있는 시스템 간 통신이 가능하다. 2) 소켓(Socket) - 네트워크를 통해 데이터를 교환하기 위한 인터페이스다. - 소켓을 통해 클라이언트와 서버가 양방향 통신을 할 수 있다. - 소켓은 IP 주소와 포트 번호를 기반으로 통신한다. 3) 스트림 - 데이터의 입출력을 도와주는 중간 매개체다. 데이터의 흐름이나 통로로 보면 된다. - 스트림은 단방향이므로 하나의 스트림으로 입출력을 동시에 수행할 수 없다. 4) 직렬화와 역직렬화 - 직렬화 : 데이터를 스트림에 전송가능 한 형태(바이트 단위, 일렬)로 변환하는 과정 ..
1. 과제 - 빨간 동그라미를 '말'이라 하고 시작 버튼을 누름과 동시에 각자 달립니다. - 도착하는 순서대로 등수를 표현해주세요. 2. 필요 개념 * Thread 1) 정의 : 스레드는 프로세스 내에서 실행되는 여러 실행 흐름 중 하나로, 가장 작은 실행 단위입니다. 그동안 했던 과제는 main 스레드 하나로 실행해왔던 겁니다..! 2) 스레드의 장점 멀티태스킹 : 한 프로세스 내에서 여러 작업을 동시에 수행할 수 있습니다. 자원 공유 : 같은 프로세스 내의 스레드끼리 메모리(데이터, 힙)을 공유합니다. 응답성 향상 : 하나의 스레드가 작업을 수행하는 동안 다른 스레드는 다른 작업을 계속 할 수 있어 프로그램 반응시간이 단축됩니다. 3) 스레드 다룰 때 주의점 동시성 문제 : 여러 스레드가 같은 자원을..
1. 제네릭(generic)이란? 자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미합니다. 제네릭(Generic)은 Java 프로그래밍 언어에서 타입(type)의 파라미터화를 가능하게 하는 언어 기능입니다. 이는 클래스, 인터페이스, 메소드를 정의할 때 타입을 하나의 파라미터처럼 취급할 수 있게 해 줍니다. 즉, 구체적인 타입을 명시하지 않고도 타입을 사용할 수 있는 방법을 제공합니다. 2. 제네릭 사용 시 얻을 수 있는 이점 1) 타입 안정성 : 제네릭을 사용하면 컴파일 시점에 타입 체크를 할 수 있어서 런타임에 발생할 수 있는 ClassCastException과 같은 오류를 방지할 수 있습니다. 2) 코드의 재사용성 증가 3) 유지보수..
1. 학습주제 : 싱글톤 패턴, 업캐스팅, 다운캐스팅 이해하기 ✔️싱글톤 패턴 2023.12.18 - [프로그래밍 언어/Java] - [Java] 싱글톤 패턴 개념 및 구현방법 [Java] 싱글톤 패턴 개념 및 구현방법 1. 싱글톤 패턴 개념 싱글톤 패턴은 객체 지향 디자인 패턴 중 하나로, 특정 클래스의 인스턴스가 단 하나만 생성되도록 보장하는 패턴이다. 이 패턴을 사용하면 전역적으로 접근 가능한 객체를 ururuwave.tistory.com ✔️ 업캐스팅, 다운캐스팅 2023.12.18 - [프로그래밍 언어/Java] - [Java] 업캐스팅(Upcasting)과 다운캐스팅(Downcasting) [Java] 업캐스팅(Upcasting)과 다운캐스팅(Downcasting) 1. 개념 1) 업캐스팅 :..
1. 싱글톤 패턴 개념 싱글톤 패턴은 객체 지향 디자인 패턴 중 하나로, 특정 클래스의 인스턴스가 단 하나만 생성되도록 보장하는 패턴이다. 이 패턴을 사용하면 전역적으로 접근 가능한 객체를 만들어 공유 자원이나 설정 객체 등을 효율적으로 관리할 수 있다. 2. 싱글톤 패턴 특징 유일한 인스턴스 : 해당 클래스의 인스턴스는 하나만 존재한다. 전역적 접근 : 어디서든지 이 인스턴스에 접근할 수 있다. 게으른 초기화 : 인스턴스가 필요한 시점에 생성된다. 스레드 안정성 : 다중 스레드 환경에서도 안전하게 사용될 수 있다. 3. 싱글톤 패턴 사용 이유 싱글톤 패턴을 사용하지 않아 특정 클래스의 인스턴스가 하나 이상 생성된다면, 여러 문제점이 발생할 수 있다. 자원 낭비 : 메모리와 다른 시스템 리소르를 불필요하..
1. 개념 1) 업캐스팅 : 서브클래스(하위클래스)의 인스턴스를 슈퍼클래스(상위클래스)의 참조로 형변환하는 것. Parent pobj = new Child(); ✔ 서브클래스에서 정의된 메서드를 사용한다. 단, 슈퍼클래스와 동일한 메서드만 사용가능하다. 2) 다운캐스팅 : 슈퍼클래스(상위클래스)의 참조를 서브클래스(하위클래스)의 참조로 형변환하는 것. Child cobj = (Child) Parent; 2. 사용이유 - 상속관계에 있을 때, 업캐스팅은 코드의 유연성과 다형성을 향상시킨다. - 다운캐스팅은 업캐스팅 했다가 다시 원래의 서브클래스 타입으로 되돌릴 때 사용한다. 3. 예시 코드 // Shape 클래스를 정의합니다. abstract class Shape { public abstract void ..
1. StringBuilder 란? StringBuilder는 Java에서 변경 가능한 문자열을 다루기 위해 사용되는 클래스다. 2. 사용 이유 ① 가변성 (Mutable) : String 객체는 불변(immutable)이기 때문에 문자열을 조작할 때마다 새로운 String 객체가 생성된다. 반면, StringBuilder는 가변(mutable)하여 기존 객체를 재사용하면서 문자열을 변경할 수 있다. 이로 인해 반복적인 문자열 연산에서 StringBuilder가 String에 비해 효율적이다. ② 성능 향상 : 문자열 연산이 많은 경우, StringBuilder를 사용하면 메모리 사용을 줄이고 성능을 향상시킬 수 있다. 예를 들어, 반복문 내에서 문자열을 결합하는 경우 StringBuilder를 사용하는..
1. 문제 설명 대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요. 입력 첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다. 문자열은 영어 알파벳으로만 구성되어 있습니다. 출력 첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다. 예시입력 StuDY 예시출력 sTUdy 2. 결과 세 가지 풀이법이 있습니다. 비슷하지만 효율성 측면에서 조금씩 차이가 납니다. 1) 첫번째 풀이 package topic01_02; import java.util.*; public class Main { public String solution(char c){ String answer = ""; if(Characte..