전체 글 199

HTTP 요청 Method

HTTP는 요청 메소드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타낸다. 각각의 메소드는 서로 다른 의미를 구현하지만, 일부 기능은 메소드 집합 간에 서로 공유하기도 한다. * HTTP 요청 Method의 종류 * GET 서버에 존재하는 정보를 요청한다. 이 때 반환되는 정보는 정보가 아니라 특정 정보(리소스)의 표시(표현)이다. GET을 사용하는 요청은 오직 데이터를 받기만 한다. 캐싱을 수행하기 때문에 캐싱되지 않는 요청은 GET 요청 메소드가 적합하지 않을 수 있다. * HEAD GET 메소드의 요청과 동일한 응답을 요구하지만, RequestBody를 포합하지 않는다. header만 가져온다. * POST 서버에 정보를 생성하는 것을 요청한다. 서버 상태의 변화를 일으킨다. Reques..

CS/network 2021.07.13

Agile 애자일

* 애자일(Agile)? 폭포수 모델등의 고전적인 방법론과의 가장 큰 차이는 적은 문서를 지향하고, 실제 개발(실용적인 측면을 강조한 개발 방법론)을 지향하는 방법이다. 애자일 방법론 장단점 소프트웨어 개발 각 단계를 명확하게 구분하지 않고 각 단계를 반복적으로 수행하면서, 요구사항을 더하거나 수정하면서 소프트웨어를 완성해 나간다. 커다란 소프트웨어를 개발하는데 요구사항 분석이나 설계를 완벽하게 하기 어려울 때 적합한 개발 방법론이 될 수 있다. 그리고 적은 문서 작성을 목표하고 실제 개발을 지향하는 방법론이기 때문에 실제 작동하는 소프트웨어는 기존 폭포수 모델 방법론과 다르게 빠르게 확인 할 수 있다는 장점 또한 있다. 하지만 실용적인 측면에서 개발하기 때문에, 체계화된 문서가 적을 수 있다는 단점이 ..

백준 2468 안전 영역 (JAVA 자바)

문제 출처 - https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 문제 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 ..

백준 18405 경쟁적 전염 (JAVA 자바)

문제 출처 - https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 문제 NxN 크기의 시험관이 있다. 시험관은 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 바이러스가 존재할 수 있다. 모든 바이러스는 1번부터 K번까지의 바이러스 종류 중 하나에 속한다. 시험관에 존재하는 모든 바이러스는 1초마다 상, 하, 좌, 우의 방향으로 증식해 나간다. 단, 매 초마다 번호가 낮은 종류의 바이러스부터 먼저 증식한다. 또한 증..

백준 1012 유기농 배추 (JAVA 자바)

문제 출처 - https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 문제 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이..

Hash (해쉬)

* Hash? 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 특징: 뭘 넣든 비슷한 길이의 알 수 없는 난수가 결과로 출력된다. 글자가 한 글자만 바뀌어도 완전히 다른 결과가 출력된다. 출력값으로 임의의 값을 예측할 수 없다. 같은 내용을 입력 값으로 주면 결과값은 언제나 같다. 이를 이용해 해시 테이블이라는 자료구조를 사용할 수 있으며 해시 값 자체를 index로 사용한다. 따라서 시간 복잡도는 O(1)로 매우 빠른 데이터 검색이 가능하다. * Hashing 과정 키(Key) ----> 해시 함수(hash function) ----> 해시값(hash value) [이름] [해싱과정] [index(hash value) : data] * 키(key) : 매핑 전 원래 데이터의 값 * 해시..

CS/algorithm 2021.07.10

백준 16918 봄버맨 (JAVA 자바)

문제 출처 - https://www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 문제 봄버맨은 크기가 R×C인 직사각형 격자판 위에서 살고 있다. 격자의 각 칸은 비어있거나 폭탄이 들어있다. 폭탄이 있는 칸은 3초가 지난 후에 폭발하고, 폭탄이 폭발한 이후에는 폭탄이 있던 칸이 파괴되어 빈 칸이 되며, 인접한 네 칸도 함께 파괴된다. 즉, 폭탄이 있던 칸이 (i, j)인 경우에 (i+1, j), (i-1, j), (i, j+1), (i, j-1)도 함께 파괴된다. 만약, 폭탄이 ..

Session vs Token(JWT)

* 인증(Authentication) vs 인가(Authorization) 인증(Authentication) 쉽게 말해서 로그인 내가 이 사이트에 회원가입한(데이터베이스에 내 정보가 저장되어 있는) 사용자임을 아이디와 패스워드 등을 통해서 인증을 받는 것 인가(Authorization) 인증(로그인)한 사용자가 서비스의 여러 기능을 사용할 때 서버가 이 사용자가 인증을 받은 사용자라는 것을 알아보고 허가를 해주는 것 * 인가(Authorization)를 어떻게 처리할 것인가? 네이버와 다음 같은 대규모 서비스를 생각해보자. 어떤 사람은 로그인 하지 않은 채로 뉴스를 읽고 어떤 사람은 로그인한 상태에서 메일을 보낸다. 매 초마다 수천, 수만개의 요청이 서버로 날아든다. 이 요청들 중 어떤 것은 로그인하지 ..

Web 2021.07.09

Map Collection

* Map? 키(key)와 값(value)로 구성된 entity 객체를 저장하는 구조를 가지고 있다. 키/값 둘 다 모두 객체이다. 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다. Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다. * Map 컬렉션에서 공통적으로 사용 가능한 Map 인터페이스의 메소드 K / V라는 타입 파라미터는 Map 인터페이스가 제네릭 타입이기 때문이다. 구체적인 타입은 구현 객체를 생성할 때 결정된다. 키를 알고있다면 get()메소드로 간단하게 객체를 찾아오면 되지만, 저장된 객체 전체를 대상으로 ..

JAVA 2021.07.08

Collection Framework

* Collection Framework? 객체들을 효율적으로 추가, 삭제. 검색할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함시켜놓은 것. 몇 가지 인터페이스를 통해서 다양한 컬렉션 클래스를 이용할 수 있도록 하고 있다. 컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map 등이 있다. List, Set은 객체를 추가, 삭제, 검색하는 방법에 많은 공통점이 있기 때문에 이 인터페이스들의 공통된 메소드들만 모아 Collection 인터페이스로 정의해 두고 있다. Map은 키와 값을 하나의 쌍으로 묶어서 관리하는 구조로 되어 있어서, List 및 Set과는 사용 방법이 관전히 다르다. 인터페이스 분류 특징 구현 클래스 Collection List - 순서를..

JAVA 2021.07.05