일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 가상환경
- linux
- 데이터엔지니어링
- S3
- HADOOP
- Django
- sql
- 자료구조
- 데이터 엔지니어링
- TIL
- 데브코스
- http
- Docker
- 컴퓨터 네트워크
- redshift
- 데이터베이스
- PYTHON
- Go
- dockerfile
- 종류
- 컴퓨터네트워크
- AWS
- 데이터 웨어하우스
- 파이썬
- 데이터 파이프라인
- airflow
- TCP
- 운영체제
- airflow.cfg
- 정리
- Today
- Total
목록PYTHON (12)
홍카나의 공부방
결론부터 이야기하면 겉으로 봐서는 큰 차이가 없다. li = [1,2,3,4,5]에서 li.append(10)을 하면 li는 [1,2,3,4,5,10]이 될테고 위에서 append가 아닌 li = li + [10]을 해도 결과는 li = [1,2,3,4,5,10]이 된다. 하지만 list.append() 메소드는 O(1) 시간 복잡도로 동작하며, 리스트의 + 연산은 O(n) 시간으로 동작한다. append는 쉽게 말하면 메모리 공간 하나를 더 할당해서 이어 붙이는 작업만 하므로 상수시간인 O(1)만 소요된다. li = li + [10] 연산은 우변의 li + [10]을 계산하기 위한 새로운 리스트 객체가 만들어진다. 이후 L2에 대입이 되는데 li를 전부 베껴야하므로 O(N)의 시간이 소요된다. 겉으로 ..
ARP 프로토콜은 네트워크 계층의 프로토콜이다. IP에서 라우팅 테이블을 참조하여 패킷을 보내야하는 논리주소를 리턴하면 ARP는 이 논리주소에 해당하는 호스트의 물리주소를 매핑하는 역할을 한다. 네트워크의 장치가 다른 장치와 통신해야 하는 경우, 올바른 장치로 전송하려면 대상 장치의 MAC 주소를 알아야 하기 때문이다. ARP는 요청과 응답으로 패킷의 유형이 나뉜다. ARP 요청은 보통 broadcast 방식으로 전달이 되며, 같은 물리네트워크에 연결되어 있는 호스트에게 모두 전송이 된다. ( 대상 호스트의 논리 주소를 알고 있다면 1:1 방식인 Unicast 방식으로 전송해도 무방함. ) 네트워크의 브로드캐스트 주소로 ARP 요청을 보내면 네트워크의 모든 장치가 요청을 수신하고 해당 IP 및 MAC 주..
Windows에서는 파이썬의 psutil 라이브러리를 이용하여 현재 열려 있는 포트와 해당 포트를 사용하는 프로세스의 목록을 가져올 수 있다. 다음 코드를 작성해서 실행시켜보자. import psutil def open_ports(): open_ports = {} for conn in psutil.net_connections(kind='tcp'): if conn.status == 'ESTABLISHED': process = psutil.Process(conn.pid) process_name = process.name() open_ports[conn.laddr.port] = process_name return open_ports ports = open_ports() for port, process in p..

Python을 이용하여 구글의 DNS와 패킷을 보내 질의/응답하는 코드를 작성해 보자. DNS 란? 더보기 www.google.com에 접속을 하고자 하면 DNS가 domain name을 IP주소로 바꿔주면서 비로소 웹 사이트에 접속을 할 수 있게 된다. 이처럼 웹 사이트에 도메인 이름으로 접속하기 위해서는 도메인 이름을 IP주소로 바꿔주는 DNS의 주소와 포트 번호를 알아야 한다. DNS의 포트번호는 IANA에 의해서 well-known-service로 표준 포트번호인 53번이 정해져 있다. 그리고 구글의 public DNS 주소는 8.8.8.8이므로, 해당 DNS와 통신해서 google.com의 IP주소를 알아내보겠다. import dns.query import dns.resolver # 질의할 도메..