본문 바로가기

분류 전체보기

(644)
[OS/공룡책] Chapter 1. 서론 - 컴퓨터 시스템 구조 컴퓨터 시스템 구조 단일 처리기 시스템 - 코어는 명령을 실행하고 로컬로 데이터를 저장하기 위한 레지스터를 포함하는 구성요소이다. - 코어를 가진 하나의 메인 CPU는 프로세스의 명령어를 포함하여 범용 명령어 세트를 실행할 수 있다. - 단일 처리 코어를 가진 범용 CPU가 하나만 있는 경우 시스템은 단일 프로세서 시스템이다. 다중 처리기 시스템 - 일반적으로 각각 단일 코어 CPU가 있는 두 개 이상의 프로세서가 있다. - 주요 장점은 처리량 증가 => 그러나 N 프로세서의 속도 향상 비율은 N이 아니다. => 오버헤드가 발생하므로 - 가장 일반적인 다중 처리기 시스템은 각 피어 CPU 프로세서가 운영체제 기능 및 사용자 프로세스를 포함한 모든 작업을 수행하는 SMP(Symmetric multiproc..
80일차 - MongoDB Replica Set Replica Set - HA Solution Member [Client Application ---> Primary ---> Secondary] Primary - Read/Write 요청 모두 처리 - Write를 처리하는 유일한 멤버 - Replica Set에 하나만 존재할 수 있음 Secondary - Read에 대한 요청 처리 - 복제를 통해 Primary와 동일한 데이터 셋을 유지 - Replica Set에 여러 개 존재 가능 Fail-Over Primary가 이용 불가능해지면 선출 알고리즘에 의해 Secondary 중 하나가 Primary로 승격된다. Arbiter : 데이터를 들고 있지 않은, Primary 선출에만 참여하는 멤버(P-S-A 방식은 권장되지는 않음 => Secondary가 죽..
[OS/공룡책] Chapter 1. 서론 - 컴퓨터 시스템의 구성, 인터럽트, 저장장치 구조 컴퓨터 시스템의 구성 - 현대의 범용 컴퓨터 시스템은 하나 이상의 CPU와, 구성요소와, 공유 메모리 사이의 액세스를 제공하는 공통 버스를 통해 연결된 여러 장치 컨트롤러로 구성된다. - 일반적으로 운영체제에는 각 장치 컨트롤러마다 장치 드라이버가 있다. - 장치 드라이버는 장치 컨트롤러의 작동을 잘 알고 있고, 나머지 운영체제에 장치에 대한 일관된 인터페이스를 제공한다. 인터럽트(Interrupts) - 컨트롤러는 인터럽트를 통해 장치 드라이버에게 작업을 완료했다는 사실을 알린다. - 하드웨어는 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킬 수 있다. - 인터럽트는 운영체제와 하드웨어의 상호 작용 방식의 핵심 부분이다. - 각 컴퓨터 설계는 자신의 인터럽트 메커니즘을 가지고..
[OS/공룡책] Chapter 1. 서론 - 운영체제가 할 일 운영체제(Operating System) - 컴퓨터 하드웨어를 관리하는 소프트웨어 - 응용 프로그램을 위한 기반을 제공한다. - 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 수행한다. - 근본적인 책임은 자원들을 프로그램에 할당하는 것 운영체제가 할 일 - 컴퓨터 시스템 : 하드웨어 > 운영체제 > 응용 프로그램 > 사용자 - 운영체제는 다양한 사용자를 위해 다양한 응용 프로그램 간의 하드웨어 사용을 제어하고 조정한다. - 운영체제는 컴퓨터 시스템이 동작할 때 자원을 적절하게 사용할 수 있는 방법을 제공한다. - 운영체제는 다른 프로그램이 유용한 작업을 할 수 있는 환경을 제공한다. 사용자 관점(User view) - 대부분 사용의 용이성을 위해 설계 >>> 성능에 약간 신경을 쓰고 >>> (..
[Spring] 스프링 리소스, SpEL(Spring Expression Language) 스프링 리소스(Spring resource) https://yurison.tistory.com/454 76일차 - 스프링 리소스(Spring Resource) 스프링 리소스(Spring Resource) - 스프링 프레임워크에서 제공하는 정적 리소스 관리 기능 - 클래스패스 상의 리소스나 웹 애플리케이션의 상대 경로에 있는 리소스를 쉽게 찾을 수 있다. - 리소스의 yurison.tistory.com SpEL(Spring Expression Language) - 스프링 표현 언어(SpEL)는 짧고 간단한 문법을 통해 필요한 데이터나 설정 값을 얻어올 수 있게 하는, 특별한 형태의(표현식에 가까운) 간편한 언어 - 표현 언어는 스프링 뿐만 아니라 웹 언어에서 많이 존재한다. - 주로 @Value("${co..
79일차 - MongoDB MongoDB의 기본 데이터베이스 admin - 인증과 권한 부여 역할 - 일부 관리 작업을 하려면 admin DB에 대한 접근이 필요함 local - 모든 mongod instance는 local DB를 소유한다. - oplog와 같은 replication 절차에 필요한 정보를 저장 - startup_log와 같은 instance 진단 정보를 저장 - local DB 자체는 복제되지 않는다. config - sharded cluster에서 각 shard의 정보를 저장 RDBMS와의 차이점 Table -> Collection Row -> Document Column -> Field - Database => Collection => Document => Field Collection의 특징 - 동적 스키마..
코딩테스트에서 많이 사용되는 dynamic programming(다이나믹 프로그래밍, 동적 계획법)의 개념과 언제 어떻게 사용할 수 있는지 두 가지 예제를 통해 살펴봅니다~ https://youtu.be/GtqHli8HIqk Optimization problem - 문제를 해결하는 최적의 답을 찾아야 하는 문제 - optimal solution은 하나 이상일 수 있다. - maximum 혹은 minimum value를 가지는 솔루션을 찾는 문제들이 주를 이룬다. - ex) 가장 빨리 도착하는 경로의 소요 시간은? 언제 주식을 사고 팔 때 가장 수익이 높은지? 다이나믹 프로그래밍(DP, Dynamic programming) - optimization problem을 해결하는 전략 중 하나 - subproblem(s)의 optimal solution(s)을 활용해서 문제의 optimal solution을 찾는 방식 - 겹치는(overlapping) subproblems은 한 번..
78일차 - Data Binding Data Binding Converter Interface @GetMapping("/") public PersonResponse getPerson(@RequestHeader("person") Person person) { ... } /// @Component public class PersonConverter implements Converter { @Override public Person convert(String source) { return objectMapper.readValue(source, Person.class); } } public class Person { private String name; private int age; } S(Source) ---> T(Target)으로 변환해준다...