728x90 반응형 전체 글24 OS - 프로세스 관리 1 1. 프로세스 & 스레드OS 의 역할 중 하나인 프로세스 관리에 들어가기에 앞서 프로세스가 무엇이고, 쓰레드가 무엇인지가장 간단한 정의부터 시작해서 특징이 무엇인지 확인해보겠습니다.프로세스: 메모리 상에 프로그램을 실행 중인 작업스레드: 프로세스 안에서 실행되는 여러 흐름 단위프로세스는 프로그램을 실행하는 단위로 독립적으로왼쪽그림과 같이 각각의 별도의 주소 공간을 할당받습니다.Code: 코드 자체를 구성하는 메모리 영역Data: 전역변수, 정적 변수, 배열등 .bss : 초기화 되지 않은 전역 변수 .data: 초기화가 된 전역 변수Heap: 동적 할당 시 사용 (new(), malloc() 등)Stack: 지역변수, 매개변수, 리턴 값오른쪽그림을 보시면 쓰레드는 Stack만 할당받고,각각 .. 2025. 1. 12. [백준 20924번 C++: 트리의 기둥과 가지] 문제링크를 통해서 자세한 문제를 확인하실 수 있습니다. 입력으로는 노드의 개수와 루트 번호가 주어지고, 노드들 간의 간선에 대한 정보가 들어옵니다. 기존 예시에 루트 번호가 1이었지만 2나 3이 들어올 경우를 대비해서 a,b,d가 들어올 경우 a노드와 b노드에 간선에 대한정보를 추가합니다. 루트번호를 시작해서 기가 노드를 찾는 과정은 조건이 처음으로 간선이 2개 이상을 가지는 노드가 기가노드이며,간선 2개를 가지는 노드가 없을 경우 리프노드가 기가노드로 됩니다. 그래서 기가노드를 찾을 때 루트노드가 조건을 만족하는지 확인하고 탐색을 시작하게 됩니다. 추가적으로 a,b 사이의 양방향 간선을 추가 했기 때문에 기존 간선의 개수보다 1개씩 많습니다. 그렇기 때문에 간선의 개수가 2보다 클 또는 0개인 두 가.. 2024. 9. 5. [백준 10160번 C++: 암호] 문제링크를 통해서 문제를 자세히 확인할 수 있습니다.특정 패턴의 길이가 5이기 때문에 길이가 1~4는 각 자리의 k개의 숫자가 오는 것만 계산하면 됩니다. 길이가 5일 경우 전체 $ k^{5} - 2$로 전체 개수에서 특정 패턴 2개를 빼면됩니다. 길이가 6일 경우 이전에 안전한 암호의 총개수인 5에서 자리수를 한개 추가하여 총 개수는 $ dp[5]*k $ 가 됩니다. dp[5]는 길이가 5 중 특정 패턴을 제외한 안전한 암호의 개수를 구했습니다. 하지만 한자리를 추가함으로 써 추가한 자리로 인해 특정 패턴이 만들어 질 수 있습니다. 이 경우 길이가 1일 때의 안전한 암호에서 특정 패턴을 추가하므로 안전하지 않은 암호의 개수를 구할 수 있습니다.$$dp[5]*k - 2*k $$ 길이가 7부터는 이전 방식.. 2024. 9. 3. [Spring Security] Form Login 적용하기 (Session 기반) Spring Security를 적용하면서 이해를 돕기위해 정리하는 글입니다.Spring Security는 6.3.3 버전을 기준으로 작성하고 자세한 것들은 링크를 통해 확인하실 수 있습니다.기존 Spring Security는 자체적으로 HTML form을 통해 username과 password를 사용한 Form Login을 지원합니다. 코드에 앞서서 어떻게 작동하는지 과정을 알아보겠습니다.Spring Security를 적용하게 되었을 때 사용자가 인증이 필요한 주소나 서비스를 접근할 때의 과정입니다.인증되지 않은 사용자가 권한이 없는 /private 리소스에 대해 요청을 합니다.Spring Security는 이 요청해 대해 AccessDeniedException을 발생시켜 거부되었다는 것을 알립니다.사용.. 2024. 9. 3. [백준 6443번 C++ 애너그램] 문제 링크를 통해서 자세한 조건을 확인할 수 있습니다. 문제는 중복을 포함해서 주어진 알파벳들을 사용해 순서대로 단어를 만들어야 합니다. 이는 next_permutation() 함수를 통해서 순열을 만들면 전체 단어들을 만들 수 있습니다. 하지만 이렇게 구현한다면중복되는 단어들을 찾는 시간들로 인해서 시간초과가 발생하게 됩니다.이를 해결하기 위해 동일한 알파벳일 경우 같은 인덱스를 통해서 조합을 구현했습니다. 예를 들어 aaab가 들어올 경우 combi 배열에 저장되는 값은 0001입니다. 이를 next_permutation()함수에 실행하게 된다면 조합으로 함수는 0001,0010,0100,1000을 찾게 됩니다. 이 값들은 다시 문자 a의 값을 더해 알파벳으로 바꾸어 set에 단어를 저장했습니다.#i.. 2024. 9. 2. [백준 19641번 C++: 중첩 집합 모델] 문제링크를 통해서 자세한 정보를 확인할 수 있습니다. 해당 문제는 예시가 있어서 직관적으로 이해가 되어 쉬웠던것 같습니다.입력 부분은 각각 정점에 연결된 다른 정점들이 들어옵니다. 양방향 그래프이지만 각각 정점에 대해서 중복으로 간선이 들어오기 때문에 따로 처리를 하지 않아도 됩니다. 여기까지가 입력부분이며 다른 조건으로는 루트 노드로 부터 번호가 가장 낮은 노드부터 오름차순으로 방문하기 때문에각 정점에 대해서 간선을 오름차순으로 정렬했습니다. 노드의 left와 right의 값을 정리해보자면 아래처럼 되며 재귀를 통해 각 노드를 방문해서 left,right 값을 저장하면 됩니다.각 노드의 left = 부모 노드의 left + 1각 노드의 right = left + 서브트리의 노드의 개수 * 2 + 1.. 2024. 8. 29. 이전 1 2 3 4 다음 728x90 반응형