JAVA 38

[Java] 인터페이스(Interface)

인터페이스(Interface) 인터페이스는 사용자 간 또는 컴퓨터 간 '통신'이 가능하도록 연결해주는 디바이스나 프로그램을 의미합니다. 사용자 간, 컴퓨터 간 통신을 위해서는 '규격'이 중요합니다. 여기서 '규격'은 인터페이스라 할 수 있고, 인터페이스는 하나의 '표준화'를 제공하는 것이라 할 수 있습니다. 인터페이스라는 개념은 추상 클래스와 매우 유사합니다. 쉽게 말해 인터페이스는 추상 클래스보다 추상화 정도가 더 높은 개념이라고 생각하면 됩니다. 또, 하나의 차이점은 인터페이스는 일반 메소드나 멤버 필드를 가질 수 없습니다. 어떤 클래스가 인터페이스를 사용한다면(상속받는다면) 인터페이스에 선언되어 있는 메소드 구현해야 한다. 인터페이스를 선언할 때, class 키워드가 아닌 'interface 키워드..

JAVA 2024.02.13

MVC 패턴, MVC 패턴의 한계

목차 MVC 패턴 등장 배경 M, V, C의 역할 기본적인 동작 MVC 패턴의 한계 MVC 패턴 등장 배경 서블릿과 JSP만으로 개발을 진행하면 비즈니스 로직과 뷰 화면 렌더링이 모두 하나의 코드에서 처리된다. 결과적으로 코드의 유지 보수가 어려워진다. 때문에 서블릿의 장점과 JSP의 장점을 살려 MVC 패턴이 등장했다. 서블릿은 컨트롤러 역할을 담당하고, JSP는 뷰 역할을 담당한다. MVC 패턴을 사용함으로써 비즈니스 로직을 수정하는 일과 뷰 화면을 수정하는 일은 각각 다르게 발생하고, 서로에게 영향을 주지 않는다. Model, View, Controller 역할 Model 뷰에 전달할 데이터를 담아둔다. View JSP 역할, 모델에 담겨있는 데이터를 사용해서 화면을 그리는 역할을 한다. (HTML..

JAVA 2024.02.08

JSP와 서블릿(Servlet) 그리고 MVC 패턴

JSP(.jsp)란 무엇인가? JSP는 Java Server Pages의 약자이며, HTML 코드에 Java 코드를 입력하여 동적 웹 페이지를 생성하는 도구이다. JSP 실행 시, 자바 서블릿(Servlet)으로 변환되고 웹 애플리케이션 서버(WAS)에서 동작하면서 필요한 기능을 수행하고 응답 정보를 웹 페이지와 함께 클라이언트로 응답한다. 웹 애플리케이션 서버(WAS, Web Application Server) 웹 애플리케이션 서버는 HTTP 기반으로 동작하고, 웹 서버의 기능을 포함한다. 웹 서버도 HTTP 기반으로 동작하지만, 정적 리소스만을 제공한다. 웹 애플리케이션 서버는 동적 리소스를 제공하기 때문에 클라이언트에 따라 다르게 웹 페이지를 보여줄 수 있다. 대표적인 웹 애플리케이션 서버에는 톰캣..

JAVA 2024.02.06

스레드 풀(Thread Pool)과 Executor

목차 스레드 풀이란? 스레드 풀을 왜 사용해야 하는가? 자바는 스레드 풀을 어떻게 구현하는가? Executor 인터페이스를 왜 사용하는가? Executor 인터페이스에 대하여 Executor 동작 주기 스레드 풀은 동일하고 독립적인 다수의 작업을 실행할 때 가장 효과적이다. 스레드 풀이란? 스레드 풀은 스레드를 생성하여 관리하는 곳이다. 생성된 스레드에 작업을 할당해 동시에 실행되는 작업을 관리한다. 스레드는 할당된 작업이 끝나면 스레드 풀로 돌아와 대기 상태가 되며, 다음 작업 할당을 위해 준비한다. 스레드 풀의 스레드에 할당되는 작업의 종류 혹은 처리 시간이 비슷할수록 해당 스레드 풀의 작업 처리 속도가 빨라진다. 또한, 크기가 제한된 스레드 풀에 다른 작업과 의존성을 가지는 작업이 할당될 경우 데드..

JAVA 2024.01.31

스레드(Thread)

목차 스레드란? 스레드 고안 스레드 이점 스레드 사용의 위험성 스레드는 멀티프로세서 시스템의 능력을 최대한 끌어낼 수 있는 가장 쉬운 방법이다. 프로세서 개수가 늘어날수록 여러 작업을 동시에 실행하는 일이 더욱 중요하다. 스레드란(Thread)? 스레드란 프로세스 내에서 실제로 작업을 수행하는 주체를 의미하며, 스레드 사용으로 인해 하나의 프로그램 안에 여러 개의 프로그램 제어 흐름이 공존할 수 있다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 프로세스(Process)란? → 프로세스란 운영체제에 의해 메모리에 적재되어 실행 중인 프로그램이다. 프로세스는 독립적인 메모리 영역을 사용한다. 스레드 고안 스레드는 프로세스의 문제점을 해결하고자 고안됐다. 프로세스의 생성 및 소멸에 따..

JAVA 2024.01.27

소수 찾기, 구하기

이 글에서는 백준에 있는 소수 문제들을 풀면서 배웠던 부분을 정리하려고 한다. 소수 문제는 '에라토스테네스의 체'라는 개념만 확실히 알고 있어도 반 이상은 먹고 들어간다고 생각한다. 소수? 모두가 알고 있듯이 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수이다. 이런 소수를 찾는데 유명한 방법은 에라토스테네스의 체이다. 에라토스테네스를 자바로 구현한 코드이다. i = 2 ~ 100 i는 2부터 시작해서 2를 제외한 2의 배수 자리에 모두 0을 대입하여 소수가 아님을 확인한다. i가 3이 되면 앞의 방식과 동일하게 3을 제외한 3의 배수 자리에 모두 0을 대입한다. 이 과정을 거치고 나서 arr배열의 0이 아닌 수만 출력하면 소수만 출력된다. public class Main { static in..

JAVA 2023.02.01

[Java] 다형성(polymorphism)

다형성(polymorphism) -> 다형성은 다양한 형태 또는 특성을 가진다는 의미입니다. 자바와 같은 객체 지향 언어에서 의미는 부모 클래스를 상속받은 자식 클래스의 인스턴스가 부모의 객체로 사용되고, 자식 클래스의 객체로도 사용될 수 있는 다양한 상황을 의미합니다. 예를 들어, "앵무새가 말을 하네"라는 문장은 "새가 말을 하네"라는 문장으로 사용하여도 어색하지 않습니다. 앵무새가 새의 한 종류이기 때문에 같은 의미로 사용 가능합니다. class Bird {} class Parrot extends Bird {} public class Main { public static void main(String[] args) { Bird b1 = new Bird(); Parrot p1 = new Parrot(..

JAVA 2022.08.31

[Java] 추상 클래스(abstract)

추상 클래스(abstract) -> 추상 클래스는 클래스의 구체적인 내용을 작성하지 않고 '공통적인 특징'을 추상적으로 선언합니다. 반환 값도 없으며, 메소드 명만 선언합니다. 메인 클래스에 추상 클래스의 객체를 바로 생성할 수 없습니다. 그렇다면 추상 클래스는 어떻게 사용해야 할까요? 추상 클래스는 자식 클래스에게 상속을 해줌으로써 사용 가능합니다. 즉, 추상 클래스는 부모 클래스의 역할을 하며 자식 클래스는 추상 메소드를 재정의하여 사용합니다. 이러한 추상 클래스의 특징 때문에 추상 클래스는 상속의 '강제성'을 가집니다. (추상 클래스에도 일반 메소드를 포함할 수 있음) abstract class Animal { abstract void cry(); //추상클래스 void eat() {System.o..

JAVA 2022.08.19

[Java] 오름차순, 내림차순 정렬

오름차순, 내림차순 정렬 1. 오름차순 import java.util.Arrays; Arrays.sort(배열명); 랜덤으로 0 ~ 99까지의 정수를 score 배열에 저장한 뒤 오름차순으로 정렬하여 출력하는 알고리즘입니다. import java.util.Arrays; public class Main { public static void main(String[] args) { int[] score = new int[8]; System.out.print("Before -> "); for(int i = 0; i < score.length; i++) { score[i] = (int)(Math.random() * 100); System.out.print(score[i] + " "); } System.out.pr..

JAVA 2022.08.17

[자바] KeyListener + Scanner

Scanner로 문자 입력받아 창에 쓰기 + 키코드 출력 KeyListener를 설명하는 글과 동일한 틀을 사용했습니다. 다른 것은 메인메소드입니다. 메인메소드에 Scanner 클래스를 사용하여 콘솔 창에 문자를 입력하면 프레임 창에 표시되도록 코드를 작성하였습니다. 이 코드를 작성하여 " myFrmae3.area.setText(inputUser); " inputUser에 입력된 문자를 setText 메소드를 통해 area에 표시되도록 하였습니다. import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JTextA..

JAVA/GUI 2021.07.20