본문 바로가기

728x90

전체 글

[운영체제] 가상화에 대한 간단한 정리 참고하는 책 : 운영체제 아주 쉬운 세 가지 이야기참고 : https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/korean ostep-translations/korean at master · remzi-arpacidusseau/ostep-translationsVarious translations of OSTEP can be found here. Help the cause and contribute! - remzi-arpacidusseau/ostep-translationsgithub.com /* 운영체제의 중요성 */현재는 인턴으로 백엔드 개발자로 생활을 하고 있다. 상사분들과 커피챗을 하면서 백이면 백 내게 조언하는 점은 세 가지이.. 더보기
[Node.js] 이벤트 루프 /* 이벤트 루프 */이벤트 루프는 시스템 커널에서 가능한 작업이 있다면 그 작업을 커널에서 수행한다.자바스크립트는 단인 스레드 기반이지만 Node.js가 논블로킹 I/O 작업을 수행할 수 있도록 해주는 핵심 기능입니다.  각 단계에서는 해당 단계에서 실행되는 작업을 저장하는 큐가 존재한다. /* 타이머 단계 */이벤트 루프는 타이머 단계 (timer phase)에서 시작한다. 타이머 단계의 큐에는 setTimeout이나 setInterval 과 같은 함수를 통해 만들어진 타이머들을 큐에 넣고 실행한다. 타이머들은 min heap 으로 관리 된다. 힙을 구성할 때 기준으로 실행할 시각이 가장 적게 남은 타이머가 힙의 루트가 된다.  ex) 딜레이 값이 100, 200, 300, 400 인 4개의 타이머 .. 더보기
[Node.js] 무엇인가 /* Node.js란 */현재 다니고 있는 회사에서 nodejs 기반 nestjs를 쓰기 때문에 nodejs 를 공부할 필요가 있다고 느꼈다.nodejs 는 Chrome V8 Javascript 엔진으로 빌드 된 Javascript 런타임이라고 노드 공식 사이트에서 소개 된다.노드는 서버를 실행하는 데 제일 많이 사용된다. Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작이 가능하다.  Javascript는 독립적인 언어가 아닌 스크립트 언어이다크르비트 언어는 특정한 프로그램 안에서 동작해서 웹 브라우즈 프로그램 안에서만 동작한다.Nodejs는 Javascrip.. 더보기
[CS] 다익스트라 알고리즘 /* 다익스트라 알고리즘 */다익스트라(dijkstra) 알고리즘은 그래프에서 한 노드에서 다른 노드까지의 최단 경로를 구하는 알고리즘 중 하나이다. 해당 과정에서 도착 노드뿐만아니라 모든 다른 노드까지의 최단 경로로 방문하며 각 노드까지의 최단 경로를 찾게 된다.매번 최단 경로의 노드를 선택해 탐색을 반복하는 것이다. /* 동작 원리 */시작 노드와 끝 노드를 설정한다.테이블을 초기화한다.노드의 인접 노드 (adjacent nodes) 중 방문하지 않은 노드를 구별하고, 그 중 가장 짧은 노드를 선택하고 방문처리 한다.해당 노드를 거쳐 다른 노드로 넘어가는 edge 를 계산해 테이블을 업데이트한다./* 예시 */ 출발 노드 1번, 도착 노드 6번 설정.테이블은 inf로 초기화edge도 표기함   출발 .. 더보기
[MySQL] 인덱스 /* 인덱스란? */인덱스(INDEX)란 색인, 목차라고 하며, 데이터 검색을 보다 효율적으로 할 수 있습니다. MySQL에서는 B-Tree를 개선시킨 B+Tree 인덱스 구조가 사용된다.인덱스를 활용하면 데이터를 조회하는 SELECT 외에도 UPDATE, DELETE의 성능이 함께 향상된다. 인덱스를 여러개 설정하면 각각의 인덱스는 별도의 B+Tree 구조를 갖는다. /* B-Tree 구조 */B-Tree는 자식 2개만은 가진 이진 트리 (Binary Tree)를 확장하여 N개의 자식을 가질 수 있도록 고안된 것이다.  B-Tree는 최상위에 루트 노드, 중간에 브랜치 노드, 최하위에 리프 노드가 존재한다. - B-Tree에서 모든 노드는 키와 포인터를 가진다. 내부 노드, 리프 노트 모두 키와 데이터.. 더보기
[Spring Boot] 순환 참조 (Circular Reference) /* 순환 참조 */ 순환 참조 (Circular Reference) 란 서로 다른 Bean들이 서로를 참조하고 있어서 서로가 서로에게 의존하는 구조를 말한다. 이는 스프링 컨테이너가 빈의 생명주기를 관리하는 과정에서 문제를 일으킬 수 있습니다. 스프링의 특징인 IOC/DI , AOP, PSA 중 하나인 IOC/DI와 연관있는 만큼 주의할 필요가 있다. 순환 참조 에러 메시지: *************************** APPLICATION FAILED TO START *************************** Description: The dependencies of some of the beans in the application context form a cycle: ┌─────┐ |.. 더보기
Queue 와 Priority Queue /* Queue , Priority Queue */ Queue 는 FIFO 형식으로 먼저 넣은 데이터가 먼저 나오는 구조입니다. Priority Queue 는 넣은 데이터의 순서와 상관없이 우선순위가 높은 데이터가 먼저 나옵니다. /* Priority Queue의 구조 */ Heap 구조와 동일하다. 완전 이진트리 구조이다. 편의성을 위해 Array로 구현. (0번 인덱스는 사용 X) MaxHeap 과 MinHeap 이 있다. (root node의 값이 max, min 인지에 갈린다) /* Priority Queue - PUSH */ 190을 PUSH 하면 마지막 인덱스에 저장한다. 부모노드의 크기와 비교하여 노드 구조를 바꾼다. /* Priority Queue - POP */ root 노드의 값을 po.. 더보기
[Java] 리액티브 프로그래밍 - RxJava /* 리액티브 프로그래밍 */ 리액티브 프로그래밍 (Reactive Programming)은 비동기 데이터 스트림을 기반으로하는 프로그래밍 패러다임입니다. 데이터 스트림을 관찰하고, 데이터가 변할 때마다 이에 맞는 동작을 수행하도록 설계된다. 이는 비동기 작업에 효율적이다 데이터 스트림: 데이터 스트림은 시간에 따라 발생하는 연속적인 데이터 항목들의 시퀀스다. ex) 사용자 입력 이벤트 (사용자가 마우스를 클릭하거나 키보드를 누를 때마다 발생하는 이벤트), 네트워크 요청 (서버에서 데이터를 요청할 때 수신받는 응답 데이터 - 주식 데이터), 파일 I/O (대용량 파일을 읽어서 처리하는 경우, 파일의 각 부분을 순차적으로 읽어들이는 과정) 리액티브 프로그래밍은 자원을 효육적으로 사용하고, 더 많은 사용자들.. 더보기

728x90