Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다. 감사합니다. http://blog.advenoh.pe.kr 1. 들어가며 이번 포스팅에서는 스프링에서 파일 업로드를 어떻게 구현할 수 있는지에 대해서 알아보도록 하겠습니다. 스프링에서는 단일 파일 업로드뿐만이 아니라 아래와 같은 여러 방법으로 파일 업로드 기능을 제공합니다. 단일 파일 업로드다중 파일 업로드파일 업로드 + 추가 정보 by @RequestParam 개별로파일 업로드 + 추가 정보 by @ModelAttribute 한번에 클래스와 매핑 스프링은 MultipartResolver 인터페이스와 아래 2가지 구현체로 파일 업로드를 지원합니다. Servlet 3.0 Multipart Request 사용구현체 : ..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다. 감사합니다. http://blog.advenoh.pe.kr 1. 들어가며Lombok는 자바에서 작성해야 하는 boilerplate code(ex. getter/setter, constructor, toString)를 어노테이션을 통해서 자동으로 생성해주는 라이브러리입니다. 코드 자체가 더 간결해져 가독성도 높아지고 더 빠르게 개발할 수 있는 장점이 있습니다. 하지만, Lombok 사용 시 주의가 필요합니다. (참조 : Lombok Pitfall) 그래서 올바로 알고 주의해서 사용하기를 권장합니다. 이 포스팅에서는 자주 사용하는 어노테이션 위주로 설명하도록 하겠습니다. 2. 환경 설정 아래 환경 기반으로 코드가 작성되..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다.감사합니다. http://blog.advenoh.pe.kr 1.JOIN에 대한 기본 개념관계형 데이터베이스에서는 중복 데이터를 피하기 위해서 데이터를 쪼개 여러 테이블로 나눠서 저장합니다. 이렇게 분리되어 저장된 데이터에서 원하는 결과를 다시 도출하기 위해서는 여러 테이블을 조합할 필요가 있습니다. 관계형 데이터베이스에서는 조인(JOIN) 연산자를 사용해 관련 있는 컬럼 기준으로 행을 합쳐주는 연산입니다. 조인에 대해서 공부하다 보면 종류도 많아서 처음에는 많이 헷갈릴 때가 종종 있어서 다시 정리를 해보았습니다. 2. 샘플 데이터 이 포스팅에서 사용한 데이터는 MySql 사이트에서 제공한 샘플 데이터를 참고해서 수정한 ..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다.감사합니다. http://blog.advenoh.pe.kr 1. 데이터베이스의 키 종류이번 포스팅에서는 데이터베이스의 여러 키 종류를 정리해보겠습니다. 키 종류에 대한 설명을 위해 아래 샘플 데이터를 사용합니다. 샘플 데이터는 자동으로 생성해주는 dummy data 사이트에서 얻어왔어요. 수퍼키 (super key) 유일성의 특성을 만족하는 속성들의 집합으로 이루어진 키를 수퍼키라 한다유일성이란? - 하나의 키로 어떠한 행을 바로 찾아낼 수 있는 성질을 의미한다예. authors 테이블 id, {id, first_name}, {first_name, last_name}, email 등이 수퍼키가 된다 후보키 (c..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다.감사합니다. http://blog.advenoh.pe.kr 1. 어노테이션이란스프링 프레임워크를 사용하면 어노테이션을 자주 사용하게 됩니다. 아래는 스프링 웹 MVC를 사용한 예로 GET HTTP 요청(/helloworld)이 있으면 “Hello World”를 담아서 뷰에 전달되는 코드입니다. 이런 어노테이션은 내부적으로 어떻게 코드화되어 사용되는지 알아봅시다. @Controllerpublic class HelloWorldController { @RequestMapping(value="/helloworld", method=RequestMethod.GET) public ModelAndView example..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다.감사합니다. http://blog.advenoh.pe.kr 자바 개발을 하다 보면 하나의 JDK 버전이 아니라 여러 버전을 설치해야 할 때가 종종 있습니다. 진행하는 프로젝트마다 개발하는 JDK 버전이 조금씩 다를 수 있고 새로 릴리스한 버전을 설치해서 스터디하고 싶을 때 여러 버전이 존재하게 됩니다. 한 시스템에 여러 버전이 존재하지만, 쉽게 한 버전에서 다른 버전으로 변경할 수 있는 명령어를 JDK에서는 제공하지는 않습니다. 개발자가 알아서 수동으로 변경해야 합니다. 본 포스팅에서는 맥 환경을 대상으로 어떻게 여러 버전의 JDK로 쉽게 변경할 수 있는지 알아보겠습니다. 1. 여러 JDK 버전 설치하기 일단, 먼저 여..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다.감사합니다. http://blog.advenoh.pe.kr 1. argparse 모듈이란? 셀이나 리눅스 명령어를 실행할 때 많은 옵션이 존재합니다. 아래는 pip 명령어(파이썬 패키지 관리자)의 옵션 목록입니다. Flag 형태의 옵션(ex. --no-color)이나 입력값을 받을 수 있는 옵션(ex. --log )도 있습니다.이런 옵션을 파이썬에서 구현하려면 어떻게 해야 할까요? 실제 구현한다면, 실행 명령어를 인자로 받아서 parse 하는 과정이 필요합니다. 직접 구현하기는 좀 부담스럽죠. 셀이나 여러 언어에서 이런 부분들을 별도의 모듈로 제공합니다. 파이썬에서 커맨트parsing 라이브러리는 getopt, argpa..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다. 감사합니다. http://blog.advenoh.pe.kr 1. Problem 정수값에서 1인 비트를 카운트하는 문제입니다. 1.1 입력 / 결과 7 : 111 —> 323 : 10111 —> 413 : 1101 —> 3 2. Solution2.1 Approach 1 컴퓨터 공학과 수업 중에 assembly를 다루는 과목은 꼭 필수로 들었던 기억이 납니다. 매우 오래전 얘기긴 하지만, assembly로 과제를 하면서 자연스럽게 비트 연산을 익혔던 것 같습니다.다시 문제를 풀려고 하니, 솔직히 기억은 나지 않네요. 그래도 AND, OR만 알아도 쉽게 풀 수 있는 문제들이 많이 있습니다. 이진수에서 1이 있는지 확인하려면..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다. 감사합니다. http://blog.advenoh.pe.kr 1. Problem2개의 array에서 common value값을 찾아 결과를 반환하는 문제입니다. 메서드 정의는 아래와 같이 2개의 array를 받고 결과를 Set으로 반환합니다. public Set solution(int[] A, int[] B) {} 1.1 입력 / 결과 간단한 입력과 결과 예제입니다. 반환 결과에서는 중복된 값은 포함되지 않습니다. [1, 1, 1, 1, 2, 2] & [3, 3, 4, 1, 2] -> [1,2][2, 7, 1, 4, 5, 6, 9, 8, 7] & [4, 6, 8, 2, 3, 5, 3, 1] -> [4, 6, 8, 2,..
Gatsby로 블로그 마이그레이션을 하여 이 링크를 클릭하면 해당 포스팅으로 갑니다. 감사합니다. http://blog.advenoh.pe.kr 1. Problem면접에서도 자주 나올 수 있는 문제중에 하나입니다. 여러 조합의 괄호 기호가 OPEN, CLOSE 매칭이 딱딱 맞아 떨어지는지 체크하는 문제입니다. public boolean solution(String str) {...} 1.1 입력 / 결과 스택 자료 구조입력 가능한 String 값은 아래와 같습니다. ()()() —> true((()))()() —> true)( —> false((())))) —> false 2. Solution2.1 Approach 1 String의 한 char씩 스킨한다OPEN_괄호 ‘(‘ 을 만나면 스택에 pus..