기본1 Alt + 1 프로젝트 창 포커스 한번 더 누르면 프로젝트 창이 사라지고 에디터 창에 포커스가 맞춰짐 esc 프로젝트창 -> 에디터 창으로 돌아오기 space 프로젝트 창 미리보기 프로젝트 창에 포커스가 간 상태에서 space 클릭 ctrl+shift+f12 에디터 창 키우기 - gradle창, 프로젝트 창이 다 축소됨 - 다시 누르면 켜놓은 창이 다시 활성화 ctrl+tab 에디터 창 이동 - 에디터에서 켜놓은 창들 중에서 원하는 창 이동하고싶을때 - ctrl키를 계속 누른상태서 tab을 누르면 항목이동 새파일 생성 에디터에서 : ctrl+alt+insert : smemo랑 겹처서 나는 안됨; 프로젝트 창에서 : alt + insert 커서이동 단어별 이동 : ctrl + 왼쪽, 오른쪽 방향키 ..
Stream 소개 데이터를 담고 있는 저장소(컬렉션)이 아니다. Functional in nature, 스트림이 처리하는 데이터 소스를 변경하지 않는다. Functional 하다. 결과가 또 다른 stream이 되는 것이지, 전달받은 데이터 자체가 변경되는 것이 아니다. 스트림으로 처리하는 데이터는 오직 한번만 처리한다. 컨베이어 벨트에 항목이 한번 지나가는 것이라고 보면된다.(한번 지나면 끝) 무제한일 수도 있다. (Short Circuit 메소드를 사용해서 제한할 수 있다.) 중개 오퍼레이션은 근본적으로 lazy 하다. stream에 사용하는 것은 2개로 나눌 수 있다. (중개, 종료) 중개 오퍼레이션은 lazy : lazy하다는 말은 종료 오퍼레이션이 나오기 전까지는 실행하지 않는 것을 뜻한다. 즉..
목표 자바의 람다식에 대해 학습하세요. 학습할 것 람다식 사용법 함수형 인터페이스 Variable, Capture 메소드, 생성자 레퍼런스 람다식이란? 람다식은 메소드를 하나의 '식(expression)'으로 표현한 것이다. int[] arr = new int[5]; Arrays.setAll(arr, i -> (int)(Math.random() * 5) + 1); 위의 문장에서 '() -> (int)(Math.random() * 5) + 1'이 바로 람다식이다. 메소드를 람다식으로 표현하면 메소드의 이름과 반환값이 없으므로, 람다식을 '익명 함수(anonymous function)'이라고도 한다. 위 람다식이 하는 일을 메서드로 표현하면 다음과 같다. int method(){ return (int)(Ma..
jwt의 access_token과 refresh_token를 구현하는 과정에서 프로젝트 프론트 팀원분이 refresh_token은 쿠키에 담아서 전송해달라는 요청이 들어왔다. 과정은 대략 아래와 같다. 전송방식은 Http Only 방식으로 쿠키에 담아 전송하였다. httpOnly란 Set-Cookie HTTP reponse 헤더에 포함되는 flagf이다. cookie를 생성할 때 HttpOnly를 사용하는 것은 브라우저가 HttpOnly를 지원할 경우 쿠키는 클라이언트 측 스크립트에 접근할 수 없다. 악성 스크립트(XSS 공격)에 의한 위험을 완화시켜준다. 즉, http only 쿠키 방식으로 저장된 정보는 Javscript의 Document.cookieAPI로 접근이 불가능하다. 따라서 XSS 취약점 ..
목표 자바의 제네릭에 대해 학습하세요. 학습할 것 제네릭 사용법 제네릭 주요 개념(바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure 제네릭이란? 데이터타입을 일반화하는것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일 시 type check를 하면 장점이 있다. 클래스나 메소드 내부에서 사용되는 객체의 타입의 안정성을 높일 수 있다. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. Java 5 이전에서는 여러 타입을 사용하는 대부분의 클래스나 메소드에서 인수나 반환값으로 Object타입을 사용했었다. 하지만 이 경우에는 반환된 Object 객체를 다시 원하는 타입으로 타입을 변환해야 하고, 이..
목표 자바의 Input과 Ontput에 대해 학습하세요. 학습할 것 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 I/O 입출력 입출력이란? 입출력은 컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고 받는 것을 말한다. 키보드로부터 글자를 입력 받는다 -> 입력 System.out.println()을 이용해 화면에 출력한다 -> 출력 스트림(stream) 자바에서 어느 한 쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 역할을 수행한다. 스트림이..
목표 자바의 애노테이션에 대해 학습하세요. 학습할 것 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 Annotation 자바를 개발한 사람들은 소스코드에 대한 문서를 따로 만들기보다 소스코드와 문서를 하나의 파일로 관리하는 것이 낫다고 생각했다. 그래서 소스코드의 주석 '/** ~ */'에 소스코드에 대한 정보를 저장하고, 소스코드의 주석으로부터 HTML 문서를 생성해내는 프로그램(javadoc.exe)를 만들어 사용했다. 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 바로 애너테이션이다. 애너테이션은 주석(comment)처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 ..
1.개요 Spring MVC의 @RestController은 @Controller와 @ResponseBody의 조합입니다. Spring 프레임 워크에서 RESTful 웹 서비스를 보다 쉽게 개발할 수 있도록 Spring 4.0에서 추가되었습니다. 근본적인 차이점은 @Controller의 역할은 Model 객체를 만들어 데이터를 담고 View를 찾는 것이지만, @RestController는 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아서 전송합니다. 물론 @Controller와 @ResponseBody를 사용하여 만들 수 있지만 이러한 방식은 RESTful 웹서비스의 기본 동작이기 때문에 Spring은 @Controller와 @ResponseBody의 동작을 조..
목표 자바의 열거형에 대해 학습하세요. 학습할 것 enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet enum을 정의하는 방법 enum이란? enum(열거형)은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 상수를 여러개 정의할 때 사용한다. enum은 여러 상수를 정의한 후, 정의된 것 이외의 값은 허용하지 않는다. 가장 간단하게 선언하는 법은 다음과 같다. enum 열거형이름 { 상수명1, 상수명2, 상수명3, ...} ※ 추가적인 특징 - 열거형 필드의 이름은 상수이기 때문에 대문자로 표기한다. - 기본적으로 0부터 시작하는 정수값이 연속적으로 부여된다. public class EnumDemo { enum Season..
brunch.co.kr/@springboot/538 스프링부트 백엔드 프로그래밍 (5) 5. 예외 처리 및 테스트 코드 작성 | "스프링부트 백엔드 프로그래밍"이라는 주제로 약 8주간 글을 작성할 예정입니다. 스터디가 잘못된 방향으로 가지 않도록, 의견 및 조언을 아낌없이 해주시 brunch.co.kr #필수과제 1. 사용자에 의한 키워드 검색 시 네이버 Open API 영화 검색 결과를 애플리케이션 내부에 정의한 자료구조에 저장해놓기(캐싱 역할로 사용) (Map or Set or 커스텀한 자료구조 등 자유롭게 정의해보기) 예) Map을 사용해서, Key에는 검색어를 Value는 검색 결과를 저장 2. 사용자에 의한 키워드 검색 시 특정 키워드에 해당하는 데이터가 자료구조에 이미 저장되어있다면, 네이버 ..