JAVA41 프록시 패턴(프록시 패턴, 데코레이터 패턴) 정리 ≣ 목차프록시란?프록시는 두 가지 개념으로 존재합니다. 하나는 객체 안에서 사용되는 프록시이고, 다른 하나는 웹 서버에서 사용되는 프록시입니다. 세부적인 내용은 다르지만, 근본적으로 대리자 역할은 동일합니다. 즉, 프록시는 어떤 대상을 대신해서 작업을 수행하는 역할을 한다는 점에서 공통점이 있습니다.프록시 객체: 실제 객체에 대한 대리자로서 클라이언트의 요청을 대신 처리합니다.웹 서버 프록시: 네트워크 요청을 중계하여 보안, 캐싱, 접근 제어 등의 기능을 제공합니다. 프록시 객체의 역할프록시 객체는 실제 객체에 대한 대리자로서, 클라이언트의 요청을 대신 처리합니다. 중요한 점은 클라이언트가 서버에게 요청을 한 것인지, 프록시에게 요청을 한 것인지조차 몰라야 한다는 것입니다. 프록시를 사용한 디자인 패.. 2024. 9. 15. 전략(Strategy) 패턴 정리 ≣ 목차 전략 패턴이란?전략 패턴은 알고리즘의 전략을 정의하고 각 알고리즘을 별도의 클래스로 캡슐화하여 서로 교환 가능하게 만드는 행동 디자인 패턴입니다. 이를 통해 특정한 상황에서 어떤 알고리즘을 사용할지 선택할 수 있도록 해줍니다. 따라서 알고리즘이 여러 개일 때 전략 패턴을 사용하는 것이 적합합니다. 이러한 유연성 덕분에 필요에 따라 알고리즘을 쉽게 적용할 수 있습니다.예를 들어, 게임에서 캐릭터가 공격하는 방식이 여러 가지일 때, 각 공격 방식을 전략으로 정의하고 필요에 따라 변경할 수 있는 구조를 만들 수 있습니다. 전략 패턴 구조전략 패턴은 크게 세 가지 요소로 구성됩니다 Context, Strategy인터페이스, 그리고 ConcreteStrategy클래스들입니다.Context(문맥) : .. 2024. 9. 11. 템플릿 메소드(Template Method) 패턴 정리 ≣ 목차안녕하세요! 오늘은 소프트웨어 디자인에서 매우 중요한 개념인 템플릿 메소드(Template Method) 패턴에 대해 알아보겠습니다. 이 글을 통해 템플릿 메소드 패턴이 무엇인지, 어떻게 작동하는지, 그리고 실제 예제를 통해 이해해 보도록 하겠습니다. 😊 Template Method Pattern이란?템플릿 메소드는 공통으로 사용하는 메서드를 템플릿화하여 부모 클래스에 뼈대를 두고, 구체적인 사항은 자식 클래스에서 구현하는 방식입니다. 이를 통해 자식 클래스는 알고리즘의 전체 구조를 변경하지 않고 특정 부분만 재정의할 수 있습니다. 즉, 부모 클래스에서는 전체적인 흐름을 템플릿으로 정의하고, 자식 클래스에서는 필요한 부분만 오버라이드하여 사용할 수 있습니다. 템플릿 메서드 패턴 구조Abstrac.. 2024. 9. 10. [Java] 쓰레드 로컬(ThreadLocal) ≣ 목차 스프링으로 개발을 하다가 보면 예상하지 못하는 동시성 문제가 발생할 수 있습니다. 스프링에서 스프링 빈은 기본적으로 싱글톤으로 등록됩니다. 이는 애플리케이션 컨텍스트 내에서 해당 빈의 인스턴스가 하나만 생성되고, 모든 요청이 한 개의 인스턴스를 공유하게 되어서 예상 못하는 동시성 문제가 발생할 수 있습니다. 동시성 문제란?동시성 문제는 여러 사용자가 동시에 같은 요청을 할 때 발생하는 문제로, 여러 스레드가 동시에 동일한 로직을 호출하게 되어 데이터의 일관성이 깨지거나 예기치 않은 결과가 발생하는 상황을 말합니다. 동시성 문제의 원인다중 사용자 이용: 여러 사용자가 동시에 시스템에 접근하여 동일한 자원에 대한 요청을 보낼 때스레드의 비동기 처리: 비동기적으로 실행되는 스레드들이 동일한 데이터.. 2024. 9. 8. [JAVA]체크 예외와 언체크 예외 ≣ 목차해당 포스팅은 자바 예외에 대해서 어느 정도 알고 계신다고 생각하고 작성한 내용입니다. 혹시 자바 예외에 대해서 모르시는 분들은 자바 예외에 대해서 먼저 공부하고 보시면 좋을 것 같습니다! 예외 계층 예외설명Object객체뿐만 아니라 예외도 최상위 부모는 Object 입니다.ThrowableJava에서 Throwable 클래스가 최상위 클래스입니다. 이 클래스는 두 가지 주요 하위 클래스를 가집니다Error애플리케이션에서 심각한 문제를 나타내며, 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외입니다Exception애플리케이션에서 처리할 수 있는 최상의 예외입니다.RuntimeException컴파일러가 체크 하지 않는 언체크 예외이며, 자식 예외는 모두 언체크.. 2024. 8. 12. [JAVA+DB] DataSource 진짜 간단 정리 ≣ 목차이번 포스팅에서는 DataSource 개념에 간단하게 정리해보겠습니다. 그전에 DataSource가 만들어진 이유에 대해서 설명하겠습니다. DataSource가 만들어진 이유커넥션을 연결하는 방법에는 DriverManager, 커넥션 풀 등등 여러 방법이 있습니다. 그런데 DriverManager를 통해 커넥션을 연결하다가 커넥션 풀로 커넥션을 연결해야 한다고 한다면 기존 코드를 변경해야 하는 문제가 발생합니다. 이런 문제를 해결하기 위해서 커넥션을 연결하는 방법을 추상화한 것입니다. 이 추상화한 인터페이스가 DataSource입니다. DataSourceDataSource란?DataSource는 Connection을 얻어오는 방법을 추상화한 인터페이스입니다. 즉 여러 구현체를 기존 코드의 변경 없.. 2024. 8. 5. [Java] NumberFormat클래스 정리 ≣ 목차NumberFormat 클래스란? NumberFormat클래스는 숫자를 형식화하는 Java 클래스입니다. 이 클래스는 특정 국가와 지역에서 사용되는 통화, 숫자, 백분율 등을 형식화할 수 있는 기능을 제공합니다. 주요 기능 및 역할 숫자 형식화: 숫자를 특정 형식에 맞춰 표시할 수 있습니다. 예를 들어, 천 단위 구분 기호(쉼표), 소수점 자릿수, 라운딩 등을 설정할 수 있습니다.통화 형식화: 특정 국가의 통화 단위로 숫자를 표시할 수 있습니다. 이때 환율이나 지역 설정에 따라 통화 기호가 자동으로 설정됩니다.백분율 형식화: 숫자를 백분율로 표시할 수 있습니다. 예를 들어, 0.75를 75%로 표시할 수 있습니다. 이 클래스는 지역화(Locale) 정보를 기반으로 작동하며, 특정 언어와 지역에 .. 2024. 7. 12. 사용자 입/출력과 버퍼(butter) - nextInt() 사용 시 주의 점 사용자 입/출력을 받는 간단한 코드를 작성하고 있었는데 사용자 입력을 한 번더 받아야 되는데 스킵되는 뜻밖에 오류가 발생했다. 그래서 사용자 입/출력에 대해서 검색을 조금 해봤다. 이 문제를 해결하기 위해서는 일단 Butter에 대해서 알아야 한다. 버퍼(Butter)란 버퍼를 말하기 앞써 버퍼가 왜 존재하지는 알고가면 좋다고 생각해서 버퍼가 왜 존재하는지 알아보자 버퍼가 왜 존재할까? 컴퓨터의 성능에 다르겠지만 컴퓨터가 1초에 약 8천 ~ 1억 번 정도의 연산을 처리할 수 있다고 가정해보자 만약, 컴퓨터가 사용자에게 정보를 입력 받아야할 때, 우리가 정보를 모두 입력하기를 기다려야 한다면, 컴퓨터는 그동안 계속 대기하고 있어야 한다. 컴퓨터 입장에서는 나는 1초에 엄청 많은 연산을 처리할 수 있는데 사.. 2024. 3. 11. String / StringBuffer / StringBuilder 차이점 자바에서는 문자열을 다루는 클래스로 String, StringBuffer, StringBuilder이라는 3가지 클래스가 있다. 위 3가지 클래스는 모두 문자열을 저장하고 관리하는 클래스인데 어떤 차이점이 있는지 궁금해서 한 번 정리해보기로 했다. String과 StringBuffer, StringBuilder의 차이점 String객체는 한번 생성되면 객체의 값을 변경할 수 없다. 추가적으로 초기 공간과 다른 값에 대한 연산에서 많은 시간과 자원을 사용하게 된다는 특징이 있다. 반면에 StringBuffer나 StringBuilder의 경우 객체의 공간이 부족해지는 경우 버퍼의 크기를 유연하게 늘려줍니다. 이러한 이유 때문에 String은 불변(immutable)하고 StringBuffer와 String.. 2024. 3. 10. 추상 클래스와 인터페이스 정리 추상 클래스와 인터페이스의 공통점 추상 메서드(abstract method)를 가지고 있어야 한다. 인스턴스화 할 수 없다. (new 키워드를 사용해 객체 생성 불가) 하위 클래스에서 추상 클래스를 모두 구현해야 합니다. 상속 받은 구현체의 인스턴스를 사용해야 한다. 추상 클래스 VS 인터페이스 비교 추상 클래스(Abstract Class) 인터페이스(Interface) 사용 키워드 abstract interface 사용 가능 변수 제한 없음 static final (상수) 사용 가능 접근 제어자 제한 없음 public 상속 키워드 extends implements 다중 상속 가능 여부 불가능 가능 인터페이스 정리 내부의 모든 메서드는 public abstract 로 정의 (default 메소드 제외) .. 2024. 3. 10. 이전 1 2 3 4 5 다음