일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문자열
- 최단경로
- beandefinitionstoreexception
- API
- 코딩테스트
- 파이썬
- error
- HTTP
- 탐욕법
- 2981
- algorithm
- Greedy
- 소수
- springboot
- Python
- javascript
- 알고리즘
- 백준
- Dijkstra
- spring security
- brute force
- 라이브템플릿
- Spring
- 2018 KAKAO BLIND RECRUITMENT
- java
- codility
- BFS
- applicationeventpublisher
- 프로그래머스
- counting elements
- Today
- Total
목록java (7)
Altiora Petamus
repository class 가 domain 패키지에 있어서 repository 패키지로 이동시켜주고 테스트를 실행시켰더니 발생한 에러입니다. 에러를 읽어보니 분명 클래스를 이동시켰는데도 이전의 위치에서 찾는 것을 볼 수 있었습니다. 그리고 이로 인해 클래스 경로에서 파일을 찾지 못하는 에러까지 발생하고 있었습니다. 분명히 파일을 옮겼고 파일의 인덱싱까지 잘 되어있는데 왜 컴파일 단계에서 에러가 발생할까 해서 다음 명령어를 실행해보고 다시 시도해보니 해결되었습니다. ./gradlew clean 빌드 과정에서 문제가 생겼을 경우 실행시켜서 문제를 해결하던 명령어였는데 이번 에러 또한 이 명령어로 해결할 수 있었습니다.
영화 정보를 가져오는 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..
어떤 데이터베이스를 사용할지 정해지지 않은 상황에서 당장 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..