전체 글 12

프로세스와 스레드에 대해 알아보자.

목차 1. 프로세스란? 2. 스레드란? 3. 프로세스와 스레드의 차이점 프로세스란? 프로세스는 프로그램을 실행 시켜 정적인 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태를 말한다. 즉, 컴퓨터에서 작업 중인 프로그램을 의미한다. 우리가 항상 보던 작업 관리자를 열어보면 프로세스가 있는 것을 볼 수 있다. 모든 프로그램은 운영체제가 실행되기 위해 메모리 공간을 할당해 줘야 실행될 수 있다. 그래서 프로그램을 실행하는 순간 파일은 컴퓨터 메모리에 올라가게 되고, 운영체제로부터 시스템 자원을 할당받아 프로그램 코드를 실행시켜 우리가 서비스를 이용할 수 있게 되는 것이다. 프로세스의 메모리 영역 Code 영역 실행할 프로그램의 코드나 명령어들이 기계어 형태로 저장된 영역이다. CPU는 코드 영역에서 ..

OS 2024.04.13

정렬, 탐색에 대해 알아보자.

목차 1. 정렬이란? 2. 탐색이란? 3. 정렬과 탐색의 차이점 정렬이란? 정렬(Sort)은 복수의 원소로 주어진 데이터를 정해진 기준에 따라 새롭게 늘어놓은 작업을 말한다. 졍렬을 위해서는 우선 사물들을 서로 비교할 수 있어야 한다. 비교할 수 있는 모든 속성들은 정렬의 기준이 될 수 있다. 정렬시켜야 될 대산을 보통 레코드(Record)라고 부른다. 또한 레코드는 여러 개의 필드로 이루어진다. 이들 중에서 정렬의 기준이 되는 필드를 키(Key) 또는 정렬 키(Sort Key)라고 한다. 단순하지만 비효율적인 방법 삽입 정렬 : 리스트에서 가장 작은 숫자를 선택해서 앞 쪽으로 옮기는 방법. 선택 정렬 : 손 안에 정렬된 카드가 있고 한 장씩 새로 받을 때마다 끼워 넣는 것. 정렬이 안된 부분의 숫자를 ..

자료구조 2024.04.07

Stack, Queue에 대해 알아보자.

목차 1. Stack이란? 2. Queue란? 3. Stack과 Queue의 차이점 1. Stack이란? Stack이란 쌓아 올린다는 것을 의미한다. 따라서 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다. 스택은 아래의 사진처럼 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근을 할 수 있다. top에는 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리키는 자료의 위에 쌓이게 된다. 스택에서 자료를 삭제할 때도 top을 통해서만 가능하다. 스택에서 top을 통해 삽입하는 연산을 'push', top을 통한 삭제하는 연산을 'pop'이라고 한다. 스택은 시간 순서에 따라 자료가 쌓여서 가장 마..

자료구조 2024.04.06

JOIN에 대해 알아보자.

목차 1. Table JOIN이란? 2. JOIN 2.1 Inner JOIN 2.2 Outer JOIN 1. Table JOIN이란? Table JOIN이란 복수의 테이블을 결합하는 것으로, 데이터 조회 시 다른 테이블의 데이터를 함께 조회해야할 때 이용한다. 2. JOIN JOIN은 크게 Inner Join과 Outer Join으로 나뉜다. 2.1 Inner JOIN Join에 대해 얘기할 때는 보통 Inner Join을 지칭하는데, 테이블 데이터 간 교집합을 말한다고 생각하면 된다. 위 그림을 보면 Table A는 상품을 관리하는 테이블이며, Table B는 상품에 대한 재고를 관리하는 테이블이다. 저 정도의 데이터는 한 테이블에서 관리해도 되지만 이해를 위해 각 테이블에 훨씬 많은 컬럼들이 존재한다..

DB 2024.04.06

스프링에서 Bean을 등록하는 방법을 알아보자.

목차 1. Bean이란 무엇일까? 2. Bean을 수동으로 등록하는 방법 3. Bean을 자동으로 등록하는 방법 Bean이란 무엇일까? 스프링에서 IoC 컨테이너에 보관되어 관리되는, 어플리케이션에서 중추적인 역할을 담당하는 여러 객체들을 Bean이라고 부른다. 좀 더 쉽게 설명하자면, 그냥 스프링에서 만들어서 관리하면서 쓰는 유용한 객체들을 Bean이라고 한다. Bean의 생성, 의존성 주입, 관리는 모두 스프링 IoC 컨테이너의 도움을 받게된다. Bean을 POJO라고 부르는 경우도 있는데 말 그대로 그냥 일반적인 객체임을 강조하기 위해 POJO라고 부른다. Bean을 수동으로 등록하는 방법 만약에 Bean을 수동으로 직접 등록하고 싶다면, 설정 클래스 파일에 @Configuration을 적용해 주고..

백엔드 2024.03.30

브라우저의 렌더링 과정을 알아보자.

목차 1. 브라우저란 무엇일까? 2. 렌더링이란 무엇일까? 3. 렌더링 순서를 알아보자. 4. 보너스 브라우저란 무엇일까? 브라우저 렌더링 과정을 알아보기 전에 브라우저가 무엇인지 먼저 알아보자. 우선 브라우저는 우리가 흔히 인터넷에 접속할 때 사용하는 Chrome, Safari, Internet Explorer 등을 말한다. 브라우저는 유저가 선택한 자원을 서버로부터 받아와서 유저에게 보여준다. 이 자원은 페이지 외에도 이미지, 비디오 등의 컨텐츠들도 포함된다. 받아온 자원들을 렌더링 과정을 통해 유저에게 보여주게 된다. 렌더링이란 무엇일까? 렌더링이란 서버로부터 HTML, CSS, JavaScript 등 작성한 파일을 받아 브라우저에 뿌려주는 것이다. 브라우저마다 다르지만, 브라우저는 렌더링을 수행하..

프론트엔드 2024.03.30

정규화에 대해 알아보자.

목차 1. 정규화란 무엇일까? 2. 정규화의 장단점 정규화란 무엇일까? 정규화란 이상현상이 있는 테이블을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 테이블을 분해하여 여러 개의 테이블을 생성하게 된다. 이를 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다. 즉, 쉽게 말하면 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 이러한 테이블을 분해하는 정규화 단계가 정의되어 있다. 이상 종류 이상 종류란 정규화를 거치지 않은 데이터에서 발생할 수 있는 현상을 말한다. 삽입 이상 : 데이터 삽입 시 의도와 다른 값들도 삽입 삭제 이상 : 데이터 삭제 시 의도와 다른 값들도 연쇄 삭제..

DB 2024.03.30

DFS와 BFS에 대해 알아보자.

목차 1. DFS란 무엇일까? 2. BFS란 무엇일까? 3. DFS와 BFS의 차이점 1. DFS란 무엇일까? DFS(Depth-Frist Search)는 깊이 우선 탐색이라고도 말한다. 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방식이다. 미로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 이곳으로부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사하다. 즉, 넓게 탐색하기 전에 깊이 탐색하는 것이다. DFS는 자기 자신을 호출하는 순환 알고리즘의 형태를 가지고 있다. 이 알고리즘을 구현할 때 가장 큰 차이점은, 그래프 참색의 경우 어떤 노드를 방문했었는지 여부를 반드..

자료구조 2024.03.24

표준모드와 호환모드에 대해 알아보자.

목차 1. 표준모드란 무엇일까? 2. 호환모드란 무엇일까? 3. 표준모드/호환모드의 장단점 1. 표준모드란 무엇일까? 표준모드(Standard Mode)는 웹 페이지가 웹 표준에 맞게 제작되어 있는 경우에 적용된다. 즉, 웹 디자이너나 프로그래머들이 권장하는 규칙과 가이드라인에 따라 웹 페이지를 만들었을 때 해당 모드가 적용된다. 예를 들어, 웹 디자이너가 HTML과 CSS를 사용하여 웹 페이지를 만들 때, 이 두 가지 언어에 대한 규칙을 잘 따르면 그 페이지는 표준모드로 표시된다. 표준모드는 웹 페이지가 웹 브라우저에 의해 예상대로 표시되고 작동되도록 보장한다. 2. 호환모드란 무엇일까? 호환모드(Quirks Mode)는 예전에 만들어진 웹 페이지나 특정한 조건에서 만들어진 웹 페이지를 표시하는 데 사..

프론트엔드 2024.03.23

var, let, const에 대해 알아보자.

목차 1. var란 무엇일까? 2. let이란 무엇일까? 3. const란 무엇일까? 4. var, let, const의 차이점 변수의 범위란 무엇일까? 프로그래밍에서 변수는 데이터를 저장하고 조작하는 데 사용된다. 변수는 그 범위에 따라 접근할 수 있는 곳이 다르다. 변수의 범위는 크게 두 가지로 나뉜다.1. 전역 범위(Global Scope) : 함수 밖에서 선언된 변수로, 어디서든지 접근이 가능하다.2. 지역 범위(Local Scope) : 특정 함수 안에서 선언된 변수로, 해당 함수 안에서만 접근이 가능하다. 1. var var 변수는 재선언이 된고, 업데이트를 할 수 있다.var 변수는 값을 지정해주지 않으면 undefined(정의되지 않음)으로 초기화가 된다. 의도적으로 재정의한 것이라면 괜찮..

백엔드 2024.03.23