| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- kotiln functional interface
- java 1238
- Java Call By Refernce
- javav 1676
- 자바 백준 팩토리얼 개수
- spring mongoTemplate
- 안정해시
- 백준 특정한 최단 경로
- Claude Intelij 연결
- Spring ipfs
- java 파티
- spring mongoTemplate switch
- java 백준 1509
- 백준 연결요소 자바
- kotiln const val
- 익명 객체 @transactional
- rabbitmq 싱글톤
- ipfs singletone
- java 팩토리얼 개수
- go
- nodejs rabbitmq
- 백준 2252 줄세우기
- 자바 1676
- kotiln const
- mongodb lookup
- spring mongodb
- spring mongodb switch
- 백준 1504 java
- java 1509
- ipfs bean
- Today
- Total
목록분류 전체보기 (199)
공부 흔적남기기
localField와 foreignField를 사용foreignField에 index를 생성해서 사용pipeline을 통해서 match를 걸어 사용할 경우 $expr을 사용해야하기 때문에인덱스가 사용되지 않는다.from collection에서 가져올 데이터가 적다면pipeline에 $project를 사용하고 해당 데이터들에 대해 인덱스를 생성해서 사용이런 방식으로 사용하면 collection을 읽지않고 covering Index를 사용해서 데이터를 가져오기 때문에 효과적인 $lookup 사용이 가능하다.Good ExampleBoards collection 에 userId와 userName에 index가 각각 걸려있음coveringIndex를 사용하기 때문에 explain 해보면"totalDocsExami..
문제의 요점은 n이 커지면서 팩토리얼의 값을 변수에 저장할 수 없다는 것이다.그럼 고민해봐야할게 어떨 때 숫자가 0으로 끝나는지 고민해봐야한다. 차근 차근 10부터 50, 100, 150, 1500, 10000, 0으로 끝나는 숫자들을 확인해보면 1*10, 5*10, 15*10, 15*10*10, 10*10*10*10 인것을 알 수 있다. 즉 문제의 답은 해당 숫자에 10이 얼마나 들어가 있는지 확인해보면 된다, 그럼 각 반복문을 돌면서 10으로 나눠 떨어진다면 10으로 계속 나눠주고 count를 해주면 될까? 안된다. 왜냐하면 10은 2 * 5의 구성으로도 가능하기 때문이고 팩토리얼은 연속된 숫자들의 곱으로 이전 값에 영향을 받는다, 따라서 해당 숫자가 10으로 나눠 떨어질때까지 반복하고 5로 나눠질때..
흔히 우리가 홈 네트워크 즉 집에서 인터넷을 구성할 경우 공유기를 사용한다. 보통 공유기는 L3 스위치로 L1(데이터 전송), L2(MAC 주소 구별), L3(IP 구별)의 기능을 모두 가지고 있다. 이러한 공유기는 더미허브 그리고 L2스위치의 기능을 포함하고 개선한 장치이다. 스위치는 더미허브(데이터 전송)의 기능을 포함하고 있다. 즉 상위 스위치는 하위 스위치의 기능을 포함하며 강력한 기능을 제공한다. 그에 따라 가격도 급증한다. 더미허브는 유입된 데이터를 연결된 모든 포트에 전송하다. 따라서 보안에 취약하고 데이터 트래픽을 많이 차지해 더미라는 별명을 얻게 되었다. 이러한 단점을 해결한 것이 L2 스위치로 스위치 허브라고도 불린다. 스위치 허브는 MAC을 기반으로 데이터가 수신되면 각 포트의 MAC..
교착 상태 교착 상태의 개요 2개 이상의 작업이 동시에 이루어지는 경우 다른 작업이 끝나기만 기다리며 작업을 더 이상 진행 하지 못하는 상태를 교착 상태라고 한다. 아사 현상은 잘못된 프로세스 실행 정책으로 인해 프로세스가 실행되지 못하는 반면 교착상태는 여러 프로세스가 실행되다가 자연스럽게 이도저도 못하게 되는 상태이다. 따라서 교착상태가 발생하면 강압적으로 해결해야한다. 보통 교착 상태는 공유할 수 없는 자원을 사용할때 잠금을 사용할 때 주로 발생한다. 교착 상태 필요조건 교착 상태는 네가지 필요조건이 존재한다. 상호배제, 비선점, 점유와 대기, 원형대기 네 가지 조건을 동시에 만족해야 교착 상태가 발생한다. 상호배제: 한 프로세스가 자원은 다른 프로세스와 동시에 공유할 수 없으며 배타적인 자원으로 ..
프로세스 간 통신 프로세스 간 통신의 개념 프로세스 또는 스레드는 독립적으로 실행된다. 프로세스나 스레드가 협업을 하거나 병렬로 처리하기 위해서는 데이터를 주고받아야한다. 스레드는 하나의 프로세스 내부에서 실행되기 때문에 데이터를 주고 받는 것은 크게 어렵지 않다. 하지만 프로세스는 서로 공유하고 있는 부분이 없기 때문에 이를 새로 만들어서 통신해야한다. 운영체제는 프로세스 간 통신을 쉽게 할 수 있는 통신 방법을 제공하는데 이를 프로세스 간 통신(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의 의미는 저장공간에..