이론공부25 Hash 충돌 회피 방법은 무엇이 있을까? Open Address 데이터를 삽입하려는 해시 버킷이 이미 사용중인 경우라면 다른 해시 버킷에 데이터를 삽입하는 방법이다. 데이터를 찾을때는 Linear Probing, Quadratic Probing 등의 방법을 이용한다. Separate Chaning에 비해 캐시 효율이 높다는 장점이 있어 데이터 개수가 적다면 효율이 좋다. 그렇지만 배열의 크기가 커진다면 캐시 효율이 낮아지기 때문에 장점이 사라진다. 데이터를 삭제할때 효율적이지 못하다는 단점이 있다. 저장된 데이터가 많아진다면 Separate Chaining 보다 느려진다는 단점이 있다. 해시 버킷을 채운 밀도가 높을수록 충돌이 발생할 확률이 높기 때문이다. 선형탐사 : 해시 충돌시 다음 버킷에 저장하는 방법이다. 이차 방정식 탐사 : 2차 방정.. 이론공부/알고리즘 2021. 10. 28. 블록킹/논블록킹, 동기/비동기 면접에서 자주나오는 질문중 하나이다. 또한 서비스를 만들다보면 해당 개념을 가지고 처리를 하는 경우가 생긴다. 비슷하면서도 비슷하지 않은 두개때문에 헷갈릴때가 많다. Blocking : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 Non-Blocking : 다른 주체의 작업에 관련없이 자신의 작업을 하는 것 Synchronous : 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작 Asynchronous : 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음 각각의 정의만 보면 매우 어렵다. 4가지 경우를 조합하여 각각의 상황을 확인해보자. Blocking / Synchronous 블록킹이기 때문에 제어권이.. 이론공부/운영체제 2021. 8. 23. 웹훅(Webhook)이란 무엇인가? 서비스를 만들다 보면 어디에서 무슨일이 일어나고 있는지 알아야 할때가 있다. 백엔드 개발자가 겪을 수 있는 예로는 CI/CD를 들 수 있다. 깃허브에 코드가 업데이트 되었는지 알고싶다면 어떻게 해야할까? 계속 요청을 보내서(polling 방식) 코드가 바뀌었는지 확인을 해야할까? 그렇다면 깃허브 서버에 부담이 늘어날 것이다. 또한 바뀌는 잠깐을 확인하기 위해서 계속해서 요청을 보내는 것 역시 매우 비효율적이다. 이러한 문제를 해결하기 위해 Webhook을 이용한다. Webhook이란 특정 이벤트가 발생하였을때 타 서비스 혹은 응용프로그램으로 알림을 보내는 기능이다. 즉, 깃허브에서 코드가 업데이트가 되었다면 CI/CD를 담당하는 Jenkins서버에 요청을 내고, Jenkins서버는 깃허브에서 코드를 가져.. 이론공부/네트워크통신 2021. 8. 23. OAuth란 무엇인가? OAuth OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. OAuth는 왜 사용해야 할까? OAuth가 나오기 전에는 모든 사이트를 이용할때마다 개인정보를 입력하여 회원가입을 해야했다. 그렇지만 보안적인 문제로 인하여 특정 사이트에 대한 신뢰성이 문제가 되었다. 이러한 문제를 해결하기 위해서 개인정보를 입력하지 않고 회원의 정보를 가져올 방법이 필요했고, 여러가지 방법이 나왔는데 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth 등이 있었다. OAuth는 위의 제각각인 방법을 표준화 시킨 인증방식이다. 인증방식 사진출처.. 이론공부/네트워크통신 2021. 8. 22. HTTPS란 무엇인가? HTTPS란 HyperText Transfer Protocol over Secure Socket Layer의 약자이다 HTTPS는 왜사용하는가? 외부에서 내가보낸 데이터를 훔처보지 못하게 하기위해서 사용한다. http통신에서는 평문통신을 하게되는데 이럴때는 외부에서 감청을 할 수 있게된다. 여기서 평문을 서버에서만 알아볼수 있도록 암호화 하는것이 https 이다. 어떻게 암호화를 하는것인가? 대칭키와 비대칭키를 이용한 암호화를 한다. 대칭키 : 암호화와 복호화 하는 방식이 같다. ex) 1 -> A, A->1 결국 대칭키를 전달하는 과정이 필요하기 때문에 문제점이 생긴다.(중간탈취) 비대칭키(공개키, 개인키) : 암호화와 복호화 하는 방식이 다른다. A키와 B키가 있다고 할때 A키로 암호화를 하면 B키로.. 이론공부/네트워크통신 2020. 10. 1. Index란 무엇인가? 인덱스(Index) 인덱스는 말 그대로 책의 맨 처음 또는 맨 마지막에 있는 색인이라고 할 수 있다. 비유를 그대로 가져와서 인덱스를 살펴본다면 데이터는 책의 내용이고 데이터가 저장된 레코드의 주소는 인덱스 목록에 있는 페이지 번호가 될 것이다. DBMS도 데이터베이스 테이블의 모든 데이터를 검색해서 원하는 결과를 가져오려면 시간이 오래걸린다. 그래서 칼럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어 두는 것이다. DBMS의 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데는 빠르지만 새로운 값을 추가하거나 삭제, 수정하는 경우 쿼리문의 실행 속도가 느려진다. 결론적으로 DBMS에서 인덱스는 데이터의 저장성능을 희생하고 대신 읽기 속도를 높이는 기능이다. Com.. 이론공부/데이터베이스 2020. 8. 25. 트랜잭션이란 무엇인가? 트랜잭션은 작업의 완전성을 보장해주는 것이다. 논리적인 작업셋을 모두 완벽하게 처리하거나 또는 처리하지 못할경우에는 원 상태로 복구하여 작업의 일부만 적영되는 현상이 발생하지 않게 만들어주는 기능이다.. 트랙잭션은 ACID라는 4가지 특성을 만족해야 한다. 원자성(Atomicity) 만약 트랜잭션 중간에 어떠한 문제가 발생한다면 트랜잭션에 해당하는 어떠한 작업 내용도 수행되어서는 안되며 아무런 문제가 발생되지 않았을 경우에만 모든 작업이 수행되어야 한다. 일관성(Consistency) 트랜잭션이 완료되면 언제나 일관성 있는 데이터베이스 상태로 변환한다. 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다. 고립성(혹은 격립성, Isolation) 각각의 트랜잭.. 이론공부/데이터베이스 2020. 8. 15. 인터넷은 어떻게 동작하는가? 출처 : https://developer.mozilla.org/ko/docs/Learn/Common_questions/How_does_the_Internet_work 인터넷은 어떻게 동작하는가? 인터넷은 웹의 핵심적인 기술입니다. 인터넷의 가장 기본적인 것은, 컴퓨터들이 서로 통신 가능한 거대한 네트워크라는 것입니다. developer.mozilla.org 면접을 준비하면서 많은 부족함을 느끼게 되었다. 그래서 처음부터 기초를 정리하기 위해 백엔드 개발자 로드맵을 보면서 하나하나 정리해 나가려고 한다. 요약 인터넷은 컴퓨터들이 서로 통신 가능한 거대한 네트워크이다. 인터넷은 1960년대 미 육군에서 기금한 연구프로젝트에서 시작되었다. 이후 1980년대에 많은 국립대학과 비공개 기업의 지원으로 공공의 기반.. 이론공부/네트워크통신 2020. 8. 12. HTTP는 무엇인가? 출처 : https://ko.wikipedia.org/wiki/HTTP HTTP - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 �� ko.wikipedia.org https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP HTTP 기본 HTTP는 상당히 확장 가능한 프로토콜입니다. 자원과 URI의 개념, 메시지의 단순한 구조, 통신 흐름을 위한 클라이언트-서버 구조와 같은 몇 가지 기본 개념에 의존합니다. 이러한 기본 개념을 토대 deve.. 이론공부/네트워크통신 2020. 8. 9. OSI7계층에 대해서 OSI모델 컴퓨터 네트워크 운영을 규정하기 위해 개발되었다. 네트워크 프로토콜디자인과 통신을 계층으로 나누어서 설명한것이다. OSI7계층으로 나눈이유 모듈화를 함으로서 복잡도를 낮추어 흐름을 한눈에 알아보고 사람들이 이해하기 쉽도록 하기위해서이다. 또한 특정 레이어의 장비혹은 소프트웨어에 이상이 생긴다면 다른 단계의 장비는 건들이지 않고 고장난 부분만 고칠 수 있도록 하기위해서이다. 예를 들어서 편지를 쓰는 기계와, 암호화해주는 기계, 전달해주는 기계와 해당 기능을 모두 가지고있는 하나의 기계가 있다고 한다면 암호화되는 부분만 고장났을때 바꾸거나 수리하는 비용에서 차이가 생기게 된다. OSI7계층은 아래와 같으며 각 계층마다 불리는 메시지의 이름이 다르다. 이미지 출처 : https://www.lifew.. 이론공부/네트워크통신 2020. 8. 8. TCP/UDP/SCTP란 무엇인가?(특징, 차이점) 이미지 출처 : https://shjz.tistory.com/98 TCP TCP는 OSI7계층중 4계층인 전송계층에서 사용하는 신뢰성이 중요한 어떤 응용에 의해 사용될 수 있는 신뢰성 있는 연결-지형 프로토콜이다. 연결지향 서비스를 제공하기 위하여 연결설정, 데이터 전송, 연결 해제 단계를 정의한다. TCP는 전이중 통신을 제공하여 데이터는 동시에 양방향으로 전달 될 수 있다. 흐름제어와 혼잡제어, 오류제어를 제공한다. 흐름제어 : - 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리속도를 조절하여 수신자의 버퍼오버플로우를 방지한다. - 송신자가 데이터를 만드는 속도와 수신자가 데이터를 사용하는 속도의 균형을 맞춘다. 혼잡제어: - 네트워크 내의 패킷수가 넘치게 증가하지 않도록 방지 - 흐름을 제어한다고.. 이론공부/네트워크통신 2020. 8. 7. TCP 3-way handwake란 무엇인가? TCP란? TCP는 OSI7계층중 4계층인 전송계층에서 사용하는 신뢰성이 중요한 어떤 응용에 의해 사용될 수 있는 신뢰성 있는 연결-지형 프로토콜이다. 연결지향 서비스를 제공하기 위하여 연결설정, 데이터 전송, 연결 해제 단계를 정의한다. TCP는 전이중 통신을 제공하여 데이터는 동시에 양방향으로 전달 될 수 있다. TCP 3-way handwake TCP는 데이터를 전송하기 위해 근원지와 목적지 사이에 가상의 경로를 설정한다. 이러한 가상의 경로를 설정하는 과정을 3-way handwake라고 한다. 과정은 서버부터 시작이되며 서버 프로그램은 TCP에게 연결을 받을 준비가 되어있다고 알리며 이를 수동개방(passive open)요청 이라고 한다. 클라이언트 프로그램은 개방된 특정 서버와 연결이 필요하다.. 이론공부/네트워크통신 2020. 8. 6. 이전 1 2 3 다음 💲 광고입니다.