
전략 패턴이란? 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고 사용하며, 동적으로 전략 수정이 가능한 패턴입니다.풀어서 설명한다면, 실행(런타임) 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있는 패턴입니다. 전략 패턴 vs 템플릿 메서드 패턴 두 패턴 모두 알고리즘을 실행(런타임) 중에 알고리즘을 동적으로 적용한다는 공통점이 있지만이번 배울 전략 패턴은 합성(composition)을 통해 해결하고 템플릿 메서드 패턴은 상속(inheritance)을 통해 해결합니다. 이해하기 쉽게 말하면 전략 패턴은 Interface를 의존하여 OCP인 개방 폐쇄 원칙을 잘 지키며 앞으로도 많이 사용될 디자인 패턴이지만 템플릿 메서드 패턴은 부모 클래스를 상속받아 부모 클래스의 코드..

템플릿 메서드 패턴이란? 템플릿 메서드 패턴을 객체지향 디자인 패턴 중 하나로, 기능의 뼈대(템플릿)와 실제 구현을 분리하는 패턴입니다.즉, 상위 클래스(추상 클래스)에서 알고리즘 골격을 정의하고 하위 클래스 (상속 받은 클래스)에서는 알고리즘의 특정 단계를 재정의할 수 있는 것입니다. 아래 [그림1] 은 템플릿 메서드를 보여주고자 하였고 왼쪽은 기본틀이며, 오른쪽은 제가 설명하기 위해 예시로 만든 틀입니다. 들어가기 전 단어 알기 훅 메서드 (hook method)추상 클래스에서 추상 메서드로 선언하며, 기본 구현만 제공하는 메서드입니다.이제 하위 (구현, 자식) 클래스에서 추상 메서드를 오버라이딩하여 사용할 수 있습니다. 템플릿 메서드 특징 템플릿 메서드 패턴은 다음과 같은 특징을 가..

목차1. ThreadLocal 특징2. ThreadLocal 주요 메서드3. ThreadLocal 예제 코드 4. ThreadLocal 실무 주의 사항5. 주의 사항 문제 해결 ThreadLocal은 무엇인가? 우선 Thread(스레드)는 프로세스 내에서 실행되는 흐름의 단위를 뜻합니다.즉, 하나의 프로세스 내에서 동작하는 여러 실행 흐름 중 하나인 것입니다. ThreadLocal의 뜻은 "스레드 별로 독립적인 데이터를 관리하기 위한 클래스"라고 말할 수 있습니다.이것을 풀어 해석하면, 각 Thread마다 별도의 데이터 저장 공간을 가지며, 한 Thread에서 저장한 데이터는 다른 Thread에서 접근할 수 없는 것입니다. ThreadLocal의 특징 ..

npm : Node Package Manager Node.js의 기본 패키지 관리자로, Node.js 생태계와의 원활한 통합과 광범위한 패키지 레지스트리로 유명합니다. Node.js 프로젝트에서 코드 종속성을 설치, 관리 및 공유하는 프로세스를 단순화하기 위해 만들어졌습니다. 200만 개가 넘는 패키지의 방대한 저장소를 제공합니다. 장점 빠른 업데이트 속도를 가지고 있어 최신 기능을 빠르게 활용할 수 있습니다. 개발자는 Npm run 명령을 사용하여 실행할 수 있는 "package.json" 파일에 사용자 정의 스크립트를 정의할 수 있습니다. 이 기능을 사용하면 빌드, 테스트, 배포 등 다양한 개발 작업을 자동화하여 개발 workflow를 간소화 할 수 있습니다. 패키지, 스크립트 및 구성을 관리하기 위..

작성하게 된 계기 나는 서버 백엔드 개발자이다.이번에 실무 개발을 하면서 유튜브의 쇼츠, 유튜브의 릴스처럼 짧은 영상을 넘기기(Swipe)를 하는 프론트단 기능구현을 하게 되었다. 웹 앱으로 만들게 되었고 웹, 갤럭시에서 봤을 때는 문제가 없었지만 특이하게 아이폰에서 기능 동작을 테스트하는데몇 번 넘기기(Swipe)를 하고 나서 기능 작동 멈춤과 동시에 새로 고침도 안되는 먹통 현상이 일어 났다. 웹(Chrome) 에 와서 개발자 도구에 성능을 테스트 하게 되었는데 JS Heap, Node, Listener들이 떨이지지 않고 꾸준하게 올라가는 것을 볼 수 있었다.아무리 무지한 사람이라도 "어?!, 이거 계속 올라가서 문제 있는 것 같은데?" 라고 생각한 그래프 였다. 그래서 어떤 형식으로 해결하게 되었는..

개발 환경 Spring Boot 3.2.4 JAVA 17 MacOS Postman v10.22 해당 블로그 코드들은 GitHub에 남겨져 있습니다. ArgumentResolver를 사용하는 이유 컨트롤러에서 매개변수로 사용되는 인자에 대해 공통적으로 처리해야할 로직등이 있을 경우, 중복 코드를 줄이고 공통 기능으로 추출하여 사용하려고 쓴다. 그래서 컨트롤러(핸들러)가 필요로 하는 다양한 파라미터의 값(객체)을 생성할 수 있다. 즉, 커스텀해서 내가 원하는 파라미터(객체)로 변경해서 컨트롤러에서 편하게 사용할 수 있다는 것이다. Tip) Resolver에서 처리할 수 있는 파라미터 목록들 https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-c..

문제 자연수 N과 M이 주어졌을 때, 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 출처 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1)한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해www.acmicpc.net 이 문제는 백트래킹의 기초문제입니다.BFS, DFS는 잘 모른다면 구글에 "백트래킹 알고리즘" or "BFS 알고리즘" 을 검색하여 아 이런거구나 정도이해를 하고 오시면 될 것 같습니다. 입, 출력 입력은 첫째 줄에 ..

문제 재귀적인 패턴으로 별을 찍자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N x N 정사각형 모양이다.크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 간에 별이 하나씩 있는 패턴이다.**** ****N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3) x (N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 출처 : https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있..

개발 환경 Spring Boot 2.5.1JAVA 11 먼저 성공하는 것을 알려주고 에러, 바인딩 실패하는 사례도 보여주겠습니다. 작성하는 이유 우린 데이터를 Front → Back 으로 보낼 때 json형식의 String만 보내는 것이 아닌 데이터 + 첨부파일을 함께 전송할 때가 많다.. 그것도 여러 데이터 + 여러 첨부파일.. 태그를 이용하여 서버로 전송하면 좋겠지만 클라이언트(Front) 단에서는 ajax, Fetch에서 FormData 라는 객체를 생성하여 데이터를 보낸다. 그래서 서버가 그 데이터를 받을 때 여러 시도 하지 말라고 작성하게 되었다. 코드 index.htmlajax와 bootstrap은 cdn으로 넣어서 ..

개발 환경 Spring Boot 3.1.8JAVA 17PostgreSQL 16.1Docker 24.0.7 사전 준비 도커로 PostgreSQL 서버를 띄우고 동작해야지 Spring과 PostgreSQL을 연동할 수 있습니다.이전 글인 [개발환경] MacOS 도커로 PostgreSQL DB 실행하기 을 보고 오면 아래와 같은 환경설정이 됩니다. Database : postgresUsername : postgrespassword : 0000 내가 만난 에러 목록들 제가 적용하면서 만났던 오류들 입니다. 본 글을 읽을라면 아래로 내려가주시고같은 오류가 발생하면 다시올라와 해당 오류의 글을 읽고 처리해 주시면 됩니다. 에러a. (PSQLException) FATAL: password au..
- Total
- Today
- Yesterday
- 개발자
- 템플릿
- JavaScript
- DBeaver
- 개발환경
- Cors
- Fetch
- 오라클
- 디자인패턴
- Spring Security
- 자바스크립트
- 코딩테스트
- 네트워크
- Mac
- 프론트
- 깃허브 액션
- spring
- 프로세스
- Front
- java
- 개발
- AJAX
- 개발블로그
- 비동기
- git
- 데이터 베이스
- aws
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |