반응형 전체 글364 ARP통신에 대해서... 1. ARP (Address Resolution Protocol) ARP는 통신 프로토콜중 하나 입니다. ARP 통신의 목적은 MAC 주소를 알아내기 위해 사용되는 프로토콜 입니다. 사진에서 보는것과 같이 OSI 7 Layer중 2계층에 속한 프로토콜로 라우터 통신이 아닌, 브릿지, 허브, L2 스위치에서 사용되는 로컬 통신 입니다. 2. ARP?? IP?? ARP통신은 상대방의 IP주소는 아는데, MAC 주소를 모를때 사용합니다. 일반적으론 IP주소만 알면 통신이 가능하다고 생각을 하지만, 컴퓨터는 기본적으로 MAC주소를 가지고 통신하게 됩니다. 그럼 왜 IP주소가 아니라 MAC주소를 보고 통신을 할까?? IP주소는 유동적으로 변하고, MAC주소는 고정(static)이기 때문입니다. MAC주소는 NIC.. 2021. 6. 16. Golang interface에 대한 설명.... Go는 기본적으로 상속을 지원하지 않습니다. 단, interface를 제공함으로써 추상화를 돕고, 객체들을 서로 연결시켜주는 역할을 해줍니다. 단, 상속이 아니기 때문에 dependency가 낮으며, 느슨한 관계가 됩니다. 이는 Go언어의 설계목적에 있는것이죠. 1. interface 선언방법 type Calculator interface {...} Golang의 guideline을 보면 interface를 선언할 때 시작문자는 대문자로, 단어 끝에는 -er로 끝나도록 만들라고 합니다. 즉, 어떠한 일을 하는 행위자를 표현하는것이 좋습니다. 기본적으로 golang의 struct는 상속이 없기때문에, insterface안에 선언된 함수들을 사용하려면 리시버라는 기능을 통해함수를 따로 정의해야 합니다. 2... 2021. 6. 6. V8 Engine에 대해서....(메모리구조, 컴파일방식) 1. V8 Engine이란?? Google에서 만든 JavaScript 컴파일러로 C++언어를 기반으로 만들어 졌습니다. 때문에 독립적으로 실행이 가능하며, 다른 웹 브라우저 없이 JavaScript, Node.js 코드를 컴파일 할 수 있습니다. 2. JIT Compiler (Just-In-Time) V8은 JIT Compiler을 지원합니다. 일반적인 Compiler에는 동적 컴파일(인터프리터)와 정적 컴파일(Compiler)가 있습니다. JIT Compiler는 이 두개를 합친 것으로 실행시점에서 인터프리터 방식으로 바이트 코드를 생성합니다. 그 후 V8 Engine은 바이트 코드를 기계어 코드로 만들고, 그 코드를 캐싱하여, 같은 함수가 여러 번 불릴 때 매번 기계어 코드를 생성하는 것을 방지합니.. 2021. 5. 31. JavaScript 탄생 과 ECMAScript에 대해서 1. JavaScript 탄생 첫 탄생은 브랜든 아이크가 10일만에 설계한 것으로부터 시작합니다. 처음에는 Mocha라는 이름이었지만, 4달 만에 LiveScript라는 이름으로 개명하고 다시 3달 후에는 JavaScript라는 이름이 되어 오늘날까지 이어지고 있습니다. JavaScript라고 지은 이유는 Java의 유명세를 타서 묻어가려고 의도적으로 만들었다고 합니다. 해당 언어는 웹 브라우저 내에서 주로 사용되며, node.js를 통해 Backend도 만들 수 있게 되었습니다. 뿐만아니라 라즈베리파이에도 사용이 가능하며, 여러곳에서 사용될 수 있는 언어로 발전했습니다. 2. ECMAScript ECMA International 이라는 국제 표준화 기구가 있습니다. 표준화 시킨 대표적인 것들은 JSON.. 2021. 5. 31. Golang의 fmt.Print는 heap으로 간다? Golang에는 fmt라는 패키지가 있습니다. 그리고 fmt.Print 를 사용하여 사용자에게 출력해주죠. 하지만 fmt를 사용하여 변수를 출력하면 해당 변수는 stack에서 heap으로 가버리게 됩니다. 다음 예시를 봅시다. package main import "fmt" func main() { i := 10 fmt.Println(i) } $ go build -gcflags '-m' struct.go # command-line-arguments .\struct.go:7:13: inlining call to fmt.Println .\struct.go:7:13: i escapes to heap .\struct.go:7:13: []interface {}{...} does not escape :1: .this.. 2021. 5. 23. Golang Closure(클로저)란? (인라인과 메모리 할당 설명) Golang 에서는 JavaScript에 있는 클로저의 기능이 존재합니다. 우선 클로저에 대해 설명하자면.... 클로저는 함수가 종료되도 함수 안에 있는 변수가 사라지지 않고, 계속 존재하며 사용할 수 있도록 해주는 것이 클로저입니다. 이렇게 읽어보면 정말 쓸대없고, 왜 사용하는지, 왜 존재하는지 이유를 모릅니다. 천천히 설명해보겠습니다. 1. Golang Closure package main func closure() func() { var i int = 0 return func() { i++ println(i) } } func main() { next := closure() next() next() next() } //output : 1 2 3 클로저는 기본적으로 일급함수(람다함수)랑 같이 사용됩니다.. 2021. 5. 23. 이전 1 ··· 5 6 7 8 9 10 11 ··· 61 다음 728x90 반응형