전체 글 405

Spring boot를 통한 REST API구현 - 이론(2)

Spring boot로 간단한 rest api를 구현하여 보자!! Spring boot를 통한 REST API의 구현 - 실습(2)에 관한 이론과 내용들에 관한 글이다. 관련 내용 1. Annotation @PathVariable Controller에서 parameter를 받을 수 있는 방법 중 하나이다. http://localhost:8080/users/변수입력 이런 식으로 위치 뒤에 {/변수}를 통해 전달할 수 있다. 주의사항 null / 공백 등이 있는 parameter에는 적용하지 않는다. 값에 { . } 이 포함되면, 그 이후 값은 잘리게 된다. @RequestParam Controller에서 parameter를 받을 수 있는 방법 중 하나이다. http://localhost:8080/users..

Spring boot를 통한 REST API구현 - 실습(2)

Spring boot로 간단한 rest api를 구현하여 보자!! Rest api에서 parameter을 전송하고, 이를 확인하기 다시 해당 위치로 들어가서 코드를 조금 수정해 주자. import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @GetMapping public String getUsers(@RequestParam(value = "page")int page, @RequestParam(value = "limit") int limit){ return "get users was called with page = " + page + " an..

Spring boot를 통한 REST API구현 - 이론(1)

Spring boot로 간단한 rest api를 구현하여 보자!! Spring boot를 통한 REST API의 구현 - 실습(1)에 관한 이론과 내용들에 관한 글이다. 먼저 REST api의 개념은 이곳에 설명해 두었다. 관련 내용 1. Annotation @RestController Spring MVC Controller에서 요청에 대한 응답을 return하기 위해 사용한다. 해당 메소드를 사용하면 Controller에서는 데이터를 반환하게 된다. @Controller + @ResponseBody 해당하는 위치의 view를 반환하는 Controller 요청에 대한 응답을 반환하는 ResponseBody RequestMapping(value = "/users") 이를 사용하여 localhost:8080..

REST api의 기초

REST Api의 기초 먼저 spring boot에서 @RestController란 @Controller와 @ResponseBody의 조합이다. Controller : Model객체를 통해 데이터를 전달하고, View를 찾아간다. RestController : 객체만을 반환한다. -> 객체는 주로 JSON나 XML형태로 http응답에 담아서 전송한다. Controller는 Spring 2.5버전에서부터, RestController는 spring 4.0버전에서부터 지원되었다. RestController 사용시 모든 메소드가 뷰 대신 객체로 작성된다. REST의 특징 Uniform Interface HTTP의 표준에 따른다면 언어에 종속되지 않고, 모든 플랫폼에서 사용 가능하다. Stateless REST는..

이론 정리 2022.02.27

Spring boot를 통한 REST API구현 - 실습(1)

Spring boot로 간단한 rest api를 구현하여 보자!! 프로젝트 세팅 먼저 IntelliJ에서 새로운 프로젝트를 만들어 주자 RestApi의 Get, Post, Put, Delete를 매핑하기 프로젝트가 완성되면 일단 UserController라는 클래스를 해당 위치에 생성해 준다. 이후 아래와 같은 코드를 작성해 준다. import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/users") public class UserController { @GetMapping() public String getUser(){ return "get users was called"; } @PostMapping publ..

[백준 1309번] 동물원 - java

문제 설명 1. 2xn크기의 우리를 갖는 동물원이 있다. 2. 사자를 넣는데, 사자의 양옆위아래에는 다른 사자가 있으면 안된다. 3. 모든 사자를 배열하는 방법을 찾는다. 사자의 수는 제한이 없고 아무도 없는 경우도 방법으로 친다. 풀이 과정 1. DP를 통해서 풀 수 있다. 2. 나는 DP의 경우 한번 n이 3이나 4가 될 때 까지는 무작정 경우의 수를 구하는 것이 쉽게 풀 수 있는 방법이라 생각한다. 그래서 그냥 방법을 구해 보았다. 우리 집에 있는 무서운 사자를 우리에 넣어보도록 하겠다. 먼저 2x1의 크기 우리에 사자가 배열되는 경우는 다음 세 가지에 해당한다. 그럼 다음으로 2x2의 우리에 사자를 넣는 경우는 어떻게 될까? 먼저 가장 왼쪽 ox의 경우(o는 사자, x는 빈칸) 이렇게 다음 우리가..

알고리즘 공부 2022.02.26

JAVA에서 ArrayList와 LinkedList에 관해, 그리고 vector

JAVA에서 ArrayList와 LinkedList에 관해, 그리고 vector ArrayList클래스 java의 Collection중 하나이다. ArrayList는 기존 자바 List와 달리 동적으로 크기가 할당된다. ArrayList는 java 메모리의 주소를 사용하여 데이터를 저장시킨다. 실질 ArrayList의 내부는 배열의 형태를 갖고 있기 때문이다. 그렇기 때문에 데이터를 검색할 때에도 바로 검색할 수 있다. 알아보기 쉽게 표현하자면 다음과 같다. 이런 식으로 각각의 data들이 하나씩 존재한다. 그럼 여기서 값을 추가하려면 어떻게 될까? 이런 식으로 새로운 값을 넣어주려면, 저 노란 색의 데이터가 들어가기 위해 뒤의 값들을 하나하나 옮겨주어야 할 것이다. 해당 위치를 찾아가서 값을 넣어준 뒤..

이론 정리/java 2022.02.26

java에서 String & StringBuffer & StringBuilder에 관해

java에서 String & StringBuffer & StringBuilder에 관해 String 먼저 java에서 String을 쪼개어 보면 이렇게 나온다. String -> final char[] 이걸 보면 자바에서 string은 final인 char의 배열로 선언되어 있다. 즉, String의 경우는 문자를 선언하게 되면 이것이 final형식으로 불변객체로 선언되게 된다. String에서 +연산자를 사용해 본 적은 있어도, -연산자롤 사용해 본 사람은 없을 것이다. 이는 String의 경우는 String pool영역에 있는 불변 객체이기 때문이다. 그렇다면 +연산자는 된다면.. String에 어떠한 값을 더하면 어떻게 될까? String str = "hell"; str += "o"; str += ..

이론 정리/java 2022.02.25

java HashMap의 Thread-Safe이슈와 HashTable, ConcurrentHashMap

HashMap의 Thread-Safe이슈와 HashTable, ConcurrentHashMap Thread-Safe란? Thread-Safe란, 멀티 스레드 프로그램에서 어떤 객체나 함수 등이 여러 스레드로부터 동시에 접근이 이루어져도 문제 없이 실행이 가능한 것이다. 동기화(Synchronize)라고도 표현하며, 여러 쓰레드에서 작업이 이루어져도 데이터의 정합성이 유지되는 것이다. 멀티 스레드가 뭔데?? 먼저 스레드란 프로세스 내에서 일을 처리하는 세부실행 단위를 뜻한다. 그렇다면 멀티 스레드란, 하나의 프로세스를 여러 개의 스레드로 나누어 수행해주는 것이다. 즉, 하나의 프로그램이 여러 작업을 동시에 수행할 수 있도록 해주는 것이며 이를 통해 수행 능력을 향상시켜 주는 개념이다. HashMap에서 T..

이론 정리/java 2022.02.25

Log4j 보안 취약점에 관하여

Log4j 보안 취약점 Log4j란? Log4j란 java/kotlin등의 코딩 도중 해당 프로그램의 로그를 기록해주는 라이브러리이다. 해당 보안 취약점이 일어난 배경 Log4j는 위에서 설명했듯, 코딩 도중에 프로그램의 로그를 기록해 준다. 그런데 이 방법은 JNDI(java naming and directory interface)를 사용하여 자바가 디렉토리를 통해 데이터를 찾을 수 있도록 하는 방식을 사용한다. 이 JNDI에서 LDAP가 문제가 되었는데, Log4j 에서 ${jndi:}를 사용하면 hello 객체를 실행하게 한다. 그리고 이를 사용하면 log4j로그가 남겨질 수 있는 모든 곳에 해당 방식을 사용하여 공격이 가능해지게 된다. 그래서 어떤 문제가 생기는가? 먼저 Log4j는 굉장히 많은 ..