전체 글 26

CPU Burst, IO Burst

들어가며 PC의 CPU Burst, IO Burst 작업에 대해서는 얼핏 들어 본적 있었다. 그러나 직접 테스트를 통해 어느정도 차이가 나는지 테스트를 해본적은 없었다. 테스트를 통해 얻은 지식과 이론으로만 알고있던 지식의 차이는 크다고 생각했기 때문에 더 깊은 지식을 알고 싶어서, 간단한 테스트를 진행했다. 왜 이런 결과가 나올까? 1. 메모리와 디스크 구성요소의 차이 메모리는 전기적인 부품이기 때문에 다른 주소값을 읽어들일 때, 마이크로초 단위로 포인터를 이동시킵니다. 그러나 디스크는 헤드의 이동과 원반의 회전 두가지 물리적 이동이 필요하기 때문에, 메모리보다 느립니다. 속도 차이는 적게는 10만배 많게는 100만배 이상 차이가 발생합니다. 2. 버스의 속도차이 데이터를 전송하여 연산을 하기 위해 메..

서버 2023.06.29

HashMap vs ConcurrentHashMap vs HashTable in Java

들어가며 자바에서 key value 형태로 저장되는 대표적인 자료구조인 HashMap, HashTable, ConcurrentHashMap에 대해서 설명해보려 한다. HashMap vs HashTable HashMap과 ConcurrentHashMap은 공통적으로 Entry라는 개념을 가지고 있다. Entry는 key value 한 쌍을 의미하며, 하나의 Entry는 여러개의 Entry를 가지고 있다. Bucket은 Entry를 하나 또는 여러개를 가진 HashMap의 구성 요소이다. HashMap을 초기화 시킬 때, initialCapacity 파라미터를 통하여 Bucket의 크기를 정해줄 수 있다. 만약 initialCapacity 보다 많은 버킷을 HashMap에 넣게 된다면 리사이징 과정이 일어나..

자바 2023.06.26

스타트업 프로덕트 리드 후기

성장하고 싶었다 대표님에게 팀 리드가 되고 싶다고 했다. 성장하고 싶었기 때문이다. 리드가 되려면 기본적으로 팀원들보다 잘해야 하지 않을까? 이런 생각이 나에게 있었기 때문이다. 그렇다고 회사 입장에서 하고 싶다고 리더를 시킬 수는 없다고 생각했다. 그래서 열심히 했다. 팀원분들에게 인정받기 위해, 리더로써 자질이 있다는 것을 보여주고 싶었다. 조금 더 팀원의 말에 공감하려고 했고, 빠르게 문제를 해결 하려고 노력했다. 결국은 리더가 됐다. 기쁨보다는 걱정이 더 컸다. 내 실력을 들키면 어쩌지? 나는 그렇게 잘하지 못하는데? 같은 생각들이 나를 힘들게 했다. 어쩌면 이런 생각들이 나를 더 성장하게 만드는 원동력이 되지는 않을까? 같은 질문으로, 나를 힘들게 하는 질문들에 대한 답을 회피하고는 했다. 나는..

회고 2023.06.18

파인만 학습법

1. 이해하고 싶은 개념 선택하기 - 이해하고 싶은 개념을 노트에 적어라. 2. 개념을 스스로에게 설명하라 - 아무것도 모르는 사람에게 개념을 설명한다고 생각하듯이 설명하라 3. 다시 읽고 다시 배우기 - 참고서, 강의, 선생님에게 다시 돌아가서 다시 배워라, 종이에 설명할 수 있을 때까지 배워라. 4. 다시 정리하기 - 설명할 떄 말이 길어지거나 복잡해지면 더 이해하기 쉬운 간단한 방법으로 발전시켜라. 개념들을 훑어보면서 개념들을 비유로 이해하면 길게 기억할 수 있다. 이해가 될때까지 자기 자신에게 질문하는 버릇을 기르면 좋다.

학습법 2023.06.06

linux file descriptor

file descriptor란? 리눅스 시스템에서는 모든 것이 파일이다. 리눅스에서는 프로세스가 파일에 접근할 때 File Descriptor 라는 개념을 이용하여 접근한다. POSIX를 구현한 시스템은 모두 File Descriptor 개념이 있다. (일부 윈도우 운영체제 버전은 POSIX를 구현하지 않고 있다) 왜 알아야하지? 왜 file descriptor에 대해서 알아야할까? 이유는 서버가 장애로 이어질 수 있는 원인들중 하나이기 때문이다. 참고로 file 이라는 단어가 들어갔다고 해서, 폴더안에 담기는 파일만을 의미하지는 않는다. 위에서 설명했다시피 소켓도 파일의 일종으로 리눅스 관점에서 볼 수 있기 때문에, 백엔드 개발자와 연관이 깊은 리눅스의 자원이라고 할 수 있다. 리눅스에서는 프로세스당 ..

서버 2023.06.05