Programming Language/java
-
Netty 정리Programming Language/java 2024. 4. 23. 16:45
Netty 관련 내가 이해하고 있는 내용을 정리해본다.Netty가 뭔가요?Netty를 왜 쓰나요?Netty가 어떻게 동작하나요?위 3가지 관점에서 주요한 내용을 정리해보겠습니다. 1. Netty가 뭔가요?Netty는 NIO기반 네트워크 애플리케이션 프레임워크입니다. (NIO는 New Input Output 입니다.)다양한 프레임워크에서 Netty를 사용하고 있고 Spring WebFlux에서도 Netty를 디폴트 코어로 사용하고 있습니다. 2. Netty를 왜 쓰나요?Netty는 고성능 서버를 구현하기 위해 사용됩니다. 고성능이라는 말은 같은 자원을 효율적으로 사용한다는 말과 같습니다.그렇다면 무엇에 비해 효율이 좋다는 것일까요? 이를 이해하기 위해 기존의 멀티스레드 기반 애플..
-
[디자인 패턴] 싱글톤 패턴Programming Language/java 2023. 9. 1. 23:13
싱글톤 패턴 인스턴스를 반드시 1개만 제공하는 패턴으로 유명하여 간단하게 정리해본다. 1. 생성자를 private으로 막는다. 2. static Factory Method 방식의 일환으로 getInstance 메소드를 제공한다. public class Singleton { private static Singleton instance; private Singleton() { // 에러 } public static Singleton getInstance() { // 인스턴스가 생성되지 않았을 경우에만 인스턴스를 생성합니다. if (instance == null) { instance = new Singleton(); } return instance; } } 정적 변수에 private static Singlet..
-
[디자인 패턴] Factory Method 패턴Programming Language/java 2023. 8. 20. 20:07
1. Factory Method 패턴이 무엇인지 정리하고 2. 어느 상황에 유용한지 생각해보자 인스턴스 생성을 Factory에게 맡기는 것이 팩토리 메서드 패턴인데 예시와 함께 살펴보자 // Product: 문서의 공통 인터페이스 interface Document { void write(String content); } // ConcreteProduct: 텍스트 문서 클래스 class TextDocument implements Document { @Override public void write(String content) { System.out.println("Writing text: " + content); } } // ConcreteProduct: PDF 문서 클래스 class PdfDocument..
-
[디자인 패턴] Template Method 패턴Programming Language/java 2023. 8. 20. 19:02
1. Template Method 패턴이 무엇인지 2. 언제 사용하는지 알아보자 Template Method 패턴은 상위 클래스에서 뼈대를 결정하고 하위 클래스에서 구체적인 내용을 결정하는 패턴이라고 한다. 이 내용만 보고 이해가 되지 않으니 실제 예시를 들어서 살펴보자 AbstractDisplay 라는 추상 클래스에서 다음과 같이 정의한다. public abstract class AbstractDisplay { // 하위 클래스에서 상속받아 구체적으로 구현할 추상 메서드들 public abstract void open(); public abstract void print(); public abstract void close(); // 추상 클래스에서도 일반 메서드를 정의할 수 있다 public fina..
-
[디자인 패턴] Adapter 패턴Programming Language/java 2023. 8. 19. 16:23
1. Adpater 패턴이 언제 사용하고 2. Adapter 패턴을 어떻게 사용할까? 가령 기존 사용하고 있던 클래스 혹은 라이브러리 A가 있다고 하자. 이 A를 새로운 클래스 B에 편입시켜서 그대로 A의 기능을 사용하고자 할 때 Adapter 패턴이 사용된다. A를 Wrapping 하는 행위와 마찬가지여서 Wrapper 패턴이라고도 한다. 구현하는 방법은 2가지가 있는데 클래스(상속)을 사용한 패턴, 객체(인스턴스)를 사용한 패턴이 있다. 클래스를 사용한 패턴 public class A { public A(String str) { } public void method1() { ... } public void method2() { ... } } 기존 클래스 A가 존재하고 public interface N..
-
[디자인 패턴] Iterator 패턴Programming Language/java 2023. 8. 19. 15:02
1. Iterator 패턴이 무엇이고 2. Iterator 패턴을 왜 사용할까? for 문을 사용해서 반복을 돌리면 될텐데 왜 굳이 Iterator 패턴을 사용할까? => 반복의 대상이 되는 객체가 변경되어도 반복을 사용하는 측에서 신경쓰지 않아도 된다. => 즉 유지보수 측면에서 유리하다. 어떻게 가능한지 Iterator 패턴이 무엇인지부터 살펴보자 Iterable 인터페이스와 Iterator 인터페이스 public interface Iterable { public abstract Iterator iterator(); } public interface Iterator { public abstract boolean hasNext(); public abstract E next(); } Iterable 는 ..
-
JAVA - 클래스변수, 인스턴스변수, 지역변수Programming Language/java 2021. 1. 5. 19:42
class Test{ int x; // 인스턴스 변수 static int y; // 클래스 변수 void z(){ int z; // 지역 변수 } } 클래스 변수 - 클래스들이 jvm 올라갈 때 메모리 할당 - 클래스 영역에 존재, 모든 객체가 공통된 저장공간(변수)를 공유한다 ,gc의 관리 대상 x - 객체 생성하지 않고 static 자원에 접근 가능 인스턴스 변수 - 인스턴스 생성시 만들어짐 - 인스턴스마다 독립된 저장공간을 가진다. 지역변수 - 메소드 내에서만 사용가능, 메소드 종료되면 사용 x new 를 통한 객체의 메모리는 heap stack에는 원시타입의 메모리와 객체의 주소값은 stack final제어자 사용시 [표 1] final 제어자의 효과 대상 제한 클래스 다른 클래스에서 상속을 하지..