전체 글 (39) 썸네일형 리스트형 asContextElement 1. 개요Kotlin의 코루틴을 활용할 때, ThreadLocal 변수를 코루틴 컨텍스트에 통합하여 일관된 스레드 로컬 상태를 유지해야 할 때가 있습니다. 이와 같은 경우, ThreadLocal의 asContextElement 확장 함수를 사용할 수 있습니다. 해당 함수는 ThreadLocal을 ThreadContextElement로 감싸주어, 코루틴이 실행되는 스레드가 변경되더라도 지정된 ThreadLocal 값이 유지될 수 있도록 합니다.2. 사용법다음은 asContextElement를 활용하는 기본적인 예제입니다.import kotlinx.coroutines.*import kotlinx.coroutines.asContextElementval myThreadLocal = ThreadLocal()fun.. [Python] 메모리 관리 메모리 관리 레퍼런스 카운트 파이썬의 모든 객체에 카운트를 포함하고 이 카운트는 객체가 참조될 때 증가하고 참조가 삭제될 때 감소되며 카운터가 0이 되면 메모리 할당이 삭제되는 방식 파이썬이 메모리 관리 시 레퍼런스 카운트와 가비지 컬렉션에 의해 관리 파이썬은 내부적으로 malloc()과 free()를 많이 사용하기 때문에 메모리 누수 위험이 있음, 이러한 이유로 인해 레퍼런스 카운트를 사용함 [CS] 동시성(Concurrency) vs 병렬성(Parallelism) 동시성(Concurrency) 동시에 실행되는 것 같이 보이는 것(Context-Swtiching 일어남) 싱글 코어에서 멀티쓰레드를 동작 시키는 방식 병렬성(Parallelism) 실제로 동시에 여러작업이 처리되는 것 멀티 코어에서 멀티쓰레드를 동작시키는 방식 [DB] RDBMS vs NoSQL RDBMS 데이터를 Column과 Row형태로 저장 반드시 Schema 규격에 맞춰야함 ( RDBMS를 쓰는 가장 큰 이유 ) 성능 향상 시 스케일업만 가능 NoSQL 대용량 데이터를 저장 할 수 있음 정해진 Schema가 없어 자유롭게 데이터 저장 가능 ( NoSQL 쓰는 가장 큰 이유 ) 성능 향상 시 스케일아웃 가능 RDB와 NoSQL 중 뭐가 더 좋아서 선택하는 게 아닌 개발하고자 하는 어플리케이션에 맞는 데이터베이스 선택이 포인트 [CS]Context-Switching Context-Switching 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업 [DB] 정규화 테이블 초반 설계를 잘해놓으면 개발 시 편리함. 테이블을 쪼갠다고 표현하기도 하는데 100% 정규화가 되진 않겠지만 최대한 지켜서 설계하는 게 좋음 제 1정규형 모든 속성은 원자값을 가져야함 한 셀에 여러개의 값이 들어가는 걸 지양 제 2정규형 키를 제외한 나머지 속성들은 키에만 종속되어야 함 제 3정규형 테이블 안에 두번 이상 연결 된 종속을 피해야함 [Python] GIL(Global Interpreter Lock) GIL 파이썬 인터프리터가 한 스레드만 하나의 바이트코드를 실행하는 것 하나의 스레드에 모든 자원을 허용하고 나머지 스레드는 Lock을 검 파이썬의 모든 객체는 reference count를 갖고 있는데 멀티스레드에서 여러 스레드가 하나의 객체를 사용한다면 reference count를 관리하기 위해 모든 객체에 Lock을 걸어야하며 비효율 적이기 때문에 GIL을 사용하게 되었음 멀티스레드 회피를 위해 멀티프로세싱을 사용 [CS] Process vs Thread Process 실행중인 프로그램을 의미 OS 자원을 할당받음 Process 간 자원공유가 어려움 Thread Process 내 동작되는 실행 단위 Process 자원을 할당받음 Thread는 Process에 자원을 할당받아 Thraed 간 자원공유가 가능함. 이전 1 2 3 4 5 다음