Python7 python 배열 slicing(item[2:])의 성능은 왜 O(n)일까 파이썬을 쓰신다면 items[2:] 같은 slicing 문법을 보셨을텐데요. 이 기능이 매번 메모리 할당을 한다는 것을 알고 계신가요? 실제로 실행해보는 것만큼 정확한 건 없으니 디버깅을 해보겠습니다.이런 파이썬 코드를 가지고 확인해보겠습니다.items[2:] 는 어떻게 동작하는 걸까요? 결론부터 말씀드리면 필요한 length만큼 메모리를 확보하고 for 문을 통해 items 값의 복사가 이루어집니다. 즉, 시간/공간 복잡도가 O(n)이 됩니다.디버깅을 통해 실제 동작을 확인해보겠습니다. cpython 의 구현체를 기준으로 진행하고 c 언어이기 때문에 vscode와 c/c++ extenstion을 사용하여 디버깅을 진행합니다. 3.14 버전를 기준으로 설명합니다.slicing에 대한 주요한 로직은 lis.. 2026. 7. 26. CookieServer 쿠키란 HTTP 프로토콜 동작 방식이 connectionless여서 보완하기 위한 장치이다. HTTP 프로토콜은 단지 클라이언트가 request를 날리면 그에 대한 응답을 서버가 해주는 것이 끝이다. 연결되어서 유지되는 방식이 아니다. 요청과 응답이 이루어지면 끝이다. 이것의 단점은 클라이언트의 사용에 대한 트래킹이 어렵다는 것이다. 왜냐면 서버에서는 클라이언트가 보내는 요청만 처리해주면 할 일이 끝나기 때문이다. 하지만 우리가 웹사이트를 이용하다보면 이용하는 정보를 알아두는 것이 유용한 경우가 많다. 쇼핑몰 웹사이트를 이용하는데 한 웹사이트에 오래 머무르면서 장바구니도 이용하고 여러가지 상품을 구경할 수 있다. 그러면 장바구니에 담았던 상품이 유지가 되고 최근 본 상품이 뜨기도 한다. 이는 쿠키라는 방.. 2020. 7. 2. do_GET+ do_POST 예제2 예제 1에서는 localhost:8000을 입력해서 들어가면 위와 같은 입력 폼이 나오고 Post it을 누르면 썼던 내용이 화면에 나타나는 예제였다. Hello world!를 쓰고 Post it 버튼을 눌렀을 때 다음과 같이 나오려면 어떻게 해야할까? 또한, 한 번 더 Hello World2!를 쓰고 Post it을 눌렀을 때 다음과 같이 나오려면 어떻게 해야할까? 별도의 데이터베이스 없이 위와 같은 기능을 구현하려면 어떻게 해야할까? 예제 1을 다시 생각해보면 form을 만들고, do_GET을 구현하고, do_POST를 구현하면 끝이었다. 각각의 기능은 서로 영향을 미치지 않고 독립적이다. 새로운 예제2의 상황을 정리해보면 아래와 같은 흐름으로 진행된다. 1. localhost:8000에 접속하면 입.. 2020. 7. 1. do_GET+ do_POST 예제1 localhost:8000으로 접속하면 다음과 같은 화면이 나오고 hello world를 쓴뒤 Post it 버튼을 누르면 다음과 같이 나타나게 하려면 어떻게 해야할까? 1. html string을 가지는 form 변수를 만든다. form = ''' Message Board Post it! ''' 2. do_GET- form을 response로 준다. def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/html; charset=utf-8') self.end_headers() self.wfile.write(form.encode()) 3. do_POST 부분 3.1. request의 entity body에 있는 me.. 2020. 7. 1. 이전 1 2 다음