스프링부트 공부노트 (3)
본문 바로가기

컴퓨터공부/Springboot

스프링부트 공부노트 (3)

by Life & study 2023. 8. 14.
반응형

스프링부트 공부노트 (3)

 

 

[백엔드 개발자의 스프링부트 공부노트] libuv는 C 언어로 작성된 라이브러리

 

노드(Node.js)는 자바스크립트를 사용하여 서버 측 애플리케이션을 개발할 수 있는 플랫폼입니다. 

노드는 libuv라는 라이브러리를 사용하여 비동기 I/O를 처리하고, 이벤트 루프와 콜백 함수를 통해 높은 성능과 확장성을 제공합니다.

libuv는 C 언어로 작성된 라이브러리로, 다양한 운영체제에서 비동기 I/O를 지원합니다. libuv는 파일, 네트워크, 타이머, 시그널, 프로세스 등의 I/O 작업을 비동기적으로 수행할 수 있게 해줍니다. libuv는 이벤트 루프와 워커 스레드 풀을 사용하여 비동기 I/O를 처리합니다.

이벤트 루프는 노드의 핵심 구성 요소로, I/O 작업의 완료 여부를 감지하고, 콜백 함수를 실행하고, 다른 이벤트들을 처리합니다. 이벤트 루프는 싱글 스레드로 동작하며, 노드의 메인 스레드와 동일합니다.

워커 스레드 풀은 libuv가 생성하고 관리하는 스레드 풀로, CPU 바운드 작업이나 블로킹 I/O 작업을 수행합니다. 워커 스레드 풀은 기본적으로 4개의 스레드로 구성되며, 환경 변수나 옵션을 통해 변경할 수 있습니다. 워커 스레드 풀은 이벤트 루프와 별도로 동작하며, 작업이 완료되면 이벤트 루프에 알립니다.

다음은 노드와 libuv를 사용하여 비동기 I/O를 처리하는 예시 코드입니다.

 

// fs 모듈 임포트
var fs = require('fs');

// 파일 읽기 요청 (비동기 I/O)
fs.readFile('test.txt', 'utf8', function(err, data) {
    // 콜백 함수
    if (err) {
        // 에러 발생시 메시지 출력
        console.error(err);
    } else {
        // 파일 내용 출력
        console.log(data);
    }
});

// 콘솔에 메시지 출력
console.log('Reading file...');

 

 

 

 

 

 

[백엔드 개발자의 스프링부트 공부노트] 레시컬 환경

 

레시컬 환경이란, 프로그래밍에서 코드의 특정 부분에서 사용할 수 있는 변수, 함수, 객체들의 집합을 의미하는 기본적인 개념입니다12. 코드를 실행할 때마다 새로운 레시컬 환경이 생성되어 관련된 정보를 저장합니다. 레시컬 환경은 환경 레코드와 바깥 레시컬 환경을 참조하는 값(또는 null)으로 구성됩니다2.

다음은 자바스크립트에서 레시컬 환경을 사용하는 예시 코드입니다

 

 

 

 

[백엔드 개발자의 스프링부트 공부노트] Hoisting

 

호이스팅은 에러가 아니라, 자바스크립트의 기본적인 동작입니다1. 호이스팅은 인터프리터가 코드를 실행하기 전에 변수와 함수의 메모리 공간을 미리 할당하는 것을 의미합니다12. 

호이스팅은 코드의 가독성과 유지보수성을 저해할 수 있지만, 에러를 발생시키는 것은 아닙니다.

다만, let과 const로 선언된 변수들은 호이스팅되지 않습니다13. let과 const로 선언된 변수들은 선언문 이전에 참조하면 ReferenceError를 발생시킵니다3. 

이는 let과 const로 선언된 변수들이 선언문 이전에 일시적으로 사각지대(Temporal Dead Zone)에 놓이기 때문입니다3.

따라서, 호이스팅을 피하려면 var 대신 let과 const를 사용하거나, 선언문을 코드의 상단에 작성하는 것이 좋습니다13.

 

 

 

[백엔드 개발자의 스프링부트 공부노트] this 자바스크립트

 

 

JavaScript 'this'키워드 + JS 초보자를 위한 5가지 키 바인딩 규칙 설명 (freecodecamp.org)

 

function greeting(obj) {
  obj.logMessage = function() {
      console.log(`${this.name} is ${this.age} years old!`);
  }
};

const tom = {
  name: 'Tom',
  age: 7
};

const jerry = {
  name: 'jerry',
  age: 3
};

greeting(tom);
greeting(jerry);

tom.logMessage ();
jerry.logMessage ();

 

 

[백엔드 개발자의 스프링부트 공부노트] 순수함수  (하나의 함수는 하나를 반환한다.)

 

순수함수 예쩨

What is Pure Function in JavaScript? - Scaler Topics

 

하나의 함수는 하나를 반환한다.

 

function operationAdd(a, b){ // A pure function adding two integers passed in it.
    return a+b;
}

function operationDivide(a, b){  // Pure function to divide two integers passed in it.
    return a/b;
}

function operationMulti(a, b){    // Pure function to multiple two integers passed in it.
    return a*b;
}
console.log(        // Calling all the pure functions
  operationAdd(2,5),
  operationMulti(3,2),
  operationDivide(20,5)
);

 

 

 

 

 

 

[백엔드 개발자의 스프링부트 공부노트] const 로  함수만들어서 펑션으로 this 찍기 

 

[백엔드 개발자의 스프링부트 공부노트] const 로  함수만들어서 펑션으로 this 찍기 

<!DOCTYPE html>
<html>
<body>

<h1>The JavaScript <i>this</i> Keyword</h1>
<p>In this example, <b>this</b> refers to the <b>person</b> object.</p>
<p>Because <b>fullName</b> is a method of the person object.</p>

<p id="demo"></p>

<script>
// Create an object:
const person = {
  firstName: "John",
  lastName: "Doe",
  id: 5566,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

// Display data from the object:
document.getElementById("demo").innerHTML = person.fullName();
</script>

</body>
</html>

 

 

#백엔드 #백엔드개발자 #백엔드개발자취업 #스프링부트 #개발자되기 #java백엔드 #개발자채용 #개발자면접 #백엔드스쿨 #백엔드개발자 #코딩공부 #프론트엔드개발자 #개발자노트북 #개발자 #스프링 #개발자팁 #앱개발자 #개발공부 #개발

 

#스프링부트 #스프링부트게시판 #스프링부트jpa #개발자취업 #스프링강의 #개발자채용 #개발자면접 #개발자되기 #백엔드개발자 #백엔드개발자 #스프링부트 ##스프링부트실전활용마스터 #개발자노트북 #개발자 #스프링 #백엔드 #개발자팁

반응형

'컴퓨터공부 > Springboot' 카테고리의 다른 글

스프링부트 공부노트 (5)  (0) 2023.08.15
스프링부트 공부노트 (4)  (0) 2023.08.15
스프링부트 공부노트 (2)  (0) 2023.08.14
스프링부트 공부노트 (1)  (0) 2023.08.13

댓글