분류 전체보기 29

[Spring Boot] Controller가 수많은 Request 처리하는 방법

Controller의 역할은 Model 객체를 만들어 데이터를 담고 View를 찾고, RestController는 객체만 반환하고 객체 데이터는 Http Response에 담아 전송한다. 우선 Controller 객체(Bean)은 싱글톤(Singleton)으로 생성된다. Controller 객체가 생성되면 JVM(Java Virtual Machine)의 Heap Area에 생성되며, 해당 클래스의 정보는 Method Area에 생성된다. JVM 영역 참고 Heap Area new 키워드로 생성된 객체와 배열이 저장되는 영역 Method Area에 로드된 클래스만 생성이 가능 효율적인 GC를 위해 메모리 영역 분리 런타임 시 할당 Method Area 클래스 정보(맴버 변수의 이름), 변수 정보(데이터 타..

SSH Key 접속 시 password를 요구하는 문제 해결

ssh 접속하는 방법 중 rsa key를 이용하여 password없이 접속할 수 있다. 설정 방법은 많이 공유되어있다. 특정 계정의 .ssh 디렉토리안에 authorized_keys 파일을 생성 후 안에 내용을 rsa_key.pub 파일의 내용으로 작성하고 sshd_config 파일을 수정하면 ssh -i id_rsa user@host 명령어로 password 없이 접속이 가능하다. 하지만, 설정을 다하여도 접속이 안되는 경우가 있다. 이럴 경우 다음 순서로 확인이 필요하다. 1. authorized_keys 권한 확인하기 authorized_keys 파일의 권한에서 소유자만 읽고 쓰는 권한을 가지고 group과 other에는 쓰기 권한이 없어야한다. 만약 쓰기 권한이 있다면 처리가 불가능하다. [use..

기초/Linux 2022.01.25

[Spring Boot] Controller에서 파라미터 받는 방법(PathVariable, RequestParam, RequestBody)

Controller에서 API를 호출할 때 파라미터를 넘겨서 호출할 수 있다. 3 가지 대표적인 방식이 존재하는데, 동일한 점은 데이터를 전달하기 위해 사용된다는 점이다. HTTP에서는 필요할때 마다 요청하여 새로운 데이터를 받아오게 된다.(이전 데이터는 가지고 있지 않음) 하지만 HTTP에서는 데이터를 보장하지 않아서 보관할 곳이 필요한데 해당하는 방법이 데이터 보관을 보장해준다. @PathVariable URI의 { }로 들어가는 변수를 받는다. @RestController @RequestMapping("/users/") public class UserController{ @RequestMapping("detail/{userId}") public String getUserDetails(@PathVar..

REST API란?

REST API란? REST 기반으로 서비스 API를 구현한 것이다. REST(Representational State Transfer)는 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. API(Application Programming Interface)는 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것이다. REST 구성 요소 1. 자원(Resource): URI 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다. 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다. Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보..

[PostgreSQL] LEAST,GREATEST를 활용하여 최솟값, 최댓값 찾기

LEAST, GREATEST 함수란? LEAST 함수는 최소값, GREATEST 함수는 최대값을 반환하는 함수이다. MIN, MAX 함수와의 차이점 MIN, MAX는 여러 행(row)중에 해당 열(column)의 최소, 최대를 반환한다. LEAST, GREATEST는 여러 열(column)에서 최소, 최대를 반환한다. 함수 사용방법 LEAST, GREATEST함수는 인자를 N개 가질 수 있고, 해당 인자에서 최소, 최대값을 반환한다. 인자의 데이터 타입은 모두 동일해야한다. LEAST("값1", "값2", "값3", "값4", "값5", "값6", ...) 인자값 중 최솟값을 반환 GREATEST("값1", "값2", "값3", "값4", "값5", "값6", ...) 인자값 중 최댓값을 반환 예시 LE..

[Spring Boot] Test Case 생성하기

Spring Boot에서 단위 테스트를 생성할 수 있다. 테스트를 하기 위해선 JUnit 모듈을 사용하여 테스트를 한다. 단위 테스트(Unit Test)란? 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다. 즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다. 테스트 코드 작성하는 이유 1. 빠른 피드백이 가능해진다. 테스트 케이스를 통해 오류 검출을 빠르게 하여 수정할 수 있다. 사전 오류를 검출할 수 있다. 2. 리팩토링의 두려움이 없어진다. 검증된 테스트 케이스가 있다면 소스 코드를 변경하는데 무리가 없다. 단위 테스트(Unit Test) 테스트는 기본적으로 Given, When, Then 방식을 사용한다. Given : 주어진 환경 Wh..

My Chemical Romance 노래 모음

개인적으로 좋아하는 락밴드이다 !! 2002년 부터 2013년까지 활동을 하구, 최근에 다시 리턴을 하였는데, 전부 아저씨가 되어있었지만 라이브는 언제나 대단하다.. 언젠가 꼭 라이브로 들어보고 싶긴한데 내한 하려나 궁금하다.. Welcome to the Black Parade 음원 만큼만 나왔으면 좋겠지만,, 항상 힘들어하는 제라드 웨이 형.. 내가 추천하는 My Checmical Romance 노래 모음!! The Black Parade Welcome To The Black Parade Famous Last Words Mama Teenagers I Don't Love You Dead ! Danger Days-The True Lives Of The Fabulous Killjoys Bulletproof ..

취미/음악 2021.12.09

[PostgreSQL] WITH절 사용하기

WITH 절이란? 반복되는 구문이거나, 동일한 구문 또는 복잡한 구문을 작성할 때 매크로처럼 미리 선언하여 사용하는 서브쿼리라고 생각하면 된다. 해당 구문을 통해 임시 테이블이 생성된다. VIEW는 한번 만들어 놓으면 DROP 전 까지 없어지지 않지만, WITH 절로 생성된 임시 테이블은 한번 실행되는 쿼리 내에만 실행되는 생명주기를 가지고 있다. WITH 절로 생성한 임시 테이블은 한번 생성되면 동일한 블록을 재사용할 수 있는 장점이 있으며, Planning 할때 속도 향상에 많은 도움을 준다. 사용 방법 /* * [명칭] 에다가 alias 할 이름을 작성하면 된다. * 그리고 해당 결과를 불러올 땐 alias한 이름을 불러오면 된다. */ with [명칭] as( select ... from ... ..

[Jenkins] Jenkins에 시스템 변수 설정 및 Job 생성하기

목표 관리할 Job을 생성한다. 시스템 변수를 설정한다. 우선 실행하기 앞서 Jenkins가 Docker Container에서 실행되고 있어야한다. 새로운 Job을 생성하려면 메뉴의 새로운 Item 또는 중앙의 Create a Job을 선택한다. 새로운 Item을 선택하게 되면 어떤 Item을 생성할지 선택할 수 있다. Folder를 선택하면 또다른 그룹핑 폴더를 생성할 수 있다. Pipeline을 선택하면 실행할 Job을 생성할 수 있다. (나머지는 공부가 필요..) 우선 폴더를 생성 후 안에 Pipeline을 생성한다. 폴더를 생성하게 되면 다음과 같이 나온다. Description에는 해당 폴더에 대한 설명을 적어준다. Pipeline을 생성하게 되면 다음과 같이 나온다. Github에 대한 것은 ..

[Jenkins] Docker를 이용한 Jenkins 구축

목표 Window환경에서 Docker를 이용하여 Jenkins용 공식 Docker 이미지를 이용해서 jenkins 띄운다. 필요 환경 PowerShell이 있어야한다. Docker가 설치되어 있어야한다. 구축 방법 1. Jenkins 이미지 내려받기 Docker Hub에서 Jenkins 이미지를 내려 받을 수 있다. docker pull jenkins/jenkins:lts 2. Jenkins 이미지를 컨테이너로 실행하기 내려받은 이미지를 실제 컨테이너에 올려야 접근이 가능하다. Docker 이미지 확인하는 명령어 docker images 컨테이너에 올려 실행하는 명령어 볼륨을 생성한 후, 볼륨명을 지정해야 데이터를 유지할 수 있다.(지정하지 않으면 Docker 재시작 시 삭제됨) /* 명령어 방식 doc..