본문 바로가기

전체 글

(94)
[1일1CS] 병목현상 앞 서 소개한 토폴로지가 중요한 이유는 병목현상에서 찾을 수 있습니다. 먼저 병목현상이란, 병의 목 부분이 좁아서 몸통이 큼에도 물이 상대적으로 천천히 쏟아지는 것에 비유한 용어입니다. 즉 전체 시스템 성능이나 용량이 하나의 구성요소로 그 진행이 제한을 받는 현상입니다. 이는 주로 트래픽 관리를 한 부분에서 관리를 잘 하지 못해서 일어납니다. 그리고 여기서 눈치를 챌 수 있었는데, 여러 서버가 단 하나의 회선만으로 한 방향으로 게이트웨이 단 하나만을 사용해 사용자에게 전달 한다 치면 대용량 트래픽이 오면 게이트웨이는 이를 감당하지 못하고 병목현상이 일어나게 됩니다. 이에 회선을 서버간에 연결 및 한 방향만이 아닌 앞의 서버에서 게이트웨이로 연결하는 등 회선을 늘린다면 병목 현상을 해결할 수 있을 것입니다.
[1일1cs] 네트워크 토폴로지 네트워크 토폴로지는 앞서 말한 네트워크 즉 노드와 링크가 어떻게 연결되어 있는 지에 대한 방식이다. 1. 트리 토폴로지는 말그대로 트리 모양을 한 계층형 구조이다. 트리 토폴로지는 노드 추가 및 삭제가 쉽지만 특정 노드에 트래픽이 집중 된다면 하위 노드에 영향을 끼칠 수 있다. 병목 현상 역시 발생할 수 있다. 2. 버스형 토폴로지 중앙 회선 하나에 여러 클라이언트가 연결된다. 이는 근거리 통신망 (LAN)에서 사용한다. 이는 중앙 회선 하나에 연결 하면 되므로 설치 비용이 적고 신뢰성이 우수하며 노드를 추가 삭제하기가 쉽다. 허나, 스푸핑이 가능하다는 단점이 있다. * 여기서 스푸핑이란, 근거리 통신망 상에서 패킷송신을 관리하는 스위칭 기능을 마비시키거나 속여서 정해진 호스트가 아닌 다른 호스트에게 패..
비동기 : 마이크로태스크 큐 메크로테스크 큐 비동기는 동시의 문제가 아닌, 순서의 문제이다. 한번 비동기는 영원한 비동기 비동기란 간단히 말해 실행됐는데, 결과값을 나중에 쓸 수 있는 것이다. 비동기를 처리시, 콜스택에 비동기 함수가 들어온다면 콜스택은 즉시 background(자바스크립트 엔진, OS를 통합한 개념) 로 보낸다. (여기서 백그라운드는 자바스크립트 엔진, OS를 통합한 개념으로, 자바스크립트로 구현되지 않았다. 이는 싱글 스레드가 아니라는 의미로, 동시(물론 컴퓨터에서 동시란 없지만 거의 흡사하다고 치자.) 실행이 가능.) + 갑자기 궁금한 왜 자바스크립트는 싱글 스레드를 선택했을까? 의문에 대한 답변 포스트 (https://miracleground.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%..
[1일1cs] 처리량과 지연시간 네트워크는 ‘좋은’ 네트워크로 만드는 것이 중요하다. 좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 말합니다. 먼저 네트워크란 무엇일까? 기본적인 질문이긴 하지만, 다시 되짚을 겸, 네트워크란 분산되어있는 노드들을 링크하는 것, 즉 분산되어 있는 서버, 라우터, 스위치, 컴퓨터등을 무선방식이든 유선방식이든 연결 하는 것이다. 그렇다면 처리량이란, 링크를 통해 전달되는 단위시간당 데이터양을 말한다. 단위로는 bps이다. 처리량은 트래픽(사용자들의 접속량) , 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙 에 영향을 받는다. 그리고 여기서 대역폭이란, 주어진 시간 동안 네트워크 연결로 흐를 수 있는 최대 ..
this는 호출될 때 결정된다. const obj = { name : 'jiho', sayName(){ console.log(this.name); function inner(){ console.log(this.name); } inner(); } } obj.sayName(); // jiho, '' 위의 예제에서 jiho, ''가 나온 이유는. 먼저 sayName의 앞에 obj부모가 붙어있다. 그러므로 첫번째 출력에서 name이 출력. 다음 inner() 호출 시점에 앞에 객체가 붙은 것도 아니고, new bind apply call등이 붙어있지 않다. 그러므로 전역객체가 this이다. 다른 예제 하나를 더 살펴보자. 만약 콜백함수에서 this라면 어떻게 될까 const header = document.querySelector('somec..
[1일1cs] 커널 기초 커널은 프로세스와 하드웨어를 잇는 중요 인터페이스로, 이중 실행 모드를 제공함으로써 시스템 호출 및 보안의 핵심이고, 메모리 관리 프로세스 관리 그리고 프로세스와 하드웨어 사이의 중재자 역할을 한다. 여기서 이중 실행 모드란 커널모드와 유저모드가 있는데 커널모드에선 일반모드에서 갖지못하는 특권, 즉 모든 CPU 제어권을 갖을 수 있다. (이때 사용하는 것이 fork() 등의 system call) 그러므로 어떠한 명령도 실행할 수 있다. 일반 모드에선 일반 권리 즉 데이터 입출력 저장 계산등의 명령만 실행 가능하다. +a 커널은 스스로 실행되는 프로세스가 아닌 시스템 호출을 통해 호출된다. 커널은 실행중인 대상이 아니다. 커널은 stack 과 heap을 갖지 않는다.
[클린코드 javascript] 분기로 보여지기 쉬운 코드 만들기(분기 다루기) 삼항연산자 활용 삼항연산자를 활용하는 것은 가독성 좋은 코드를 만들 수 있다. // if - else if (condition){ return value} else {return anotherValue} // 삼항연산자 condition ? value : anotherValue 하지만, 삼항연산자를 과도하게 중복해서 사용하는 경우를 피하자 else-if를 과도하게 사용하는 것 보다는 switch가 더 효과적이다. 조건이 여러개일 경우 가독성을 생각해서 작성하자 사용 팁 : 보통 반환 값이 있는 함수에 삼항 연산자를 활용하자. 단축 연산자 활용 관련 내용은 자바스크립트 포스팅에 정리 했기에 예시보면 이해가 쉽기에 예시를 남긴다. function favoriteDog(someDog){ let favorite..
[클린코드 javascript] 자리를 잘 지키자. 값 식 문 값 : 식이 평가되어 생성된 결과. 식 : 표현식이라고도 하는데, 값으로 평가 될 수 있는 문 이다. 즉 변수에다 식을 대입했을 때 값을 반환하면 '문'이 아닌, '식' 문 : 프로그램을 구성하는 기본 단위이자, 최소 실행 단위. 대략 한줄이라고 가볍게 이해하자. '식'의 자리와 '문'의 자리를 잘 구분하자. //'값'이 들어가야하는 자리에 if'문' Hello World //삼항연산자는 '값'을 뱉어냄 Hello World {} : 값과 식만 들어가야함. 바로 리턴되는 분기문은 논리연산자를 사용하자. 함수의 자리 const add = (a,b) => a+b; document.querySelector('#header').addEventListener('click', add()); // ? do..