Java
-
Java 8 StreamJAVA/Java 2022. 1. 14. 12:09
자바 8부터 지원하는 Stream은 컬렉션, 배열 등에 대해서 요소들을 하나씩 참조하여 반복적 처리를 하는 기능이다. 스트림은 내부 반복을 통해서 작업을 처리하기 때문에 for문을 사용하는 것 보다 간결하게 식을 표현할 수 있다. Stream 스트림의 특징은 다음과 같다. 원래의 데이터를 읽기만 할 뿐 기존 데이터를 변경하지 않음 일회성이므로 재사용이 불가능하다. 필요하다면 정렬된 결과를 반환하도록 한다. (스트림의 생성을 반복적으로 이용하면 연속적으로 사용할 수 있다) 스트림 생성, 중개연산, 최종연산 의 구조를 지니고 있다. ( 스트림생성().중개연산().최종연산() ) 병렬 스트림은 여러 쓰레드가 작업한다. (parallelStream()으로 병렬 스트림 작성 시 parallelStream().fi..
-
자바에서 Scanner.nextInt() 후 nextLine() 입력받지 못할 때JAVA/Java 2022. 1. 10. 18:12
Scanner를 이용해서 입력을 받으려고 할 때 nextInt()후 nextLine()을 이용하여 입력받지 못하고 끝나버리는 경우가 발생했다. 이러한 문제는 nextInt()는 개행문자(엔터 '\n') 전까지 숫자를 입력 받는 데 이후 개행문자 까지 입력을 받는 nextLine()을 사용하게 되면 버퍼에 남아있는 개행문자 하나만 입력을 받은 후에 메소드가 종료되기 때문에 발생 한다. 해결방안 public class InputView { private static final Scanner sc = new Scanner(System.in); public InputView() { } public static int inputPrice() { System.out.println("구입 금액을 입력해 주세요.");..
-
자바에서 메소드 순서JAVA/Java 2022. 1. 10. 18:04
프로젝트 리팩토링을 진행하면서 코드를 작성할 때, 변수와 메소드 순서에 대해서 작성하는 방법을 배웠다. 전체적인 순서 public class LottoResult { // static 변수 private static final int LOTTO_PRICE = 1_000; private static final int LOTTO_MATCH_MINIMUM_BOUND = 3; // instance 변수 private Map result = defaultResult(); private BigDecimal yield; // constructor public LottoResult(final List matchResult) { setResult(matchResult); } // 메소드 private Map defaul..
-
Java Optional의 사용JAVA/Java 2022. 1. 6. 19:37
런타임에 발생하는 객체없음(NullPointException)을 방지하기 위해서 java8 부터는 함수형 언어를 이용해서 존재하지 않을 수 도 있는 값이라는 Optional 타입을 만들어냈다. 그러나 Optional의 사용에는 주의해야 할 점 이 26가지나 존재하므로 유의해서 사용해야 한다. Optional Card card = cardRepository.findById(1).orElseThrow(new IllegalException("Card not found with id: " + 1)) Optional은 null이 될 수도 있는 값을 가진 객체를 감싸는 Wrapper 클래스 로 반환할 결과 값이 null(없음)임을 명백하게 표현할 필요가 있지만 null반환시에 에러가 발생할 가능성이 높은 곳에서 제..
-
SMTP 서버를 통한 이메일 보내기Spring 2021. 10. 26. 22:43
spring에서 이메일 보내기 🌱 패스워드를 잊어버렸을때 임시비밀번호를 생성해서 등록된 유저의 이메일로 보내주도록 해보자. dependency org.springframework.boot spring-boot-starter-mail 먼저 메일을 이용하기 위해서 spring-boot-starter-mail을 dependency에 추가해준다. 네이버 이메일 host 등록하기 먼저 사용할 메일 환경설정에 들어가서 smtp사용을 사용함으로 설정해준다. application.properties #Mail spring.mail.host=smtp.naver.com spring.mail.port=가려진 포트번호를 가져와서 등록 spring.mail.username=보내려는 이메일 spring.mail.password=..
-
Enum Type ( 열거형 )JAVA 2021. 10. 26. 16:14
프로젝트 진행중 enum타입 데이터에 여러 정보를 추가해서 사용하였다. Enum @Getter public enum Level { // Starter, Bronze, Silver, Gold, Master Starter("Starter", 0,0), Bronze("Bronze",1, 299), Silver("Silver", 300,999), Gold("Gold", 1000,2999), Master("Master",3000,2147483647); private final String name; private final Integer min; private final Integer max; Level(String name, Integer min, Integer max) { this.name = name; th..
-
Instagram 클론 -3) backend와 frontend 합치기Spring 2021. 6. 12. 00:30
먼저 sign in, up 페이지를 합치자 먼저 firebase로 가서 authentification을 시작한다. 이번에는 firebase documentation으로 가서 웹시작하기를 눌러준다. 빌드> 인증>비밀번호로 인증하기를 들어간다. 이제 우리 프로젝트에 firebase를 넣자. 다음의 문서를 참고해서 순서대로 진행한다. frontend에 npm install --save firebase 이후 components에 firebase.js파일을 만들어주자. import firebase from "firebase/app"; var firebaseConfig = { apiKey: "AIzaSyDOCAbC123dEf456GhI789jKl01-MnO", authDomain: "myapp-project-123..
-
Instagram 클론 -2) status, post, comment모델 만들기Spring 2021. 6. 12. 00:20
user에 이어 이제 status모델을 만들자. 먼저 status entity를 만든다. entity에 Status자바 클래스를 만들어준다. 자동생성되는 id를 만들어주고 나서, 필요한 요소들을 만들고 기본 생성자와 요소 생성자, getter, setter도 만들어준다. package com.yunhalee.Instagram_App.Entity; import java.sql.Timestamp; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity(name = "Status") public class Status { @Id @GeneratedValue privat..