수집 - 요소들을 필터링/매핑한 후 요소들을 수집하는 최종처리 메소드를 제공 - 필요한 요소만 컬렉션으로 담을 수 있고, 요소들을 그룹핑한 후 집계할 수 있음 예제를 위한 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...
팩토리 메소드 패턴 - 팩토리는 공장을 나타내는 단어. -> 뭔가를 생산. - 객체를 직접 new 하지 않고 서브클래스에 위임해서 생성하는 기법. - 객체를 만들어내는 팩토리 패턴. - 팩토리 메소드에서는 주로 템플릿 메소드 패턴(하나의 알고리즘을 여러 단계의 알고리즘을 두고 사용하는 메소드 패턴)이 사용됨. 예제 분석 1. 게임아이템과 아이템 생성 구현 - 아이템을 생성하기 전 데이터베이스에서 아이템 정보 요청 - 아이템 생성 후 아이템 복제 등의 불법을 방지하기 위해 데이터베이스에 아이템 생성정보 남김 2. 아이템을 생성하는 주체를 ItemCreator로 이름짓기 3. 아이템은 Item이라는 interface로 다룰 수 있도록함. - item은 use 함수를 기본 함수로 갖고 있습니다. 4. 현재 아..
안녕하세요! 오늘은 두달여전에 구매해서 현재까지 사용하고있는 제 노트북에 대해서 리뷰해보도록 하겠습니다. 2013년 7월 즈음 IT관련 전공을 하는 사람으로써 1학년이지만 엄마손잡고 삼성매장에가서 노트북한대를 샀던게 제 첫 노트북이었습니다. 그걸 2019년까지 써왔더니 노트북이 상태가 점점 말이아니어서 Spring 프로젝트 톰캣 서버 켜는데만 2분이상 소요하고 아~~주 불편한 환경이어서 큰맘먹고 바꾸었습니다. 그 때 제가 했던 고민들도 함께 들려드리도록 하겠습니다. 맥북 vs 그램 일단 맥북과의 배교를 가장 많이 하게되었었습니다. 개발자로써 MacOS라는 운영체제를 접해보고 싶었고, 맥북간지도 느껴보고 싶었습니다. 하지만 가장 크게 결정했던 요인은 무게와 가격! 현재 제 노트북의 스펙은 RAM 16GB,..
피보나치 수 문제 설명 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 와 같이 이어집니다. 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 제한 사항 * n은 1이상, 100000이하인 자연수입니다. 입출력 예 n return 3 2 5 5 입출력 예 설명 피보나치수는 0번째부터 0, 1, 1,..
기본 집계 메소드 - 최종 처리 기능 - 요소들을 처리해서 카운팅, 합계, 평균값, 최대값, 최소값 등 하나의 값으로 산출 - 대량의 데이터를 가공해서 축소하는 리덕션. 기본 집계 메소드 예제 package Stream.middleprocess.zipgue; import java.util.Arrays; public class AggregateExample { public static void main(String[] args) { //배열선언 int[] temp = new int[] { 1,2,3,4,5 }; //카운트 long count = Arrays.stream(temp).filter(n -> n%2 ==0) .count(); System.out.println("2의 배수 개수 : "+count);..
타겟 넘버 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연..