전체 글

전체 글

    프로세스와 스레드 + 멀티 스레드

    우선 프로세스, 스레드를 알아보기 전에 프로그램에 대해서 인지를 해야합니다. 프로그램이란, 어떤 작업을 위해 실행할 수 있는 파일을 말합니다. 자세하게, 프로그램은 보조기억장치에 존재하며 실행되기를 기다리는 명령어와 정적인 데이터의 묶음이라고 할 수 있습니다. 즉, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말하고, 여기서, “메모리에 올라가 있지 않은” 은 아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않아서 아직 실행되지 않고 가만히 있는 정적상태라는 것을 의미합니다. 프로세스 프로그램을 실행하는 순간 *.exe 해당파일은 컴퓨터 메모리에 올라가게 되는데, 이 상태를 동적인 상태라고 합니다. 이상태의 프로그램을 프로세스라고 합니다. 즉, 프로세스는 ..

    SQL 과 NoSQL

    SQL Structured Query Language 구조화된 쿼리언어로 SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDMS)에서 데이터를 저장, 수정, 삭제 및 검색할 수 있습니다. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. 데이터는 관계를 통해 여러 테이블에 분산된다. 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정의된다. 따라서 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 즉, 스키마를 수정하지 않는 이상은 정해진 구조에 맞는 레코드만 추가가 가능한 것이 관계형 데이터베이스의 특징 중 하나다. 덕분에, + 하나의 테이블에서 중복 없이 하나의 데이터만을 관리하기 때문에 다른 테이블에서..

    SQL Injection

    예를 들어 영화를 검색할 수 있는 웹 사이트가 있다고 했을 때, 사이트에는 유저가 검색어를 입력하도록 요청하는 양식이 있을 것입니다. 이 검색어는 영화에 대한 데이터베이스를 검색하는 SQL 쿼리를 작성하는 데 사용될 것 입니다. 하지만 만약 사용자 입력의 유효성을 제대로 검사하지 않는 경우 누군가가 데이터베이스에서 암호나 신용 카드 번호와 같은 중요한 데이터를 검색하는 방식으로 SQL 쿼리를 수정하는 악의적인 공격이 있을 수 있습니다. 즉, SQL injection은 공격자가 웹 사이트의 SQL 문에 악성 코드를 삽입하고 데이터베이스의 중요한 정보에 무단으로 엑세스하는 사이버 공격유형을 말합니다. 공격 종류 ☑ Union-based “UNION” 연산자(두 개 의 쿼리문에 대한 결과를 통합해서 하나의 테..

    교착상태 (Deadlock)

    데드락(Deadlock) 시스템 자원에 대한 요구가 뒤엉킨 상태로 자세하게는, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 말하며 데드락(Deadlock) 이라고도 말합니다. 데드락이 발생하지 않으려면 교착상태 발생의 필수총분조건을 인지해야 합니다. 예방기법(Prevention) = 데드락 발생조건 ☑ 상호배제 Mutual Exclusion 한 번에 여러 프로세스가 공유 자원을 사용할 수 없을 경우 적어도 하나의 자원은 비공유 모드로 유지되어야 합니다. 즉, 한 번에 둘 이상의 프로세스에서 엑세스할 수 없다는 것을 말합니다. ☑ 점유와 대기 Hold and Wait 실행에 필요한 자원을 프로세스가 실행되기 전 한꺼번에 요구하고 ..

    트랜잭션

    데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위로 여기서 데이터베이스의 상태 변화는 SELECT, UPDATE, INSERT, DELETE 와 같은 행동으로 질의어(SQL)를 이용하여 데이터베이스에 접근 하는 것을 의미 여기서 작업의 단위는 질의어 한문장이 아닌 다시말해, 트랜잭션은 데이터베이스의 상태를 변화시키는 기능을 수행하기 위한 하나 이상의 질의문을 모아 놓은 하나의 작업 단위를 뜻함 트랜잭션은 ACID라는 특성을 가지고 있음 ACID 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안전성을 보장하기 위해 필요한 성질로 크게 4가지로 구분됨 1) Atomicity ( 원자성 ) 트랜잭션이 안전성 보장을 위해 가져야 할 성질 중의 하나 트랜잭션을 구성하는 연산들이 모두 정상적으로 실행되거..

    정규화

    정의 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 함 다시말해, 데이터 정규화는 모든 필드와 레코드가 논리적으로 구성된 것으로 중복을 방지할 뿐만 아니라 관계형 데이터베이스를 보다 효율적으로 사용하도록 하는 방법 장점 + 데이터베이스 크기 감소 쿼리 단순화 유지 보수 용이 성능 향상 단점 - 릴레이션 분해로 인해 많은 조인(Join)연산이 발생하므로 질의에 대한 응답 시간이 느려질 수 있음 정규화 과정 정규화는 제 1정규화에서 제 5정규화 까지 있지만, 실무에서는 대체로 제 3정규화까지의 과정을 거침 제1 정규화 ( 1NF ) 속성(Attribute)의 원자성을 확보하고 원자값이 아닌 도메인을 분해 릴레이션에 속하는 속성의 속성 값이 모두 원자값(Atomic ..

    B+Tree

    기존의 B-Tree는 어느 한 데이터의 검색은 효율적이지만, B-Tree는 모든 데이터를 한 번 순회하는 데에는 트리의 모든 노드를 방문해야 하므로 이러한 단점을 개선시킨 자료구조가 B+Tree임 [자료구조] 그림으로 알아보는 B-Tree B트리는 이진트리에서 발전되어 모든 리프노드들이 같은 레벨을 가질 수 있도록 자동으로 벨런스를 맞추는 트리입니다. velog.io B+Tree 🔳 모든 key, data 가 리프노드 (leaf node) 에 모여있고, 리프노드가 아닌 노드에서는 자식 포인터만 저장함 (=리프노드를 제외하고 데이터를 저장하지 않음) > 하나의 노드에 더 많은 포인터를 가질 수 있기 트리의 높이가 더 낮아지므로 검색 속도를 높일 수 있음 반드시 특정 key에 접근하기 위해서 리프노드까지 가..

    Hash / Hash Table

    Hash 해시 함수(Hash function)에 의해 얻어지는 결과물로, 저장소(bucket) 에서 값(value)과 매칭되어 저장됨 해시의 특징 임의 길이의 데이터로부터 고정된 길이의 해시값을 계산 해시값을 고속으로 계산할 수 있음 일방향성을 갖기 때문에(단방향 암호화) 해시값으로부터 Key를 역산할 수 없음 Key가 다르면 해시값도 달라져야 함 (서로 다른 Key가 같은 해시값을 가지는 것을 '충돌'이라고 함) 그렇다면 해시 함수란? Hash function 임의의 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 것을 말하고, 매핑전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 데이터의 값을 해시값(Hash Value) 또는 해시 코드 매핑하는 과정 자체를 해싱(hashing)이..