스터디 87

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명령어 & 절차적 코드 포함반복적 작업, 복잡 연산 자동화에 유용 (자주 ..

3.3 : 리액트 훅 (훅의 규칙, 사용자 정의 훅, 고차 컴포넌트)

1. 훅의 규칙- 최상위에서만 훅을 호출해야 함,- 훅을 호출할 수 있는 것은 리액트 함수 컴포넌트 / 사용자 정의 훅 뿐. 훅에 대한 정보 저장은 index와 같은 키를 기반으로 구현(객체 기반 링크드 리스트 형태)-> 순서에 큰 영향을 받음. 2. 사용자 정의 훅서로 다른 컴포넌트 내부에서 같은 로직을 공유하고자 할 때 사용리액트에서만 사용.이름 : use~값 반환 또는 부수효과 실행  ✔️ 리액트에서 제공하는 훅으로만 공통 로직을 격리할 수 있는 경우 사용.그 자체로 렌더링에 영향을 미치지 못하므로, 개발자가 원하는 방향으로 사용 가능(부수효과가 비교적 제한적)  3. 고차 컴포넌트(HOC : Higher Order Component)컴포넌트 자체의 로직을 재사용 하기 위한 방법리액트 아니더라도 j..

3.2 : 리액트 훅 (useRef, useContext, useReducer, useLayoutEffect,...)

5. useRef렌더링을 발생시키지 않고 변경 가능한 상태값을 저장 가능.DOM에 접근하고 싶을 때 주로 사용  💫 useRef와 useState와 차이? : useRef는 값이 변해도 렌더링을 발생시키지 않음또, 반환값인 객체 내부의 current로 값에 접근/변경 가능.  💫 useRef가 렌더링을 발생시키지 않는데, 왜 사용하는지?: 함수로 값을 선언하는 방식을 쓴다면, 컴포넌트가 렌더링 되지 않아도 값이 기본적으로 존재하게 되어 불필요한 값이 메모리에 존재하게 됨.또, 컴포넌트가 여러번 생성되는 경우에 컴포넌트에서 가리키는 값이 모두 동일한 이름.-> 컴포넌트 인스턴스당 하나의 값을 가지는 것이 일반적.  useRef를 사용하면, 컴포넌트가 렌더링 될 때만 생성되고,컴포넌트 인스턴스가 여러개여..

3.1 : 리액트 훅 (useState, useEffect, useMemo, useCallback)

1. useState함수 컴포넌트 내부에서 상태를 정의하고, 이 상태를 관리할 수 있게 해주는 훅아무런 값을 넘겨주지 않으면 초기값은 undefined반환값은 배열, 첫 번째 원소로 state 값 자체를 사용하고 두 번째 원소인 setState함수를 통해 해당 state값 변경 가능실제 리액트 코드에서는 useReducer로 표현되어 있음.  💫 useState를 사용하지 않고 상태값을 함수 내부에서 변수 사용해 관리하면 동작하지 않는 이유: 리액트의 렌더링은 함수 컴포넌트의 반환 결과물인 return 의 값을 비교해서 실행. 리액트의 함수 컴포넌트는 렌더링될 때마다 함수가 다시 실행 되고, 그 때마다 함수 내부에서 선언된 변수들은 매번 새롭게 초기화 되므로 렌더링이 발생할 때마다 해당 변수가 초기화되..