일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- counting elements
- 탐욕법
- 코딩테스트
- 최단경로
- 문자열
- 2981
- 프로그래머스
- springboot
- HTTP
- java
- error
- BFS
- 라이브템플릿
- beandefinitionstoreexception
- brute force
- 파이썬
- applicationeventpublisher
- Python
- Greedy
- API
- spring security
- 백준
- codility
- Spring
- Dijkstra
- 알고리즘
- 2018 KAKAO BLIND RECRUITMENT
- 소수
- javascript
- algorithm
- Today
- Total
목록Java (10)
Altiora Petamus
영화 정보를 가져오는 OMDb API 를 사용해보던 중에 DTO로 정보를 처리하고 있었다. 이 과정에서 약간의 문제가 있었는데, 평소 나는 camelCase 방식을 사용하여 프로젝트를 작성하지만 api에서는 앞글자를 대문자로 JSON 데이터를 제공하고 있다. { "Title": "Frozen", "Year": "2013", "Type": "movie", "Poster": "https://m.media-amazon.com/images/M/MV5BMTQ1MjQwMTE5OF5BMl5BanBnXkFtZTgwNjk3MTcyMDE@._V1_SX300.jpg", "imdbID": "tt2294629" } private String title; private String year; private String imdbI..
Intro REST API 의 다양한 사용법에 대해 알아봅니다. 모든 테스트는 Postman 을 활용해 진행했습니다. HTTP Request 기본 사용법 @RestController @RequestMapping("/mapping/users") public class MappingClassController { @GetMapping public String user() { return "get users"; } @PostMapping public String addUser() { return "post user"; } @GetMapping("/{userId}") public String findUser(@PathVariable String userId) { return "get userId=" + user..
Intro REST API 에 대해 학습하면서 정리하는 글입니다. HTTP Request mapping 이하 모든 API 는 "ok" 라는 텍스트를 반환합니다. 기본 요청 @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping("/hello-basic") public String helloBasic() { log.info("helloBasic"); return "ok"; } } "/hello-basic" or "/hello-basic/" 모두 허용 HTTP method 모두 허용 : GET, POST, PUT, PATCH, DELETE, HE..
어떤 데이터베이스를 사용할지 정해지지 않은 상황에서 당장 Rest api 를 만들기 시작해야한다면 어떤 방법을 사용할 수 있을까요? 간단한 CRUD는 in-memory DB 를 구현하여 작성해놓으면 추후 DB가 정해졌을 경우 바로 교체하여 사용할 수 있습니다. 사실 테스트 용도로 자주 사용되는 H2 데이터베이스를 사용해도되지만, 직접 구현하며 흐름을 알아보도록 하겠습니다. 우선 lombok, Spring Web 정로만 선택하여 gradle 프로젝트를 생성해주겠습니다. db package 아래에 MemoryDbRepository interface 를 만들어줍니다. public interface MemoryDbRepositoryIfs { // Create T save(T entity); // Read Opt..
시큐리티를 사용하기 위해서는 의존성을 추가해야 합니다. springboot-starter 에 포함되어 있으므로 프로젝트 생성 과정에서 Spring security 를 선택해주면 build.gradle 에 작성되고 사용할 수 있게 됩니다. 사용법에 집중하기 위해서 패키지 생성 및 의존성을 추가하는 과정은 과감히 생략합니다. Default 화면 확인해보기 시큐리티는 기본적으로 로그인 화면을 제공합니다. 다음과 같은 클래스들을 작성해주고 main 을 실행켜보겠습니다. @SpringBootApplication public class BasicTestApplication { public static void main(String[] args) { SpringApplication.run(BasicTestApplic..
스프링 시큐리티란? 시큐리티가 필요한 이유 웹사이트는 각종 서비스를 하기 위한 리소스와 서비스를 사용하는 유저들의 개인정보를 가지고 있습니다. 이들 리소스를 보호하기 위해서 일반적으로 웹사이트는 두가지 보안 정책을 설정해야 합니다. 1. 인증 (Authentication) 사이트에 접근하는 사람이 누구인지 시스템이 알아야 합니다. 익명사용자(anonymous user)를 허용하는 경우도 있지만, 특정 리소스에 접근하거나 개인화된 사용성을 보장 받기 위해서는 반드시 로그인하는 과정이 필요하겠죠. 로그인은 보통 username / password 를 입력하고 로그인하는 경우와 sns 사이트를 통해 인증을 대리하는 경우가 있습니다. UsernamePassword 인증 Session 관리 토큰 관리 (sessi..
Decorator Pattern 자바의 입출력 스트림은 decorator pattern 이다. 여러 decorator들을 활용하여 다양한 기능을 제공 상속보다 유연한 구현 방식 데코레이터는 다른 데코레이터나 컴포넌트를 포함해야 한다. 지속적인 기능의 추가와 제거가 용이 decorator와 component는 동일한 것이 아니다 (기반 스트림 클래스가 직접 읽고 쓸 수 있다. 보조 스트림은 추가적인 기능을 제공한다) 구현 데코레이터 패턴을 활용하여 커피 머신 기능을 만들어보자. 요구사항 기본적인 에스프레소 커피에 물을 추가하면 아메리카노, 우유를 추가하면 라떼, 모카 시럽을 추가하면 모카커피가 되는 형식이다. 먼저 커피를 구현해보자 public abstract class Coffee { public abs..
Serialization 이란? Serializable 인터페이스 Marker Interface transient Serialization 이란? 인스턴스의 상태를 그대로 파일 저장하거나 네트워크로 전송하고 (serialization) 이를 다시 복원(deserialization) 하는 방식 자바에서는 보조 스트림을 활용하여 직렬화를 제공 ObjectInputStream과 ObjectOutputStream Serializable 인터페이스 직렬화는 인스턴스의 내용이 외부로 유출되는 것이므로 프로그래머가 해당 객체에 대한 직렬화 의도를 표시해야 한다. 구현 코드가 없는 marker interface transient : 직렬화 하지 않으려는 멤버 변수에 사용 (Socket 등 직렬화 할 수 없는 객체) i..