오늘은 디자인 패턴의 종류에 대해 간략하게 알아보겠습니다.디자인 패턴설명사용예어댑터호출당하는 쪽의 메소드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴JDBC, JRE프록시객체를 실제로 부르는 게 아닌, 프록시 객체를 부르고 나중에 프록시 객체가 실제 객체를 호출하는 패턴AOP데코레이터기존 뼈대(클래스)는 유지하되, 이후 필요한 형태를 꾸며가는 패턴상속싱글턴클래스의 인스턴스(객체)를 하나만 만들어 사용하는 패턴 옵저버변화가 일어났을 때 미리 등록된 다른 클래스에 통보해주는 패턴Event Listner파사드여러개의 객체와 실제 사용하는 서브 객체 사이에 복잡한 의존관계가 있을 때, 중간에 facade라는 객체를 두고, 여기서 제공하는 interface만을 활용하여 기능을 사용하는 패..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/K2rAS/btsHpkjm7zP/5oCqvKmmezUDf2cUO2k8M0/img.png)
소스트리는 Git GUI 대표 프로그램중 하나입니다. 필요한 명령을 커맨드가 아닌 버튼 클릭 이벤트로 Git을 사용할 수 있기 때문에 굉장히 편리합니다. 오늘은 소스트리의 설치와 간단한 사용방법에 대해 포스팅하고자 합니다.1. 소스트리 다운로드https://www.sourcetreeapp.com/ 사이트에 접속하여 다운로드 받습니다.2. 비트버킷 로그인 생략3. Git 설치Git 을 설치하지 않았다면 Git 에 체크박스를 활성화 하고, 머큐리얼은 사용하지 않기 때문에 체크박스를 비활성화 합니다. 고급옵션 -> "기본적으로 줄 끝을 자동으로 처리하도록 설정(권장)" 을 체크하고 "다음" 버튼을 클릭합니다.4. 전역사용자 설정Git 에서 사용할 전역사용자를 설정하고 "다음" 버튼을 클릭합니다.Author N..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cJ1nOI/btsHpRVlP7E/qFwtSOqcluzDUeKNihwMw0/img.png)
간단하게 IntelliJ Ultimate 에서 SpringBoot + Kotlin + Thymeleaf 프로젝트 생성하는 방법에 대해 알아보겠습니다.1. 프로젝트 생성IntelliJ 를 실행하고 File -> New Project 를 클릭합니다.Spring 이니셜라이저를 이용하여 코틀린을 선택합니다. 참고로 JDK 버전은 주로 LTS(Long Term Support) 버전인 8, 11, 17 버전을 사용하는데, SpringBoot3 에선 17버전이 최소버전이므로 jdk 17 을 선택합니다. 2. Dependency 추가Next 버튼을 눌러 필요한 Dependency 를 추가합니다.필요한 라이브러리들을 꼭 이 창에서 설정할 필요는 없으니, 사용할만한 Dependency 만 추가하고 Create 버튼을 클릭..
간단하게 Nginx로 특정 URL 별로 Upstream 처리하는 방법에 대해 작성해 보겠습니다.1. 경로이동리눅스 서버에 nginx를 설치하였다면, 아마 아래 경로에 nginx.conf 파일이 있을 겁니다.cd /etc/nginx1.1. 경로 못찾음만약 nginx.conf 파일의 경로를 못 찾겠다면, 아래 명령어를 이용하여 찾아볼 수 있습니다.find /etc/ -type f -name "nginx.conf"2. nginx.conf 편집편집기를 열어 nginx.conf를 수정합니다.vi nginx.conf2.1. location 설정location 경로를 설정하고 proxy pass 할 upstream 서버를 지정해 줍니다.user root;#process수 자동증가worker_processes auto..
이번 포스팅은 Spring에서 Redis 연동하는 방법입니다. SpringBoot 3.1.5 기준으로 작성되었습니다.1. 라이브러리 추가build.gradle redis 추가implementation 'org.springframework.boot:spring-boot-starter-data-redis:3.1.5'2. 설정값 작성application.yml redis 설정값 추가spring: config: activate: on-profile: "local" data: redis: port: 6379 host: 127.0.0.1 password: admin3. RedisConfig 작성import org.springframework.beans.factory..
TextWebSocketHandler를 이용하여 웹소켓을 구현하였다면 구현체 내부에선 직접적으로 HttpSession 접근이 불가능하다. 이를 해결하기 위해선 HttpSession 핸드쉐이킹 과정이 필요하다.1. HttpSessionInterceptor 구현import org.springframework.http.server.ServerHttpRequest;import org.springframework.http.server.ServerHttpResponse;import org.springframework.http.server.ServletServerHttpRequest;import org.springframework.stereotype.Component;import org.springframework...
이번 포스팅에선 타임리프에서 변수를 표시하는 다양한 방법에 대해 작성하고자 합니다. 타임리프는 Natural 템플릿이기 때문에 HTML 흐름에 자연스럽게 값을 맵핑할 수 있습니다.1. th:text${}를 이용하여 값을 맵핑할 수 있습니다. 2. HTML 태그 내부에서 사용[[${}]] 를 이용하여 HTML 태그 내부에서 값을 맵핑할 수 있습니다.[[${room.roomName}]] 3. Javascript 내부에서 사용javascript 에서 변수로 받아 동적으로 처리할 수 있습니다. 4. img src 및 onclick 작성방법 감사합니다.
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/u9Oui/btsHocxU6vI/wgeKNXeyO1tOCl1qEDVfrK/img.png)
개발을 할 때, 공통적이고 반복적인 작업을 처리해야 할 때가 있습니다. Spring 에서는 3가지 방법을 주로 사용하는데, 차이점과 동작방식에 대해 알아보겠습니다.클라이언트로부터 요청이 들어오게 되면 가장 먼저 Filter 가 request 에 대한 정보를 받아 데이터를 처리합니다. Filter 는 자바 서블릿에서 제공하는 기능으로 웹컨테이너(톰캣) 에 의해 관리됩니다. 주로 요청에 대한 권한, 인증을 처리하는데 사용이 됩니다.다음으로 Filter 를 거쳐 프론트 컨트롤러인 Dispatcher Servlet 이 요청을 받는데 이는 요청 정보를 통해 위임할 컨테이너를 찾는 역할을 합니다.디스패처 서블릿이 위임할 컨트롤러를 찾아 넘기게 되면 중간에 Interceptor 가 해당 요청을 가로채게 됩니다. 인터..
이분탐색이란 중간지점을 기준으로 데이터를 반씩 나눠서 탐색하는 알고리즘 입니다. 이분탐색의 시간 복잡도는 logN 으로 표현이 가능합니다. 아래는 이분탐색의 예제를 소스로 구현한 것 입니다.package search;public class SearchAlgorithm { public static int binarySearch(int[] array, int target) { int left = 0; int right = array.length - 1; while (left 추가로, 이분탐색을 할땐 반드시 배열이 정렬되어 있어야 합니다.
- Total
- Today
- Yesterday