분류 전체보기 212

혼자 공부하는 컴퓨터 구조+운영체제 7장 정리

다양한 보조 기억 장치하드 디스크하드 디스크는 자기적인 방식으로 데이터를 저장하는 보조기억장치이다.하드 디스크를 자기 디스크의 일종으로 지칭하기도 한다.하드 디스크에서 실질적으로 데이터가 저장되는 곳은 플래터라고 한다.플래터를 회전시키는 구성 요소를 스핀들이라고 한다.스핀들이 플래터를 돌리는 속도는 분당 회전수를 나타내는 RPM이라는 단위로 표현된다.플래터를 대상으로 데이터를 읽고 쓰는 구성 요소는 헤드이다.헤드는 원하는 위치로 헤드를 이동시키는 디스크 암에 부착되어 있다.플래터는 트랙과 섹터라는 단위로 데이터를 저장한다.탐색 시간은 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간을 의미한다.회전 지연은 헤드가 있는곳으로 플래터를 회전시키는 시간을 의미한다.전송 시간은 하드 디스크와 컴퓨터 간..

혼자 공부하는 컴퓨터 구조+운영체제 6장 정리

RAM의 특징과 종류RAM에는 실행할 프로그램의 명령어와 데이터가 저장 된다.RAM은 전원을 끄면 저장된 내용이 날아가는 휘발성 저장장치보조 기억 장치는 전원을 꺼도 내용이 남아있는 비 휘발성 저장장치CPU는 휘발성 저장장치에 접근하여 프로그램을 실행한다. → 일반적으로 휘발성 저장장치는 실행할 대상을 저장하고, 비 휘발성 저장장치는 보관할 대상을 저장한다.RAM의 용량과 컴퓨터 성능 영향RAM 용량이 크면 많은 프로그램을 동시에 빠르게 실행되기 때문에 유리 하다. → 보조 기억 장치까지 가는 시간을 줄여준다.RAM 용량은 어느정도만 커도 된다. 커도 처리 속도가 따라가지 못하면, 속도는 같기 때문이다.처리 속도에 따라 RAM 용량을 적절하게 크게 하는 것이 중요하다.RAM의 종류DRAM (Dynamic..

혼자 공부하는 컴퓨터 구조+운영체제 5장 정리

빠른 CPU를 위한 설계 기법클럭 속도는 헤르츠 단위로 측정한다.1초에 클럭이 몇 번 반복되는지를 나타낸다.코어와 멀티코어코어란 CPU 내에서 명령어를 실행하는 부품으로 여러 개 있을 수 있다.코어를 여러 개 포함하고 있는 CPU를 멀티코어 CPU라고 한다.멀티코어 프로세서한 여러 개의 코어를 포함하고 있는 CPU를 말한다.코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐이고, 그에 따라서 연산 속도는 크게 달라진다.스레드와 멀티 스레드스레드는 실행 흐름의 단위이다.스레드에는 CPU에서 사용되는 하드웨어적 스레드가 있고, 프로그램에서 사용되는 소프트웨어적 스레드가 있다.하드웨어적 스레드스레드를 하드웨어적으로 정의하면 하나의 코어가 동시에 처리하는 명령어 단위를 의미한다.여러 스레드를 지원하는 CPU는..

혼자 공부하는 컴퓨터 구조+운영체제 3장 정리

고급 언어와 저급 언어사람을 위한 언어를 고급 언어라고 한다.컴퓨터가 직접 이해하고 실행할 수 있는 언어를 저급 언어라고 한다.저급 언어에는 기계어, 어셈블리어가 있다.기계어란 0과 1의 명령어 비트로 이루어진 언어이다.어셈블리어는 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어이다.컴파일 언어와 인터프리터 언어컴파일 방식으로 작동하는 프로그래밍 언어를 컴파일 언어, 인터프리트 방식으로 작동하는 프로그래밍 언어를 인터프리터 언어라고 한다.컴파일 언어컴파일 언어는 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어이다.컴파일을 수행해 주는 도구를 컴파일러라고 한다.컴파일러를 통해 저급 언어로 변환된 코드를 목적 코드라고 한다.인터프리터 언어인터프리터 언어는 인터프리터..

혼자 공부하는 컴퓨터 구조+운영체제 2장 정리

정보 단위0과 1을 나타내는 가장 작은 정보 단위를 비트라고 한다.n비트는 2^n가지 정보를 표현 할 수 있다.바이트는 여덟 개의 비트를 묶은 단위로, 비트보다 한 단계 큰 단위이다.1바이트는 8비트와 같으니 2^8 개의 정보를 표현할 수 있다.1바이트 1,000개를 묶은 단위를 1킬로바이트이다.1킬로바이트 1,000개를 묶은 단위를 1메가바이트이다.1메가바이트 1,000개를 묶은 단위를 1기가바이트이다.1기가바이트 1,000개를 묶은 단위를 1테라바이트이다.워드란 CPU가 한 번에 처리할 수 있는 데이터 크기를 의미한다.만약 CPU가 한 번에 16비트를 처리할 수 있다면 1워드는 16비트가 된다.현대 컴퓨터의 워드 크기는 대부분 32비트 또는 64비트이다.이진법수학에서 0과 1만으로 모든 숫자를 표현하..

혼자 공부하는 컴퓨터 구조+운영체제 1장 정리

1장 컴퓨터 구조의 큰 그림 컴퓨터가 이해하는 정보컴퓨터는 0과 1로 표현된 정보만을 이해한다.컴퓨터가 이해하는 정보에는 데이터 와 명령어 가 있다.컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적 정보를 데이터라 한다.데이터를 움직이고 컴퓨터를 작동시키는 정보를 명령어라 한다.컴퓨터의 4가지 핵심 부품컴퓨터의 핵심 부품은 중앙처리장치(CPU), 주기억장치(메모리), 보조기억장치, 입출력장치 이다.주기억장치의 종류RAM(Random Access Memory), ROM(Read Only Memory) 으로 나뉜다.메인보드 내에는 시스템 버스 가 있다.CPU 내부에는 ALU(산술논리연산장치), 제어장치, 여러 레지스터가 있다.CPU는 메인보드 내 시스템 버스와 연결되어 있다.메모리는 메인보드 내 ..

단일 메시지 브로커 설계하기 - (2) / 마이크로 서비스의 프로세스 간 통신 정리

단일 메시지 브로커 설계 메시지 순서 유지 메시지는 발생 순서에 맞게 서비스에 도착해야 함 중복 처리 되지 않아야 함 스케일 아웃(서비스 인스턴스 3개)가 동일한 메시지 채널을 구독 송신자가 주문 생성, 주문 수정, 주문 취소를 순서대로 게시 네트워크 지연, 가비지 컬렉션 등 여러가지 사유로 인해 → 순서대로 처리되지 않을 수 있음 샤드 채널(Sharded channel, partitioned Channel) 하나의 샤드 채널은 2개 이상의 샤드로 구성 송신자(sender)는 메시지 헤더에 임의의 문자열, 바이트 시퀀스를 사용한 샤드 키 명시 메시지 브로커는 이 샤드 키 → 특정 샤드, 파티션에 할당 Kafka와 Zookeeper의 관계 Kafka는 소비자 그룹(복수의 수신자 인스턴스를 하나로 묶어 동일..

선언위치 변수종류(클래스 변수/인스턴스 변수)

class Variables { int iv; // 인스턴스 변수 static int cv; // 클래스 변수(static 변수, 공유변수) void method() { int lv = 0; // 지역변수 } } class Card { String kind; // IV (인스턴스 변수) int number; // IV (인스턴스 변수) static int width = 100; // CV (공통속성, 클래스 변수) static int height = 250; // CV (공통속성, 클래스 변수) } 변수의 종류 선언위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 클래스 영역 인스턴스가 생성될 때 지역 변수 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) ..

단일 메세지 모델 설계 하기(kafka + STOMP + Cassandra)

현재 스케일 아웃이 용이한 채팅 서버 설계를 위해서 스터디를 진행중이다. 단일 메시지 모델 설계를 위해 어떤 DB를 쓰고, 어떤 스택을 사용할 지 고민한 흔적을 소개해보려고 한다. Reference Best database for a chat application? 채팅을 위한 Message Queue 선택과 DB 선택 Kafka, Redis, Web Socket, Stomp 를 활용한 채팅 서버 회고 [혼자왔니] 채팅 서버 구현을 통해 알아본 redis와 kafka의 차이점 Redis, RabbitMQ 차이점을 알아보자 [WebSocket] Spring Boot + STOMP + Redis Pub/Sub 이용한 채팅 서버 구현 Spring STOMP Spring Boot Web Chatting : 스프..

스트림의 그룹화와 분할

https://www.youtube.com/watch?v=VUh_t_j9qjE&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=171 본 강의는 위 강의를 듣고 정리를 진행했습니다. partitioningBy()는 스트림을 2분할 한다. groupingBy()는 스트림을 n분할 한다. Collector partitioingBy(Predicate predicate) Map stuBySex = stuStream.collect(paritioingBy(Student::isMale)); List maleStudent = stuBySex.get(true); List femaleStudent = stuBySex.get(false); Map stuNumBySex = stuStream...