일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 트랜잭션
- 3주차
- 비동기
- post
- Sequelize
- 노드 윈스턴
- SQL
- 1주차
- 스파르타코딩클럽
- nginx
- 항해99
- Get
- Node.js
- NoSQL
- 4주차
- 숙제
- 5주차
- HTTPS
- OpenAPI
- JWT
- 2주차
- 개발일지
- 부트스트랩
- node winston
- cors
- MongoDB
- db
- 위키백과
- 웹 스크래핑(크롤링)
- Transaction
- Today
- Total
목록
728x90
항해 일지 (46)
얼음꽃의 일지
프로세스(Process) - 프로그램이 메모리에 올라와 운영체제로 부터 CPU를 할당받고 프로그램이 실행되는 상태 - 프로세스 안에 Code, Data, Stack, Heap이 존재하는 독립된 메모리 영역을 가짐 - 프로세스당 최소 1개의 스레드를 가짐 - 프로세스는 독립적이기 때문에 다른 프로세스가 와서 접근 불가 - 만약 다른 프로세스가 접근을 원한다면 프로세스간의 통신을 이용해서 요청을 해야함 ex) 파이프, 소켓, 파일 * Code : 프로그래머가 작성한 프로그램이 코드 영역에 작성 * Data : 코드가 실행되면서 나오는 각종 데이터 * Stack : 호출한 함수가 종료되면 되돌아올 메모리의 주소를 스택에 저장, 변수 사용 범위에 영향을 미치는 구역을 구현 * Heap : 동적으로 할당되는 데이..
Base64 - 8비트 2진 데이터를 문자 코드에 영향을 받지 않는 아스키 코드로 이루어진 일련의 문자열로 바꿔주는 방식 - 그냥 쉽게 생각하면 64진법 , 2^6 이기에 2의 제곱수 이루어진 걸로 ASCII 코드를 이용해서 표기한다는 뜻 - 보통 데이터를 넘길때 8비트 형태로 되어있는데 지금 2진 데이터를 쓰게되면 6비트로 보내야 하기 때문에 6비트씩 묶음 - 이렇게 되면 묶다가 혼란이 오는 경우가 생길 수 있기때문에 8,6의 최소공배수인 24로 해서 끊어버림 - 이후 남는 부분이 있으면 패팅(padding)을 ' = '을 이용하여 자리를 채움 순서 - 문자열(데이터) -> ASCII 코드로 변경 -> 2진법으로 변경 -> 6비트씩 자르기 -> Base64로 인코딩 추가 참고 https://en.wik..
TCP - Transmission Control Protocol 약자 - 연결형 프로토콜 - 전송을 제어하는 프로토콜로 직역 가능 쉽게 말하면 데이터를 application 부분에서 메세지형태로 가공하여 IP와 같이 보내는 프로토콜 - TCP 3-way handshaking으로 연결, TCP 4-way handshaking으로 연결 해체 - 각각 연결하기 때문에 1:1 통신 - 흐름, 혼잡 제어를 해줌 -> 신뢰성이 높음 - 속도가 UDP보다는 느리다 UDP - User Datagram Protocol 약자 - 비연결형 프로토콜 - 사용자 데이터그램 프로토콜 직역 가능 쉽게 말하면 데이터를 데이터그램이라는 단위로 처리 - 단순히 보내기 때문에 1:1, 1:N, N:N 통신 - 속도가 TCP보다 빠름 - ..
TCP 3-way Handshake -> 클라이언트와 서버가 연결이 되어있는지, 데이터를 전송 및 받을 준비가 되어있는지 체크하는 시스템 그림을 보고 설명을 하자면 1. Client -> Server : SYN 보냄 2. Server -> Client : SYN + ACK 보냄 3. Client -> Server : ACK 보냄 이렇게 되면 이제 연결이 확인이 되었기에 data를 요청하고 받을 수 있게 됩니다. 이제 여기서 더 이상 사용하지 않고 끝내려면 TCP 4-way Handshake 이용하여 끝냅니다. 1. Client -> Server : FIN 을 보냄 2. Server -> Client : ACK을 보냄 3. Server -> Client : 닫혔는지 한번 더 확인하기 위해 FIN을 보냄 4..
HTTP -> HyperText Transfer Protocol의 약자로 인터넷을 작동시키는 역할을 하고, 웹 서버 및 웹 브라우저 상호 간의 데이터 전송을 위한 프로토콜입니다. -> 웹 사이트에 액세스 하기 위해서는 프로토콜 변형이 필요하고 보통 우리가 아는 http://www. 로 시작하며 URL에 해당하는 웹 페이지를 가져오기 위해 웹 사이트 서버에 명령을 보내 작동합니다. -> 80번 포트를 사용합니다. -> 암호화가 안되어있기 때문에 제3자의 정보를 조회가 가능했습니다. -> HTTP 상태코드 : https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C * 하이퍼텍스트 : 하이퍼링크를 통해 독자가 한 문서에서 다른 문서로 ..
인덱스(Index) -> DB에서 테이블에 대한 동작 속도를 높여주는 것 -> ex ) 책에 특정한 단어들을 쉽게 찾기 위해서 책 맨 뒤에 순서대로 페이지와 같이 적어 둔 것 -> 인덱스를 해두기 위해서 별도의 메모리 공간에 데이터와 함께 저장 -> 이런 형식으로 만들면 검색 속도가 상향됨 -> 관리는 insert, delete, update 등 이용 장점 -> 조건 검색(Where절) 효율성 Up -> 정렬(Order By절) 효율성 Up -> 최대, 최소(Min, Max) 효율성 Up 단점 -> 추가, 삭제, 수정 시 그 index를 다시 수정해야하기 때문에 그런 부분에서 취약 -> 데이터가 심하게 많은 곳에서는 비효율적, 같은 내용이 몇만개 몇십만개 있다고하면 그걸 찾는데 오히려 오래걸림 -> 양에..
트리와 그래프 -> 트리와 그래프는 관계가 있음 -> 그래프가 트리를 포함하는 관계 그래프 -> 노드(점)와 노드를 연결하는 간선으로 이루어진 구조 -> 노드간의 관계로 볼수있음 -> 부모-자식 관계가 없음 -> 네트워크에서 사용 -> 비순환(directed)와 순환(undirected) 그리고 가중(weighted) 그래프가 존재 * 비순환(directed) 그래프 -> 방향성이 존재함 -> 방향성이 있기 때문에 다시 원래 자리로 돌아가기 힘듦 / 한번 지나가면 뒤로 거기는 끝! * 순환(undirected) 그래프 -> 방향성이 없음 -> 방향성이 없기때문에 왔던길 다시 돌아 갈 수 있음 * 가중(weighted) 그래프 -> 가중 그래프는 순환, 비순환 다 가능 -> 간선에 무게가 존재 -> 무게를..
이분 탐색은 반으로 쪼개가면서 찾고자 하는 값을 얻어내는 방법 1부터 16 까지 16개 이므로 반으로 쪼개면 중간은 8입니다. 그리고 찾고자 하는 숫자는 8 이니 8 윗부분은 확인을 할 필요가 없어집니다. 이제 같은 방법으로 1~8 구간에서 반으로 쪼개면 4혹은 5가 되는데 아무 쪽으로 해도 큰 문제가 없으므로 거기서 또 분리를 하면 다음과 같습니다. 이제 남은 곳에서 반으로 쪼개게 되면 중간이 3이 되고 저희가 찾는 값에 도착하게 됩니다. 이렇게 보면 이진 / 이분 탐색이 아니라 그냥 탐색을 하게되면 최악의 경우 16번까지 다 확인을 해야하기 때문에 시간 복잡도가 O(n)이 나오게 됩니다. 그러나 이와 같이 이진 / 이분 탐색을 하게되면 3번만에 값을 찾을 수 있게 됨으로 최악의 경우라고 하면 O(lo..