개인적으로 자바8의 꽃이라 생각하는 스트림 포스팅이다. 내용이 워낙 방대하긴하나 쉽게 생각하면 스트림은 결국 API들의 모임이기때문에 외워야할게 많기도하다. 1. 스트림(Stream)스트림은 자바8에 추가된 API로 자바의 자료구조들을 선언적으로 다루는 역할을 한다. 앞선 함수형 인터페이스 포스팅에서 설명했던 인터페이스들이 엄청나게 등장을 하니 스트림을 다룬다면 외우기 싫어도 외워질수밖에 없을 것이다.자료구조들을 다루는 역할을 하기때문에 스트림은 배열이나 List처럼 생성한 다음 요소를 추가하는 형태가 아니다. 정적 팩토리 메서드(Static Factory Method)를 이용해 자료구조로부터 생성한다.int[] numberArr = {1, 2, 3, 4, 5, 6}; List numberList = A..
앞선 포스팅에서 메서드를 전달하기 위한 익명 클래스를 작성하는 반복되고 지저분한 코드를 줄이는게 람다 표현식이라고 설명했다. 메서드 레퍼런스는 이름에서 알 수 있듯이 메서드의 레퍼런스를 전달한다는 의미이며, 람다표현식에서 메서드 호출 1회로 코드가 끝나는 경우 메서드 레퍼런스를 이용해 이미 줄인 코드를 더 줄일수도있다.메서드의 레퍼런스라고하지만 엄밀히 말해 자바에서의 메서드는 일급 객체가 아니기때문에 객체의 레퍼런스를 전달하는 방식으로 작동한다. Function f = str -> Integer.parseInt(str);Function 인터페이스는 하나의 인자를 받아 다른타입의 리턴타입을 갖는 apply() 메서드를 갖고있는 함수형 인터페이스이다. 람다를 사용해 String 객체를 인자로 받아 Integ..
앞선 포스팅에서 함수형 인터페이스(Functional Interface)가 무엇인지 알아봤다. 이번 포스팅에서는 Java8에서 기본적으로 제공하는 함수형 인터페이스들을 알아보자. 보통 'API는 외울필요없다. 이런게 있다는것만 알고있으면 된다.' 이런말을 많이 하는데 개인적인 생각에 Java8에서 제공하는 API는 최대한 외울수 있는데까지는 외워야 한다고 생각한다. 다음번에 알아볼 Stream은 선언형 프로그래밍으로 API만 계속 등장하게되는데 그때마다 찾아서 쓰려면 오히려 생산성이 저하되는 일이 발생할 수도 있기때문이다. 1) Runnable기존부터 존재하던 인터페이스로 스레드를 생성할때 주로사용하였으며 가장 기본적인 함수형 인터페이스다. void 타입의 인자없는 메서드를 갖고있다.Runnable r ..
Java8에서 뭐가 추가됐나요? 라고 물으면 가장 먼저 들리는 대답은 십중팔구 '람다와 스트림이요' 일것이다. 당연히 맞는 말이고 틀린 답은 아니지만 람다와 스트림이 왜 추가됐는지를 알아야하는데, 자바가 기존에 없던 문법까지 만들어가면서 이런것들을 추가한건 함수형 프로그래밍을 받아들이기 위해서다. 그래서 Java8을 공부하고자하는 사람이라면 그냥 단순히 '이번에 추가된 람다랑 스트림공부해야지'가 아니라 함수형 프로그래밍을 공부해야한다. 이는 프로그래밍 자체의 패러다임이 변하기때문에 그저 추가된 문법, 추가된 API만 공부하면 되는 수준이 아니라 프로그래밍 방식 자체, 문제 해결을 위한 사고방식 자체를 기존에서 탈피해야함을 의미한다. 해보니 기존에도 못하던걸 새로운걸 받아들이려고하니까 너무 어렵다;; 그래..
함수형 인터페이스(Functional Interface)추상메서드를 1개만 갖고있는 인터페이스 동작 파라미터(Behavior Parameter)값이 아닌 행위를 매개변수로 전달함, 메서드를 전달한다고 생각하면 됨, template callback 패턴을 생각하면 된다. 메서드와 함수의 차이(Method, Function)메서드는 클래스에 종속되어있음. 즉 파라미터를 받지않는 함수는 사실상 항상 같은 값이 반환되어야하지만 메서드의 경우 클래스에 종속적이기때문에 파라미터를 받지않음에도 항상 반환값이 다를 수 있음(인스턴스 변수, this를 이용하는 경우). 즉 this를 이용하지못하는 정적 메서드(static method)는 함수라고 할만함. 메서드 레퍼런스(Method Reference)객체의 레퍼런스를 ..
이클립스를 쓰다가 인텔리제이로 넘어오면 신세계를 맛보는 느낌일것이다.일단 뭐가 더 좋은지도 모르면서 그저 유료툴이니까 더 좋아보이는 플라시보효과도 있을거고 이클립스에서는 뭔가 불안정했던 디자인적요소도 매우 깔끔해진것도 느낄것이다.그런 기쁨 마음으로 새 프로젝트를 시작하고자 스프링 mvc 프로젝트를 생성하려고하면 이클립스와는 뭔가 다름을 알수있을텐데 이클립스에서 지원해주는 spring mvc 초기 프로젝트 설정이 인텔리제이에서는 찾을 수가 없다.구글에 검색하면 왠지 있는것같은 게시물들이 막 나오는데 아무리 찾아도 없다. 아마도 버전이 올라오면서 사라진게 아닐까...생각하는데 찾고찾다가 도저히 없어서 나같은 사람을 위해 포스팅을 진행하게 됐다. intellij 는 이클립스와 명칭부터 약간 다른데 짧게 설명하..
이전 포스팅에서 깃과 깃헙을 이용해 첫 저장소를 생성해보았다.이번엔 좀더 진보한 사용법을 익혀보자. 앞선포스팅에서는 커맨드라인을 이용해 status를 확인하고 commit, push 했지만 깃을 좀 더 편하게 GUI에서 사용할수있도록 지원하는 툴들이 있다.개인적으로는 회사에서 처음 사용해본 source tree 라는 툴을 사용하고있는데 이 툴을 중점으로 포스팅하겠다. 일단 소스트리를 설치하자.https://www.sourcetreeapp.com 설치가 완료됐으면 실행하자. 다음과 같은 화면을 볼수있다. 윈도우는 살짝 다른걸로 알고있는데 진행에는 큰 무리가 없을것이다(나도 회사에선 윈도우로 사용중이다.). 로컬저장소는 존재하지않고 원격저장소만 존재할경우(기 진행중인 프로젝트를 다운받는경우가 이에 해당할 것..
개발자라면 git을 이용하든, 이용하지않은 얘기는 여기저기서 참 많이 들을것이다.깃헙에 소스를 올려두라는둥 오픈소스에 참여하라면 깃헙을 가라는 둥... 사용법도 어렵지않다고하는데 쌩초보입장에서는 쉽지않은게 사실이다. 형상관리는 넘어가고 초간단 깃헙 사용법에 대해 포스팅을 하고자한다. 먼저 깃을 설치하자.https://git-scm.com/book/ko/v1/시작하기-Git-설치한글로 자세히 설명되어있다. 설치를 마쳤으면 terminal 혹은 cmd 창을 열어 깃이 설치됐는지 확인하자. 버전을 확인하는 커맨드명령어는 다음과 같다. git --version 숫자로 이루어진 버전이 뜨면 정상적으로 설치된것이다. 형상관리를 해주는 기술의 이름이 git이고 깃을 이용해 서비스를 해주는 업체가 github다. 기본..
자바에 추가된지 참 오래된기술이지만 아직도 익숙치않은 기술이 하나있다.Generics(제네릭)이 바로 그것인데 제네릭에대한 포스팅을 간략히 진행하려한다.사실 제네릭이란 단어는 생소하더라도 초보개발자들도 당연하게 사용하고있는 부분이있는데 콜렉션프레임워크에서 타입을 제한할때 주로 사용하고있다. List numbers = new ArrayList(); ArrayList는 선형 자료구조로 배열과 유사한 자료구조이다. 배열과 다른점은 동일한 자료형만 관리할 수 있다는 점과 크기변환이 자유롭지않다는 것이다.제네릭을 사용하지않을때는 이런식으로 사용한다. List numbers = new ArrayList(); numbers.add(100);numbers.add(200); Object element = numbers...
- Total
- Today
- Yesterday
- JavaScript Core
- Git
- frontcode
- mariadb
- frontend개발환경
- java
- db
- java8
- generics
- javascript
- Spring
- JPA
- go-core
- Jackson
- Design Pattern
- spring cloud
- 정규표현식
- backend개발환경
- OOP
- EffectiveJava
- DesignPattern
- toby
- MySQL
- http
- TEST
- Kotlin
- programming
- servlet
- code
- clean code
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |