본문 바로가기

Programming310

OSI 7 Layer 네트워크 통신을 다루다보면 반드시 등장하는 개념인 OSI 7계층에 대해 포스팅을 하려고 합니다. 1. OSI 7 Layer OSI 7 Layer(혹은 OSI 모형, Open Systems Interconnection Reference Model)은 국제표준화기구에서 발표한 모델입니다. 이 모델은 네트워크의 프로토콜 디자인과 통신을 7개의 계층(Layer)로 나누어 설명하는 모델입니다. 통신 과정을 7개의 계층으로 나누었기 때문에 통신 과정을 층별로 파악하기 쉽고, 이해하기 쉬운 등의 여러가지 이유로 널리 알려지고 사용되는 모델입니다. 또한 층별로 나누었다는 장점 덕에 특정 층에서 문제가 발생했음을 감지할 수 있다면 다른 구조는 냅두고 해당 층에서만 문제를 해결할 수 있다는 장점도 가지고 있습니다. OSI.. 2021. 11. 27.
[Javascript] optional chainning ?. 1. optional channing 옵셔널 체이닝은 프로토타입 체인으로 묶인 객체들의 프로퍼티에 안전하게 접근할 수 있게 됩니다. 안전하게 접근한다는 말은 접근하려던 프로퍼티가 존재하지 않는다면 기존에는 그냥 오류를 뱉어버렸지만, 옵셔널 체이닝을 이용하면 존재하지 않아도 오류를 뱉지 않고 스크립트를 계속 실행하게 됩니다. 다음과 같은 코드에서는 당연하게도 결과로 TypeError를 뱉어냅니다. obj 객체 아래 name.address가 존재하지 않기 때문이죠. const obj = {}; console.log(obj.name.address); 이렇게 에러를 뱉는 순간 스크립트를 정지하게 됩니다. 하지만 실제 상황에서는 이런경우에도 에러는 따로 처리하고 스크립트 읽기를 계속해야합니다. 사용자가 사용하다 .. 2021. 11. 24.
[Javascript] shorthand property names 객체를 정의하다보면 꽤 자주 key와 value를 같은 이름으로 사용하게 되는 경우가 발생하는데, 같은 단어를 두 번 사용하는게 은근히 귀찮죠. 이런 문제를 해결하는 새로운 표기법이 shorthand property names입니다. 1. shorthand property names shorthand property names은 객체에서 key와 value명이 같은 경우 축약해서 사용할 수 있게 만들어주는 문법입니다. //기존 객체 코드 const obj = { name: name, color: color, x: x, y: , }; //shorthand property names를 이용한 코드 const obj = { name, color, x, y, }; 2. shorthand method names .. 2021. 11. 24.
[Javascript] default function parameter default functin parameter, 기본값 함수 매개변수입니다. 이름처럼 매개변수에 기본값을 주는 문법입니다. 1. default functin parameter default functin parameter는 함수의 매개변수에 기본값을 설정하는 문법입니다. 만약 파라미터를 요구하는 함수에 대해서 호출될때 전달된 파라미터가 없거나 undefined전달시 이 기본값을 파라미터로 사용하게 됩니다. 사용법은 파라미터에 기본값을 '='연산자로 지정해주면 됩니다. function(x = 기본값) {}; const add = (x = 1, y = 2) => { return x + y; }; console.log('#1: ' + add(2, 2)); console.log('#2: ' + add(3)); .. 2021. 11. 24.
[Javascript] protected와 private 멤버 예전에 클래스와 프로토타입을 설명할 때 간단하게 설명했었는데, 미흡한거같아서 추가적으로 포스팅하게 되었습니다. 1. protected와 private 멤버 다른 자바계열이나 C계열 언어(자바스크립트도 C계열이지만)의 멤버들에게는 '접근지정자'라고 하는 키워드가 있습니다. public, protected, private 세가지인데요. 이들은 객체 내부의 멤버에 대해서 외부에서 접근할 수 있는 권한을 부여하는 키워드입니다. 우리가 주목해야할 것은 ptrotected와 private인데요. private 멤버는 간단히 말해 클래스, 객체 내부에서만 접근할 수 있고 외부나 상속받은 객체에서는 접근을 불가능하게 만들어주는 요소입니다. 객체는 당연히 외부에서 쉽게 접근을 허용하면 안되기 때문에 일반적으로 대부분의 .. 2021. 11. 24.
[Javascript] 해시 충돌의 해결 지난번에 해시 테이블을 구현했지만, 해시 충돌을 해결할 수는 없었습니다. 그래서 이번에는 해시 충돌의 해결 방법을 알아보겠습니다. 1. 첫번째 방법, 선형 탐사법 Linear Probing 여태까지 많은 자료구조와 알고리즘을 하면서 선형이라는 이름이 붙으면 어떻게 하는지 기억하시나요? 바로 하나씩 일일히 순서대로 확인했습니다. 바로 선형 탐사법이 이 방식을 이용해서 빈 테이블의 위치를 찾습니다. 선형 방식의 문제들이 그렇듯이 테이블의 크기가 늘어나면 해시의 빠른 연산속도가 느려진다는 단점을 수반합니다. insertLinearProbing(key, value) { const id = this.hash(key); if(this.table[id]) { let flag = true; for (let i = id.. 2021. 11. 22.
300x250