분류 전체보기

java

[java] Lambda 람다란?

람다함수 람다함수는 메소드를 하나의 식(Expression)으로 표현하는 것으로 익명함수(Anonymous function)를 생성 한다. 함수형 프로그래밍을 하고자 하며 나왔다고 한다. 자바에서는 메소드 혼자 선언해서 쓸 수 없다. 무조건 class의 구성멤버로 선언되어야 한다. 람다식으로 생성되는 것은 메소드 자체가 아니라 실행문(메소드)를 가진 객체이다. 이 객체는 일반적인 객체가 아닌 함수형 인터페이스를 구현한 익명 구현 객체이다. 람다의 특징 1. 익명함수 함수 이름이 없다. 익명함수는 일급객체(first class citizen)이다. 2. 커링 두개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다로 단순화 할 수 있다. 람다의 표현식 1. 화살표로 표시한다. 2. 몸체가 한줄이..

javascript

[javascript] nested object deep copy, 중첩 Object 깊은 복사

nestd object 란? 아래처럼 중첩된 object를 말한다. // nested Object const a = { b : 100, c : { d : 1, e ; 2 } } //nested Array const b = [{a:1, b:2}, {c:3}] const c = [[a,b],[c,d]] shallow copy & deep copy object(array)를 copy할 때는 shallow copy와 deep copy가 있다. shallow copy 방법을 사용하면 해당 object의 property 자체를 복사하는게 아니라, reference를 복사하게된다. 따라서 새로 copy한 object에서 무언가 바꾸면 원래 object에서도 바뀐다. 이렇게 하지 않고 실제로 복사한 것을 deep co..

Spring

Eclipse로 war 파일 만들기

File > Export > Web > WAR file Web project : Export할 프로젝트 선택 Destination : war파일이 위치할 path optimize for .. 체크 : 알맞은 톰캣 버전 선택 Finish

VScode

[VScode] 키보드 단축키 만들기

1. explorer창으로 focus이동 2. create new file 3. create new folder 이렇게 새가지 키보드 단축키를 만들어 볼 것이다. 1. explorer창으로 focus이동 ctrl + shift + p 를 이용하면 작업할 내용을 검색해서 실행할 수 있다. ctrl + shift + p 를 누르고 explorer를 검색한다. 아래에 File : Focus on Files Explorer의 톱니바퀴를 클릭한다. 이런 창이 나오는데, keybinding 부분을 더블클릭하면 어떤 키를 사용해서 단축키를 만들거냐고 물어본다. 원하는 키를 입력해준다. 나는 ctrl+f8을 눌렀다. 키를 누르고 Enter를 누르면 완료! 2.3.create new file & create new fo..

javascript

[javascript] super의 역할

super의 역할 1 : 상위 객체의 프로토타입을 참조 class B{ sayB(){ console.log("b"); } } class A extends B{ sayA(){ super.sayB(); } } const a = new A(); a.sayA(); //"b" super는 자신을 참조한 메소드(sayHello)가 바인딩하는 객체(A.prototype)의 프로토타입(B.prototype)을 가리킨다. (A.prototype의 프로토타입객체는 B.prototype이다.) 위의 문장이 이해가 안가면 아래를 보고 오자 2022.04.06 - [javascript] - [javascript] 상속, class, extends키워드 [javascript] 상속, class, extends키워드 javascr..

javascript

[javascript] 프로토타입 섀도잉, 오버리이딩

javascript에서 오버라이딩을 구현하는 방법을 알아보겠다. function A(){} A.prototype.sayHello = function() { console.log("prototype hello"); } // 프로토타입 섀도잉 const a = new A() a.sayHello(); // prototype hello class A가 있을때, prototype에 sayHello가 있다고 하자. new를 이용해 인스턴스 a를 생성하면 a.sayHello에 접근할 수 있을 것이다. 이때 a에 똑같은 sayHello라는 프로퍼티를 추가하여 오버라이딩 할 수 있다. a.sayHello = function() { console.log("my hello"); } //프로토타입 오버라이딩 console.l..

javascript

[javascript] 상속, class, extends키워드

javascript에서는 calss와 extends를 이용하여 상속을 구현할 수 있다. class B{ } class A extends B{ } 이때 extends뒤에 오는 것은 [[construct]] 내부 슬롯이 있는 constructor만 가능하다. 따라서 아래와 같은 코드도 가능하다. function B(){ } class A extends B(){ } 내부슬롯 [[construct]]에 대한 설명은 아래를 참고 2022.04.05 - [javascript] - [javascript] 생성자 함수, 내부 슬롯 [[Construct]] [javascript] 생성자 함수, 내부 슬롯 [[Construct]] 자바스크립트에서는 함수를 new로 생성하여 객체를 생성할 수 있다. function A(){..

javascript

[javascript] private 정의하기

private이 언제부터 가능했지? 원래 javascript는 모두 public이다. 하지만 2021년 1월 TC39의 stage3(candidate)에 private을 정의할 수 있는 새 표준 사양이 제안되었고, 표준 사양으로 승급이 확실시 되기 때문에 최신브라우저(chrome74이상), node.js(v.12이상)에 이미 구현되어있다. ECMA에는 ECMAScript외에도 다양한 기술의 사양을 관리하고, 그 주체인 기술위원회(Technical Committee도 여럿 존재한다. 그 중 ECMA-262(ECMAScript)를 담당하는 위원회가 TC39다. TC39프로세스는 새 표준 사양을 추가하기 위한 과정을 말한다. 0~4단계까지 총 5단계가 있다. stage 0 : strawman -> stage ..