컴퓨터
-
Java: Z Garbage Collection (ZGC)컴퓨터/JAVA 2023. 1. 15. 15:14
ZGC Main - Main - OpenJDK Wiki wiki.openjdk.org 오늘은 Z Garbage Collection에 대하여 공부한 대로 글을 써본다. Java 11 부터 실험적으로 추가되어 Java 15에서는 어느새 Production Ready (PR) 상태까지 온 미래 GC 후보라고 볼 수 있다. (Z의 의미는 아무 뜻도 없다고 한다.) 목차는 다음과 같다. Introduction (소개) Basics of ZGC (ZGC 기본 지식) ZGC phases (ZGC 단계) Concurrent reference processing in ZGC (concurrent 레퍼런스 처리 in ZGC) Advanced Topics (심화 주제) Conclusion (결론) ◆ Introduction..
-
Blue-Green deployment (블루-그린 배포)컴퓨터 2023. 1. 11. 21:25
AWS EC2에서 서버를 실행하다가 (간단한 REST API 프로그램) 매번 코드를 고칠 때마다 다시 빌드하고 프로세스를 kill 하고 다시 실행했다. 여기서 어떻게 하면 재시작을 줄이고/없애고 코드를 업데이트할 수 있을까 궁금했다. 찾아보니 이미 알고있던 Hot-reloading도 있는데 ec2에서 Rust를 계속 빌드하게 하고 싶진 않았다. 여러 방법들이 있는데 Blue-Green deployment: 하나는 이전 버전의 코드(Blue)를 실행하고 다른 하나는 새 버전의 코드(Green)를 실행하는 두 가지 동일한 환경이 있다. 새 버전을 배포할 준비가 되면 트래픽을 Green 환경으로 전환하고 완전히 작동하는지 확인한 후 Blue 환경을 종료할 수 있게 하는 방법 Canary Deployment: ..
-
Python: Global Interpreter Lock (GIL)컴퓨터/파이썬 2023. 1. 5. 21:49
GIL Python Wiki In CPython, the global interpreter lock, or GIL, is a mutex that protects access to Python objects, preventing multiple threads from executing Python bytecodes at once. The GIL prevents race conditions and ensures thread safety. wiki.python.org Introduction Global Interpreter Lock (GIL) GIL은 여러 네이티브 스레드가 동시에 파이썬 바이트 코드를 실행하는 것을 방지하는 메커니즘이다. 파이썬의 reference implementation인 CPython ..
-
Cython: QuickSort code컴퓨터/파이썬 2023. 1. 1. 21:40
cimport: This directive is used to import a Cython-level version of the numpy module. ctypedef: This directive is used to define a Cython type alias for numpy.int_t. cdef: This directive is used to define a Cython function or variable. Cython functions and variables are compiled to C and are not accessible from Python. nogil: This decorator is used to indicate that a Cython function does not nee..
-
Rust: AsMut, AsRef, Deref, DerefMut 정리컴퓨터/Rust 2022. 12. 31. 21:22
Intro Rust의 AsRef, AsMut, Deref 및 DerefMut trait은 값을 변환하고 참조로 사용하는 방법을 제공한다. AsRef 및 AsMut trait을 사용하면 한 type의 값에 대한 참조를 다른 유형의 값에 대한 불변 또는 변경 가능한 참조로 변환할 수 있고, Deref와 DerefMut trait을 사용하면 값을 각각 참조 또는 변경 가능한 참조인 것처럼 사용할 수 있다. AsRef AsRef을 사용하면 참조를 immutable 참조로 변환할 수 있다. AsRef example1 이 예제는 i32 value이라는 단일 필드를 가진 MyStruct라는 구조를 정의하고, MyStruct에 대한 AsRef trait을 구현하여 MyStruct.value에 대한 참조를 i32 값에 ..
-
Rust: Send, Sync 정리컴퓨터/Rust 2022. 12. 29. 17:42
SS Rust의 Send 및 Sync trait은 데이터에 대한 안전한 동시 액세스를 보장하는 데 사용되는 관련 유형이다. 그러나 type이 concurrent 설정에서 사용되도록 설계되지 않은 경우에도 여전히 race 조건이나 기타 동시 액세스 문제가 발생할 수 있기 때문에 Send 및 Sync를 구현한다고 해서 해당 유형이 thread-safe 하다는 보장은 없다는 점에 유의해야 한다. 그러나 이러한 trait을 구현하는 것은 concurrent 설정에서 type을 사용하기 위해 필요한 조건이며, 그러한 맥락에서 type을 안전하게 사용할 수 있다는 보장을 제공한다. 이전에 쓴 RefCell, Arc, Rc, Mutex를 보면 다음 표와 같다. Trait Arc RefCell Rc Mutex Send..
-
Rust: Ref, Arc, Rc, Mutex 문법 정리컴퓨터/Rust 2022. 12. 29. 11:26
RARM @Rust 튜토리얼 웹사이트 Rust 튜토리얼 Hello World! 튜토리얼 소개 🎉 Rust 튜토리얼 기본편 영상을 위한 웹사이트입니다. 키보드 ⬅️/➡️ 버튼으로 페이지를 이동할 수 있습니다. hi-rust.github.io 이 글은 가끔 가다 보이고 concurrent 하게 뭔 짓을 하려 할 때 사용해야 하는 문법에 대한 글이다. Rust의 핵심 기능 중 하나는 메모리 안전성을 보장하는 것입니다. Rust는 이를 소유권(ownership)과 빌림(borrowing)이라는 개념을 통해 처리합니다. 소유권은 변수가 메모리의 어떤 부분을 소유하고 있음을 나타냅니다. 이는 메모리 누수나 불필요한 복사를 방지하는 데 중요합니다. 빌림은 소유권이 있는 변수를 다른 변수가 일시적으로 참조하는 것을 나..
-
Rust: Closure Syntax컴퓨터/Rust 2022. 12. 27. 00:42
Closure란 짧은 일회성 사용 함수를 생성하는 데 매우 유용하다. 일반 함수와 마찬가지로 다른 함수에 인수로 전달하거나 변수에 저장하거나 함수에서 반환할 수 있다. Rust 언어에서는 Fn, FnMut, FnOnce trait가 적용되어 closure가 만들어진다. 람다 함수랑 비슷하게 생겼고 아래는 간단한 예시. 이 글에서 다양한 예제와 비교로 정리해 보았다. fn main() { let plus_one = |x: i32| -> i32 { x + 1 }; // CLOSURE let result = plus_one(5); println!("The result is {}", result); // 6 } 때때로 move 키워드랑 같이 사용하는 것을 볼 텐데 move 키워드는 closure가 단순히 변수를..