전체 글

전체 글

    플라이웨이트 패턴 (Flyweight Pattern) 이란?

    플라이 웨이트 (Flyweight) 패턴이란? 구조와 관련된 디자인 패턴이다. 변화하지 않는(intrinsic) 재사용 가능한(resuable) 커다란 객체를 캐시에 저장해두고 재활용하는 기법이다. 여러 개의 클래스 내부 필드 중 공통으로 사용되는 필드를 따로 빼내어 공유하여 메모리를 더 확보할 수 있게 해준다. flyweight 의 영단어 뜻은 스포츠에서 아주 가벼운 체급을 말한다. 필드의 중복을 최적화할 수 있어서 많은 인스턴스를 만드는 애플리케이션에서 효율이 좋다. OOM 현상을 방지하는데 유용하다. 자주 변경되는 속성 (Intrinsic State) 과 자주 변경되지 않는 속성 (Extrinsic State) 을 분리하여 자주 변경되지 않는 것을 재사용한다. 객체지향적 디자인이 목적이라기보다 성능..

    자바 애노테이션으로 빈을 구성하는게 XML 로 구성하는 것 보다 나은 이유

    자바 애노테이션으로 빈을 구성하는 것이 XML 로 구성하는 것보다 나은 이유 구성정보와 코드가 함께 있다 (Colocation of configuration and code) 빈 구성정보가 직관적으로 자바 코드 내부에 있게 된다. 클래스가 어떻게 사용되는지 더이상 알아볼 필요 없이 직관적인 이해가 가능해진다. XML 구성정보 파일과 자바 파일을 왔다갔다 하는 비용을 줄여준다. 유지보수 하기 쉬운 코드가 된다. 보일러 플레이트 코드를 줄인다 (Reduce boilerplate) 빈을 함께 묶기 위한 보일러 플레이트 코드를 줄인다. XML 에서 빈과 해당 종속성을 명시적으로 정의할 필요 없이 애노테이션을 통해 자바코드에서 직접 이런 관계를 선언할 수 있다. 구성 정보를 작성하는 것이 보다 간결해진다. 컴파일..

    <context:annotation-config> 태그란? (스프링 빈 설정 xml)

    태그란? 자바 빈을 정의하는 xml 파일에서 사용된다. 애노테이션을 기반으로 하는 구성 정보 (configuration) 를 사용할 수 있게 해준다. 스프링에게 애플리케이션 컨텍스트가 만들어질 때 자바 클래스 애노테이션을 찾아보고 처리하라고 말하는 것이다. 동작 방식 추가 (Inclusion) 엘리먼트를 스프링 설정 파일에 넣는다. 이 설정 정보는 스프링에게 애노테이션 기반 구성정보를 지원하라고 전달한다. 빈 후처리 (Bean post-processors) 스프링은 애노테이션을 처리하는데 도움이 되는 빈 후처리기를 등록한다. 빈 후처리기는 @Autowired, @Resource, @PostConstruct, @PreDestory 와 같은 애노테이션을 처리한다. 스캐닝과 처리 (Scanning and Pr..

    스프링 세션 (Spring Session) 이란 무엇이고 어떻게 작동할까?

    스프링 세션 (Spring Session) 이란? 스프링 프레임워크에서 제공하는 모듈 중 하나로 기존의 HttpSession 을 대체한다. 분산된 스케일링 가능한 환경에서 세션 데이터를 관리한다. 외부 저장소를 사용하게끔 하여 서블릿 컨테이너에서 세션 데이터를 분리할 수 있도록 도와준다. Redis, JDBC, Hazelcast 애플리케이션 퍼포먼스 향상과 분산 환경에서 세션 관리가 쉬워진다는 장점이 생긴다. 스프링 세션은 어떻게 작동하는가? 의존성 설정 스프링 세션을 이용하기 위해서는 의존성을 먼저 설정해야 한다. spring-session-data-redis 의존성을 추가해주면 된다. 구성정보 설정 스프링 세션을 사용하기 위해 필요한 구성정보를 설정해야 한다. @Configuration 클래스에 @E..

    톰캣에서 지원하는 HttpSession 이란? (feat. Servlet API)

    Tomcat 에서 지원하는 Http 세션 (HttpSession) 이란? HttpSession 은 자바 서블릿 API 에 의해 제공된다. 유저를 식별하고 각 유저에 맞는 정보를 저장할 수 있게 해준다. 톰캣 내부에 구현이 있다. 톰캣은 오픈소스 웹서버이고 서블릿 컨테이너이다. 자바 서블릿과 자바 서버 페이지 (JSP) 스펙을 구현한다. HttpSession 인터페이스의 기능 서블릿 API 에 의해 제공되어 세션 식별자, 생성 시간, 마지막으로 엑세스한 시간 등 세션에 대한 정보를 보거나 조작하게 해준다. 객체를 세션에 바인딩하여 여러 사용자 연결에 걸쳐 사용자 정보를 유지할 수도 있다. 어떻게 동작하는가? 세션 생성 세션 ID 세션 속성 세션 타임아웃 세션 추적 세션 생성 (Session Creation..

    클래스 다이어그램이란? 클래스 다이어그램 표기법 이해하기

    클래스 다이어그램이란? 시스템의 정적 구조를 나타내는 UML 다이어그램의 한 유형이다. 클래스, 속성, 메서드 간의 관계를 보여준다. 객체지향 설계에서 청사진으로 많이 이용되어 구현의 기초가 된다. 클래스 표현하기 클래스가 네모난 박스 형태로 표현된다. 클래스 이름이 네모박스 상단에 존재한다. 클래스 이름 아래에는 두개의 칸이 존재한다. 속성 (Attribute) 칸 클래스의 필드가 들어간다. 필드의 타입과 접근 제어자도 같이 표기된다. (public, private, protected) 메서드 (Method) 칸 클래스의 메서드가 들어간다. 리턴타입, 파라미터, 접근제어자가 같이 표기된다. 예시 클래스 이름은 Composite 이다. private 인 child 필드를 가지고 있다. public 인 o..

    스프링 레디스 세션 사용법

    스프링 레디스 세션 사용법 스프링 레디스 세션 적용 이 끝나면 사용이 가능하다. 스프링 Http 세션을 사용하는 방법과 별반 다를 게 없다. 세션 속성 설정하기 컨트롤러 메서드에 있는 HttpServletRequest 에서 HttpSession 을 얻어올 수 있다. 얻어온 뒤에는 setAttribute() 메서드를 통해 세션을 설정해주면 된다. 혹은 그냥 파라미터에 HttpSession 타입을 넣어두면, 스프링에서 알아서 주입해준다. @PostMapping("/login") public String loginUser(@ModelAttribute User user, HttpServletRequest request) { // ... (Authentication logic) // If authenticatio..

    스프링 레디스 세션 적용법

    스프링 부트에서 레디스 세션 적용하는 방법 레디스 연결정보 설정 application.properties 혹은 application.yml 에 Redis hostname, port, password 등을 입력해주면 된다. @Configuration 빈 생성 @Configuration @EnableRedisHttpSession public class SessionConfig { } 스프링 부트가 아닌 환경에서 레디스 세션 적용하는 방법 애노테이션을 이용한 @Configuration 빈을 등록하는 방식으로도 가능하고 순수한 XML 파일 작성으로도 가능하다. 의존성 추가 spring-session-data-redis spring-data-redis Jedis 나 Lettuce 와 같은 Redis Client ..

    @EnableRedisHttpSession 은 어떻게 동작하는가? (feat. 스프링 세션에 레디스 활용하기)

    @EnableRedisHttpSession 이란? 스프링 세션 프로젝트에서 제공하는 애노테이션이다. 스프링 애플리케이션이 Redis 가 지원하는 분산 세션 (distributed sessions backed by Redis) 을 사용할 수 있게 해준다. 애플리케이션 메모리 대신 Redis 메모리를 사용하게 되므로 애플리케이션의 수평적 확장에 유용하고 모든 인스턴스에서 세션 데이터가 일관되게 유지된다. 작동 방식 환경과 애노테이션이 올바르게 프로젝트에 적용되었을 때 어떻게 동작하는지 알아보자. @EnableRedisHttpSession 애노테이션 인식 스프링은 @EnableRedisHttpSession 애노테이션을 인식한 뒤 레디스와 커넥션을 맺으며 세션을 관리할 RedisConnectionFactory ..

    연남동 경양카츠 리뷰

    연남동 경양카츠 장점 다양한 카츠 메뉴들 사이드 메뉴가 맛있는 편 단점 주변 가게들에 비해서 너무 비싸다. 비싼 가격에 비해 그렇게 맛있진 않다. 맛없지도 않고 그냥 평이한 맛이다. 총평 비싸서 내 돈주고는 잘 안갈 것 같다. 근데 내가 안가더라도 웨이팅 걸릴정도로 장사가 잘돼서 나는 더욱더 안가도 될 것 같다. 맛은 그냥 일반적인 평이한 돈카츠맛 그 이상 이하도 아님. 별점 ★★ (2/5) 사진

    명현만 간장게장 무한리필 합정 본점 리뷰

    명현만 간장게장 무한리필 합정 본점 장점 3만원이라는 저렴한 가격대에 간장게장을 무한리필로 맛볼 수 있다. 계란후라이를 직접 해먹어야 하지만 무료로 제공한다. 기타 밑반찬들도 무료 밑반찬이 매우 많다. 단점 밥은 따로 돈내고 시켜야 한다. 간장게장이 무한리필이라 그런지 숙성이 완전 덜된 느낌 너무 싱거운 느낌이다. 총평 평소에 게를 아주 많이 먹는다면 가서 후회하진 않을 것 같다. 그러나 나는 원래 음식을 많이 먹기보다는 맛있는 음식을 적게 먹는 파여서 별로였다. 가장 큰 단점으로 간장게장이 너무 싱겁다. 숙성이 덜 된 것 같다. 별점 ★★★ (3/5) 사진

    UML (Unified Modeling Language, 통합 모델링 언어) 란?

    UML 이란? 통합 모델링 언어 (Unified Modeling Language) 의 줄임말이다. 소프트웨어 시스템의 구조, 동작 및 상호작용을 표현하고 전달하는데 사용된다. 표준화된 시각적 언어이다. 소프트웨어 엔지니어가 소프트웨어 시스템을 보다 효과적으로 분석, 설계 문서화할 수 있도록 도와주는 일련의 그래픽 표기법과 다이어그램을 제공한다. 플랫폼에 구애받지 않고 쉽게 이해하고 코드로 변환할 수 있는 높은 수준의 설계를 생성하는데 널리 사용된다. UML 다이어그램의 종류 위는 다이어그램의 종류를 UML 로 표현한 예이다.

반응형