본문 바로가기

전체 글143

[스프링부트] javax.persistence와 org.springframework.data.annotation의 차이 예전에 프로젝트를 진행하던 중 @Cacheable 적용에 애를 먹었던 적이 있습니다. 라이브러리 import를 잘못 설정했던 것인데 같은 어노테이션이라도 종류가 확연히 다르므로 이에 대한 인지를 분명히 해야 합니다. 그 때 당시 javax.persistence를 import 했었습니다. 그러나 이 라이브러리는 관계형 디비에 사용되는 것이라 Redis같은 NoSQL에 사용하면 안됩니다. 비슷한 예로 엔티티에서 @Id 어노테이션 사용시에도 import를 하실때 사용하는 데이터베이스 종류에 따라 다르게 import 해야합니다. javax.persistence.*: 관계형 DB에서 사용. org.springframework.data.annotation.*: JPA에 의해 지원되지 않는 Nosql이나 프레임워크에.. 2022. 3. 2.
[운영체제] CPU 스케줄링 CPU Scheduler, Scheduling Algorithm CPU Scheduling 단기 스케쥴링이라고도 한다. 단기 스케쥴러(CPU Scheduling)을 리마인드 해보자 메모리와 CPU 사이의 스케쥴링을 담당하는 것으로 어떤 프로세스를 실행(Running) 상태로 전환할 지 결정하는 것이다. 선점과 비선점 선점 (Preemptive) : 자리 뺏기 가능, 누가 앉아서 먼저 자리에 앉아서 작업하고 있는데 그게 끝나든 안끝나든 상관없이 자리를 뺏어서 내 작업 실행하기 즉, 새치기 가능한 방식 비선점 (Non-Preemptive) : 절대 안뺏기는 방식 즉, 새치기 절대 불가능 CPU Scheduing Algorithm First-Come, First-Served (FCFS) 먼저 온 놈 먼저 처리.. 2022. 3. 2.
[운영체제] 데드락 교착상태 개념과 조건 교착상태의 개념과 조건 교착상태(Deadlock)란? 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태. 한정된 자원을 여러 곳에서 사용하려고 할 때 발생한다. 교착상태 발생의 4가지 조건 교착상태가 발생하기 위해서는 다음의 네가지 조건이 충족되어야 하는데, 이 네가지 조건중 하나라도 충족되지 않으면 교착상태가 발생하지 않는다. 상-점-비-환 상호배제 : 자원은 한 번에 하나의 프로세스만 사용할 수 있어야 한다. 점유대기 : 이미 자원을 사용중인데, 다른 프로세스가 사용중인 자원을 사용하기 위해 대기하고 있는 상태의 프로세스가 존재해야 한다. 즉, 미리 줄 서있어야 한다. 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없다. 즉, 새치기 금지! 환형대기(순환대기).. 2022. 3. 2.
[운영체제] 스케줄러 Scheduler Scheduler 스케쥴러란? 시스템이 실행하고자 할 때 CPU를 프로그램에게 할당하는 과정 프로세스(작업) 실행을 위한 일종의 계획표다. 계획표의 종류는 3가지이다. Scheduling Queue(스케쥴링 큐)란? 스케쥴링을 위한 큐. 즉, 프로세스를 관리하기 위한 큐 Job Queue (Batch Queue): 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 존재하면서 CPU를 점유해서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O(Input, Output) 작업을 대기하고 있는 프로세스의 집합 스케쥴러의 종류 장기 스케쥴러, Job Scheduler *degree of multiprogramming의 제어 디스크와 메모리 사.. 2022. 3. 2.
[운영체제] 사용자 수준 스레드와 커널 수준 스레드 사용자 수준 스레드와 커널 수준 스레드 쓰레드는 뭐니? 프로세스 내 작업의 단위를 말함 하나가 될 수도 있고, 여러개(멀티쓰레드)가 될 수도 있음! 커널은 뭐니? 컴퓨터와 전원을 켜면 운영체제는 이와 동시에 수행된다. 또한, 소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 그 프로그램이 올라가 있어야 한다. 마찬가지로 운영체제 자체도 소프트웨어이기 때문에 전원이 켜짐과 동시에 메모리에 올라가야 한다. 하지만, 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심함 → 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라.. 2022. 3. 2.
[운영체제] Thread-safe란? Thread-safe 멀티 스레드 환경에서 여러 스레드가 같은 공유자원에 접근할때 의도한 대로 동작하는 것 Thread-safe하다라고 표현한다. 공유 자원 접근에 대한 임계 영역을 동기화로 제어해야 한다. - 상호배제라고 부른다. 동기화 방법은 뮤텍스, 세마포어가 있다. 2022. 2. 28.
[운영체제] 캐시 메모리 매핑, 교체, 지역성 캐시 메모리란 주기억장치에서 자주 사용하는 프로그램 or 데이터를 저장해 속도를 빠르게 하는 메모리 주기억장치와 캐시 기억 장치 사이에서 정보 옮기는 행위를 사상(매핑)이라고 함 매핑의 3가지 방법 직접 매핑: 메인 메모리를 여러 구역으로 분할하여 캐시 슬롯과 매핑 장점: 절차가 단순하고 신속 단점: 높은 캐시 미스율 연관 매핑: 메인 메모리의 각 블록이 캐시 어느 슬롯이던 적재 가능 장점: 지역성 높은 접근 시 캐시 적중률이 높다. 단점: 구현이 어려워 구현 비용이 상승한다. 집합 연관 매핑: 캐시와 메모리가 M대 1로 대응한다. 장점: 앞의 두 가지 매핑 방법의 장점을 수용 단점: 구현 비용이 비쌈 캐시 메모리 교체 알고리즘의 종류 Random - 교체될 페이지를 임의 선정 - 오버헤드가 적음 FIF.. 2022. 2. 28.
[대규모 시스템 설계] 대규묘서비스 설계시 고려 사항 주요 기법 요약 웹 계층을 무상태 계층으로 모든 계층에 다중화 도입 최대한 많은 데이터를 캐시 여러 데이터 센터 지원 정적 콘텐츠는 CDN을 통해 서비스 데이터 계층은 샤딩을 통해 규모 확장 각 계층을 독립적인 서비스로 분할 지속적 모니터링과 자동화 도구 도입 단일 서버 - 바닥에서부터 우선 모든 컴포넌트가 한 대의 서버에 연결된 시스템 설계를 한다. 1. 사용자는 DNS(Domain Name Server)를 이용하여 웹사이트에 접속합니다. 도메인 이름을 dns에 질의하여 IP 주소로 변환하는 과정을 거칩니다. 2. DNS 조회 결과로 IP 주소가 반환됩니다. 3. 해당 IP 주소로 HTTP 요청을 보냅니다. 4. 요청받은 웹 서버는 JSON 형식의 응답을 반환합니다. 데이터베이스 사용자가 늘면 한 대의.. 2022. 2. 27.
[운영체제] 멀티 프로세스와 멀티스레드 멀티 스레드 멀티 스레드 한 프로세스 내에서 여러 스레드를 두는 것 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 스택을 제외한 자원을 공유하기 때문에 자원의 효율성 증대 프로세스 생성 비용보다 스레드 생성 비용이 적다. 프로세스 간 컨텍스트 스위칭 시 오버헤드가 크지만 스레드는 메모리를 공유하기 때문에 자원 소모가 적다. 처리 비용 및 응답 시간 단축 프로세스 간 통신(IPC)보다 스레드 간의 통신 비용이 적다. 스레드 간의 전환 속도가 훨씬 빠르다. 멀티 스레드 사용 시 주의할 점 힙 영역을 공유하기 때문에 힙 영역 자원 사용 시 동기화 필수 동기화를 위한 락이 과도하게 사용되면 성능이 저하된다. 일부 스레드가 종료되면 프로세스 전체가 종료될 수 있다. 2022. 2. 25.
[운영체제] 프로세스와 스레드 차이 프로세스와 스레드의 차이 프로세스 현재 실행 중인 프로그램 메모리 위에 적재되어 cpu의 할당을 받을 수 있다. 동적 메모리인 힙을 할당받을 수 있다. 프로세스의 구조 text(code): 일반적인 코드 data: 변수 및 초기화된 데이터 stack: 임시 데이터(함수 호출 및 로컬 변수 등) heap: 코드 내에서 동적으로 생성되는 데이터 프로세스는 다른 프로세스의 자원에 접근할 수 없다. 역할에 따른 구분 사용자 프로세스 사용자 코드를 수행하는 프로세스 커널 프로세스 모든 메모리와 프로세스의 명령에 액세스할 수 있는 프로세스 실행 순서 제어 및 다른 프로세스의 접근 제어 사용자 프로세스 생성 프로세스의 상태 변화 New: 프로그램이 메인 메모리에 할당 Ready: 프로그램 초기화 등 모든 준비를 마친.. 2022. 2. 25.
[맥북] mx keys 밝기 조절 하는 법 mx keys mini의 키 배열은 f4, f5가 밝기 조절로 되어 있는데 기본 설정이 화면 밝기 조절이 아니라 백라이트의 밝기 조절로 되어 있습니다. 밝기 조절 세팅을 위해서는 로지텍 옵션을 다운 받으셔야 합니다. [로지텍 옵션 다운 링크] Logitech Options 커스텀 소프트웨어 다운로드 Logitech Options는 최적의 생산성과 독창성을 위해 마우스, 키보드 및 터치패드를 맞춤 설정하는 데 필요한 모든 기능을 제공합니다. www.logitech.com 실행하시게 되면 아래 화면이 나오게 됩니다. 키보드를 눌러주세요! F4 버튼을 눌러보시면 아마 BackLight down으로 설정 되었을 거에요. 요 부분을 눌러서 Brightness down으로 바꿔주시면 됩니다. 밝기 증가 버튼도 똑같.. 2022. 2. 25.
스프링 시큐리티 인증 필터 처리 스프링 시큐리티 처리 과정 스프링 시큐리티 인증 과정 1. 로그인을 하게 되면 AuthenticationFilter에 들어옵니다. 2. UsernamePasswordAuthenticationToken을 통해 유저의 로그인 정보를 만듭니다. 3. AuthenticationManager의 구현체인 ProviderManager가 AuthenticationProvider를 호출합니다. 4. UserDetailsServicesms UserDetails를 구현한 User 클래스를 받아 필터에 필터에 값을 전달합니다. 5. 필터는 받은 값을 SecurityContextHolder의 SecurityContext의 Authentication에 넣습니다. 6. 들어간 로그인 정보는 세션 기반 방식에서 로그인 인증을 수행할.. 2022. 2. 19.