스터디/CS 스터디 (24.06-24.11) 26

OS : 뮤텍스(Mutex), 세마포어(Semaphore)

* 뮤텍스(Mutex), 세마포어(Semaphore): 동기화 매커니즘으로, 다중 프로세스/스레드가 공유자원에 접근시에 발생할 수 있는 문제 해결에 사용됨. 1. 뮤텍스 (Mutex : Mutual Exclusion)단일 스레드만 특정 자원에 접근하게 해주는 잠금 기법, 잠금(LOCK) 을 소유한 스레드만 해제(UNLOCK)이 가능하다.한 번에 하나의 스레드만 자원에 접근 가능해서 동시 접근 충돌을 방지해줌.상호 배타적이라 다른 스레드는 대기해야함. OS level에서 객체로 관리됨.관리가 어렵고, 오버헤드 가능성이 있음.임계구역에 의해 구현된다.db의 일관성을 유지하기 위해 사용된다.lock연산, unlock 연산으로 이뤄짐.  2. 세마포어 (Semaphore)공유 자원에 접근 할 수 있는 최대 스레..

네트워크 : 네트워크 분류(PAN/LAN/MAN/WAN), DNS

1. 네트워크 분류1) PAN (Personal Area Network) 개인이 사용하는 장치들 간의 네트워크아주 좁은 범위(몇 미터 이내)에서 스마트폰, 태블릿, 노트북, 스마트워치 등 개인 소유의 장치들이 서로 연결되어 통신하는 네트워크Bluetooth나 USB를 통해 연결ex) 스마트폰과 무선 이어폰을 블루투스로 연결, 컴퓨터에 USB로 키보드와 마우스를 연결하는 것. 2) LAN (Local Area Network)국소 영역 네트워크, 제한된 지역에서 주로 사용ex) 사무실, 학교, 가정 같은 곳에서 사용하는 Wi-Fi 이더넷 케이블(유선방식)이나 Wi-Fi(무선)를 통해 연결 속도가 빠르고 비용이 저렴  3) MAN (Metropolitan Area Network)도시 또는 대규모 지역 내에서 ..

네트워크 : CDN, 세션 인증 방식(Cookie, Session) & 토큰 인증 방식(JWT)

1. CDN (Content Delivery Service) 지리적 제약 없이 전 세계 사용자들에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 기술웹 콘텐츠를 빠르고 효율적으로 전 세계 사용자들에게 제공하기 위한 분산서버 네트워크CDN은 서버와 사용자 사이의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화웹사이트의 정적 콘텐츠(이미지, CSS, 자바스크립트 파일 등)를 다양한 지역에 위치한 여러 서버에 저장하고, 사용자에게 가장 가까운 서버에서 해당 콘텐츠를 제공하여 로딩 시간을 줄임→ 트래픽 분산 및 대기 시간 감소 효과가 있어, 특히 글로벌 서비스를 제공할 때 유용ex) 넷플릭스 : 자체 CDN을 구현구독자의 절반 이상이 미국 외의 지역에 분포하고 있고, 서비스 범위가 전 세계에 걸쳐있으므로..

OS : 동기와 비동기(Sync/Async), Blocking/Non-Blocking

1. Sync / Async '요청한 작업에 대해 완료여부를 신경써 작업을 순차적으로 처리할 지' 에 대한 관점-> 출력순서에 초점. 1) Synchronous : 동기작업이 실행 될 때, 해당 작업의 완료까지 기다림.끝나기 전에는 다른 작업 수행x - 장점: 설계 간단, 직관적- 단점: 결과 반환까지 대기해야 함. ex) console.log("1st");console.log("2nd");console.log("3rd"); 출력 순서 :1st -> 2nd -> 3rd 2) Asynchronous :비동기작업이 실행되고, 완료되는 동안 다른 작업 수행 가능-> 작업 완료가 되지 않아도 응답을 기다리지 않고 다른 작업을 수행.결과는 작업이 완료되면 반환. - 장점: 자원을 효율적으로 사용- 단점: 동기보다..

자료구조 : set과 map

1. set: 중복되지 않는 고유한 값을 저장하는 자료구조 // js : 중복을 허용하지 않으며, 삽입 순서대로 데이터를 유지let set = new Set([1, 2, 3]);set.add(4); //python : 중괄호 {}로 생성하며, 중복을 허용하지 않음s = {1, 2, 3} s.add(4) //c++ : 정렬된 순서로 저장되며 중복을 허용하지 않음#include #include std::set s = {1, 2, 3}; s.insert(4); // java : HashSet, LinkedHashSet, TreeSet을 통해 다양한 특성을 가진 Set을 제공Set set = new HashSet();set.add(1);  2. map키-값 쌍을 저장하는 자료구조로, 각 키는 고유하며 값은 중복..

데이터베이스 : DBMS의 종류(RDBMS와 NOSQL), CAP 이론

- DBMS의 종류1) RDBMS(Relational Database Management System): 관계형 데이터베이스 관리 시스템 데이터를 테이블(행과 열 구조) 형태로 저장, 각 테이블 마다 고유한 스키마를 가짐.데이터간의 관계를 명확히 정의SQL사용해 데이터 관리일관성, 무결설, 복구 가능성등의 특성을 중시하는 트랜잭션(ACID) 지원ex) MySQL, Oracle, Microsoft SQL Server + 장점 : 복잡한 쿼리를 수행할 수 있는 강력한 SQL언어 지원데이터의 무결성과 일관성 유지가 중요할 때 적합 - 단점 : 대규모 데이터 처리하거나 복잡한 관계 처리시 성능 저하스키마 변경이 어려움 => 복잡한 트랜잭션, 일관성 중요한 경우 적합 2) NOSQL: 비관계형 데이터베이스 관리 ..

데이터베이스 : 절차형 SQL(프로시저, 사용자 정의 함수, 트리거)

- 절차형 SQL (Procedural SQL) : SQL언어를 사용해 데이터베이스 작업을 수행하는데 필요한 절차적 논리를 포함할 수 있는 기능 - 특징일반적인 프로그래밍 언어 형식(변수 선언, 조건문, 반복문 등을 사용)DBMS 엔진에서 실행단일 SQL문으로 처리가 어려운 연속적 작업 처리 가능로직 캡슐화-> 반복적인 데이터베이스 작업을 효율적으로 수행하여 소프트웨어 개발 생산성을 높임주로, 프로시저 / 사용자 정의 함수(UDF) / 트리거와 같은 형태로 구현 1) 프로시저 (Stored Procedure): 데이터베이스 내에 저장된 코드블록, 일련의 쿼리들을 하나의 함수처럼 실행하기 위한 query집합 - 특징미리 정의된 SQL명령어 & 절차적 코드 포함반복적 작업, 복잡 연산 자동화에 유용 (자주 ..

알고리즘 : MST (크루스칼, 프림)

* MST(Minimum Spanning Tree): 최소 신장 트리 무방향 그래프의 간선들에 가중치가 주어진 경우,여러 신장 트리중에 간선들의 가중치 합이 최소인 신장트리-> 크루스칼, 프림으로 구할 수 있음. * 신장트리: 무방향 그래프 G(V,E)에서 E에 속한 간선들로,사이클을 포함하지 않으면서 모든 정점 V를 연결한 부분 그래프 - 특징 : n개의 정점 갖는 그래프에서 신장트리에 속하는 간선 수는 n-1개(n은 정점), 사이클을 이루지 않음.  1) 크루스칼(Kruscal): greedy 하게(결정의 순간마다 최선의 결정을 반복하여 최종적인 해답에 도달) 모든 정점을 최소 비용으로 연결 - 특징 : 간선을 가중치 기준 오름차순 정렬하고, 이 간선들을 순서대로 모든 정점들이 연결될 때까지 반복 -..

네트워크 : HTTP 상태 코드

* HTTP 상태 코드: 5개의 클래스로 분류클라이언트의 요청에 대한 서버의 응답 상태를 나타내는 3자리 숫자상태코드 첫 숫자(5XX의 5)가 응답의 클래스를 정의함1XX정보성 응답서버가 클라이언트의 요청을 받았으며, 요청 처리를 계속 진행 중2XX성공요청 받기 성공3XX리다이렉션요청 완료 위해 클라이언트의 추가 작업이 필요4XX클라이언트 오류요청 문법 오류등으로 인한 요청 처리 불가5XX서버 오류서버가 유효한 요청에 대해 실패 * 상태 코드 종류1) 1XX (정보성 응답)- 100 : Continue클라이언트가 서버에게 요청을 보내는 중간에, 요청의 일부만을 먼저 보내고, 나머지 요청을 계속 보내도 괜찮은지 서버에게 물어볼 때 100을 보내주면 클라이언트가 나머지 부분을 계속해서 보낼 수 있음 - 10..

컴퓨터 구조 : 컴퓨터 시스템 설계 방식(폰노이만 구조/하버드 구조)

* 폰노이만 구조 / 하버드 구조: 컴퓨터 시스템 설계 방식으로, 메모리와 프로세서의 상호작용을 정의. * 차이 : 프로그램 실행에 필요한 명령어와 데이터 보관하는 방법(폰노이만 구조는 같이 보관하고, 하버드 구조 는 따로 보관함) * CPU 설명 : https://kmmk808.tistory.com/194 컴퓨터 구조 : 컴퓨터의 3대 구성요소, CPU의 동작 원리1. 컴퓨터의 3대 구성요소 * 컴퓨터 시스템하드웨어CPU, 메모리, I/O장치소프트웨어OS, 시스템 소프트웨어, 응용 소프트웨어  * 컴퓨터의 3대 요소1) CPU(중앙 처리 장치) : 두뇌 역할,명령 해석하kmmk808.tistory.com  1) 폰노이만 구조, 1945 - 도입 배경 : 일반적 목적 컴퓨팅, stored programm..