| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- HashMap
- numpy
- list
- Rust
- 구조체
- join
- 원격 데스크탑
- array
- 메소드
- Sort
- Split
- in
- Set
- 소유권
- MySQL
- 러스트
- Algorithm
- MongoDB
- Python
- pandas
- 환경설정
- 파이썬
- 알고리즘
- matplotlib
- heap
- stack
- MySQL 서버 구축
- 연관 함수
- react
- generic
- Today
- Total
목록전체 글 (287)
미생
요약핵심 차이: tokio::sync::mpsc::unbounded_channel은 async 런타임(태스크/워커)의 작업 대기(wake)를 지원하는 비동기(비차단) 채널입니다. crossbeam_channel::unbounded은 스레드 기반(블로킹) 채널로 고성능의 스레드 간 통신용입니다.왜 둘 다 쓰나: 코드베이스에서 네트워크/비동기 작업은 Tokio 런타임에서 동작하므로 Tokio 채널을 사용하고, 내비게이션 계산처럼 별도 OS 스레드에서 블로킹 방식으로 처리하는 부분은 crossbeam을 사용합니다.비교 (요점)용도:tokio::sync::mpsc::unbounded_channel: async 컨텍스트(비동기 태스크) 내에서 사용. Receiver::recv().await로 await 가능해서 ..
1. crossbeam_channel의 내부 구현crossbeam_channel::unbounded는 내부적으로 lock-free 자료구조를 사용합니다. 여러 스레드/태스크가 동시에 접근해도 원자적(atomic) 연산으로 안전하게 처리됩니다.2. Send + Sync 특성let (net_message_sender, net_message_recver) = crossbeam_channel::unbounded::();net_message_sender는 Send + Sync를 구현하므로 여러 스레드/태스크에서 안전하게 공유 가능net_message_recver는 Send만 구현하지만 (여기선 단일 consumer), 어느 한 스레드에서만 소비하므로 안전3. 코드에서의 사용 패턴// Gateway(비동기 I/O ..
Tokio란?Tokio = 비동기 I/O + 태스크 스케줄러 + 타이머를 제공하는 런타임 라이브러리Rust에서 async/await와 함께 사용되어 비동기 코드를 실행 가능하게 하는 환경을 만들어 줌즉, 단순히 함수나 구조체를 제공하는 라이브러리가 아니라,Future를 실제로 실행하고 스케줄링하는 런타임 역할을 함 Tokio의 구성 요소태스크 스케줄러(Task Scheduler)Future를 스레드 풀에서 실행Cooperative multitasking 방식한 스레드에서 여러 태스크를 효율적으로 처리비동기 I/OTCP/UDP, 파일, 타이머 등 비동기 I/O 지원OS의 epoll(kqueue, IOCP) 등을 기반으로 이벤트 처리타이머 & Delay비동기 sleep, interval, timeout 처리..
블로킹디바이스에 처리 요청을 걸어 놓고 응답을 대기하는 함수를 호출할 때 스레드에서 발생하는 대기 현상을 블로킹이라고 한다.소켓뿐만 아니라 파일 핸들에 대한 함수를 호출했을 때도 이러한 대기 현상이 발생하는 것을 모두 블로킹이라고 한다.블로킹이 발생하는 스레드에서는 CPU 연산을 하지 않는다. 따라서 CPU 사용량이 0%가 된다. 즉, 스레드는 waitable state인 상태이다.블로킹 소켓송신 버퍼는 사용자가 데이터를 넣고 운영체제가 뺀다.수신 버퍼는 운영체제가 데이터를 넣고 사용자가 뺀다. 수신 버퍼가 완전히 비어 있으면 데이터를 수신하는 함수는 블로킹이 일어난다.송신 버퍼가 완전히 차면 데이터를 송신하는 함수는 블로킹이 일어난다. TCP 통신에서 수신측 수신 버퍼가 꽉 차면, 송신측 송신 함수가..
1. 인덱스의 정의인덱스(Index)는 테이블의 특정 컬럼(column)에 대해 검색 속도를 높이기 위해 추가로 만든 자료 구조책의 목차처럼, 원하는 데이터가 테이블 전체를 뒤지지 않고도 바로 위치를 찾을 수 있게 해주는 구조2. 인덱스의 종류1) B-Tree 인덱스 (가장 흔함)균형 이진 트리(B+Tree) 구조 사용장점:특정 값 검색: O(log n)범위 검색: 효율적 (e.g., WHERE age BETWEEN 20 AND 30)사용 예시: PRIMARY KEY, UNIQUE 인덱스2) Hash 인덱스해시 테이블 기반장점:정확한 값 검색: O(1) 평균단점:범위 검색에는 부적합사용 예시: MySQL MEMORY 엔진3) 기타Full-text 인덱스: 문자열 검색 최적화Spatial 인덱스: 지리정보..
1. 인라인 함수1) ODR(One Definition Rule) 완화 → 헤더에 함수를 정의할 수 있게 함이게 사실상 inline의 본래 의미입니다.함수 정의를 헤더 파일에 적어도 된다여러 번 포함되더라도 “복제 오류”가 나지 않도록 조절한다즉, 링커 충돌을 막는 장치.이 특성 덕분에 템플릿 함수는 대부분 inline 형태로 돌아다니죠.2) 컴파일러에게 “이 함수는 인라인해도 괜찮아”라는 힌트단, 명령이 아니라 힌트입니다.컴파일러가 판단해서최적화 레벨함수 크기코드 중복 비용등을 고려한 뒤 인라인할지 말지 결정합니다.2. 인라인 함수의 역할함수 호출을 없애고 코드 본문을 호출 지점에 삽입해도 된다는 권한 제공여기서 “역할”은 다음과 같아요:함수 호출 오버헤드 제거 가능작은 함수의 호출 비용을 없애 성능 ..