전체 글
-
-
[Rust] Cell, RefCell, Rc, Arc, Boxdev/rust 2023. 3. 4. 12:10
개념은 익숙하지만, 용어가 생소해서 그런지 자주 잊는 아이들이다 강의 93 ~ 99 참고 : https://www.youtube.com/watch?v=-V-jCwGDTSk&feature=youtu.be Cell mutable 아닌 객체의 데이터를 수정할 수 있게한다 - not thread-safe - only copy type RefCell 싱글스레드용 내부 가변성을 제공, 보통은 컴파일타임에 mut인지 let인지 확인하지만, runtime checked borrowing rules. 아래 코드와 주석을 읽어보자 let data = RefCell::new(true); // 생성 let mut data_ref = data.borrow_mut(); // 빌림, 빌리고 있는 중에는 원본(data)을 사용할 수..
-
함수 한번만 실행하기 std::call_oncedev/c++ 2022. 11. 22. 23:47
개발을 하다보면, 어떤 함수나 동작을 한번만 실행하고 싶은 경우가 있다. 예를들면 static bool flag = false; if (!flag) { printf("hi"); flag=true; } 이런식으로 하면 if문 안쪽에 코드는 딱 한번만 실행한다. 하지만 flag관리도 없고 스레드 세이프하지도 않다. 이럴때 std::call_once를 사용하면 된다. // Defined in header void call_once( std::once_flag& flag, Callable&& f, Args&&... args ); call_once의 첫번째 인자 once_flag는 한번한 실행하기 위한 flag 역할을 한다. 뒤에는 함수와 함수 인자를 넣을 수 있는데 람다도 가능하다 void hello(int a..
-
스마트포인터 이해하기dev/c++ 2022. 11. 20. 17:57
c를 해본 사람들은 다들 알다시피 c/c++에는 포인터라는게 있다. 그리고 포인터는 동적할당된 데이터를 관리하는데에 사용할 수 있다. c에서는 malloc이라는 함수를 사용하고, c++에서는 new를이용해 메모리를 동적할당 한다. 그리고 할당된 메모리는 free나 delete를 이용해 해제해줘야 한다. // c int* c = (int*)malloc(sizeof(int)); free(c); // c++ int* cpp = new int(); delete cpp; 그런데 프로그램이 복잡해지면서 메모리를 해제하는 것을 까먹는 경우가 생기거나, 다른 사람의 코드를 유지보수를 하다보면 메모리를 해제해야 한다는 것을 모르고 넘어가는 경우가 생길 수가 있다. 이런 경우에 메모리 누수가 발생하게 된다. c++에서는이..
-
NAT 타입dev/network 2022. 11. 17. 23:31
이전 글에서는 1:1연결 과정에 대한 전반적인 그림을 이해하였고, 이번 글에서는 NAT타입에는 어떤 종류가 있는지 알아보겠다. 일단 NAT 가 무엇인지는 알고있어야한다. 구버전 RFC문서 3489에서는 NAT의 타입을 Full Cone, Restricted Cone, Port Restricted Cone, Symmetric 으로 구분지었다. 하지만 이 네가지 타입으로는 충분히 NAT타입을 설명하기 어렵다고 한다. 그래서 이 글에서는 새로운 RFC문서 5382에서 정의한 NAT타입에 대해 알아볼 것이다. RFC문서 5382 (NAT Behavioral Requirements for TCP) (UDP는 RFC 4787) 매핑(Mapping) 타입, 필터링(Filtering) 타입 일단 NAT의 타입은 크게 ..
-
P2P연결 개념 잡기dev/network 2022. 11. 13. 14:59
NAT를 우회하여 P2P(Peer to Peer)로 1:1 연결을 하는 방법에 대한 내용이다. 그중에서도 UDP가 아닌 TCP 연결이다. ICE 우리는 1:1 연결을 위한 방법으로 ICE 프로토콜을 이용할 것이다. 우선 ICE 프로토콜에 대해 살짝 이야기하자면 ICE는 두 대의 컴퓨터가 P2P 네트워킹에서 가능한 한 직접 서로 통신하는 방법을 찾기 위해 컴퓨터 네트워킹에서 사용되는 기술 이라고 한다 ICE(Interactive Connectivity Establishment) 직역 하면 “대화 형 연결 수립” 인데 왜 대화형 연결 인지는 동작하는 방식을 보면 이해가 된다. 우선 간단하게 어떤 방식으로 1:1 연결을 하게 되는지 살펴보자 상황 - A와 B가 서로 연결을 하려고 하는 상황이다. - A와 B는..