전체 글(161)
-
Struct는 멀티 스레드 환경에서도 thread-safety할 수 있을까?
wwdc 2016 영상에서 class와 struct의 차이에 대해 알아보았다. 해당 영상에서는 다음과 같이 heap은 thread safety에 대한 오버헤드가 굉장히 크다. 그렇다면 struct는??- 공식문서나 wwdc에서 struct의 thread-safety에서 따로 언급한 적은 없지만,struct의 경우(참조타입을 포함하지 않는) 복사하더라도 value값이 복사되는 특성이 있기 때문에 같은 주소를 참조하는 클래스 타입에 비해서 동시에 같은 값을 참조하지 않기 때문에 thread-safety하다고 유추할 수 있다. 그렇다면 멀티 스레드 환경에서는 어떨까?멀티 스레드 환경에서는 각 스레드들은 독립적인 `stack 메모리 영역`을 가지고 있다.Swift에서는 값 타입은 복사되거나 함수의 매개변수로 전..
2024.06.12 -
WWDC - UnderStanding Swift Performance (1/3)
Understanding Swift Performance - WWDC16 - Videos - Apple DeveloperIn this advanced session, find out how structs, classes, protocols, and generics are implemented in Swift. Learn about their relative...developer.apple.com Understanding Swift PerformanceIn this advanced session, find out how structs, classes, protocols and generics are implemented in Swift. Learn about their relative costs in di..
2024.05.28 -
[Swift 기초] 연산자 오버로딩
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 연산자 오버로딩 연산자 오버로딩(operator overloading): 연산자에 기능을 추가하는 기법 사용자가 생성한 열거형, 클래스, 구조체와 함께 사용할 때 더욱 두드러짐 구조체(structure): 간단한 값의 집합을 캡슐화하는 데 사용 속성과 메서드를 포함할 수 있다는 점에서 클래스와 유사 //3차원 벡터를 생성하는데 필요한 데이터 포인트를 저장하는 구조체 struct Vector{ var x = 0 var y = 0 var z = 0 } var v1 = Vector(x: 5, y: 8, z: 5) var v2 = Vector(x: 9, y: 4, z: 2) print(v1 + v2) //이항 연산자 '+'은..
2023.07.11 -
[네트워크] 컴퓨터 네트워크(2015) - 김철기 교수님
[컴퓨터 네트워크(2015) - 김철기 교수님] 컴퓨터 네트워크 강의 목록 http://www.kocw.or.kr/home/cview.do?mty=p&kemId=1159726 컴퓨터 네트워크 현대의 컴퓨터는 네트워크와 분리해서는 생각할 수 없다. 수많은 정보의 교류, 부가가치의 창출은 모두 네트워크를 통해서 이루어 진다. 본 과목에서는 컴퓨터 네트워크의 구성요소를 이해하고 www.kocw.net 컴퓨터 네트워크 강의 후기 - 강의 자료 없이 온전히 수기로 진행하는 수업인 만큼 스스로가 정리하는 과정이 정말 중요하다. (네트워크 개념책으로 정리된 문장으로 학습을 한 번 더 해야 할 것 같다.) - 전공 수업으로 네트워크를 학습했지만, 사실 배경지식이 거의 0인 상태에서 김철기 교수님의 KOCW 강의로 다시..
2023.05.02 -
[네트워크] 13, 14차시 - 링크계층(1), (2)
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 링크계층과 이더넷을 소개한다. 링크계층 스위칭을 배운다. 1. 데이터 링크 계층 IP가 있기 때문에 다른 응용들과 호환될지를 걱정할 필요가 없고, 데이터 통신 기법을 만들 때에도 IP만 고려하면 된다. 네트워크 계층: 출발지에서 목적지까지 패킷을 전달해 주는 역할 링크 계층: 목적지까지 가기 위해서는 여러 장비(라우터)를 거쳐 가는데, 한 합의 네트워크를 전송하기 위해 사용 라우터: 중간 중간에 있는 네트워크에서 IP 패킷이 왔을 때 다음 노드로 가게 해주는 장비 무선 공유기가 NAT Router: local IP → Global IP로 변경, 포트번호 또한 port mapping table에 의해 매핑된 내용으로 바..
2023.05.02 -
[네트워크] 네트워크계층 복습 및 정리
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. IP 주소 IP 주소체계는 동적으로 옮겨갈 수 있는 주소체계를 갖는다. 동일한 IP 주소라도 ISP가 바뀌어 라우팅 체계가 바뀔 수 있기 때문 라우팅 테이블은 전 세계의 IP를 커버해야 하는데 모든 IP를 개별 등록하면 엔트리수가 너무 많아진다. Classless Inter Domain Routing(CIDR) 인터넷상의 데이터 라우팅 효율성을 향상하는 IP 주소 할당 방법 IP 주소(32bit)는 subnet part와 host part로 구분된다. 라우팅시 subnet이 동일하지 않은 컴퓨터는 subnet 단위로 routing subnet이 동일한 경우 단말로 routing → subnet이 같으면 목적지를 ..
2023.04.28 -
[네트워크] 12차시 - 네트워크계층(2)
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 서브넷과 NAT 개념을 배운다. 0. 복습 응용(세션): FTP, DNS, HTTP, SHTP FTP: stateful protocol, TCP connection이 로그인해서 로그아웃할 때까지가 한 세션, 어느 디렉토리에 가서 어떤 파일을 다운받고 있고 까지가 tracking 된다. DNS: 컴퓨터에서 사용하는 IP주소와 사람이 기억하기 쉬운 일반적인 이름을 매핑, 응용계층에서만 사용 HTTP: 웹 서비스를 만든 프로토콜, 단순한 설계로 확장성이 높다 SMTP: mail.google.com에 웹 클라이언트로 접속해서 메일을 보낼 때는 HTTP를 이용하지만 핸드폰이나 컴퓨터의 메일 클라이언트를 이용해서 메일을 보낼 때..
2023.04.27 -
[네트워크] 11차시 - 네트워크계층(1)
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 IP의 기초 및 라우팅 기법을 배운다. 0. 주소 체계 우체국을 이용하는 주소체계: 아주 정적인 주소체계 IP를 주소체계: 동적으로 옮겨갈 수 있는 주소체계, 동일한 IP주소이지만 ISP가 바뀌어서 라우팅 체계가 바뀔 수 있기 때문 예) 동일한 IP주소 ~ 어제까지 미국에 연결되어 있던 기기지만, 오늘은 일본에 연결될 수 있다. 라우팅 테이블(목적지, 비용, 다음항)의 목적지에는 전세계의 IP를 커버해야 한다. ⇒ 어떻게 라우팅 테이블의 목적지 주소에 전 세계 IP를 커버할 수 있게 적어줄 것인가? IP 주소 체계 ≠ 인간 주소 체계 1. IP 주소 체계 주민 등록 번호 체계 - 컴퓨터가 처음 만들어지면 IP주소를 부..
2023.04.25 -
[네트워크] 전송계층 복습 및 정리
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. Reliable Networking 이상적인 네트워크: bit, byte의 흐름이 고스란히 그대로 전달되는 네트워크 현실 네트워크: 많은 양의 데이터를 한꺼번에 보낼 수 있는 네트워크는 없기 때문에 무한한 bit, byte의 흐름 제공 X → bit, byte의 흐름을 패킷화 패킷 유실 → 타임아웃을 발생시켜 패킷을 재전송 패킷 유실 되는 경우: 전송 유실, ack 유실, ack가 타임아웃 후에 도착하는 경우 ack: 서명하거나, 응답을 보내기 위한 프로토콜의 일부 순서 역전 → sequence number(순서가 바뀌지 않으면 1bit or 순서가 바뀌면 딜레이 때문에 무한대의 bit가 필요) 내용 변조 → c..
2023.04.18 -
[네트워크] 9차시 - 전송계층(2)
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 TCP 및 UDP 구조를 배운다. 1. TCP vs UDP 2. TCP Reliable Network: 패킷의 유실이 없고, 순서가 보장된다. 내용 변조 탐지 기능: (보안 관련이 아니라) 노이즈와 잡음으로 패킷의 내용이 바뀌는 것을 탐지하는 것이 가능 혼잡제어: 네트워크가 혼잡이 심한 것 같으면 패킷을 보내지 않고 기다렸다가 추후에 보내는 것 흐름제어: 패킷을 수신하는 쪽에도 버퍼가 있고, 수신하는 쪽의 버퍼가 꽉 찬 경우 송신 측에 패킷을 더 보내지 말라고 하는 것 포트(사서함) 개념 지원: 하나의 기계(IP 주소) 안에서 여러 개의 응용을 구분 2-1. 통신할 때 패킷들이 어떻게 구성되는지 2-2. TCP 헤더 ..
2023.04.18 -
[네트워크] 8차시 - 전송계층(1)
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 전송계층 신뢰성 확보 방법론을 배운다. 어떻게 End-to-End 통신에서 신뢰성 있는 커뮤니케이션을 제공할지에 대해서 학습한다. 1. Reliable Networking(End-to-End) 1-1. 신뢰 있는 네트워크와 현실 네트워크 이상적인 네트워크는 bit, byte의 흐름이 고스란히 그대로 전달되는 네트워크 현실 네트워크는 bit, byte가 패킷화 되어 전달되기 때문에 무한한 bit, byte의 흐름을 제공할 수 없고 패킷이 유실될 수 있고 패킷의 순서가 바뀔 수 있고 패킷이 변조될 수 있다. 1-2. 신뢰 있는 네트워크를 만들기 위해서는 무한한 흐름을 제공하기 위해 bit, byte의 흐름을 패킷화 한다...
2023.04.18 -
[네트워크] 응용계층 복습 및 정리
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 응용계층 1-1. 네트워크 응용의 구조 Client-Server 구조: 응용을 서비스해 주는 컴퓨터를 따로 두는 구조 Peer-to-Peer(P2P) 구조: 클라이언트나 서버 개념 없이, 오로지 동등한 계층 노드들이 서로 클라이언트와 서버 역할을 동시에 네트워크 위에서 하는 구조 하이브리드 구조: 필요할 때는 서버가 관여하지만, 둘이 직접 연결할 수 있을 때에는 직접 연결하는 구조 1-2. 프로세스 간 통신 프로세스: 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 수행되고 있는 프로그램의 단위 프로세스 주소: IP 주소 + 포트 번호 클라이언트의 웹브라우저는 포트번호가 정해져 있지 않음 소켓: 전송계층과 세션계층..
2023.04.18