반응형 분류 전체보기313 전략 패턴(Strategy Pattern) 전략 패턴(Strategy Pattern)은 행위(Behavioral) 패턴 중 하나로써 실행 중에 알고리즘을 선택할 수 있게 하는 디자인 패턴이다. 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만드는 방법이다. 간단하게 얘기하면 클라이언트가 수행하는 어떤 행위(알고리즘)를 클래스 별로 캡슐화하여 필요할 때마다 쉽게 행위를 교체할 수 있도록 해주는 방법이다. 별도의 클래스를 통해 클라이언트와 독립적으로 관리하기 때문에 새로운 기능을 추가하거나 수정한다 하여도 클라이언트는 아무런 영향을 받지 않는다. 전략 패턴의 구조는 다음과 같다. Context(문맥) : Strategy의 인터페이스를 이용하는 역할, 클라이언트는 Context를.. 2021. 7. 26. 백준 2613 : 숫자구슬 https://www.acmicpc.net/problem/2613 2613번: 숫자구슬 첫째 줄에 구슬의 개수 N과 그룹의 수 M이 주어진다. 둘째 줄에는 각 구슬이 적혀진 숫자가 왼쪽부터 차례로 주어진다. N은 300 이하의 자연수, M은 N이하의 자연수이며, 구슬에 적혀진 숫자는 100 www.acmicpc.net [ 문제풀이 ] 최댓값을 구하는 최적화 문제이기 때문에 결정문제로 변경하여 파라메트릭 서치로 해결하였다. 주의해야 할 점은 l, r의 범위이다. r은 300x100으로 잡아주면 되지만 l은 1이 아닌 주어진 구슬 중 최대 번호로 해줘야 한다. 최댓값을 구하는 건 간단했는데 최댓값일 때의 각 그룹의 구슬 개수를 구하는데 상당히 애를 먹었다. 다양한 시도를 해도 안돼서 그냥 최댓값 범위를 넘지.. 2021. 7. 26. URI vs URL vs URN URI는 Uniform Resource Identifier의 약자로써 인터넷의 자원을 나타내는 고유 식별자를 의미한다. 즉, 인터넷에 존재하는 모든 자원을 식별하기 위한 문자열의 구성을 뜻한다. 나의 블로그 주소인 https://sorjfkrh5078.tistory.com/ 문자열도 나의 블로그를 식별하는 URI이다. URI와 비슷한 개념으로 URL과 URN이 존재한다. URI는 인터넷에 있는 모든 자원을 식별하기 위한 고유 식별자라면 URL과 URN은 URI의 하위 개념으로 이들의 관계를 그림으로 나타내면 다음과 같다. URL은 Uniform Resource Locator의 약자로써 URI 내에서 자원의 위치를 뜻하는 Locator를 의미한다. 즉, 인터넷상의 어떤 자원을 식별할 때 위치로 자원.. 2021. 7. 25. HTTP 통신 vs Socket 통신 대부분의 웹사이트는 HTTP 프로토콜을 통해 서버에게 원하는 데이터를 요청하거나 전송하는 등의 통신을 수행한다. 하지만 당연히 HTTP 통신말고도 데이터를 주고받는 다른 통신 방식들도 존재할 것이다. 그중 대표적인 방법이 바로 HTTP 통신과 Socket 통신이다. 두 방식 모두 이 둘의 차이에 대해서 간단하게 정리해보려고 한다. 먼저 언급하면 두 방식의 가장 큰 차이는 클라이언트와 서버의 통신을 유지하는지에 대한 여부이다. 그렇다면 각 방식에 대해서 간단하게 알아보도록 하자. 먼저 HTTP 통신이다. HTTP 프로토콜의 특징 중 하나는 비연결성(Connectionless)이다. 즉, 클라이언트와 서버가 연결되어 클라이언트의 요청에 대해 서버가 응답을 하면 연결을 끊어버린다. 또한, 반대로 서버.. 2021. 7. 25. JSON(Java Script Object Notation) REST에 대해서 공부할 때 일반적으로 JSON or XML 형식을 통해 자원의 상태를 전달한다고 하였다. 최근에는 데이터를 표현하는데 XML을 대체해서 JSON이 많이 활용되기 때문에 흔히 제이슨이라고 부르는 JSON에 대해 공부 및 정리해보려고 한다. JSON의 정의는 "속성-값 쌍" 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 간단하게 얘기하면 데이터를 저장하거나 전송할 때 자주 사용되는 경량의 데이터 형식이다. JSON은 원래 Javascript에서 객체를 만들 때 사용하는 표현식이었지만 독립적인 데이터 포맷이기 때문에 다양한 프로그래밍언어에서 JSON을 사용할 수 있다. 이때 JSON을 쉽게 활용할 수 있도록.. 2021. 7. 25. REST, REST API, RESTful 최근 대부분의 API는 REST API를 제공하는 추세이다. 하지만 REST, REST API, RESTful에 대해 아직까지 잘 모르기 때문에 막상 질문이 들어오면 대답하기가 어렵다. 따라서 이번 기회에 한번 알아보려고 한다. 먼저 공통된 단어인 REST에 대해서 알아보자. REST는 Representational State Transfer의 약자로써 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고받는 모든 것을 의미한다. 자원은 문서, 그림, 데이터 등 해당 소프트웨어가 관리하는 모든 것을 의미한다. 일반적으로 JSON or XML 형식을 통해 자원의 상태를 전달하며 최근에는 JSON 방식을 주로 사용한다. 월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소.. 2021. 7. 25. 백준 1939 : 중량제한 https://www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 www.acmicpc.net [ 문제풀이 ] 처음에는 BFS + DP로 풀려고 했는데 설계를 잘못했는지 자꾸 틀렸습니다가 나왔다. C의 범위가 굉장히 크고 최댓값을 구하는 최적화 문제이기 때문에 결정 문제로 변형할 수 있다. 따라서 파라메트릭 서치를 통해 해결하였다. import java.io.BufferedReader; import java.io.BufferedWr.. 2021. 7. 25. 웹 서버(Web Server) vs WAS(Web Application Server) 요즘 스프링 부트를 이용해서 간단한 웹 애플리케이션을 실습해보고 있다. 스프링 부트에선 클라이언트에게 보여지는 view를 정적(static) 페이지와 동적(templates) 페이지로 분리해서 관리한다. 정적 페이지와 동적 페이지, 이들을 서비스하는 서버인 웹 서버와 웹 애플리케이션 서버에 대해 간단하게 알고 있었지만 이번 기회에 한번 제대로 알아보려고 한다. 우선 정적 페이지와 동적 페이지에 대해서 알아보자. 정적 페이지는 우리가 웹사이트에서 어떠한 동작을 하더라도 아무런 변화가 없이 항상 동일한 페이지이다. 우리가 url을 통해 웹사이트를 접속하게 되면 웹 애플리케이션은 웹 서버를 통해 url에 해당하는 파일(image, html, css 등)을 찾아서 우리에게 보여준다. 반면 동적 페이지는 .. 2021. 7. 24. HTTP 메서드 대부분의 인터넷은 HTTP 프로토콜을 통해 데이터를 주고받는다. 비개발자라면 "아 그렇구나" 하고 이 정도만 알고 넘어가도 되겠지만 웹 공부를 하고 있기 때문에 클라이언트와 서버가 HTTP 프로토콜 위에서 어떠한 방식(HTTP 메서드)으로 데이터를 요청 및 응답하는지에 대해 한번 알아보려고 한다. HTTP 메서드는 총 9가지가 존재한다. 다만, 보안상의 이유로 대부분의 서버는 GET, POST, OPTIONS 메서드들만 허용하도록 한다. 그럼 하나씩 간단하게 살펴보자. 다음으로 비슷한 HTTP 메서드들의 차이점을 간단하게 알아보도록 하자. 먼저 GET과 POST이다. 두 메서드 모두 서버에게 무언가를 요청할 때 사용하는 메서드이지만 둘 사이에는 차이점이 존재한다. GET 방식은 "URL?리소스" 형.. 2021. 7. 24. 이전 1 ··· 19 20 21 22 23 24 25 ··· 35 다음 반응형