리눅스는 어떤 CPU 스케쥴링 알고리즘을 사용할까?
·
CS/운영체제
1. 왜 이걸 알아야 할까?백엔드 서버, 컨테이너, 마이크로서비스를 운영할 때 시스템이 느려지는 원인을 파악하려면 CPU가 어떻게 태스크를 선택해서 실행하는지 알아야한다.top, htop, pidstat, pref 등 시스템 모니터링 도구에서 나오는 load average, context switch, CPU 사용률은 결국 스케줄링 알고리즘의 결정 결과값이다.멀티스레딩, 병렬처리, 비동기 서버 개발 시 스케줄링 정책의 특성을 모르면 CPU 낭비, starvation, 성능 저하 발생이 이어진다.📌 즉, CPU 알고리즘은 성능 디버깅, 병렬 시스템 설계, 실시간 서비스 운영을 위해 꼭 알아야 한다.2. 어떤 알고리즘이 있고, 리눅스에는 어떤걸 쓸까?이해의 출발을 위해 고전 알고리즘을 알아보자알고리즘특징F..
[암호화] 웹 보안은 SSL!
·
보안
1. SSL(Secure Socket Layer)이란?인터넷 상에서 데이터 통신을 암호화하기 위한 보안 프로토콜입니다.→ 현재는 SSL이 진화한 TLS(Transport Layer Security)가 사용되고 있지만, 실무에서는 여전히 SSL이란 표현을 널리 사용합니다.2. SSL의 목적, 암호화!제 3자가 내용을 볼 수 없도록 암호화하는 기밀성, 전송 중 데이터가 변조되지 않았는지 확인하는 무결성, 서버 또는 클라이언트의 신원을 확인하는 인증이 있습니다.3. SSL 동작 방식 요약2종류의 키를 사용 비대칭키와 대칭키를 혼합하여 사용합니다.암호 방식특징사용 이유비대칭키 암호화느림, 공개키로 암호화 → 비밀키로 복호화대칭키 전달 시 사용대칭키 암호화빠름, 같은 키로 암복호화이후 데이터 통신에 사용 즉, 비..
[암호화] 대칭키란?
·
보안
1. 대칭키란?같은 키로 암호화와 복호화를 수행하는 방식입니다.속도는 빠르고 구현이 간단하지만, 키가 노출될 경우 모든 통신이 해독 가능하다는 보안상 리스크가 있습니다.2. 대칭키를 이용하는 방법단순하게 대칭키만을 사용해서 사용하지 않고 흔히 비대칭키와 혼합해서 사용됩니다.방식 1: RSA 기반(TLS 1.2 이하)1. 클라이언트는 서버 인증서를 받고 → 공개키를 추출2. 브라우저가 임의로 세션키(대칭키)를 생성3. 이 세션키를 서버의 공개키로 암호화해서 전송4. 서버는 자신의 비밀키로 복호화 → 세션키 확보 5. 이후 통신은 이 세션키(대칭키)로 암호화 진행 📌 이 방식은 RSA를 사용해 클라이언트가 대칭키를 생성하고 서버의 공개키로 암호화하여 전송하는 구조이며, 서버는 비밀키로 복호화하여 대칭키를 ..
UUID(Universally Unique Identifier) 버전과 사용법
·
보안
전 세계적으로 유일한 식별자를 생성하기 위한 표준 형식입니다.업무에 적용해보자면, “다른 시스템과 충돌 없이 고유한 ID를 만들 수 있는 규격”입니다.UUID는?분산환경에 걸쳐 ID 충돌 없이 식별자를 생성하기 위해 나타났습니다. (멀티 스레드, 멀티 프로세스 등등)특징으로는 126비트(16바이트)의 길이로 표기되며 32개의 16진수와 하이픈(-)의 조합 표현됩니다.예) 12341234-1234-1234-1234-123412341234특성상 전역적으로도 고유성을 띔으로 중앙 서버 없이도 가기 시스템이 독립적으로 ID 생성이 가능하게 되었습니다.대표적으로 DB PK, 분산 시스템 메시지 ID, 세션 토큰, 객체 식별자 등 다양하게 사용됩니다.UUID 버전이 있는데…버전별 생성 방식이 다름으로 레거시를 조심..
[알고리즘] DFS(Depth-First Search, 깊이 우선 탐색) 문제 풀이 가이드
·
CS/알고리즘 & 자료구조
개념DFS(Depth-First Search,깊이 우선 탐색) 는 그래프나 트리와 같은 자료구조에서 탐색을 진행할 떄 사용하는 대표적인 알고리즘입니다.특정 노드를 시작점으로 잡고 최대한 깊은 경로까지 탐색하다가, 더 이상 탐색할 곳이 없으면 백트래킹을 통해 돌아오며 탐색하지 않은 경로를 다시 탐색합니다.즉, 깊게 먼저 들어가며 탐색하는 방식입니다.DFS의 핵심 원리하나의 노드를 선택해 방문한 후, 인접한 노드를 따라 갈 수 있는 곳까지 깊이 들어갑니다.더 이상 이동할 곳이 없으면 이전 노드로 돌아와서 다시 탐색을 시작합니다.방문한 곳을 기록해, 이미 방문한 노드는 재탐색하지 않습니다.즉, “한쪽 방향 끝까지 먼저 파고든다”라는 생각하면 직관적으로 이해할 수 있습니다.DFS 탐색 순서 예시 1 (..
[알고리즘] 슬라이딩 윈도우 풀이 가이드
·
CS/알고리즘 & 자료구조
개념창문을 한칸 씩 이동해서 문제가 요구하는 조건을 체크하는 것입니다.가이드 순서는 아래와 같습니다.윈도우에 담을 기존 원소(데이터)를 확인합니다.윈도우의 left, right 포인터를 0부터 시작합니다.left는 윈도우의 왼쪽 끝, right는 왼도우의 오른쪽 끝을 나타냅니다.조건에 따라 시작 지점은 변경합니다.right를 하나씩 증가시키면서 배열을 순회합니다.right가 증가할 때마다 기존 데이터를 기반으로 새로운 원소(데이터)를 반영합니다.윈도우에 추가된 원소를 문제의 조건에 맞춰 처리합니다.left ~ right를 순회해서 처리합니다.예 빈도수 계산, 함계 계산, 최댓값/최솟값 업데이트 등문제의 조건을 벗어나면(right 로직 마지막) 조건을 만족할 때까지 left 포인터를 오른쪽으로 이동시킵니다..
단방향 암호화(해시 알고리즘)
·
보안
단방향은 왜 해싱을 사용할까? 해싱은 복호화가 불가능한 방식이 때문에 사용하는 것입니다.단방향 해싱의 특징입력값을 일정한 길이의 공전된 값으로 변환하여 DB컬럼 길이를 일정하게 유지가 가능합니다.복호화가 불가능하므로 원본으로 돌릴 수 없기에 데이터 탈취해도 무의미 합니다.항상 같은 입력값은 항상 같은 출력값을 나옵니다. 그래서 이러한 입력에 대한 출력 테이블 있으면 해킹이 될거 같은데라고 생각할 수 있습니다. 그래서 레인보우 테이블이란 데이터 집합으로 보안에 문제가 발생한 적이 있었죠… 이후에는 salt 라는 기법으로 이 방법을 해결합니다.해시로 저장해야 할까?비밀번호 등 복호화하지 않아야 할 데이터입니다. 즉, 누가 탈취해도 알 수 없기에 굉장히 안정적입니다. 예로 앱의 패스워드가 해싱을 적용한다면 앱..
암호화(Encryption)에 대해서
·
보안
암호화는 크데 2가지 범주로 나뉘며, 각 방식의 목적와 사용법이 다름니다.암호화란?암호화(Encryption)란, 민감한 데이터를 보호하기 위해 알 수 없는 형태로 변환하는 보안 기술입ㄴ디ㅏ. 권한이 없는 사용자는 용을 이해할 수 없으면, 복호화 키 없이는 원래 데이터로 되돌릴 수 없습니다.암호화의 분류구분설명키 사용 방식주요 특징사용 예단방향 암호화 (해싱)복호화 불가능한 암호화없음 (키 없음)입력 → 암호값만 생성비밀번호 저장양방향 암호화복호화 가능한 암호화키 사용 (공개/비공개)암호화 ↔ 복호화 가능 단방향 암호화(해싱, Hashing)단방향 암호화는 해싱 기반으로 입력값에 대해 고정된 크기의 해시값을 생성하는 방식으로 SHA-256, SHA-516, bcrypt, PBKDF2 etc… 이 있습니다..
IoC와 DI에 대해서
·
SW 공학 & 프로그래밍 언어/SW 방법론
IoC(Inversion of Control, 제어의 역전)와 DI(Dependency Injection, 의존성 주입)는 객체 지향 설계에서 객체 간의 결합도를 낮추고 유연한 구조를 만들기 위한 핵심 개념. Spring Framework 등 OOP 진영의 현대 프레임워크 기반 철학이기도 합니다.IoC (Inversion of Control) - 제어의 역전전통적 방식에서는 개발자가 필요한 객체를 생성하거나 조작했습니다. IoC 방식에서는 객체의 생성과 생명주기 관리 권한을 외부(컨테이너)에 위임합니다.즉, “객체 제어권”이 개발자에서 프레임워크로 “역전”되는 것입니다.IoC 예시// 전통 방식 (제어권 있음, 개발자)Service service = new Service();Controller contr..
알고리즘 초보 탈출: DP(동적계획법)을 명확하게 이해하는 방법
·
CS/알고리즘 & 자료구조
알고리즘을 처음 공부할 때, 많은 사람들이 어려워하는 개념이 바로 "동적계획법(DP)"입니다. 이 글에서는 DP를 어떻게 접근하고, 어떤 기준으로 적용할지 명확히 이해할 수 있도록 안내하겠습니다. 📌 동적계획법(DP)이 어려운 이유DP는 문제를 작은 문제로 나누고, 그 결과를 활용하여 큰 문제를 해결하는 방식입니다. 하지만 처음부터 DP가 적용된다는 것을 떠올리기 쉽지 않죠. 문제를 보면 막막하게 느껴지기 때문입니다.📌 DP를 명확히 적용하는 3가지 기준다음의 기준을 보고 DP 적용 여부를 쉽게 판단해보세요.반복되는 부분 문제가 있는가?배수, 비율 등 간단한 규칙으로 최적이 가능한가? (그리디로 해결 가능)작은 문제의 해답을 큰 문제에서 활용할 수 있는가? (점화식 판단)이 기준을 충족하면 DP로 접..