본문 바로가기

전체 글389

[JavaScript] 호이스팅이란? 호이스팅이란? 코드가 실행하기 전 변수선언 / 함수선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상이다. 자바스크립트 엔진은 코드를 실행하기 전 실행 컨텍스트를 위한 과정에서 모든 선언(var, const, let, function, class)을 스코프에 등록한다. 코드 실행 전 이미 변수선언 / 함수선언이 저장되어 있기 때문에 선언문보다 참조 / 호출이 먼저 나와도 오류 없이 동작함. 즉, 변수와 함수선언은 호이스팅의 대상이며, 변수는 선언과 동시에 'undefined'로 초기화된다. 함수는 함수 전체가 끌어올려진다.단, 함수 표현식은 변수에 할당되는 부분만 호이스팅되며, 함수 전체는 끌어 올려지지 않음. console.log(x); // undefined var x = 5; foo(); /.. 2023. 12. 26.
[DB] UNDO, REDO의 차이 UNDO - 원 상태로 되돌리다. 라는 뜻을 가진다. REDO - 다시 하다. 라는 뜻을 가진다. 공통점 REDO는 기본적으로 복구의 역할을 가진다. 오라클 서버에 무슨 작업을 하든지 모두 REDO에 기록된다. UNDO는 작업 롤백과 읽기 일관성, 복구를 한다. 즉, REDO와 UNDO의 공통점으로는 복구를 한다는 것이다. 차이점 REDO - 복구할 때 사용자가 했던 작업을 그대로 다시한다. UNDO - 사용자가 했던 작업을 반대로 진행한다. 즉 사용자의 작업을 원상태로 돌린다. 2023. 12. 25.
Binary Tree (이진트리)와 Binary Search Tree(이진 탐색트리) 이진트리 (Binary Tree) 란? 모든 노드들이 둘 이하 ( 0, 1, 2 )의 자식을 가진 트리이다. 이진 탐색 트리 (Binary Search Tree) 란? 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 큰 이진 트리이다. 이진 탐색 트리는 기본적으로 이진 트리에 데이터의 대소를 비교해 왼쪽이나 오른쪽 노드에 저장한다. 탐색을 목적으로 한 자료구조이기 때문에 데이터의 중복을 허용하지 않는다. 포화 이진 트리 : 모든 리프 노드의 레벨이 동일하고, 모든 레벨이 가득 채워져 있는 트리. 트리에 데이터가 한쪽 방향으로만 저장되는 경우 탐색 속도는 O(N), 포화 이진 트리의 경우 탐색 속도는 O(logN)이다. 따라서 편향 이진 트리의 경우 탐색속도 저하와 공간 낭비를 불러올 수 있다. 2023. 12. 25.
[DB] MyBatis와 JPA의 차이와 장점, 단점 MyBatis와 JPA의 주요한 차이점은 DB의 상호작용 방식이다. MyBatis - 개발자가 SQL 쿼리를 직접 작성하며 데이터 매핑을 위해 XML 또는 어노테이션을 사용한다. 장점 접근이 쉽고 코드가 간결하다 ( 배우기가 쉬움 ) SQL문과 프로그래밍 코드가 분리되어 있어 SQL 문에 변경이 있을 시 자바 코드를 수정하거나 컴파일 안해도 됨. 다양한 프로그래밍 언어로 구현이 가능 ( 이식성 높음 ) 직접 작성한 SQL에 의존하기 때문에, 성능 최적화가 상대적으로 쉽다. 단점 스키마 변경시 SQL 쿼리를 직접 수정해주어야 한다. 반복된 쿼리가 발생하여 반복 작업이 있다. 쿼리를 직접 작성하기 때문에 데이터베이스에 종속된 쿼리문이 발생할 수 있다. JPA - 객체와 관계형 데이터베이스 간의 매핑을 제공하.. 2023. 12. 24.