본문 바로가기

전체 글171

관점 지향 프로그래밍 (AOP, Aspect oriented Programming) 관점 지향 프로그래밍 (AOP, Aspect oriented Programming) 관점 지향 프로그래밍 언어로 객체 지향 프로그래밍 뒤를 이은 하나의 프로그래밍 언어 고주 문제를 해결하기 위한 핵심 관심 사항과 전체에 적용되는 공통관심 사항을 기준으로 프로그래밍함으로 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 지원하는 기술 공통으로 사용하는 기능들을 모듈화하고 해당 기능을 프로그램 코드에서 직접 명시하지 않고 선언적으로 처리하여 필요한 컴포넌트에 계층적으로 다양한 기능들을 적용 CC(Core Concern) - 주 관심사항(핵심 관심사항) CCC(Corss Cutting Concern) - 공통 관심사항(Logging, transaction 등) 위와 같이 흩어진 관심사를 Aspect로 모듈화하고.. 2022. 12. 4.
[Spring] 제어의 역전 IoC(Inversion of Control)와 bean 제어의 역전 IoC(Inversion of Control) 구현 객체가 프로그램의 제어 흐름을 스스로 컨트롤하는 것은 개발자 입장에서는 당연한 자연스러운 흐름이지만 외부에서 관리하는 것을 제어의 역전이라한다. 프레임워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크가 맞지만 내가 작성한 코드가 직접 제어의 흐름을 담당하면 그것은 라이브러리 한마디로, 스프링 프레임워크가 프로그램을 제어하는 것을 제어의 역전이라 한다. 프로그램의 진행 흐름과 구체적인 구현을 분리시킬 수 있다. 개발자는 비즈니스 로직에 집중할 수 있다. 구현체 사이의 변경이 용이하다. 객체 간 의존성이 낮아진다. 의존성은 쉽게 말해 어떤 객체가 사용해야 할 객체라고 할 수 있고, 이것을 직접 new 등을 써서 만들어 쓰면 .. 2022. 12. 4.
[Spring] 의존관계 주입(Dependency Injection), 의존성 주입, DI DI를 알기 전 의존관계에 부터 말하자면 의존관계 의존 대상 B가 변하면, 그것이 A에 영향을 미칠 때 A는 B와 의존관계라 한다. 쉽게 말해 B가 변경되었을 때 그 영향이 A에 미치는 관계 피자 가게의 요리사는 피자 레시피에 의존한다. 만약 피자 레시피가 변경된다면, 요리사는 피자를 새로운 방법으로 만들게 된다. 레시피의 변화가 요리사에 미쳤기 때문에 요리사는 레시피에 의존한다라고 할 수 있다. public class PizzaChef{ private PizzaRecipe pizzaRecipe; public PizzaChef() { this.pizzaRecipe = new PizzaRecipe(); } } PizzaChef 객체는 PizzaRecipe 객체에 의존 관계 이러한 구조는 문제점들이 있다. .. 2022. 12. 4.
20221203 주특기 숙련 주차 - 2 새벽까지 월드컵 경기를 봐서 너무 피곤하게 하루를 시작했다. 그래도 할일들은 해야하니 오늘도 공부를 시작했다. 알고리즘 문제는 이제 뭔가 너무 안풀리고 시간도 오래 걸려서 관련해서 푸는 메소드들에 대해 좀 공부를 한 다음 진행을 하려고 한다. 아침 언어스터디를 진행하며 [Java] 추상 클래스, 메소드 Abstract Class(추상 클래스) Abstract Class란 구체적이지 않은 Class를 의미한다. ex) 독수리, 타조는 구체적인 새를 지칭하는데 새, 포유류 같은 것은 구체적이지 않다. 주로 클래스들의 공통되는 필드와 jkadv.tistory.com 추상클래스, 메소드에 대해 조원분들과 스터디를 했는데 나는 이 부분에 대해 공부를 하며 혼자서는 굳이 왜쓰는지 이해가 잘 안됐다. 그냥 상위클래스.. 2022. 12. 3.
인증(Authentication), 인가(Authorization) 인증(Authentication)이란? 사용자의 신원을 증명하는 것 예를들어 로그인하는 과정을 인증이라고 한다. 로그인을 하게 되면 JWT나 Session을 이용해 인증을 유지한다. 인증 방식 전통적인 방법으로는 사용자명(Principle), 비밀번호(Credential)로 인증하는 Credential 기반 인증 방식 OTP와 같이 추가적인 인증방식을 도입해 한번에 2가지 방법으로 인증하는 이중 인증 방식 토큰 인증 소셜 미디어를 사용하는 OAuth2 인증방식(토큰인증 방식 사용) 인가(Authorization)란? 특정 리소스에 접근할 수 있는 권한을 부여하는 것 예를들어 사용자 등급(일반, VIP, 관리자)에 따라 리소스에 접근을 제한하는 경우 인가를 하기 위해 인증이 먼저 선행되어야 한다. JWT,.. 2022. 12. 2.
20221202 주특기 숙련 주차 - 1 우선 1주간 입문 주차가 끝났다. Spring에 대해 많이 낯설었지만 1주일이라는 짧은 시간동안 그래도 계속 보고 있다 보니 조금은 눈에 익고 조금은 어떤 기능들이고 어떻게 작동하는지가 정리가 되기 시작하는거 같다. 우선 이번주까지 주어진 강의는 다 보고 인프런에서 김영한님의 ORM표준 JPA프로그래밍 강의도 시간이 나는대로 계속 봐야겠다. 무작정 코드만 친다고 되는게 아니라 이해를 하고싶은 욕심이 생겨서 내 시간을 쪼개서라도 더 알고싶다. 오늘 새로운 숙련주차에 들어가며 해야하는 개인과제가 회원가입 API, 로그인 API를 구현하고 1주차에 했던 기능들에서 게시글 수정과 삭제에 이렇게 기능들을 변경하면 되는 것이다. 선택한 게시글 수정 API 수정을 요청할 때 수정할 데이터와 비밀번호를 같이 보내서 서.. 2022. 12. 2.
[프로그래머스/알고리즘] 모의고사 (자바/Java) 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작.. 2022. 12. 2.
[Java] 추상 클래스, 메소드 Abstract Class(추상 클래스) Abstract Class란 구체적이지 않은 Class를 의미한다. ex) 독수리, 타조는 구체적인 새를 지칭하는데 새, 포유류 같은 것은 구체적이지 않다. 주로 클래스들의 공통되는 필드와 메소드를 정의한 클래스를 말한다. 이런 것을 구현한 클래스를 Abstract Class = 추상클래스라고 한다. 또 어떻게 본다면 완성되지 않은 설계도라고도 한다. 특징 예를 들어, Animal 클래스가 추상클래스라면 아래의 코드는 동작하지 않는다. 자바는 추상 클래스의 직접적 객체 생성을 차단하기 때문 Animal animal = new Animal(); // ERROR 형식 이러한 추상클래스는 abstract 키워드를 통해 선언 abstract class Animal { /.. 2022. 12. 2.
20221201 주특기 입문 주차 - 6 첫번째 주차 Spring 입문 주차가 끝났다. 어려웠다. 그래도 다행이다. 조원분들과 매니저님에게 계속 이것저것 물어보면서 흩어졌던 퍼즐들이 조금씩 합쳐지고 있다. 우선 과제는 매니저님의 피드백도 받으며 잘 마무리했다. GitHub - Jaekyeong1/hanghae_spring Contribute to Jaekyeong1/hanghae_spring development by creating an account on GitHub. github.com 어렵고 안되는 부분들이 많았는데 그래도 조금씩 하나씩 하나씩 하면서 수정해나가다 보니 주어진대로 잘 실행이 되서 뿌듯하다. 다만 오늘 테스트를 망쳤다. 어떻게 진행이 되는지 테스트가 끝나고 조원분들에게 물으며 정리가 되서 그 전에 한 테스트를 그냥 와장창 .. 2022. 12. 1.