기록은 기억을 이기고 시간보다 오래 남는다.
반응형

전체 글 86

[c++] Future 병렬 처리 방법

Future은 직렬 방식의 단순한 처리 방법에서 병렬로 동시에 처리 할 수 있도록 하는 기능이다.C++11에서 추가된 std::future은 비동기 계산을 가능하게 해주는 기능입니다.이를 통해 현재 스레드에서 계산이 끝나지 않은 작업을 다른 스레드에서 계속 수행할 수 있습니다.결론)mutax, condition_variable까지 가지 않고 단순한 애들을 처리할 수 있는 (일회성으로 일어나는)\ future 객체를 만드는 방법은 여러가지 방법이 있음 특히나 , 한 번 발생하는 이벤트에 유용하다. 1)async = 원하는 함수를 비동기적으로 실행 2)promise =  결과무를 promise를 통해 future로 받아줌 3)packaged_task = 원하는 함수의 실행 결과를 packaged_task를 ..

[C++] 캐시란 무엇일까? cash (예시 코드 포함)

안녕하세요 준준입니다.오늘은 캐시에 대해서 알아보고 코드를 이용해서 실제 캐시가 어떻게 작동하는지 알아가는 시간을 가지도록 하겠습니다.캐시란 무엇일까?캐쉬는 저장된 데이터를 더욱 빠르게 접근하기 위해 cpu 안에 존재하는 메모리입니다.CPU가 메인 메모리를 읽거나 쓰고자 할 때, 먼저 그 주소에 해당하는 데이터가 캐시에 존재하는지 살피고 데이터가 존재한다면 직접 캐시를 읽고 존재하지 않는다면 메인 메모리에 접근합니다. 이 경우 CPU는 메인 메모리에 직접 접근해서 전송된 데이터를 캐시에 복사해 넣음으로써 다음에 CPU가 더 빠르게 데이터를 찾을 수 있게 도와줍니다. 캐시는 임시 저장소라고 생각하시면 됩니다.  캐시가 필요한 이유cpu는 매우 빠른 속도로 연산이 되는데 연산 속도보다 데이터를 가지고 오는 ..

[c++] fetch_add() 함수

fetch_add()는 원자적(atomic) 연산 중 하나입니다. C++11에서 추가된 C++ 표준 라이브러리의 std::atomic 클래스의 멤버 함수 중 하나로, 특정 변수에 대한 원자적인 덧셈 연산을 수행합니다. fetch_add()는 특정 변수의 값을 가져온 후에 해당 변수에 인자로 전달된 값을 더하고, 그 결과를 반환합니다.  이 과정에서 해당 변수는 다른 스레드에 의해 변경되지 않는 원자적인 연산이 보장됩니다. 예를 들어, 다음 코드는 x 변수에 대해 fetch_add() 함수를 사용하여 1을 더하는 코드입니다. 위 코드는 x 변수의 값을 1 증가시키고, 그 결과를 result 변수에 저장합니다.fetch_add() 함수는 원자적 연산이므로 다른 스레드가 x 변수를 변경하더라도결과에는 영향을 ..

[C/C++] Stack in c++ (기본 사용법, 예제)

안녕하세요 준준 입니다. 오늘은 C++ STL 중 하나인Stack(스택)에 대해 알아보도록 하겠습니다.What is Stack?스택의 사전적 의미로는 '쌓다', '더미'입니다. 상자에 물건을 쌓아 올리듯 데이터를 쌓는 자료 구조라고 할 수 있습니다. 스택은 대표적인 LIFO (Last In First Out) 구조입니다.따라서 제일 마지막에 넣은 데이터가 가장 먼저 빠져나가는 것을 알 수 있습니다.쉬운 예시로 쌓여 있는 그릇을 생각하시면 쉽습니다. 상식적으로 그릇은 쌓을 때 맨 위에서부터 쌓고 꺼낼 때는 맨 위에부터 꺼내곤 합니다.따라서 가장 최근에 넣은 그릇을 가장 빨리 쓰게 됩니다.이해가 조금 되셨을 까요?Stack의 특징1. 먼저 들어간 자료가 나중에 나오는 구조2. 시스템 해킹에서 버퍼오버플로우 ..

HTML 태그 소개: 기본 HTML 태그 이해

제목 태그: ~ 문서 구획 제목을 나타내는 태그, Heading 태그라고 부름.h1 태그는 페이지 내에서 “한 번만” 사용되어야 하고, “구획의 순서”를 지켜야 한다.메인 제목서브 제목문단 태그: 하나의 문단을 나타내는 태그.제목 태그와 함께 사용되기도 하고, 단독으로 사용되기도 한다.이것은 문단입니다.글씨의 두께 조절: , : 의미를 가지지 않고, 단순히 굵은 글씨로 변경.: 굵은 글씨로 변경 후 “강조”의 의미를 부여.이것은 굵은 글씨입니다.이것은 중요한 굵은 글씨입니다.글씨의 기울기 조절: , : 기울임과 동시에 텍스트가 문단의 내용과 구분되어야 하는 경우 사용.: 기울임과 내용에 “강조”를 나타냄.기울어진 글씨입니다.강조된 기울어진 글씨입니다.링크 태그: 클릭하면 페이지를 이동할 수 있는 링크 ..

FRONT-END/HTML&CSS 2024.05.10

HTML 입문: 웹 페이지의 구조와 핵심 요소 이해

HTML 기초: 웹 페이지의 기본 구조와 요소 이해하기HTML(Hypertext Markup Language)은 웹 페이지를 구성하는 가장 기본적인 빌딩 블록입니다. 이 글에서는 HTML의 기본 구조, CSS와 JavaScript의 역할, 그리고 HTML의 주요 태그들에 대해 알아보겠습니다.HTML의 핵심 구성 요소HTML: 웹 페이지의 구조를 정의합니다.CSS (Cascading Style Sheets): 웹 페이지를 스타일링하고 꾸미는 데 사용됩니다.JavaScript: 웹 페이지에 동적 기능을 추가합니다.HTML 기본 문법HTML 문서는 여러 태그를 사용하여 구성됩니다. 각 태그는 특정 요소를 나타내고, 시작 태그와 종료 태그로 구성됩니다. 예를 들어, 태그는 블록 레벨 요소를 생성하며, 콘텐츠와..

FRONT-END/HTML&CSS 2024.05.10

그리디 알고리즘

그리디 알고리즘: 간단하고 효율적인 문제 해결 방식그리디 알고리즘은 각 단계에서 가장 좋아 보이는 선택을 하여 문제의 해결을 추구하는 방식입니다. 이 글에서는 그리디 알고리즘의 기본 개념, 특징 및 적용 예제를 살펴보겠습니다.그리디 알고리즘의 기본 원리그리디 알고리즘은 "매 순간 최적의 해"를 선택함으로써 전체 문제의 해답에 접근합니다. 이 접근법은 항상 최적의 결과를 보장하지는 않지만, 많은 경우에 충분히 좋은 해결책을 제공합니다.그리디 알고리즘의 특징속도: 다른 최적화 알고리즘에 비해 실행 속도가 빠르다는 장점이 있습니다.응용: 크루스칼 알고리즘(최소 신장 트리), 다익스트라 알고리즘(최단 경로 탐색) 등 많은 유명한 알고리즘들이 그리디 방식을 활용합니다.직관적 접근: 많은 그리디 알고리즘 문제들은 ..

너비 우선 탐색과 깊이 우선 탐색 with JS(BFS, DFS)

너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS): 그래프 탐색 알고리즘 이해하기그래프 탐색은 복잡한 네트워크에서 특정 노드를 찾거나 경로를 분석할 때 사용하는 핵심 알고리즘입니다. 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)는 이러한 탐색을 수행하는 두 가지 기본적인 방법입니다. 이 글에서는 각 알고리즘의 원리와 특징을 상세히 살펴보겠습니다.너비 우선 탐색 (Breadth-First Search, BFS)BFS는 그래프의 모든 노드를 체계적으로 탐색하는 방법 중 하나입니다. 이 방법은 '가장 가까운 노드'부터 차례대로 탐색하며, 다음과 같은 특징을 가집니다:큐(Queue) 사용: BFS는 탐색을 위해 FIFO(First-In-First-Out) 원칙을 따르는 큐 자료구조를 사용합니다.최단 경로..

반응형