Lombok - 자바 개발시 자주 사용하는 getter/setter, toString(), 생성자 등을 자동으로 생성해주는 라이브러리. - @Data, @Getter, @Setter, @ToString 등의 어노테이션 방식을 이용한다. - @Data 어노테이션은 모든 요소를 추가하는것. 즉 변수선언만 해놓고 getter/setter, toString, 생성자, equals 메소드 hashcode 등 lombok으로 생성할 수 있는 모든 메소드를 생성시킴. https://mvnrepository.com/ Maven Repository: Search/Browse/Explore Camel Async Http Client support Last Release on Oct 20, 2019 mvnrepository..
멤버변수 - 클래스 변수라고도 하며 메소드에 선언된 것이 아닌 클래스의 필드에 선언된 변수. 로컬변수 - 메소드가 실행될 때만 사용되는 변수. 메소드 내부에 선언되어 있음. 람다식에서 클래스의 멤버변수 사용 - 람다식에서 this는 내부적으로 생성되는 익명객체의 참조가 아닌 람다식을 실행한 객체의 참조이다. - 바깥 객체와 중첩 객체의 참조를 얻어 필드값을 출력하는 예제. @FunctionalInterface public interface MyFunctionalInterface { public void method(); } public class UsingThis { public int outterField = 10; class Inner{ int innerField = 20; //Inner 클래스 멤버..
함수적 인터페이스 (@FunctionalInterface) - 모든 인터페이스는 람다식의 타겟타입으로 사용할 수 없다. (= 모든 인터페이스가 람다식으로 대입될 수 없다.) - 람다식은 하나의 메소드를 구현하는 것이기 때문에 인터페이스에는 구현될 단 하나의 추상메소드만 존재해야한다. - 그러기 위해서 사용하는 방식이 함수적 인터페이스. 인터페이스에 단 하나의 추상메소드만 있어야한다. - @FunctionalInterface 어노테이션은 컴파일러가 어노테이션이 있는 인터페이스의 추상메소드 개수를 세어 2개 이상인 경우 컴파일 오류를 낸다. - 그러나 어노테이션이 없다고 함수적 인터페이스가 아니라고는 하지 않는다. 단지 개발자의 실수를 방지하기 위한 체킹용 어노테이션이다. 매개변수와 리턴값이 없는 람다식 @..
더 맵게 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 -..
주식가격 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 prices return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점..
수집 - 요소들을 필터링/매핑한 후 요소들을 수집하는 최종처리 메소드를 제공 - 필요한 요소만 컬렉션으로 담을 수 있고, 요소들을 그룹핑한 후 집계할 수 있음 예제를 위한 Student 클래스 public class Student implements Comparable{ public enum Sex {MALE, FEMALE} public enum City {Seoul, Pusan} private String name; private int score; private Sex sex; private City city; public Student(String name, int score) { super(); this.name = name; this.score = score; } public Student(St..
안녕하세요. 오늘은 3일동안 만들었던 프로젝트를 소개하고자 합니다. 주제는 구글, 파파고, 카카오의 세 번역기를 하나의 페이지에서 번역할 수 있게 만든 페이지 개발입니다. 개발 목적 제가 이런 페이지를 개발하게 된 이유는 웹서버를 두어 사이트를 운영해보고 싶었던 마음과 친구의 요청으로 진행된 프로젝트였습니다. 친구는 번역기로 영작, 번역과정을 자주하게 되었는데요. 주로 구글 번역기를 사용하였지만 꼼꼼한 성격을 가진 친구라 파파고, 카카오 번역 등 다른 번역기에서도 확인을 하고 싶어했어요. 그런데 그렇게 하기위해서는 크롬탭으로 3가지의 번역기 사이트를 모두 켜놓고 왔다갔다 해야하는 불편함이 있었다고 합니다. 여튼, 어느 하나만 믿고 하는 것보다는 여러가지 선택지를 비교하면서 작업할 수 있으면 좋겠다는 요구..
스케줄러 - 주기적으로 매일, 매주, 매월 등 주기적으로 특정한 프로그램을 실행하기 위한 것 - Spring의 경우는 Spring-batch 혹은 Quartz 라이브러리를 이용하면 프로그램이 실행되는 동안 주기적인 스케줄링이 가능하다. Spring에서 Quartz 라이브러리 설정 1. pom.xml org.quartz-scheduler quartz 2.3.0 org.quartz-scheduler quartz-jobs 2.3.0 - quartz와 quartz-jobs 디펜던시 등록. 2. root-context.xml 의 namepace에서 task 항목을 체크! - task:annotation-driven 태그 추가 - 스케줄러가 실행될 컨트롤러가 속한 패키지를 component-scan 처리한다. 3...