컴파일 언어(정적 타입)와 인터프리터(동적 타입)으로 되어 있으며, 인터프리터의 경우는 개잘과정에서 코드를 컴파일을 하지 않고 코드 자체로 보내어 프로그램안에서 동작시 한 줄 씩 기계어로 변환하여 동작을 하게 되어 있습니다. 자료의 일관성을 유지하기 위해서는 컴파일 언어를 사용하는 것이 유용하다. 간단한 코드를 작성할 때에는 인터프리터 언어가 유용하다 규모가 커질 경우애는 컴파일언어를 주로 사용한다.
쓰래드 구동 방식
프로세스와 쓰래드는 프로그램을 동시적으로 구동을 하기 위해서 존재하는 것이며, 코어의 갯수를 통해서 병렬성을 가질 수 있으며, 프로세스를 하나씩 해결해 가면서 나가는 건 동시성으로 말한다. 하나의 프로세스에서 자원을 공유하며 만들기 때문에 데이터를 효율적으로 사용할 수 있으나. 같은 프로세스의 쓰래드가 동시에 작업시 오류가 발생할 수도 있기 때문에 디버깅이 필요하다.
캐시 메모리의 저장 방식
램보다 훨씬 빠른 속도로 자주 이용해야 하는 메모리를 저장해 두는 곳이며, 저장 규칙으로는 최근에 접근된 데이터(시간적 지역성)과 죄근에 접근된 데이터의 주변 데이터(공간적 지역성)을 기반으로 저장을 합니다. 즉 데이터 크기는 작지만 빠른속도로 처리가 되어야 하는 작업을 넣어 놓기 좋습니다.
redis저장 방법
외부 딕셔너리 서버 - 데이터를 하드디스크에 저장하는 것이 아닌 램에 저장하여 더 빠른 메모리에 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장하자 서버가 여러개인 경우에는 문제가 발생 할 수 있음. 쓰래드가 하나이기때문에 O(N) 복잡도는 멀리하는것이 좋다. 메모리 파편화로 인하여 용량은 계획보다 크게 해주는 것이 좋다. 자주 사용하지 않는 데이터는 메인메모리에 저장했다가 다시 꺼내는 방식으로 사용할 수 있으나 레이턴시가 발생할 수 있으므로 잘 선택을 해야 합니다.
데이터베이스의 저장방법
key-value 형식의 데이터 방식,
관계형 데이터 베이스 테이블 SQL 문법을 이용해서 작성을 해야 하며 중복을 싫어하여 정규화 하여 중복을 제거 합니다. 트렌젝션 기능으로 안전성이 높다.
그래프 데이터 베이스 노드를 만들고 각 노드와 연결점을 만들어서 Graph Query Language라는 것을 이용하여 사용 할 수 있습니다. sns, 노선, 이어져 있는 관계를 표현하기 좋습니다.
Document database (NoSQL) collection 안에 document라는 것을 만들어서 JSON형태의 데이터를 보관하며 데이터를 중복적으로 입력이 가능합니다. 데이터베이스를 분산 시켜서 저장할 수 있습니다.
Column-family Database 테이블 위에 로우를 만들어서 자유롭게 컬럼을 만들수 있습니다. 대신 SQL문이 아닌 각자의 언어로 되어진 문법을 사용하여야 합니다. 복제 및 분산이 가능합니다.
seartch engine
검색 보관을 위한 데이터베이스 검색 기록을 보관하고 추천검색을 위해서 잘 사용한다.
AWS 배포 흐름에 대해서(로드밸런싱)
한마디로 컴퓨터를 랜탈해서 빌려 서버를 운영하는 것인데. 거기에 내가 만든 코드를 넣고 구동을 시키는 것이라고 볼 수 있다,
DDL, DML, DCL이란?
SQL에서 사용하는 언어에 대한 것? 도메인, 테이블, 뷰 인덱스를 정의, 변경하는 제어 언어
커널이 무엇인가?
셸, 커널, 터미널 셸은 운영체제를 감싸 사용자에게 노출시키는 구조 커널은 운영체제의 핵심이여 하드웨어를 직접 제어 하며 사용자가 직점 통제를 할 수 없습니다. 예를 들어 작업을 분배해서 CPU에게 나눈어 주는 일을 한다. 터미널은 사용자와 커널이 상호작용을 하기 위해서 하나의 예뮬레이션 이라고 생각하면 된다.
프로세스와 스레드는 정확하게 무엇인가?
프로세스와 스레드는 프로그램들이 동시성과 병렬성을 가지기 위해서 작업을 진행 할 수 있도록하는데. 프로세스는 여러가지의 작업을 조금씩 돌아가면서 진행을 하는데. 그 세션에서 같은 작업을 공유해 가면서 효율적으로 작업하기 위해서 쓰레드를 이용하여 같은 자원을 공유하면서 작업을 합니다. 쓰레드는 자원을 공유함으로 써 메모리를 효율적으로 사용 할 수 있는 방법이지만 동시에 작업이 진행되어 겹치는 상황에 에러가 발생할 수 있다는 단점이 있으며, 프로세스에 경우는 쓰레드에 비해 큰 자원을 차지하고 있다는 점이 있습니다.
JWT에 대해서
세션방식과 토큰방식으로 회원 인증 방식으로 이용을 할 수 있는 것인데 세션방식은 입장권을 가지고 있으면 그 번호로 서버에서 조회를 한다음에 인증하는 방식이면 토큰 방식은 모든 데이터가 적인 유효기간을 보고 넘어간다.이러한 방식은 서버의 부담을 줄여준다. 또한 시크릿키가 유출되면 보안이 약해진다.
자료구조에 대해서 (해시테이블)
자료구조란 데이터를 저장하고 관리하는 방식이며, 데이터를 효율적으로 저장을 하기 위해서 데이터에 맞추어 자료의 형태를 잘 맞추어 설정을 해야 합니다. 그래서 자료구조에 따라 알고리즘의 실행 시간이 영향을 크게 미치게 됩니다. 리스트는 어래이와 링크드리스트가 있으며 각 노드에 값과 다음 노드의 주소가 있습니다.
계층별 주요 프로토콜 및 네트워크 장비
physical : 디지털 신호를 전기신호로 변환하여 통신
datalink : 도착해야 하는 컴퓨터에 보낼 수 있도록 mac주소를 부여 및 확인
network : 컴퓨터와 컴퓨터를 연결하는 포인트
transport : 데이터를 쪼개어 순서를 정하고 포트를 붙임, 어플리케이션을 구분, 에러를 컨트롤, (TDP,UDP)
session : 컴퓨터가 연결이 되었을 때에 인증, 허가, 세션을 만들고 반대로 온것을 확인
presentation : 생성된 데이터를 변환, 압축, 암호화
application : 데이터를 생성하고 만듬, 반대로 수신받은 데이터를 보여줌
엔티티와 스키마
스키마 : 서로 연관된 테아블을 그룹지어놓는 것
엔티티 : 데이터 베이스에서 각 개체를 나타냄 초기 단계에서 모델링하는 방법
트랜잭션과 ACID
데이터 베이스가 신뢰성을 가지기 위해서 필요함
데이터 베이스가 하나의 명령을 온전히 수행을 함
4가지의 동작이 전부 끝까지 진행이 되어야 함 (원자성, 일관성, 지속성, 독립성)
효울적인 쿼리
SELECT (5번) FROM (1번) WHERE (2번) GROUP BY (3번) HAVING (4번) ORDER BY (6번)
각 명령문이 실행이 되는 순서를 잘 기억해두었다가 반영을 하는것이 좋다.
장고 정참조와 역참조
장고의 ORM을 이용하여 객체에 접근을 해야 할 때에 Foreign Key를 이용한 개체를 참조하는 방법이며, 역참조는 FK가 없는 객체가 관계된 모델을 참조하는 방법이다.또는 relate_name을 이용한 설정으로 가능하다.
TCP, UDP
둘다 end point간 신뢰성있는 데이터 전송을 담당하는 계층이며, 이를 이용하여 데이터를 순차적으로 전송할 수 있게 합니다. tcp의 경우 양방향 통신을 커넥션 하여 연결 흐름제어 혼잡제어 오류감지 기능을 함 UDP의 경우는 tcp에 비해 안정성은 떨어지지만 속도를 중요시 하기 위해서 만들어짐 스트리밍 서비스를 제공하기 좋음
웹소켓이란?
웹 페이지의 데이터를 받아오기 위해서 서버에 요청을 해서 받아오는데 계속해서 지속적으로 받아야 하는 데이터를 요청없이 받아오기 위해서 사용(예시:주식 가격, 채팅) WS ://으로 작성http같이 사용
API란?
api는 하나의 프로그램에서 다른 프로그램으로 데이터를 주고 받기 위한 방법으로 프로그램을 동작시키기위한 메뉴얼 데로 동작할 수 있습니다.
SQL은?
구조화 된 정해진 질의어 관계형 데이터데이스를 관리하고 데이터에 대해서 생성, 수정, 삭제를 할 수 있는 언어