본문 바로가기
반응형

분류 전체보기163

[Spring] AOP 프로그래밍(1) - 프록시와 AOP AOP는 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법이다. 핵심 기능에 공통 기능을 삽입하여 핵심 기능의 코드를 수정하지 않고도 공통 기능의 구현을 추가할 수 있다. 스프링에서는 프록시 객체를 생성해서 공통 기능을 삽입한다. 프록시와 AOP의 관계 프록시(proxy)는 핵심 기능의 실행을 다른 객체에 위임하고 부가적인 기능을 제공하는 객체를 의미한다. 실제 핵심 기능을 실행하는 객체를 프록시의 대상 객체라고 부른다. 프록시는 핵심 기능을 구현하지 않는 것이 특징이다. 대신 여러 객체에 공통으로 적용할 수 있는 기능을 구현한다. AOP(Aspect Oriented Programming)는 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 .. 2021. 8. 10.
[Python] Baekjoon - 2239. 스도쿠 백준 2239번 스도쿠 문제는 일반적인 스도쿠 문제를 백트래킹 기법을 사용하여 해결하는 문제다. 빈칸이 있는 9칸 스도쿠 퍼즐이 주어졌을 때 빈칸을 모두 채워서 출력하는 문제이며 사전 순으로 가장 빠른 답을 출력해야 한다. 난이도는 골드 4이다. 백준 2239번 스도쿠 문제 정보 알고리즘 분류 - 백트래킹 난이도 - 골드 4 스도쿠 문제 요약 9x9 크기의 스도쿠에 빈칸들이 주어졌을 때, 빈칸을 모두 채워서 출력하는 문제다. 사전 순으로 가장 빠른 답을 출력한다. 문제 풀이 방법 1 (일반적인 방식) 과정 스도쿠 보드판을 입력받을 때 빈칸들의 좌표를 따로 저장해둔다. 모든 빈칸들에 대해서 백트래킹 수행한다. 각 빈칸에서 넣을 수 있는 숫자들을 구해서 해당 숫자들 넣고 다음 depth로 진행한다. 넣을 수.. 2021. 8. 5.
[Clean Code] 1. 의미 있는 이름 개발자 대다수는 자신이 짠 클래스 이름과 메서드 이름을 모두 기억하지 못한다. 문장처럼 읽히는 코드 또는 표나 자료구조처럼 읽히는 코드를 짜는 데만 집중해야 마땅하다. 의미 있는 이름을 짓는 규칙을 적용하면 가독성이 높아지며, 단기적인 효과는 물론 장기적인 이익도 보장한다. 소프트웨어에서 의미 있는 이름을 지어야 하는 이유 변수, 함수, 인수, 클래스, 패키지 등 우리는 모든 곳에 이름을 붙인다. 따라서 이름을 잘 지으면 편리하다. 좋은 이름을 지으려면 시간이 걸릴지 모르지만 좋은 이름으로 절약하는 시간이 훨씬 크다. 이름을 주의하여 지으면 자신은 물론이고 코드를 읽는 사람이 좀 더 행복해질 것이다. 의미 있는 이름을 짓는 규칙들을 알아보자. 1. 의도가 분명한 이름을 지어라 2. 그릇된 정보를 남기지 .. 2021. 8. 5.
[Spring] 빈 객체의 라이프사이클과 범위 (Life Cycle & Scope of Bean) 스프링 컨테이너는 빈 객체의 생성, 초기화, 의존 주입 등 객체 관리를 위한 다양한 기능 제공하며, 라이프사이클도 관리한다. 컨테이너가 생성될 때 빈 객체가 생성되고 초기화되며 컨테이너가 종료될 때 빈 객체가 소멸하게 된다. 둘의 라이프사이클에 대해 알아보자. 스프링 컨테이너와 빈 객체의 라이프사이클 스프링 컨테이너와 빈 객체를 라이프사이클을 갖는다. 빈 객체를 컨테이너에 등록되기 때문에 스프링 컨테이너의 라이프사이클에 따라 생성되거나 소멸된다. 먼저 스프링 컨테이너의 라이프사이클을 알아보자. 스프링 컨테이너의 라이프사이클 스프링 컨테이너는 초기화와 종료라는 라이프사이클을 갖는다. AnnotationConfigApplicationContext의 생성자를 이용해서 컨텍스트 객체가 생성될 때 스프링 컨테이너.. 2021. 8. 3.
반응형