Inside Javascript 정리 - 2 (함수, 체이닝)

함수를 리턴하는 함수

: 함수도 일급객체라고 했자나. 그래서 일반 값처럼 함수 자체를 리턴할 수도 있어.

여기에서 오는 특징이 함수를 호출함과 동시에 다른 함수로 바꾸거나, 자기 자신을 재정의 하는 함수를 구현할수도 있게되는거야


arguments 객체

: 자바스크립트에는 arguments라는 객체가 있어. 자바스크립트 함수에는 인자의 갯수를 함수의 정의에서 정해준 것 보다 더 많이 주던 더 적게 주던 에러가 발생하지 않아!

그게 바로 arguments 객체 덕분이야. arguments 객체는 함수를 호출할 때 넘긴 인자들이 배열 형태로 저장된 객체를 의미해. 특이한 것은 정확히는 유사 배열 객체 라는 점이지!

Read more
Inside Javascript 정리 - 1 (데이터타입, 함수)

Chapter 03 자바스크립트 데이터 타입과 연산자

자바스크립트 데이터 타입

  • 기본 타입 - Number, String, Boolean, undefined, null
  • 참조 타입 - Object (Array, Function, 정규표현식)

자바스크립트 기본 타입

: 느슨한 타입 체크 언어로 변수를 선언할 때 타입을 미리 정하지 않고 , var이라는 한가지 키워드로만 변수를 선언해. 여기에는 어떤 데이터라도 저장하는 것이 가능한거지.

즉, 자바스크립트는 변수에 어떤 형태의 데이터를 저장하느냐에 따라 해당 변수의 타입이 결정되


Read more
git의 원리에 대해 알아보자 (add, commit, status)

git의 원리

전체적인 흐름은 아래 그림과 같다. 여기서 add와 commit 그리고 status의 원리와 함께 위 흐름 중 일부를 간략하게 살펴보자

Read more
일급 컬렉션(First Class Collection)이란?

일급 컬렉션

일급 컬렉션 정의

: collection을 wrapping 하면서, wrapping 한 collection 외에 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 한데. 예를들자면

Read more
벌크성 수정쿼리 및 Entity Graph에 대해 알아보자

벌크성 수정쿼리

: 일반적으로 데이터의 update는 jpa의 dirty checking 기능을 활용한다! 그러나 여러 데이터들에 대해 일관된 업데이트 작업을 진행할 때에는 한번의 쿼리로 update 반영하는 것이 좋으며 이때, 벌크성 수정쿼리를 사용하면 되는 것이다!!


JPA 벌크성 수정쿼리

: Spring Data Jpa에서 어떻게 벌크성 수정쿼리를 제공하는지에 대해 보기전에 Jpa만으로 어떻게 사용할 수 있는지를 보자

Read more
여러 탐색방법과 최소신장트리에 대해 알아보자

탐색

일반적인 탐색



DFS


개념

: dfs는 깊이 우선 탁색(Depth First Search)로 루트 노드 (혹은 선택한 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완전하게 탐색하는 방법이야!!

흔히 잘 알려진 미로를 탐색하는 문제로 예를 들어보자면, dfs로 미로탐색을 구현할 경우 한방향으로 갈 수 있을 때 까지 계속해서 들어갔다가 더이상 갈 곳이 없을 때 재귀함수가 풀리면서 이전 위치로 이동하게 되고 해당 위치에서 또 갈 수 있는 방향을 탐색해서 있다면 해당 방향으로 쭈욱 갈 수 있는 만큼 가고, 또 어디로도 못가는 상황이 되었다면 재귀가 풀리면서 이전 위치에서 다음 방향을 보고 이런식으로 진행이 되는거야. 정말 말 그대로 깊이 우선 탐색이지.

Read more
여러 자료구조에 대해 알아보자

선형자료구조

: 선형자료구조란 하나의 자료뒤에 하나의 자료가 존재하고 이것들이 순차적으로 나열되어있는거지. 즉 자료들 간의 앞뒤 관계가 1:1의 관계라는거야



배열

: 여러 데이터를 하나의 이름으로 그룹핑해서 관리하기 위한 자료구조야!! 배열은 정의와 동시에 길이를 지정하며 바꿀수가 없어.

하지만 인덱스를 활용하여 빠르게 조회가 가능하다는 장점이 있어.

물론 삭제의 경우도 인덱스를 접근하여 빠르게 지우는 것이 가능하나 여기서 지운다는 의미는 null, 혹은 0과 같은 ‘없음’을 의미하는 값을 넣는 것이고 결국은 메모리 공간을 차지하게 되는 단점이 있다.

Read more
여러 정렬에 대해 알아보자

여러 종류의 정렬 알고리즘을 볼 때 비교 기준

  1. Stable vs Unstable : 만약 정렬하고자 하는 대상의 크기가 같은 경우, 대상들의 순서가 보장이 되는지(stable) 안되는지(unstable)
  2. In-place vs out-of-place : input에 대해 extra memory 없이 transform한다(in-place), 그렇지 않다 (out-of-place)
  3. 시간복잡도, 공간복잡도
Read more
스프링 데이터 JPA 페이징과 정렬에 대해 알아보자

반환 타입

  1. Page(org.springframework.data.domain.Page) 형태 : 추가 count 쿼리 결과를 포함하는 페이징을 받을 수 있어
  2. Slice(org.springframework.data.domain.Slice) 형태 : 추가 count 쿼리 없이 다음 페이지만 확인 가능해 ( 내부적으로 limit + 1 로 가져와서 다음 데이터가 있는지 없는지를 체크하는거지)
  3. List : 추가 count 쿼리 없이 결과 반환
Read more
Spring Data Jpa Query Method에 대해 알아보자

쿼리 메소드 기능


메소드 이름으로 쿼리 생성

: 메소드 이름을 분석해서 JPQL 쿼리 실행을 시켜줘!!


스프링 데이터 jpa가 제공하는 쿼리 메소드 기능

(https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference)

  1. 조회 : find…By, read…By, query…By, get…By (…에는 어떠한 것도 들어갈 수 있다 ex) findHelloBy)
  2. COUNT: count…By (반환타입 : long)
  3. EXISTS : exists…By (반환타입 : boolean)
  4. 삭제 : delete…By, remove…By (반환타입 : long)
  5. DISTINCT : findDistinct, findMemberDistinctBy
  6. LIMIT : findFirst3, findFrist, findTop, findTop3 이런식으로
Read more