[모던 자바 인 액션] chap03. 람다 표현식(2)
·
Book/모던 자바 인 액션
람다는 함수형 인터페이스의 인스턴스를 만들 수 있다. 람다 표현식 자체에는 람다가 어떤 함수형 인터페이스를 구현하는지의 정보가 포함되어 있지 않다. 따라서 람다 표현식을 더 제대로 이해하려면 람다의 실제 형식을 파악해야 한다.람다 표현식의 형식 추론List heavierThan150g = filter(inventory, (Apple apple) -> apple.getWeight() > 150);// 이 경우, filter 메서드는 Predicate을 기대한다.Object o = (Runnalbe) () -> { System.out.println("Tricky example"); };// 이렇게 캐스팅 할 수도 있다.List greenApples = filter(inventory, apple -> GREE..
[모던 자바 인 액션] chap03. 람다 표현식(1)
·
Book/모던 자바 인 액션
람다 표현식 - 메서드로 전달할 수 있는 익명 함수를 단순화한 것람다의 특징익명함수 - 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다.전달 - 람다 표현식은 메서드 인수로 전달하거나 변수로 저장할 수 있다.간결성// 기존에 사용하던 코드Comparator byWeight = new Comparator() { @Override public int compare(Apple o1, Apple o2) { return o1.getWeight().compareTo(a2.getWeight()); }}// 람다를 사용하면 간편해진다.Comparator byWeight = (o1, o2) -> o1.getWeig..
[모던 자바 인 액션] chap02. 동적 파라미터화 코드 전달하기
·
Book/모던 자바 인 액션
동적 파라미터화란? - 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록예제 코드public static List filterGreenApples(List inventory) { List result = new ArrayList(); for(Apple apple : inventory) { if(GREEN.equals(apple.getColor())) result.add(apple); } return result;}인터페이스를 구현하는 객체들로 동작파라미터화를 시키면 메서드가 다양한 동작을 받아 내부적으로 다양한 동작을 수행할 수 있다.색을 파라미터화public static List filterApplesByColor(List inventory, Color color) { Li..
[모던 자바 인 액션] chap01. 자바 8에 무슨 일이..?
·
Book/모던 자바 인 액션
자바 8이 등장하기 이전에는 병렬처리에 대한 프로그래밍이 쉽지않았다. 스레드를 이용해 병렬 환경을 컨트롤 할 수는 있지만 이것은 전문가가 아니라면 어려운 수준이었다. 하지만 자바8이 나오면서 병렬 실행을 새롭고 단순한 방식으로 접근할 수 있는 방법을 제공하기 시작했다! 이 책은 그러한 자바8의 새로운 기법을 이용하려면 지켜야 하는 규칙에 대해서 설명한다.자바8에서 제공하는 새로운 기술 세가지다.스트림 API : 우리는 스트림을 통해 synchronized를 사용하지 않아도 된다!메서드에 코드를 전달하는 기법인터페이스의 디폴트 메서드지금부터 자바8 설계의 밑바탕을 이루는 세가지의 개념에 대해 알아보자.1. 스트림 처리란?스트림이란 한 번에 한 개씩 만들어지는 연속적인 데이터 항목들의 모임이다. 이론적으로 ..
2022년 회고
·
일상
취업 준비중에 우연히 기술 블로그를 보는데, 개발자가 회고하는 글을 보게 됐다. 처음엔 별거 아니라고 느꼈었지만 취업을 하고나서 생각해보니 나를 성장시키는 방법으로 한 해를 돌아보는것도 좋은 방법이란 생각이 들어 회고를 해보기로 생각했다. 1. 졸업하면서 2022년 2월에 졸업을하게 됐다. 학교를 졸업하면서 많이 헤이해진걸 느꼈다. 1월까지만해도 불태우면서 취업준비에 굉장히 노력을 하고 있었는데, 막상 졸업하고나니 갑자기 하기 싫어지더라.. 3개월정도 공부에만 매진하는게 아니라 놀고 조금 공부하고 놀고 조금 공부했던 것 같다.. 5~6월이 되서야 제대로 된 준비가 필요하다고 느껴 다시 공부하면서 이곳저곳 원서를 넣었다. 취업 준비중에 '토비의 스프링'을 정독한 것은 내가 2022년도 동안에 공부를 한 것..
Maven scope
·
Spring/개념
scope dependency 하위에 포함되는 항목 해당 dependency가 포함되는 범위에 대한 타입 scope 종류 compile : 기본 scope. 미입력시에도 기본 적용 모든 상황에서 포함됨 provided : compile과 유사하게 모든 상황에서 수행된다 하지만, 다른 외부 컨테이너에서 기본 제공되는 API인경우 provided로 지정 시 마지막 패키징할 때 포함되지 않음 예를 들면 tomcat에서 기본적으로 servlet api를 제공하기 때문에 servlet api를 provided로 지정하면 패키징시 제외된다. runtime : 컴파일 시에는 불필요 실행시에 필요한 경우. 런타임 및 테스트 시 classpath에 추가 되지만, 컴파일시에는 추가 되지 않음 test : 테스트시에만 사용..
디자인 패턴 정리
·
Spring/개념
템플릿 메서드 패턴 - 상속을 통해 기능을 확장해서 사용하는 부분이다. 변하지 않는 부분은 슈퍼클래스에 두고 변하는 부분은 추상 메소드로 정의해둬서 서브클래스에서 오버라이드하여 새롭게 정의해 쓰도록 하는것이다. 단점 : 접근 제한이 많다. 로직마다 상속을 통해 클래스를 만들어야 한다. 관계에 대한 유연성이 떨어진다. 전략 패턴 - 개방 폐쇄 원칙(OCP)를 잘 지키는 구조이면서도 템플릿 메소드 패턴보당 유연하고 확장성이 뛰어난 것이, 오브젝트를 아예 둘로 분리하고 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만드는 전략 패턴이다. OCP 관점에 보면 확장에 해당하는 변하는 부분을 별도의 클래스로 만들어 추상화된 인터페이스를 통해 위임하는 방식이다. 필요에 따라 컨텍스트는 그대로 유지하면서 전략을 바..
[2022-03-24] 유기농 배추
·
코딩테스트
푼 시간 : 2시간정도 ( 잘 모름.. ) 언어 : 파이썬 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 대충 그래프 문제 이제 코딩테스트 준비를 진짜 해야되서 풀면서 힌트가 될만한 문제는 다시 스크랩을 할 예정이다. 내가 푼 문제니까 다시 보면 아 이런 문제는 이런 유형이구나 하고 기억할거같아서 다시 넣는다. # 백준 1012번 유기농 배추 # 2시간은 걸린듯 # 파이썬은 2차원 배열을 선언하면서 시간이 오래걸린다. (2차원 배열의 객체크기가 클경우) ..
[2021-09-10] 복서 정렬하기
·
코딩테스트
푼 시간 : 2시간 30분 언어 : 자바 https://programmers.co.kr/learn/courses/30/lessons/85002?language=java 코딩테스트 연습 - 6주차 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 정렬인데, 단순한 정렬같은 느낌이 아니었다... 완전탐색을 보는듯한 풀이법.. 코드를 더 효율적으로 쓰고싶다...ㅜㅜ 주어진 조건대로 풀이를 하고나서 처음에는 테스트케이스가 맞아서 기뻐했는데 제출을 해보니 안맞는것이었다. 조건 몇가지를 내 맘대로 생각해서 질질 끌고..
[2021-07-25] 기능개발 (lv2)
·
코딩테스트
푼 시간 : 50분 언어 : 자바 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 스택 큐 활용해야되서 했는데, 오히려 다른데서 함정에 빠져버렸다. 작업량이 끝내려니까 자꾸 하나가 안더해져서 계속 골치였는데, 그냥 잠깐 노래듣다보니 마지막에 더하면 되는데 왜 굳이 못 더할까? 이런 생각이 들었다. 끝에 바로 더해버렸다. def solution(progresses, speeds): answer = [] ..