파이프라인 - 스트림은 데이터의 필터링, 매핑, 정렬, 그룹핑 등의 중간처리 - 합계, 평균, 카운팅, 최대값, 최소값 등의 최종처리를 파이프라인으로 해결한다. - 파이프라인은 중간처리에서 이어져서 최종처리까지 이어지는 스트림의 라인이라고 볼 수 있다. 파이프라인 예제 public class Member { public static int MALE = 0; public static int FEMALE = 1; private String name; private int sex; private int age; public Member(String name, int sex, int age) { this.name = name; this.sex = sex; this.age = age; } public int ge..
Stream은 BaseStream이라는 부모 인터페이스가 있고 각각의 자식인터페이스로 다음과 같이 있다. Stream : 객체요소를 처리하는 스트림 나머지 : 각각의 타입에 맞는 primitive 타입에 대한 요소를 처리 컬렉션으로부터 스트림 얻기 public class FromCollectionExample { public static void main(String[] args) { List studentList = Arrays.asList( new Student("티타늄",10), new Student("오리발",5), new Student("하하하",30), new Student("케케케",24) ); Stream stream = studentList.stream(); stream.forEach(s..
스트림 - 자바8부터 추가된 컬렉션의 저장요소를 하나씩 참조해서 람다식(functional style)으로 처리할 수 있도록 해주는 반복자 - 자바7까지는 Iterator를 이용해서 컬렉션에서 요소를 순차탐색하였음. -> 개발자가 순차탐색 코드 다씀. - 스트림은 메소드 체이닝을 이용해서 여러가지 처리를 1줄의 코드로도 끝낼 수 있음. 스트림 특징 람다식으로 요소 처리 코드 제공 Stream stream = list.stream(); stream.forEach( s -> { String name = s.getName(); int score = s.getScore(); System.out.println(name+"-"+score); }); 내부 반복자 사용으로 병렬처리에 용이 - 외부 반복자 : 개발자가 ..
컴포넌트간 통신 - 뷰의 경우는 컴포넌트로 화면을 구성하기 때문에 같은 웹페이지라도 데이터를 공유할 수 없는 경우가 많다. - 각 컴포넌트들의 scope(유효범위)가 독립적이기 때문에 다른 컴포넌트의 값을 직접적으로 참조할 수가 없다. 상/하위 컴포넌트 관계 - 뷰의 가장 기본적인 데이터 전달방법. - 상위(Parent) 컴포넌트에서 props라는 속성으로 전달. - props : 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달할 때 사용하는 속성. 하위 컴포넌트의 속성에 정의. Vue.component('child-component',{ props:['props 속성 이름'], }); - 상위 컴포넌트의 HTML 코드에 정의된 child-component 태그에 v-bind 속성을 정의. 예제로 확인 ..
컴포넌트 - 조합하여 화면을 구성할 수 있는 블록(화면의 특정 영역) - 화면을 빠르게 구조화하여 일괄적인 패턴으로 개발 가능해진다. - 패턴이 있으므로 남이 작성한 코드도 보기 편해진다. 컴포넌트 등록 - 전역 컴포넌트와 지역 컴포넌트로 나뉨 - 지역(local) 컴포넌트는 특정 인스턴스에서만 유효한 범위를 가짐 - 전역(Global) 컴포넌트는 여러 인스턴스에서 공통으로 사용 가능 전역컴포넌트 컴포넌트 등록 - Vue.component('컴포넌트 이름', { // 컴포넌트 내용 }; - 컴포넌트 이름은 template 속성에서 사용할 HTML 사용자 정의 태그 이름을 의미함. - 뷰 생성자로 컴포넌트 등록 -> 인스턴스 객체 생성 -> 특정 화면 요소에 인스턴스 부착 순서로 진행됨. - my-comp..
개발환경 : window10 개발툴 : Atom Vue 버전 : 2.5 Vue.js를 이용해서 Hello Vue.js 찍기 {{message}} - Vuejs도 기본구조는 html이기 때문에 html template 안에 작성되는 코드이다. - new Vue로 선언되는 것이 뷰 인스턴스라고 한다. - el 속성은 뷰 인스턴스가 그려질 지점을 지정한다. 이 속성은 CSS 선택자 규칙을 준수합니다. - data 속성은 message 값을 정의하여 화면의 {{message}} 에 연결합니다. -> message가 m 이 되면 {{m}} 으로 출력하면 됩니다. 실제로 바꾸어서 브라우저에 띄우고 vue 개발자도구( Chrome 확장기능 )를 이용해서 Root 태그를 확인해보니 data 속성의 자식으로 nn이 지정..
트랜잭션 - 비즈니스로직에서 쪼개질 수 없는 하나의 단위작업 - 한 번에 이루어지는 작업의 단위 - 알아두면 좋은 ACID 원칙 원자성(Atomicity) 하나의 트랜잭션은 모두 하나의 단위로 처리해야 한다. A와 B 작업이 하나의 트랜잭션으로 묶여있는 경우 A는 성공, B는 실패할 경우 해당 작업단위는 실패로 끝나야한다. 즉, A,B 모두 rollback 되어야 한다는 원칙 일관성(Consistency) 트랜잭션이 성공했다면 데이터베이스의 모든 데이터는 일관성을 유지해야한다. 격리성(Isolation) 트랜잭션으로 처리되는 중간에 외부에서의 간섭은 없어야한다. 영속성(Durability) 트랜잭션이 성공적으로 처리되면, 그 결과는 영속적으로 보관되어야 한다. 실습했던 내용 - pom.xml 에 라이브러..
블로킹 방식의 작업완료 통보 - submit() 메소드 이용. 매개값으로 받은 작업객체(Runnable, Callable)를 스레드풀에 저장하고 즉시 Future객체를 반환. - Future 객체는 작업결과가 아니라 작업이 완료되기까지 기다렸다가(지연되었다가 == 블로킹되다) 최종결과를 얻었을 때 사용된다. - 따라서 Future 객체를 지연객체라고도 부른다. - Future 객체의 get() 메소드는 작업이 완료될때까지 블로킹되었다가 처리결과를 리턴한다. - get()메소드의 리턴타입은 submit() 메소드의 두번째 인자의 타입과 같다. 리턴값이 없는 작업 완료 통보 - Runnable 객체로 생성. - 작업처리가 정상적으로 완료되면 Future 객체의 get() 메소드는 null을 반환. - 작업도..