1. Rest Api Rest는 Representational State Transfer 용어의 약자로서 2000년도에 로이필딩에 의해 처음 소개되었습니다. 여기서 Rest는 웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용하는 방법론입니다. 그리고 API는 웹 애플리케이션에서 다른 서비스에 요청을 보내고, 응답을 받기 위해 정의된 명세를 의미합니다.결국 정리하자면, Rest Api는 Rest 아키택처 또는 특징에 맞추어 다른 서비스에 요청/응답을 위한 인터페이스를 의미한다. Rest 는 자원(URI), 행위(HTTP METHOD), 표현(Respresentation) 으로 구성되 있습니다. 여기서 URL, URI의 차이점을 간단히 비교하자면, URI는 인터넷상에서 자원을 나타내는 유일한 주소이고,..
프로그래머스 2단계 완전탐색 문제 url : https://programmers.co.kr/learn/courses/30/lessons/42584?language=java 문제설명한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다.013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예prices return173 입출력 ..
가상 머신 가상머신이란, 프로그램을 실행하기 위한 물리적 머신을 소프트웨어로 구현한 것을 의미한다. 가상머신은 바이트코드를 실행하고자 하는 모든 하드웨어에 JVM을 동작시킴으로써 자바 코드를 변경하지 않고도 여러 OS에서 동작할 수 있게 한다. - JVM은 스택 기반의 가상머신 - 심볼릭 레퍼런스 : 클래스 파일은 JVM이 프로그램을 실행할 때 필요한 API를 Link할 수 있도록 심볼릭 레퍼런스를 가진다. 심볼릭 레퍼런스를 런타임 시점에 메모리 상에서 실제로 존재하는 물리적인 주소로 대체하는 Linking 작업이 일어난다. 심볼릭 레퍼런스는 참조하는 대상의 이름을 지칭하고, 클래스 파일이 JVM에 올라가게 되면 심볼릭 레펀선스는 실제 메모리 주소가 아닌 이름에 맞는 객체의 주소를 찾아서 연결하는 작업을..
오늘은 자료구조 Tree 에 대해 알아보려고 한다. Tree에 대해 최근 배웠고, 오늘 푼 알고리즘 문제가 트리와 관련이 있기 때문에 정리하려고 한다. 참고로 B Tree 내용이 많기 때문에 내일 다시 정리하려고 한다. 우선 트리에 대해 정리하고, 마지막에 알고리즘 풀이를 하겠다. 1. 트리의 특징 나무위키 가라사대, 트리는 부모 노드 밑에 자식 노드가 연결되 있고, 자식 노드 밑에 또 다른 자식 노드가 연결되 있는 재귀적 형태의 자료구조를 의미한다.트리는 그래프의 한 종류로서 각각의 노드들을 연결하는 간선은 하나뿐이며, 비순환형 그래프를 트리라고 부른다. 트리와 그래프를 비교해보자! 그래프 트리 각각의 노드들 사이에 2개 이상의 경로 가능, 양방향 경로 가능 두개의 노드 사이에 오직 한개의 경로만 가능..
FailOver 시스템을 구성하는 요소중 일부에 장애가 발생했을 때, 대체 자원으로 자동으로 전환되어 예비 시스템으로 운영하여 연속적인 서비스를 지원하는 것을 의미한다. SPOF를 완전히 제거하는 것은 힘들기 때문에 장애가 발생했을 때, 대처방안이 중요하다. FailOver를 지원하기 위해서는 두대 이상의 서버가 필요하며, 이와 같은 운영을 지원해주는 것이 Load Bancle 이다. Load Balance는 n대의 서버가 일을 분담하여, 하나의 서버에 가해지는 부하를 분산시켜주는 것을 의미한다. 대부분의 서비스들은 사용자들에게 연속적인 서비스를 지원하기 위해 다중화 전략을 취하고 있다. Load Balance 지원해주는 소프트웨어 HAProxy와 하드웨어 L4, L7 을 알아보자 L4, L7은 Load..
1. Scale Up & Scale Out 서비스 운영의 효율성을 위해 서버의 규모를 조절하는 것을 Scalability, 확정성이라고 부른다. 사용자의 요청이 많아지면 서버를 증설하고, 요청이 적어지면 서버를 줄일 수 있는 구조를 가진 서비스는 Scalable 하다고 부를 수 있다. 그리고 확장성을 지원할 수 있는 두가지 방법이 존재한다. Scale UpSclae Out 서버 자체의 저장 공간을 늘리거나 성능 향상시키는 것을 의미서버의 수를 늘려 요청을 분산함으로써 요청에 대한 처리능력 향상 의미 하나의 서버에서 운영되는 프로그램을 작성하면 되므로 구현 난이도와 운영에 대한 부담감이 낮음 서버 성능 향상에 따른 기존 서비스 코드의 수정 부분이 적음 필요에 따라 서버를 증설, 제거 가능 → Scalabl..
리플랛션 Typora Tool 을 이용해서 처음으로 포스팅을 해보았다. 이전에는 단순히 Text 만으로 작성을 했는데, 작성을 하는과정에서 여러 효과를 줄 수 있어 가독성이 더 향상된 것 같다. 특히 코드를 첨부하는 부분에서 굉장히 편했다.글자 크기 지정 : [Ctrl + Shift 1 ~ 6]코드 작성 : [~~~]제목설정 : [Ctrl + Shift + Q글자 효과 : [Ctrl + B (진하게) / **] [Ctrl + I (기울기)]수평선 작성 : [---] Reflection Example - 1 Question 클래스의 모든 필드,생성자,메소드에 대한 정보 출력xxxxxxxxxx@Testpublic void showClass() { /* TODO - 1 Question 클래스의 모든 필드, 생..
오늘은 자바의 리플렉션 기능에 대해 정리해보려고 한다. 정리는 두차례로 진행이 될 예정이고, 오늘은 리플렉션에 대해서 간단히 알아보려고 한다.리플렉션은 구체적인 클래스 타입을 알지 못해도 클래스의 메소드, 타입, 변수들에 대한 정보를 접근할 수 있게 해주는 API 이다. 리플렉션을 사용하면객체를 동적으로 생성이 가능하다. 그렇다면 동적은 무엇이고? 정적은 무엇일까? 그렇다면 리플렉션이 가능한 이유를 알아보자. 그리고 리플렉션이 가능한 이유를 알아보기 전에 간단히, 컴파일이 되는 과정을 간단히 알아보려고 한다. (참고 : https://lkhlkh23.tistory.com/2) 컴파일러에 의해 '.java' 소스 파일은 '.class' 바이트 코드로 변환이 되고, 클래스 로더에 의해 Runtime Data..
오늘은 @Controller 와 @RestController 에 대해 알아보려고 한다. 이전에 공부했던 내용이고 매일 Controller 와 RestController를 사용하고 있기 때문에 정확히 알고 있다고 생각했다. 그러나 오늘 접한 오류때문에 아직은 정확히 알지 못한다고 생각하여 간단히 정리 해보려고 한다. 일단 오늘 접한 오류는 no suitable HttpMessageConverter found for response type 라는 오류 메세지였다. 원인은 Ajax를 통해 Response Type을 JSON포맷으로 넘기려 했지만, 실제로는 text/html 형식으로 넘겼기 때문에 발생했었던 오류였다. 분명 @RestController 덕분에, JSON 형식으로 Response가 응답되었을 텐데..
ATDD 기반으로 개발을 하면서 테스트를 위한 생성자가 게속 발생했다. 물론 규모가 큰 서비스가 아니기 때문에 생성자가 굉장히 많지는 않았지만 이후 더 큰 서비스를 개발할 경우를 대비해서 생성자의 개수를 제한하는 방법을 공부했다. 1. 점층적 생성자 패턴 점층적 생성자 패턴은 각 필드의 따른 생성자를 모두 만든다는 것이다. 결국은 객체 생성에 필요한 필드의 수만큼 생성자가 존재하는 것이다.점층적 생성자 패턴은 잘 동작하지만, 필드의 수가 많아지면 가독성이 떨어지고, 코드 작성에 어려움이 있다는 단점을 가지고 있다.여기서 말하는 코드 단점은, 필드가 10개인 생성자를 호출할 때, 각각의 위치에 어떤 필드를 넣어야할지 어렵다는 것이다. 2. 자비빈 패턴 자바빈 패턴은 기본 생성자를 통해 객체를 생성한 후, ..