[JS] ES6란?

이미지
[JS] ES6란? 자바 스크립트 ECMAScript + BOM(Browser OBject Model) + DOM(Document Object Model) 1개의코어(ECMAScript) + 2개의 모델(BOM, DOM) ECMAScript란?(ES란?) 자바스크립트를 이루는 코어(Core)스크립트 언어. 자바스크립트 표준 단체인 ECMA가 제정하는 자바스크립트 표준 다양한 환경에서 운용될 수 있게 확장성을 갖고 있어서 사용처가 웹환경으로 국한되어 있지 않음 즉, JavaScript가 웹브라우저에서 돌아갈 수 있도록 BOM과 DOM을 함께 사용하는 확장성 ES의 버전 ES3 -> ES5 -> ES6(2015) -> ES7(2016) -> ES8(2017)  현재 사용하고 있는 표준은 EC5 이후에 나올 ES를 통칭해서 ES.Next라고 부름 출처 https://luckydavekim.github.io/web/2018/02/07/what-is-the-ecmascript/

[JS] 호이스팅(Hoisting)이란?

이미지
[JS] 호이스팅(Hoisting)이란? Hoist 사전적 정의는 끌어올리기 라는 뜻 함수의 선언은 끌어올리고, 할당은 끌어올리지 않음 자바스크립트에서 끌어올려지는 것은 변수 모든 변수 선언은 호이스트 된다 호이스트란 변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는 것 즉, 변수가 함수 내에서 정의되었을 때, 선언이 함수의 최상위로, 함수 바깥에서 정의되었을 경우, 전역 컨텍스트의 최상위로 변경됨 1 2 3 4 5 6 function  getX(){      console .log(x);  // undefined      var  x  =   100 ;      console .log(x);  //100 } getX(); cs 다른 언어의 경우에는, 변수 x를 선언하지 않고 출력하라고 한다면 오류가 발생한다. 하지만 자바스크립트에서는 undefined라고 하고 넘어간다 var x =100; 이 구문에서 var x;를 호이스트하기 때문 즉, 작동 순서에 맞게 코드를 재구성하면 다음과 같다 1 2 3 4 5 6 7 function  getX(){      var  x;          console .log(x);      var  x  =   100 ;      console .log(x); } getX(); cs 선언문은 항시 자바스크립트 엔진 구동시 가장 최우선으로 해석되...

[용어 정리] MVC, MVP, MVVM 비교

이미지
[용어 정리] MVC, MVP, MVVM 비교 개발을 하기 위한 프레임워크 패턴들을 정리 종류로는 웹 개발시 많이 쓰이는 MVC부터 시작해서 파생되어 나온 MVP, MVVM, Viper등등이 있음 이 많은 프레임워크 패턴들의 공통적인 특징이자 장점 화면에 보여주는 로직과 실제 데이터가 처리 되는 로직을 분리 그냥 분리하지 않고 처리하면...... 엄청 복잡해짐 MVC (Model + View + Controller) Model : 프로그램에서 사용되는 실제 데이터 및 데이터 조작 로직을 처리 하는 부분 Model은 프로그램에서 사용되는 실제 데이터 및 데이터 조작 로직을 처리하는 부분 View : 사용자에게 제공되어 보여지는 UI 부분  View는 실제 사용자가 눈으로 보고 있는 화면 Controller : 사용자의 입력을 받고 처리하는 부분 Controller는 사용자의 입력을 받은 다음 해당 작업을 처리하는 부분 정리  Controller로 사용자의 입력이 들어옴  Controller는 Model을 데이터 업데이트 및 불러옴  Model은 해당 데이터를 보여줄 View를 선택해서 화면에 보여주게 됨 MVC의 단점 : View와 Model이 서로 의존적 MVC의 단점을 없애기 위해 나온것이 MVP패턴 MVP (Model + View + Presenter) MVP의  Model과 View는 위의 사진과 같다. Presenter : View에서 요청한 정보를 Model로부터 가공해서 View로 전달하는 부분 Model과 View는 MVC와 동일하지만 사용자 입력을 View에서 받음 그리고 Model과 View는 각각 Presenter와 상호 동작을 하게 됨 항상 Presenter를 거쳐서 동작 그러므로 View와 Model은 서로를 알 필요가 없음. Pr...

[JAVA] Stream 총정리

[JAVA] Stream 총정리 Streams 자바 8이전에는 배열 또는 컬렉션 인스턴스를 다루는 방법은 for 또는 foreach 문을 돌면서 요소 하나씩을 꺼내서 다루는 방법이었음 간단한 경우라면  상관없지만, 로직이 복잡해질수록 코드의 양이 복잡해져서 여러 로직이 섞이게 됨 Stream은 '데이터의 흐름' 임 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 필터랑 하고 가공된 결과를 얻을 수 있음 람다를 이용해서 코드의 양을 줄이고 간결하게 표현 가능 즉, 배열과 컬렉션을 함수형으로 처리 가능 또 하나의 장점은 간단하게 병렬처리가 가능 병렬처리 : 하나의 작업을 둘 이상의 작업으로 잘게 나눠서 동시에 진행하는 것 즉, 쓰레드를 이용해 많은 요소들을 빠르게 처리 Streams의 순서 생성하기 : 스트림 인스턴스 생성 가공하기 : 필터링(filtering) 및 맵핑(mapping)등 원하는 결과를 만들어가는 중간 작업 결과 만들기 : 최종적으로 결과를 만들어내는 작업 Streams 생성하기 보통 배열과 컬렉션을 이용해서 스트림을 만들지만 이 외에도 다양한 방법으로 스트림을 만들 수 있음 스트림을 이용하기 위해서는 먼저 생성을 해야 함.  배열 Stream 배열은 다음과 같이  Arrays.stream 메소드를 사용 String[] arr = new String[]{"a", "b", "c"}; Stream stream = Arrays.stream(arr); Stream streamOfArrayPart = Arrays.stream(arr, 1, 3); // 1~2 요소 [b, c] 컬렉션 Stream 컬렌션 타입(Collection, List, Set)의 경우 인터페이스에 추가된 디폴트 메소드 stream 을 이용해서 스트림을 만들 수 있음 Li...

[JAVA] BufferedReader, BufferedWriter

이미지
[JAVA] BufferedReader, BufferedWriter BufferedReader, BufferedWriter모두 Buffer에 있는 IO클래스 입력된 데이터가 바로 전달되지 않고 중간에 버퍼링이 된후에 전달됨 출력도 마찬가지로 버퍼를 거쳐서 간접적으로 출력장치에 전달되기에 시스템의 데이터처리 효율성을 높여줌 버퍼 스트림을 InputStreamReader/ OutputStreamWriter를 같이 사용하여 버퍼링을 하게 되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문에 보다 효율적인 입출력이 가능 BufferedReader Java를 처음 접하는 분들이 주로 받는 입력방식은 Scanner. Scanner를 통해 입력을 받을 경우 Space, Enter를 모두 경계로 인식하기에 입력받은 데이터를 가공하기에 매우 편리 BufferedReader는 Enter만 경계로 인식하고 받는 데이터가 String으로 고정되기 때문에 입력받은 데이터를 가공하는 작업이 필요한 경우가 많음 그러나, 많은 양의 데이터를 입력받을 경우 BufferedReader를 통해 입력받는 것이 효율면에서 훨씬 나음 입력시 Buffer 메모리줌으로써 작업속도 차이가 많이 난다 BufferedWriter Java를 처음 접하는 분들이 주로 출력하는 방식은 System.out.println("") 적은양의 출력일 경우 성능차이가 미미하지만 많은 양의 출력을 할때는 Buffer로 해주는것이 좋음 InputStreamReader 바이트 스트림을 문자 스트림으로 변환을 제공 문자로 변환하는 경우 인코딩 방식은 특정 방식으로 지정할 수도 있고 경우에 따라서는 플랫폼의 기본 인코딩을 사용 InputStreamReader는 한 문자씩 읽음 OutputStreamReader 문자 스트림을 바이트 스트림으로 변환을 제공 문자로 변환하는 경우 인코...

[용어 정리] 캐리지 리턴(Carriage Return)이란?

[용어 정리] 캐리지 리턴(Carriage Return)이란? Carriage : 운반, 수송 Return : 되돌아 가다 Carriage Return : 운반해서 되돌리다 Carriage Return 현재 위치를 나타내는 커서를 맨 앞으로 이동시킨다 Line Feed 커서의 위치를 아랫줄로 이동시킨다 Enter = Carriage Return + Line Feed 커서를 앞으로 이동시키고나서 줄을 한줄 바꾼다 출처 https://kwangcheolchae.wordpress.com/2012/12/04/%EC%BA%90%EB%A6%AC%EC%A7%80-%EB%A6%AC%ED%84%B4%EC%9D%B4%EB%9E%80/

[JAVA] 제네릭(Generic)이란?

이미지
[JAVA] 제네릭(Generic)이란? Generic 클래스에서 사용할 타입을 클래스 외부에서 설정하는 것 제네릭 선언 하는 법 클래스<사용할 타입>으로 함 CustomerStack 클래스는 <T>로 제네릭이 설정되어 있다. CustomerStack 내부에 있는 List타입의 customStack 객체도 <T>로 제네릭 설정이 되어 있음 GenericEx_1 클래스에는 두 개의 객체 stringStack과 integerStack이 있음 두 객체의 타입은 CustomStack임 CustomsStack 클래스를 사용하려면 제네릭이 설정되어 있으므로, 사용하는 쪽에서도 제네릭 타입을 명시해줘야함 ex) <String>, <Integer> 등 마치, 회원가입 기능에서 '이름 입력'란에는 반드시 한글이나 영문만 들어가야 하는데, 사용자가 숫자를 넣게 되면 에러가 발생하는 것과 같음 <E>, <T>의 차이 E, T로 선언되어 있는 제너릭 클래스에 어떤 타입 클래스가 들어가도 성공한다. E(element)는 요소라고 해석 할 수 있다. ex) ArrayList는 요소들(object)를 배열처럼 저장하기 때문에 E로 선언되어야 함 즉, List는 E(Element)가 어울린다. 결론은, 컬렉션 클래스(Collection, List, Set)와 같이 배열 기반으로 되어 있는 구조에는 E가 어울리고 그 외에는 T가 어울림 제네릭은  참조형 데이터 타입 만 설정 가능 즉, int, char 이런것들은 설정 불가 Integer는 래퍼 클래스(wrapper class)임 래퍼 클래스는 기본형 데이터 타입(primitive type)을 참조형 데이터 타입으로 바꿔주는 클래스 출처 http://2dubbing.tistory.com/17 https://lng1982.tistory.com/...