전체 글

안녕하세요 주니어 백엔드 개발자 조명기입니다!
· 네트워크
chapter 5 IPv4 Features Address is 32 bits long addresses are unique and universal address space is 2 ^ 32 or 4,294,967,296 Dotted-demical notation 32 2진수 ip 주소를 8비트씩 4그룹으로 나눠 10진수로 표현 함 Binary : 10000000 00001011 00000011 00011111 Dotted decimal: 128.11.3.31 규칙 255 이상일 수 없음 10진법으로 표현할 때는 앞에 0 을 명시하지 않음 ex) 45 (o) 045(x) Number of address Q. Find the number of address in a range if the first add..
· 도커
개요 도커 이미지로 컨테이너를 생성하면 이미지는 읽기 전용이 되며 컨테이너의 변경 사항은 별도로 저장해서 각 컨테이너의 정보를 보존함. 이미지와 컨테이너 구조 생성된 이미지는 어떠한 경우에도 변경되지 않음. 하지만 이러한 구조에는 치명적인 단점이 있는데 컨테이너를 삭제하면 내부에 있는 데이터가 모두 사라진다는 것임. 이를 방지하기 위해 컨테이너의 데이터를 영속적 데이터로 활용할 필요성이 있음. 볼륨 공유 호스트 볼륨 공유 docker run -d \ --name {name} -v {local_host_volume_path}:{docker_volume_path} 이때 호스트의 디렉터리가 존재하지 않아도 도커는 자동으로 폴더를 생성해줍니다! 이때 local_host_volume 과 docker_volume_..
· 네트워크
TCP 프로토콜 관점에서의 소켓 소켓은 기본적으로 TCP 기반 통신을 할때 클라이언트와 서버가 통신하기 위해 사용되는 개념임 PORT 란 port(number)는 socket 을 식별하기 위해 부여되는 숫자, socket 은
· 알고리즘
이진 트리 (Binary Tree) 자식 노드의 개수가 최대 2개인 트리 포화 이진 트리 (Full Binary Tree) 모든 레벨에 노드가 포화 상태로 차 있는 바이너리 트리 최대 노드 개수인 (2^(h+1) -1) 의 노드를 가진 Binary Tree 루트를 1번으로 하여 2^(h+1) -1 까지 정해진 위치에 대한 노드 번호를 가짐 완전 이진 트리 (Complete Binary Tree) 높이가 h 이고 노드 수가 n 일때 Full binary Tree 의 노드 1번부터 n 번까지 빈자리가 없는 binary tree 편향 이진 트리 한쪽으로만 쏠려 있는 트리 Array 로 트리를 표현하기 자식노드 = i*2, i*2+1 부모노드 = i / 2 높이가 h 인 Binary Tree 를 위한 Array..
GIL (Global Interpreter Lock) 여러 개의 스레드가 파이썬 바이트코드를 한번에 하나만 사용할 수 있게 락을 거는것, 파이썬 인터프리터를 제어할 수 있도록하는 뮤택스. 등장 배경 파이썬은 레퍼런스 카운팅 방식으로 메모리를 관리하는데, 여러개의 스레드가 동시에 객체를 참조할 경우 Race Condition 이 발생하여, 메모리 누수가 발생할 수 있음. 이러한 문제점을 해결하기 위해 GIL 개념이 도입됨 객체마다도 Lock 을 걸 수 있겠지만 비효율적이기 때문에 Global 한 락을 하나 설정하여 사용하는 방식으로 접근함 성능 차이 CPU Bound 단일 스레드 # 단일 스레드 수행시간 CNT = 1000000 def run(n): ret = 0 for i in range(n): ret ..
문제 문제링크: https://www.acmicpc.net/problem/30961 풀이방법 문제의 요구사항은 길이가 "1" 이상인 모든 부분수열 각각의 합을 구하여 모두 XOR한 합을 구하는 것이다. 해당 문제를 보자마자 바로 에드 훅 문제라는것을 생각했지만. 생각보다 푸는데 오랜시간이 소요되었다. 우선 문제를 풀기 위해 XOR 의 특징을 이용하기로 했다. 같은 수 X 를 2^N 번 XOR 연산하면 그 수는 0이 된다. 해당 문제에서 정의하는 부분수열은 인접하지 않아도 되었기 때문에 입력으로 주어진 배열을 오름차순으로 정렬하여 배열을 분석할 수 있다. 2, 3, 1 -> 1, 2, 3 풀이를 좀더 쉽게 생각하기 위해 아래와 같은 배열이 있다고 가정한다 1, 2, 3, 4, 5 최대값의 위치를 M 최소값..
개요 백엔드 아키텍처를 설계하기 전 아래와 요구사항을 만족하는 아키텍처를 설계하는 것을 목표로 삼고 서버 구성도를 작성했습니다. 모든 데이터 전달은 유저 친화적이여야 한다. 트래픽이 높은 경우에도 서버는 동작해야한다. 데이터 보안을 유지하기 위한 적절한 접근 제어 및 암호화 기술을 도입한다. 보안 HTTPS Plaintext 를 주고 받는 HTTP 통신의 단점을 보완하기 위해 VPC 외부의 클라이언트와 서버가 통신할때 HTTPS 프로토콜을 사용하여 통신 할 수 있도록 서버를 구성했습니다. HTTPS 프로토콜로 통신하기 위해서는 신뢰할수 있는 인증기관과 그 인증기관에서 발급한 키를 활용해야 합니다. 아마존을 CA 로 설정하고 아마존에서 인증서를 발급한 이후 클라이언트와 HTTPS 프로토콜 기반 통신을 수립..
· 운영체제
개요 여러개의 명령어를 동시에 실행할때 단일 프로세스의 인터럽트 혹은 여러 프로세스에서의 병행성문제 때문에 원자적으로 실행할 수 없음, 오퍼레이팅 시스템에서는 lock 을 이용하여 해당 문제를 해결하려고함 락 balance 변수를 갱신하는 간단한 코드 예시 lock_t mutex; ... lock(&mutex); balance = balance + 1; unlock(&mutex); 위의 코드에서는 임계 영역에서 정확히 하나의 쓰레드가 락을 획득하고 반환할 수 있음 lock() 루틴: 락 획득을 시도함 → 락을 획득하여 임계영역내로 진입하는 쓰레드를 락 소유자(owner)라고 부름 unlock() 루틴: 락 소유자가 unlock() 을 호출하면 락은 다시 사용 가능한 상태가 됨 Pthread 락 쓰레드간의..
파커초
Parker Cho 의 기술블로그