전체 글237 ThreadLocalStorage TLS여러 스레드가 동시에 실행될 때 각 스레드가 독립적인 데이터를 저장할 수 있도록 하는 메커니즘스레드 마다 자신만의 데이터 저장 공간을 가지고 다른 스레드와 격리되어 있다.데이터의 일관성을 유지하면서 멀티스레드 환경에서 안전하게 데이터를 처리할 수 있다.각 스레드는 자신만의 데이트 공간을 가지고 다른 스레드와 공유되지 않는다.데이터 접근 시 Lock을 사용하지 않기 때문에 성능이 향상된다.각 스레드 마다 각자 연산하여 결과를 가져올수 있다는 장점이 있으나이것을 어디에 사용할지는 아직 모르겠다. CS 2025. 3. 27. Lock LockInterlocked원자적으로 연산을 수행하는 메서드를 제공합니다.정수와 같은 기본 데이터 타입에 대해 사용됩니다.lock을 사용하지 않고도 원자성을 보장하므로성능이 중요한 상황에서 유용합니다.Monitor특정 객체에 대해 잠금을 설정하거나 해제하는 메서드를 제공합니다.lock과 유사하게 동작하지만 더 많은 제어를 제공합니다.스레드 간의 통신을 할 수 있습니다.Mutex시스템 전역에서 사용할 수 있는 동기화 객체로서로 다른 프로세스에서도 동기화가 가능합니다.그렇기 때문에 높은 오버헤드를 가지고 있습니다.lock특정 코드 블록이 동시에 여러 스레드에 의해 실행 되지 않도록 보장합니다.lock은 내부적으로 Monitor를 사용하여 구현됩니다.ReaderWriterLock읽기 잠금을 사용하면 읽기들이 .. CS 2025. 3. 26. 메모리 베리어 메모리 베리어멀티 스레드 환경에서는 메모리 접근의 순서를 제어가하는것이 중요합니다.메모리 베리어가 있을 때와 없을 때의 차이를 살펴봅시다.베리어 유순서 보장 O스레드 간의 메모리 가시성이 보장되어한 스레드에서의 변경 사항이 다른 스레드 에서 볼 수 있도록 보장됩니다.베리어 무순서 보장 X스레드 간의 메모리 가시성이 보장되지 않아한 스레드에서의 변경 사항이 다른 스레드에서 인식 되지 않을 수 있습니다.멀티 스레드 환경에서 데이터 일관성 문제를 초래합니다.언제 사용하는가?!스레드 간 데이터 공유동기화 메커니즘과 함께 사용시비동기 작업시어디서 사용하는가?!데이터 쓰기 후 읽기상태 플래그 사용초기화 작업메모리 베리어 O 일관성 유지메모리 베리어 X 일관성이 깨짐 ## 풀 메모리 베리어풀메모리 베리어는읽기 및 .. CS 2025. 3. 26. 캐시 히트와 캐시 미스 캐시 히트정의CPU가 필요한 데이터가 캐시 메모리에 이미 존재할 때 발생합니다.효과캐시 히트가 발생하면 CPU는 빠른 속도로 데이터를 읽을 수 있습니다.캐시 메모리는 일반적으로 주 메모리 보다 훨씬 빠르기 때문에데이터 접근 시간이 단축 됩니다.예시프로그램이 자주 사용되는 데이터가 캐시에 저장되어 있다면CPU는 해당 데이터를 바로 캐시에서 읽어들여 처리할 수 있습니다.캐시 미스정의CPU가 필요한 데이터가 캐시 메모리에 존재하지 않을 때 발생합니다.CPU 는 데이터가 있는 주 메모리에서 데이터를 읽어야 합니다.효과캐시 미스가 발생하면 데이터 접근 시간이 길어집니다.주 메모리에서 데이터를 읽는 것은캐시에서 읽는 것보다 느리기 때문에 성능 저하가 발생합니다.예시프로그램이 자주 사용하는 데이터가 캐시에서 사라지고.. CS 2025. 3. 25. CPU CPU역할CPU는 컴퓨터의 두뇌에 해당한다.두뇌에서도 정보를 처리하는 기능에 해당하는데주요 임무는 4가지다.기억하고해석하고연산하고제어한다.CPU는 왜 만들어 졌을까?!원래의 컴퓨터는 특정 작업만을 수행하도록 설계되었다.마치 인간이 직업을 가지는 것처럼 하나의 일만 하게 되었다.그러자 다른 작업을 하게되면 컴퓨터 내부를 모두 수정해야 했기 때문에컴퓨터의 활용도는 매우 제한적이었다.이러한 한계를 극복하기 위해 저장된 프로그램이라는 혁신적인 개념이 등장했고프로그램의 명령어들을 물리적인 배선 대신 컴퓨터의 메모리에 전자적으로 저장하는 방법이다.수학자 존 폰 노이만의 연구 덕분에 구체화 되었다.CPU개발의 다음 단계는 전자 부품의 발전과 밀접한 관련이 있다.초기 전자 컴퓨터는 진공관이라는 부품을 사용했지만 크기가.. TIL 2025. 3. 19. 메모리 메모리목표메모리가 무엇인지 왜 사용하는지 그리고 이것을 내것으로 흡수하기 위함역할작업의 처리와 데이터를 저장해 두는 공간RAM단기 기억 장치다.위치와 상관없이 빠르게 접근할수 있다.임시 저장공간이기 때문에 컴퓨터가 켜져있는 동안 유지된다.RAM은 책상에 비유되고 책상에 물건을 올려두면 빠르게 사용할 수 있고넓을수록 여러가지 일을 동시에 할 수 있다.가상 메모리RAM의 공간이 충분하지 않으면 느린 저장 공간을 사용해야 하는데 이를 가상 메모리라고 한다.멀리 떨어져 있는 책상과 같아서 물건을 가져올 때 시간이 걸린다.ROM장기 기억 장치다.읽기전용이기 때문에 쉽게 변경할수 없거나 쓸 수 없는 데이터를 저장한다.컴퓨터가 꺼져도 유지된다.컴퓨터가 부팅되고 기능을 시작하는데 필요한 기본적인 명령어들이 들어있다.캐.. TIL 2025. 3. 18. TIL_2025-03-11_Protoc 프로토C설치https://github.com/protocolbuffers/protobuf/releases/tag/v29.3확인protoc --version변환cd srcprotoc --proto_path="./protobuf" --csharp_out="./" "Protocol.proto" TIL 2025. 3. 11. TIL_2025-02-17 깊은 복사와 얕은 복사 우선 깊은 복사와 얕은 복사 사용하는 이유얕은 복사는 메모리 사용을 효율적으로 하고 속도가 빠르기 때문에기존에 사용하던 메모리의 위치에서 객체의 최상위 속성만 복사하고하위 객체는 참조하여 공유하는 방식으로 사용하기 때문입니다. 깊은 복사는 모든 속성을 재귀적으로 복사하여 독집적인 객체를 만들기 때문에메모리 사용량이 증가하고 성능이 저하되지만 원본 객체와의 독립성을 보장합니다.얕은 복사얕은 복사는 객체의 최상위 레벨만 복사합니다.객체 내의 속성이 다른 객체를 참조하는 경우해당 참조는 복사하지 않고 원본 객체와 동일한 참조를 유지합니다.복사한 객체의 속성을 변경하면 원복 객체에 영향을 미칩니다.얕은 복사는 원본을 참조합니다.const original = { a: 1, b: { .. TIL 2025. 2. 17. TIL_2025-02-10 메시지 큐메시지 큐는 컴퓨터 시스템에서 쓰이는 비동기 통신 프로토콜의 한 종류입니다.응용 프로그램에서 다른 응용 프로그램으로 메시지를 보낼 수 있으며수신자인 응용 프로그램이 검색하고 처리할 때까지 대기열에 저장됩니다.서비스 간의 비동기 통신을 용이하게 만들어 서비스의 성능 신뢰성 확장성을 올려줍니다.ex)가입과 동시에 가입 인사 이메일을 받는 형태로유저 서비스와 이메일 서비스가 나눠져 있을 경우서비스가 잘 작동하고 있다면 가입과 동시에 이메일을 받을 수 있지만이메일 서비스가 응답에 실패하거나 일시적으로 응답하지 않는다면사용자가 이메일을 받을 수 없게 됩니다.만약 해당 이메일이 가입 시점에 보내는 것이 중요한 서비스라면이것을 메시지 큐를 이용해 해결할 수 있습니다.분산 환경에서 대량의 메시지를 처리할 때 .. TIL 2025. 2. 11. TIL_0205-02-06 코드카타 예상 대진표 굿! 아이! 디어! 기획!시점쿼터뷰 시점플레이어는 위에서 내려다보는 시점으로 보스와의 전투 및 마을 탐험에 적합플레이어는 전투중 보스의 공격 패턴 및 팀원들의 위치를 쉽게 파악할 수 있음조작법마우스와 키보드 조합을 사용하여 LOL과 동일한 조작구성마우스 좌 우 클릭키보드 QWER게임목표보스 레이드플레이어는 팀을 구성하여 다양한 보스를 처치하는 것이 주요목표보스를 처치할 때마다 보상으로 골드와 자원을 획득이를 통해 마을을 발전시킬 수 있음마을의 영구적인 성장플레이어가 보스를 처치하여 얻은 자원은 마을의 건물 건설 및 업그레이드에 사용됨마을의 성장에 따라 모든 플레이어에게 긍정적인 효과가 부여됨공격력 증가 , 방어력 증가 , 체력 증가 등기본구조플레이어 파티: 최대 5명의 플레이어로 .. TIL 2025. 2. 6. TIL_2025-02-05_var , let , const 코드카타 피보나치 수코트카타 카펫 var , let , const 에 대한 설명각각 스코프 재선언 호이스팅 기준으로 설명하겠습니다.우선 var 의 특징부터 설명하겠습니다. var 는 기존 js 에서 es6 이전에 사용하던 변수입니다.해당 변수는 int ,float , string , bool , 함수 모두 할당하여 사용이 가능합니다. var 는 함수 스코프를 가집니다.변수가 선언된 숨수 내에서만 유효합니다.함수 외부에서 선언된 경우 전역 스코프로 취급됩니다. function(){if(true){var foo = 2;}foo = 3;} var를 사용할 경우 발생할수 있는 문제위의 내용을 보면if안의 var 나 for 등에서 사용할때 함수내부 어디에서나 사용이 되어의도를 모호하게 만들고 디버깅을 어렵게.. TIL 2025. 2. 5. TIL_2025-02-04_ 컴퓨터 구조 와 운영체제 코드 카타 최대값과 최소값코드카타 JadenCase 문자열 만들기코드카타 이진 변환 반복하기컴퓨터 구조를 알아야 하는 이유처음 프로그래밍 공부를 시작하면프로그래밍 언어의 문법부터 학습을 한다.개발자는 코드만 잘 짜면 되는 거 아닌가? 라고 보통 생각한다.프로그래밍 언어뿐 아니라 컴퓨터의 근간을 알아야 한다.문제 해결 능력 과성능, 용량 , 비용등을 고려한 프로그래밍이 가능해 진다.분명 코드를 제대로 작성했는데 왜 동작하지 않는거지? 라고 생각했을때컴퓨터 자체를 들여다 볼 수 있는 능력이 있다면코드가 어떻게 동작하는지 분석할 수 있다.해당 동작 원리를 알면 왜 제대로 동작하지 않는지 문제를 찾을 수 있다.컴퓨터가 이해하는 두가지 정보로는 데이터와 명령어가 있다.정적인 데이터는 컴퓨터가 이해할 수 있는 형태.. TIL 2025. 2. 4. 이전 1 2 3 4 ··· 20 다음 💲 추천 글