전체 글 87

1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.

본 게시글은 백기선님의 자바 라이브 스터디를 진행하기 위한 정리 자료입니다 1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. JVM이란 무엇인가 자바 가상 머신(JVM, Java Virtual Machine) 자바 바이트 코드를 실행시키기 위한 가상 머신이라고 할 수 있다. 자바로 작성된 모든 프로그램은 JVM에서만 실행이 가능하고 자바 프로그램을 실행하기 위해서는 반드시 JVM이 있어야한다 C 프로그램은 기계어로 컴파일하고 하드웨어 기종에 맞게 각각 컴파일 되어있어야 한다. 즉 '플랫폼에 종속적'이다. Java 같은 경우 JVM만 설치 되어있으면 기기의 기종에 상관없이 사용이 가능하며 한번만 컴파일이 가능하고 플랫폼에 독립적이다. 출처 : https://www.artima.com/i..

스터디/LiveStudy 2020.11.20

[Spring] HTTP 요청 맵핑 - 커스텀 애노테이션

Custom Annotation 직접 커스터마이징 하는것이 커스텀 애노테이션이다. @RequestMapping 애노테이션을 메타 애노테이션으로 사용하기 @GetMapping 같은 커스텀한 애노테이션을 만들 수 있다. 메타(Meta) 애노테이션 애노테이션에 사용할 수 있는 애노테이션 스프링이 제공하는 대부분의 애노테이션은 메타 애노테이션으로 사용할 수 있다. 조합(Composed) 애노테이션 한개 혹은 여러 메타 애노테이션을 조합해서 만든 애노테이션 코드를 간결하게 줄일 수 있다. 보다 구체적인 의미를 부여할 수 있다. @Retention 해당 애노테이션 정보를 언제까지 유지할 것인지. Source: 소스 코드까지만 유지. 즉, 컴파일 하면 해당 애노테이션 정보는 사라진다는 이야기이다 Class: 컴파인 ..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - HEAD와 OPTIONS

HEAD와 OPTIONS 우리가 구현하지 않아도 스프링 웹 MVC에서 자동으로 처리하는 HTTP Method HEAD OPTIONS HEAD GET 요청과 동일하지만 응답 본문을 받아오지 않고 응답 헤더만 받아온다. (테스트 하기 위함) 예시 @Controller public class SampleController { @GetMapping( value = "/hello", params = "name=sungjun" ) @ResponseBody public String hello() { return "hello"; } } @WebMvcTest public class SampleControllerTest { @Autowired MockMvc mockMvc; @Test public void helloTest..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - 헤더와 매개변수

헤더와 매개변수 특정한 헤더가 있는 요청을 처리하고 싶은 경우 @RequestMapping(headers = “key”) @Controller public class SampleController { @GetMapping( value = "/hello", headers = HttpHeaders.AUTHORIZATION ) @ResponseBody public String hello() { return "hello"; } } @WebMvcTest public class SampleControllerTest { @Autowired MockMvc mockMvc; @Test public void helloTest() throws Exception { mockMvc.perform(get("/hello") .hea..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - 미디어 타입

미디어 타입 맵핑 특정한 타입의 데이터를 담고 있는 요청만 처리하는 핸들러 @RequestMapping(consumes=MediaType.APPLICATION_JSON_UTF8_VALUE) Content-Type 헤더로 필터링 매치 되는 않는 경우에 415 Unsupported Media Type 응답 특정한 타입의 응답을 만드는 핸들러 @RequestMapping(produces=”application/json”) Accept 헤더로 필터링 (하지만 살짝... 오묘함) 매치 되지 않는 경우에 406 Not Acceptable 응답 문자열을 입력하는 대신 MediaType을 사용하면 상수를 (IDE에서) 자동 완성으로 사용할 수 있다. 클래스에 선언한 @RequestMapping에 사용한 것과 조합이 되..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - URI 패턴 맵핑

URL(Uniform Resource Locator 또는 web address, 문화어: 파일식별자, 유일자원지시기) 네트워크 상에서 자원이 어디 있는지를 알려주기 위한 규약이다. 즉, 컴퓨터 네트워크와 검색 메커니즘에서의 위치를 지정하는, 웹 리소스에 대한 참조이다. 쉽게 말해서, 웹 페이지를 찾기위한 주소를 말한다. 흔히 웹 사이트 주소로 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다. 그 주소에 접속하려면 해당 URL에 맞는 프로토콜을 알아야 하고, 그와 동일한 프로토콜로 접속해야 한다. URI Uniform Resource Identifier. resource의 식별자이다. 리소스의 식별은 리소스의 위치를 표시하거나 unique한 이름으로 접근할..

Spring/Spring MVC 2020.11.15

[Spring] HTTP 요청 맵핑 - 요청 메소드

HTTP Method GET, POST, PUT, PATCH, DELETE, ... GET 요청 클라이언트가 서버의 리소스를 요청할 때 사용한다. 캐싱 할 수 있다. (조건적인 GET으로 바뀔 수 있다.) 브라우저 기록에 남는다. 북마크 할 수 있다. 민감한 데이터를 보낼 때 사용하지 말 것. (URL에 다 보이니까) idempotent(멱등) Controller import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public ..

Spring/Spring MVC 2020.11.15

[Java] 이것이 취업을 위한 코딩테스트다 BFS - 미로탈출

import java.util.*; class Node { int x ; int y ; public Node(int x, int y) { this.x = x; this.y = y; } } public class _2MazeEscape { private static int n = 5; private static int m = 6; private static int[][] edges = { {1, 0, 1, 0, 1, 0}, {1, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1} }; public static void main(String[] args) { bfs(0, 0); System.out.println(edges[n..

Java/알고리즘 2020.11.12

[python] 이것이 취업을 위한 코딩테스트다 DFS - 음료수 얼려먹기

n, m = 4, 5 edges = [ [0, 0, 1, 1, 0], [0, 0, 0, 1, 1], [1, 1, 1, 1, 1], [0, 0, 0, 0, 0] ] visited = [[[False] * 5] * 4] def dfs(x, y): if x = n or y = m: return False if edges[x][y] == 0: edges[x][y] = 1 dfs(x - 1, y) dfs(x, y - 1) dfs(x + 1, y) dfs(x, y + 1) return True return False cnt = 0 for i in range(n): for j in range(m): if dfs(i, j): cnt += 1 print(cnt) Reference 해당..

Python/알고리즘 2020.11.12