전체 글 썸네일형 리스트형 process synchronization(동기화) 동기화 synchronous 프로세스들이 동작은 맞추는 것 작업을 요청 후 결과 값이 나올 때까지 기다리는 것을 의미합니다. ( blocking ) 비동기화 asynchronous 프로세스들이 서로에 대해 모름 작업을 요청 후 결과값이 나올 때까지 기다리지 않고 다음 코드를 실행하는 것을 의미합니다. (non-blocking) 결과 값은 이벤트큐에 넣거나 백그라운드 쓰레드에 위임합니다. 언제 필요할까? 여러 프로세스(쓰레드)가 공유 자원을 동시에 사용할 때 문제가 발생할 수 있습니다. 이러한 상황을 race condition이라고 부르는데, 둘 이상의 프로세스( 또는 쓰레드)가 하나의 데이터에 접근할 때 동기화 되지 않은 상태 따라서, 프로세스를 공유 자원의 접근을 제한하여 문제가 생기지 않게 방지하는 .. 더보기 process vs thread process vs thread process : 운영체제로부터 자원을 할당받은 작업의 단위 thread : 프로세스가 할당받은 자원을 이용하는 실행의 단위 Code : 코드 자체를 구성하는 메모리 영역 ( 프로그램 명령 ) Data (static): 전역변수, 정적변수, 배열 등 ( 초기화된 데이터 ) Heap : 동적 할당 시 사용 ( new(), mallock() 등 ) Stack : 지역변수, 매개변수, 리턴 값 ( 임시 메모리 영역 ) 프로세스 특징 - 프로그램이 메모리에 올라가 수행하는 작업의 단위 - 고유 공간과 자원을 할당받아 사용 - 프로세스의 생성 초기 프로세스는 부팅 시 OS로 받지만, 그 후 부모 프로세스에게서 fork(), exec(),, 와 같은 시스템 콜로 생성됩니다. - 시분.. 더보기 IPC(Inter Process Connection) what IPC 프로세스간에 통신을 의미합니다. 원칙적으로는 프로세스는 독립적이기 때문에 서로의 수행에 영향을 주면 안 됩니다. 하지만, 업무 효율을 위해 프로세스 간에 통신이 필요한 경우가 있습니다. 이를 위해 OS에서 제공하는 것이 IPC입니다. 또한, 의사소통이 제대로 이루어 지기 위해 동기화도 주의해야합니다. when IPC 정보 공유 : 프로세스가 동일한 정보를 필요 할 수 있습니다. 계산 가속화 : 업무를 분할하여 병렬로 계산속도를 높일 수 있습니다. 모듈성 : 기능을 별도의 프로세스(쓰레스)로 나누어 모듈식으로 시스템을 구성할 수 있습니다. 편의성 : 동시에 여러 작업이 가능합니다. ex) 문서 작업, 노래 듣기 등등 병렬로 처리가능합니다. message passing VS shared me.. 더보기 [ 프로그래머스 ] 종이접기 ( 자바 ) [ 프로그래머스 ] 종이접기 ( java ) 종이를 N번 접었을 때, 어떤 방향으로 접히는지 표시하는 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/62049 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 핵심 1. 문제 이해 가장 처음에 한 번 접는 것을 제외하면, 매번 접을 때마다 중간(들)을 기준으로 양쪽에 접히는 부분이 생긴다. 이 접히는 곳들을 left, right으로 정했다. 이 때, 오른쪽에서 왼쪽으로 접기 때문에 left는 0으로 접히고, right은 .. 더보기 안전한 패스워드 내 문제 : 비밀번호를 hash처리 후 저장졸업 프로젝트로 스마트 컨트랙트를 다룰 때, 스마트 컨트랙트 사용자 인증을 위해 비밀번호를 저장할 필요가 있었다. 빨리 만들다보니 비밀번호를 단순히 해시 처리해서 저장했었다.. 자소서를 쓰면서 다시 확인하다보니 비밀번호에서 부족한 것이 보였다. 그래서, 다른 암호화 방법을 찾다 보니 Naver D2에 좋은 글이 있어 대략적으로 정리했다. 단방향 해시비밀번호를 단순히 해시처리한 것을 단방향 해시라고 한다. 단방향 해시는 역으로 찾는 것은 어렵지만, 정방향으로는 빠른 속도로 계산된다. (+ 해시처리된 값을 다이제트스트라고 한다. ) 하지만, 다음과 같은 단점이 있다. 1. 해시처리가 빠르기 때문에, brute force로 매우 빠르게 답을 대조할 수.. 더보기 [ 프로그래머스 ] 조이스틱 ( 자바 ) [ 프로그래머스 ] 조이스틱 ( java ) 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 JAZ를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다. 따라서.. 더보기 [ 프로그래머스 ] 소수 만들기 ( 자바 ) [ 프로그래머스 ] 소수 만들기 ( java ) 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로.. 더보기 Binary Search Tree binary tree에서 검색 효율이 좋은 자료구조다. 장점 이진 탐색과 링크드 리스트 자료구조를 결합한 형태로 각 장단점을 보완한 것이 BST 이진탐색 : O(logn) 으로 탐색한다. 매번 원소를 비교 시, 비교 대상이 절반으로 줄어든다. 링크드 리스트 : 추가 삭제 시 O(1) 시간 복잡도 트리 높이에 비례한다. 따라서, balanced/unbalanced인지에 영향을 받는다. balanced경우, 탐색이 O(logn)이지만, unbalanced 되면 O(n)이 된다. 이 경우, 다시 rebalancing이 필요하다. 이 기법을 갖는 자료구조가 AVL, red black tree 특징 1 모든 key값은 unique. 그렇지 않으면 조건 2,3 번에 위배된다. 그래서 중복된 key입력이 보이면 co.. 더보기 이전 1 ··· 5 6 7 8 9 10 11 ··· 16 다음