| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- ipfs singletone
- mongodb lookup
- 백준 1504 java
- spring mongoTemplate
- Claude Intelij 연결
- kotiln const
- spring mongodb
- 자바 1676
- java 1509
- 백준 2252 줄세우기
- java 팩토리얼 개수
- 백준 연결요소 자바
- spring mongodb switch
- 백준 특정한 최단 경로
- Java Call By Refernce
- kotiln const val
- java 1238
- java 파티
- nodejs rabbitmq
- Spring ipfs
- spring mongoTemplate switch
- javav 1676
- 익명 객체 @transactional
- rabbitmq 싱글톤
- go
- java 백준 1509
- 안정해시
- kotiln functional interface
- ipfs bean
- 자바 백준 팩토리얼 개수
- Today
- Total
목록2024/01 (8)
공부 흔적남기기
프로세스 간 통신 프로세스 간 통신의 개념 프로세스 또는 스레드는 독립적으로 실행된다. 프로세스나 스레드가 협업을 하거나 병렬로 처리하기 위해서는 데이터를 주고받아야한다. 스레드는 하나의 프로세스 내부에서 실행되기 때문에 데이터를 주고 받는 것은 크게 어렵지 않다. 하지만 프로세스는 서로 공유하고 있는 부분이 없기 때문에 이를 새로 만들어서 통신해야한다. 운영체제는 프로세스 간 통신을 쉽게 할 수 있는 통신 방법을 제공하는데 이를 프로세스 간 통신(IPC) 라고한다. 대표적인 IPC로 공유 저장공간을 사용한 통신, 파이프 통신, 소켓 통신이 있다. 공유 저장공간을 이용한 통신은 데이터를 주고 받는 방법을 프로세스끼리 알아서 정의해서 사용해야하기 때문에 가장 원시적인 방식이다. (영구적인 데이터 저장이 필..
스케줄링 개요 CPU 스케줄링이란 어떤 작업에 CPU를 배정할지 결정하는 것이다. 컴퓨터 시스템 효율은 어떤 프로세스에 CPU를 먼저 배정하느냐에 따라 달라지므로 작업의 형펑성과 효율성을 결정하는 것은 중요한 일이다. CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정한다. CPU 스케줄링 고수준 스케줄링 고수준 스케줄링은 시스템 내의 전체 작업 수를 조절하는 것이다. 작업이란 운영체제에서 다루는 단위로 1개 또는 여러개의 프로세스로 이루어진다. 고수준 스케주링은 작업이오면 작업을 승인할지 거부할지를 결정한다. 즉 고수준 스케줄링에 따라 시스템 내에서 동시에 실행 가능한 프로세스의 총 개수가 정해진다. 중간 수준 스케줄링 중간 수준 스케줄링은 저수준과 고수준 사이에 일어난다. 고..
도메인이란 무엇일까? 그냥 아무 생각 없이 보면 내가 개발하는 영역을 음 그냥 데이터 베이스 테이블을 하나로 묶어서 기능을 나타낸다? 정도의 느낌이였다. 이를 더 구체적으로 보면 우리가 현실에서 마주치는 다양한 문제를 소프트웨어로 개발하여 해결할 수 있는데, 이 문제에 대한 영역을 도메인이라 한다. 예를들어 우리가 옷을 편리하게 구매하고 싶다면 핸드폰으로 주문할 수 있을 것이다. 옷을 편리하게 주문하는 것이 하나의 도메인일 것이다. 이 하나의 도메인은 여러 하위의 도메인으로 나뉘게 된다. 예를 들어 옷을 편리하게 주문하는 도메인은 주문 도메인, 상품 도메인, 회원 도메인, 결제 도메인, 배송 도메인들 다양한 하위 도메인의 유기적인 조합으로 이루어진다. 이런 하위 도메인은 직접 개발할 수도 있지만 다양한 ..
프로세스 프로세스는 프로그램이 실행시고 운영체제가 PCB를 부여해 준비상태에 즉 메모리에 올라간 것이다. 프로세스는 운영체제에 CPU 스케줄러에 의해 관리된다. CPU는 준비상태에 있다가 자신의 순서가 오면 CPU를 할당받게 되고 타임슬라이스 동안 혹은 입출력 인터럽트가 발생하기 전까지 열심히 작업한다. 작업이 완료되면 PCB가 제거되고 메모리에서 제거된다. 입출력이 발생하면 대기상태에 들어있다가 입출력 완료 인터럽트가 오면 다시 준비 상태로 간다. 작업이 끝나지 않으면 준비 상태로 돌아간다. 스레드 스레드는 위에서 프로세스가 CPU에서 동작하는 단위이다. 즉 프로세스는 하나이상의 스레드를 갖고 있으며 CPU는 스레드를 실행시키는 것이다. 스레드는 하나의 프로세스 내부에서 코드, 데이터, 힙 공간을 공유..
프로세스의 개요 프로세스의 개념 프로그램이란 어떤 데이터를 사용하여 어떤 작업을 할지 그 절차를 적어 놓은 것이다. 반면 프로세스는 작성한 프로그램을 실행에 옮긴다는 의미이다. 프로그램을 실행하게되면 프로그램을 메모리의 적당한 위치로 가져온다. 그와 동시에 PCB를 생성한다. 프로세스 실행을 세부적인 단계로 나눌 수 있다. 생성단계: 프로그램을 실행하여 생성된 PCB와 함께 메모리로 올라간다. 준비단계: 메모리에서 자신의 실행단계를 기다린다. 실행단계: 프로세스가 CPU를 점유한 상태로 프로그램이 진행된다. 완료단계: 실행단계에서 프로세스가 다 끝난상태로 PCB가 제거되고 메모리에서 내려간다. 대기단계: 프로세스가 실행단계에서 입출력이 발생한 상태로 인터럽트가 발생하면 준비단계로 이동한다. 휴식상태: 프..
컴퓨터의 기본 구성 하드웨어의 구성 CPU와 메모리 컴퓨터는 컴퓨터의 중요한 작업의 대부분을 맡아서 처리하는 필수장치 CPU와 메인메모리 그리고 그외의 부품인 주변장치로 나뉜다. 대표적인 주변장치로는 입력장치 출력장치 저장장치 등이 있다. CPU는 명령어를 해석하고 실행하는 장치 메모리는 작업에 필요한 프로그램과 데이터를 저장하는 장소로 바이트 단위로 분할되어 있으며 주소로 구분한다. 저장장치 저장장치는 크게 휘발성메모리인 메인 메모리와 비휘발성메모리인 하드 디스크가 있다. 메인메모리는 전기신호로 데이터를 주고 받기 때문에 속도가 빠르며 하드디스크에서 일부 데이터를 가져와 CPU에서 처리할수 있게 해준다. 메인 메모리는 RAM이라 불리며 Random Acess Memory이다. RAM의 의미는 저장공간에..
문제인식 Book { @Id val id : String val title: String val author: User } User { id: String name: String } 대충 다음과 같은 구조에서 mongodb에서 Aggregation한뒤 Book class로 Mapping해서 data를 가져오면 전부 잘 가져와지는데 id 만 null로 나온다. 참고로 spring data mongo는 기본적으로 id property strategy를 _id로 지정한다. 웃긴게 mongoTemplate할때는 id를 넣어도 잘되는데 @Query로 query는 무조건 _id를 넣어줘야한다 id 관련해서 버그가 참 많은 것 같다. 해결 방법 1 User의 id 에 @Field("id") 를 명시하기 해결 방법 2..
운영체제의 시작 운영체제는 본래 미사일의 탄도를 계산하기 위해 개발되었다. 계산을 위해 개발 되었지만 성능을 개선시키기 위해선 새롭게 제작해야하는 기계와 달리 소프트웨어나 하드웨어의 확장/변경을 통해 성능을 개선시킬 수 있고 특히 프로그래밍이 가능 하기 때문에 컴퓨터라고 불린다. 운영체제란 컴퓨터는 크게 하드웨와 소프트웨어로 구성된다. 하드웨어란 컴퓨터 시스템이 작동하는데 필요한 물리적 구성 요소이다. 소프트웨어란 하드웨어를 제어하여 원하는 작업을 수행시키는 명령어의 모음이다. 소프트웨어는 응용 소프트웨어와 시스템 소프트웨어로 나눌 수 있다. 응용 소프트웨어는 특정 작업을 위해 사용하는 프로그램이다. 시스템 소프트웨어는 컴퓨터 하드웨어와 응용 소프트웨어를 관리하기 위한 소프트웨어로 운영체제와 유틸리가 있..