일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스 알고리즘 공부
- 화장품
- 책을알려주는남자
- 성분
- 채권
- 다독
- 서평
- 자바스크립트
- 알고리즘트레이닝
- algorithmStudy
- C
- 재테크
- 백준알고리즘
- 프로그래밍언어
- Java
- 독후감
- 주식
- 독서
- 경제
- 알고리즘공부
- 투자
- 자바
- 지혜를가진흑곰
- algorithmtraining
- algorithmTest
- JavaScript
- 책알남
- 알고리즘 공부
- C++
- 돈
- Today
- Total
목록분류 전체보기 (564)
탁월함은 어떻게 나오는가?
스핀락(SpinLock) 스핀락은 Critical Section에 진입이 불가능할 때 진입이 가능할 때 까지 루프를 돌면서 재시도 하는 방식으로 구현된 락을 가르킵니다. 스핀락은 바쁜 대기의 한 종류입니다. 스핀락은 운영체제의 스케줄링 지원을 받지 않기 때문에, 해당 스레드에 대한 Context Switch가 일어나지 않는다. 따라서 스핀락은 임계구역에 짧은 시간안에 진입할 수 있는 경우에 Context Switch을 제거할 수 있어서 효율적입니다. 하지만 만약 스핀락이 오랜 시간을 소요한다면 다른 스레드를 실행하지 못하고 대기하게 되며, 이 경우 비효율적인 결과를 가져게 됩니다. 컨텍스트 스위칭(Context Switching) CPU내에 존재하는 레지스터들은 현재 실행중인 프로세스 관련 데이터들로 채..
*깃 명령어 - git clone 주소 해당 주소의 내용을 복사해옴 - git status 현재 변경 상태나 파일 추적 상태를 보여줌 - git commit -m "메시지" 작업한 내용 및 변경 사항을 업데이트함 - git push origin main 커밋이 완료되었으므로 실제 깃헙 웹사이트에 내용을 저장함 * Git(깃) 활용하기 - 사본과 원본 연결하기 1) cd proj 2) git clone (ex : GroupStudy의 사본 주소) 위 명령을 통해서 사본의 내용을 내 컴퓨터에 저장한다. 3) cd GroupStudy 4) git remote -v 를 통해서 origin 과 upstream 을 확인한다. 만약 upstream 이 없다면 명령을 통해 추가해야 한다. 5) git remote ad..
메모리 계층 구조란 메모리를 필요에 따라 여러가지 종류로 나누어 둠을 의미합니다. 이때 필요한 대부분의 경우 CPU가 메모리에 더 빨리 접근하기 위함이며, 일반적으로 레지스터와 캐시는 CPU내부에 존재합니다. 당연히 CPU는 아주 빠르게 접근할 수 있고, 메모리는 CPU 외부에 존재합니다. 레지스터와 캐시보다 더 느리게 접근 할 수 밖에 없으며, 하드 디스크는 CPU가 직접 접근할 방법 조차 없습니다. CPU가 하드 디스크에 접근하기 위해서는 하드 디스크의 데이터를 메모리로 이동시키고, 메모리에서 접근해야 하고, 아주 느린 접근 밖에 불가능합니다. 그렇다면 메모리 계층구조는 어째서 피라미드 형태로 말할까?(실제로 논문으로도 발표됬다고 합니다.) 이는 컴퓨터 과학에서 증명된 법칙인데, 큰 메모리를 사용한다..
뮤텍스(Mutext)란 무엇인가? Mutext는 Muteal exclusion(상호배제)의 약자로 Critical Section문제를 해결할 수 있는 개발 도구 중 하나입니다. 일종의 Locking 매커니즘이며 Lock을 가지고 있을때만 공유 데이터에 접근이 가능합니다. 화장실에 갈 때 키를 가진 사람만이 갈 수 있고, 일을 다 본 후에는 키를 반납하고 그 다음 사람이 갈 수 있는 것과 같은 매커니즘입니다. 유의할 점은 lock에 대한 소유권이 있다는 점. 열쇠를 획득한 사람만이 반납할 수 있습니다. 세마포어(Semaphore)란 무엇인가? 세마포어는 동시에 리소스에 접근할 수 있는 "허용 가능한 counter의 개수"를 말합니다. 예를 들면, 병원에 있는 어느 한 병실에 5명까지 들어 갈 수 있다고 한..
[시분할 시스템] 시분할 시스템(TSS, Time Sharing System)은 다중 프로그래밍을 논리적으로 확장한 개념으로 프로세서를 통해 다중 작업을 교대로 수행합니다. 컴퓨터를 대화식으로 사용하려는 시도에서 탄생하였습니다. 시분할 운영체제는 CPU 스케줄링과 다중 프로그래밍을 이용해서 각 사용자들에게 컴퓨터 자원을 시간적으로 분할하여 사용할 수 있게 해줍니다. 출력이 사용자에게 표시되고 입력을 키보드에서 읽어들이는 대화식 인터페이스를 제공할 수 있습니다. 대화식 입출력 속도는 보통 사람들의 처리속도와 같으므로 종료할 때 까지 오랜 시간이 걸린다. 예를 들면, 입력은 타이핑 속도에 의해 제약을 받는데 사람에게는 1초에 5문자를 치는 것이 빠른 편이지만 컴퓨터 입장에서는 아주 느린 것입니다. 이러한 경..
"소켓(Socket)"은 사전적으로 "구멍","연결","콘센트"등의 의미를 가집니다. 주로 전기 부품을 규격에 따라 연결할 수 있게 만들어진 "구멍 형태의 연결부"를 일컫는 단어인데, 가정에서 흔히 볼 수 있는 콘센트 구멍을 떠올리면 쉽게 이해할 수 있을 것입니다. 다시 한번 풀어서 쓰자면, 전기를 필요로 하는 디바이스 또는 부품들이 전기를 공급받을 수 있도록, 전기 공급 인프라 환경에 연결할 수 있게 만들어진 연결부가 "소켓"인 것입니다. 소켓은 프로토콜, IP주소, 포트 넘버로 정의됩니다. 네트워크 프로그맹에서의 소켓에 대한 의미도, 사전적 의미와 큰 차이가 없습니다. 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, "네트워크 환경에 연결할 수 있게 만들어진 연결부"가 바로 "네트워크 소켓"입니..
배열의 체감상 느낄수 있는 단점은 배열은 그 배열을 선언할 때 그 배열이 몇개의 배열의 값을 가질 수 있는지 지정할 수 있습니다. 그리고 그 값보다 더 많은 배열의 값을 입력하게 되면 오류가 발생하게 됩니다. 하지만, 배열에서 느껴지는 불편함을 컬렉션즈 프레임워크를 사용하면 불편함을 줄일 수 있습니다. 실제로 비교해보자면 배열은 끝을 정해놓고 사용할 수 밖에 없다는 것입니다. 하지만 컬렉션즈 프레임워크는 정해놓지않고 끊임없이 붙여서 사용할 수 있는 장점이 있습니다. 컬렉션 프레임워크에는 아래와 같이 여러가지 종류가 존재합니다. List의 경우는 중복이 가능합니다. 예를들어서 3개의 리스트안에 1, 1, 2 이런식의 중복이 가능합니다. 하지만, Set의 경우 중복되지 않은숫자만 가능합니다. 즉, 1, 2,..