일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 항해99
- 빈 충돌
- 취업리부트코스
- 전략패턴 #StrategyPattern #디자인패턴
- 디자인패턴
- Spring multimodule
- jwt
- 인프콘 2024
- @FeignClient
- 99클럽
- spring batch 5.0
- jwttoken
- 1주일회고
- infcon 2024
- 개발자 취업
- 커스텀 헤더
- Python
- KPT회고
- 코딩테스트 준비
- 프로그래머스 이중우선순위큐
- 개발자부트캠프추천
- 구글 OAuth login
- TiL
- 프로그래머스
- JavaScript
- 빈 조회 2개 이상
- DesignPattern
- 파이썬
- 단기개발자코스
- 디자인 패턴
- Today
- Total
목록분류 전체보기 (192)
m1ndy5's coding blog
옵저버 패턴의 정의 옵서버 패턴은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다.(출처: 위키백과) 즉, 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이가고 내용이 갱신되는 일대다 의존성을 뜻한다. 상태를 저장하고 있는 객체를 Subject, 갱신된 값들을 받는 객체들을 Observer로 보면된다. 보통 Subject Interface와 Observer Interface로 구현한다 public interface Subject{ // Observer 등록 public void registerO..
전략 패턴의 정의 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 전략 패턴은 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. (출처 : 위키백과) 즉, 변화할 수 있는 알고리즘을 따로 빼서 캡슐화하고 수정하기 용이하게 만든 패턴이라고할 수 있다. 왜 전략패턴을 사용해야하는가? 우리가 현재 사용하고 있는 애플리케이션 중에 한번에 뚝딱 만들어지고 수정을 거치지 않은 애플리케이션은 없을 것이다. 사용자의 요구를 반영해야하거나 기존 코드가 후져보일 때(?)등 무조건 수정을 거쳐야한다. 이 때 규칙없이 맘대로 짜여 있는 코드를 고쳐야한다면 아주 힘들 것이다! 자바를 배울 때 상속이라는 개념을 배우게 되는데 ..
UserDetail Spring Security에서 사용자의 정보를 담는 인터페이스 @Data public class PrincipalDetails implements UserDetails{ private static final long serialVersionUID = 1L; private User user; public PrincipalDetails(User user) { this.user = user; } // 권한 : 한개가 아닐 수 있어서 Collection 타입으로 return @Override public Collection
프로젝트를 진행 중에 굉장히 난감한 문제를 겪었다. 문제는 아래와 같다. // 댓글 다는 DTO @Data public class PostCommentReq { private final Long accountId; private final String content; } // 댓글 수정 DTO @Data public class PatchCommentReq { private final String content; } 댓글 다는 DTO는 전혀 문제가 없이 잘 작동을 했지만 댓글 수정 DTO는 제대로 된 값을 계속해서 못받아오는 상황,,,!!! 일단 @Data 가 무엇인지 살펴보자! * Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToStri..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cV31pe/btsk1A1pmYc/ECynMAU9DT19vOMp0xxKrk/img.png)
URI vs URL vs URN URL(Uniform Resource Locator) 주어진 리소스(웹페이지, 사진 등)의 위치가 인터넷 어디에 있는지 알려주는 주소라고 할 수 있음 ex) https://www.naver.com 링크와 비슷하게 많이 쓰이지만 사실 기술적으로는 다름 링크는 한 페이지에서 다른 리소스들을 열 때 누르는 것이고 URL을 링크에 의해 나타내지는 주소이다. 즉 URL은 링크의 목적지! 따라서 URL은 링크없이 존재할 수 있지만 링크는 URL없이는 존재의 의미가 없음 URL 표기 형식 ftp://ftp.example.com/files/document.pdf http://www.example.com:80/edu/index.html http:// : 프로토콜 www.example.co..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ZHBfe/btskS5HWYiU/mRoVQWY1CUuBvd8ANqOcrk/img.png)
Servlet 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해줌 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송 주요 특징 클라이언트의 Request에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트 JAVA의 스레드를 이용하여 동작 MVC패턴에서 컨트롤러로 이용됨 컨테이너에서 실행 보안 기능을 적용하기 쉬움 동작 과정 클라이언트가 웹 서버에 요청을 보냄 웹 서버는 그 요청을 톰캣과 같은 WAS에 보냄 WAS는 각 요청에 해당하는 서블릿을 실행 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송 1. 클라이언트 요청 2. HttpServletR..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c3Q23N/btskIQqSibU/Bv2OmzIx0boOPXLHrhDaZ0/img.png)
들어가기 앞서 알아두면 좋은 것 : 쿠키, 세션 JWT란? JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 Web Token 토큰 기반 인증이 왜 등장했을까? 정보를 서버에서 저장하면 서버에 부담이 되고 stateless 위배의 약점을 보완하기 위해 생김 HTTP의 특징 : contactless, stateless contactless : 클라이언트의 요청이 처리되면 연결이 끊어짐 stateless : 서버가 클라이언트의 이전 상태를 저장하지 않음 -> 인증이 필요한 페이지에 접근할 경우 매번 확인해야함 ex) 쇼핑몰에서 로그인을 하고 장바구니에 물건을 추가할 때마다 로그인해야함 토큰 기반 인증 방식 인증받은 client에게 server가 토큰을 부여함 인증이 필요한 요청의 HTTP Head..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bRH3M1/btskesv5Crd/x0KGbs5EtfQ5rLWqbyCIu1/img.png)
github를 사용하여 사람들과 협업을 하다보면 민감정보를 포함한 설정파일은 github에 올리지 않고 개인적으로 주고 받아본 경험들이 다들 있을 것이다. 그렇다면 민감 정보만 숨기고 싶다면 어떻게 해야할까? 위 파일은 database의 정보가 포함되어 있는 application.yml 파일이다. 원래 url, username, password 부분에 연결하고자하는 database url과 사용자이름, 비밀번호를 넣어주어야 한다. 하지만 이 중요한 정보가 노출된다면 누구나 다 데이터베이스에 접근이 가능하고 수정할 수 있기때문에 이를 숨겨주어야한다. 나 같은 경우는 db.properties라는 파일을 만들어서 숨겨야 되는 부분을 빼주었는데 여기서 새로알게 된 점!!!!!!! 처음에는 DB_URL, DB_U..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mfHRD/btshYdUR7Qq/kaulqMqwd4AIrQr0j4YtDK/img.png)
클래스란? 객체를 만들기 위한 설계도클래스를 왜 사용할까? 클래스는 다양한 자료형의 제이터를 묶어 관리할 수 있을 뿐 아니라 데이터를 처리하는 다양한 기능까지 함께 관리가 가능 클래스에 포함돼 클래스 안에 있는 데이터를 처리하는 기능 : 메서드 절차 지향 VS 객체 지향 절차 지향형 프로그래밍 순서에 맞춰 단계적으로 실행하도록 명령어를 나열하는 방식객체 지향형 프로그래밍 객체 단위로 수행하는 방식 프로그램을 객체 단위로 구성해 상호 연동시킴 클래스와 인터페이스로 객체지향 문법 요소가 나뉨 클래스는 일반 클래스와 추상 클래스로 나뉨 이러한 객체지향 요소를 활용해 객체를 직.간접적으로 만들고, 이를 활용해 프로그램을 실행시킴 클래스의 구조 package ...; // 1. 패키지 import ...; // ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bodOpE/btshFaytLAd/Rswof0gAigdUNViwPMJJCk/img.png)
자바의 특징 플랫폼 독립성 다른 플랫폼을 사용하는 컴퓨터는 서로 다른 기계어를 사용 -> 다른 플랫폼에서 사용하는 기계어는 알아듣지 못함 ex) 윈도우 실행파일(.exe)은 윈도우 플랫폼에서는 동작하지만, 다른 플랫폼에서는 동작하지 않음 -> 플랫폼 종속성 하나의 프로그램이 모든 플랫폼에서 실행 가능 -> 어떻게? 자바 가상 머신(JVM) 덕분 JVM을 설치하면 자바에서 만든 .class 파일을 실행하게 해주는 가상 컴퓨터를 올려 놓는것과 마찬가지 객체지향 언어 함수형 코딩 지원 분산 처리 지원 멀티 쓰레드자바 개발 도구(JDK) & 자바 실행 환경(JRE) JDK란? 자바를 이용해 프로그램을 개발하는 데 필요한 도구를 모아 둔 집합JRE란? 완성된 프로그램을 실행하는 데 필요한 환경 즉, JDK를 가져..