공부72 퀵소트 정렬 알고리즘 중 O(nlogn)의 시간 복잡도를 가진 정렬 기법 하지만 최악의 경우에는 O(n^2)까지 나타날 수 있다. 퀵소트는 분할정복(명확히 말하면 정복분할)을 이용한 정렬인데 피봇을 기준으로 계속해서 0, n-1으로 배열이 나눠지는 경우에는 n^2이 된다. 이런 경우는 이미 역정렬이나 정렬이 된 상태일 경우 이런 경우를 방지하기 위해서는 피봇을 맨처음이나 끝이아닌 중간값이나 중앙값으로 잡아주면 방지할 수 있다. 2020. 5. 31. TCP와 UDP TCP 전이중 : 양방향 동시 통신 가능 점대점 : 호스트 간 1:1 통신만 가능 신뢰성 있는 통신 데이터 전송의 순서를 보장 흐름제어, 혼잡제어 기법이 존재 세그먼트 단위 3-way handshake C->S: 연결 요청(SYN) S->C: 연결 요청 확인(SYN+ACK) C->S: 연결 확인을 확인(SYN) 4-way handshake C->S: 종료 요청(FIN) 그리고 C는 FIN_WAIT1 S->C: 종료 요청 확인(ACK) 후 C는 FIN_WAIT2 여기서 서버는 연결 종료를 위해 송신 버퍼를 닫고 이미 들어있는 데이터를 전송 S->C: 송신 버퍼가 비워지면 C에 종료 요청(FIN) C->S: 종료 요청 확인(ACK) 후 일정 시간 TIME_WAIT FIN_WAIT1,2는 ACK와 FIN을 받.. 2020. 5. 28. URL과 URI 헷갈리지 말자 URI과 URL 철자도 비슷해 혼동하기 쉬운 두 개념 URL이 URI의 부분집합에 속한다. URI(Uniform Resource Identifier) 통합 자원 식별자 http://example.com/example.pdf?id=1 인터넷에 있는 자원을 나타내는 유일한 주소 URL(Uniform Resource Locator) 자원의 위치 http://example.com/example.pdf 2020. 5. 28. REST API REST API REST란? Representative state transfer의 약자 자원을 URI로 명시하고 자원의 상태를 주고 받는 것 자원의 CRUD 연산은 HTTP Method로 매칭 Create : POST Read : GET Update : POST Delete : Delete REST API, RestFul API 란? 말 그대로 Rest하게 만들어진 API 자원을 URI로 명시 슬래시(/)를 이용해 계층 구조를 보여줌 장점 HTTP를 그대로 쓰기 때문에 별도 인프라 구축이 불필요 역시 HTTP이기 때문에 캐싱도 가능 자체 표현 구조로 Rest API만 보고 연산을 이해 가능 서버는 API만 제공하고 클라이언트가 로직을 처리하므로 백엔드와 프론트의 의존성을 낮춤 API를 이용한 통신으로 .. 2020. 5. 28. HTTP와 HTTPS HTTP WWW상에서 클라이언트와 서버 간 데이터를 주고받기 위한 TCP/IP 기반 통신 프로토콜 특징 stateless함 연결을 맺지 않기 때문에 요청/응답의 구조로 통신 캐싱이 가능 비연결성을 보완하기 위해 쿠키, 세션이 등장 주요 method GET POST PUT DELETE HTTPS HTTP의 보안을 강화하기 위해 통신 사이에 SSL을 추가한 프로토콜 HTTP는 HTML이나 JSON을 전송하는 평문 통신이기 때문에 도청이 가능 그리고 송신자가 누구인지 확인을 안하기 때문에 위장이 가능 주요 키워드 대칭키 공개키 CA 동작 방식 HTTPS를 적용하려는 서버는 공개키, 개인키를 만들고 공개키를 CA에 보낸다. CA는 해당 서버를 검토하고 인증서에 여러 정보와 서버의 공개키를 넣어 CA의 개인키로 .. 2020. 5. 28. 파이썬의 GC, GIL 파이썬의 GIL 파이썬은 기본적으로 자바와 같이 가비지컬렉터에 의해 메모리가 관리된다. 여기서 파이썬은 순환 참조 Reference count 를 이용해 메모리를 관리한다. >>> import sys >>> a = [] >>> b = a >>> sys.getrefcount(a) 3 Reference count의 값이 0이 되면 더이상 참조되지 않음으로 판단하고 해당 객체는 메모리에서 해제된다. 여기서 만약 멀티스레드 환경이 된다면? 해당 Ref.count 값은 임계영역에 존재하게 되며 이를 동기화하지 않으면 사용하는 객체까지 해제될 수 있다. 그렇기에 파이썬은 GIL을 사용한다. 인터프리터의 자체적인 Lock을 획득해야하만 바이트 코드를 실행할 수 있기 때문에 자체적으로 싱글스레드 환경으로 만들어버린다... 2020. 5. 27. 기술 면접 준비 - 자바 자바 썬 마이크로시스템즈(현 오라클)의 제임스 고슬링을 필두로 개발한 객체지향언어 OOP 프로그래밍에서 필요한 데이터를 추상화해 속성과 메소드를 가진 객체를 만들고 그 객체들 간 상호작용을 통해 로직을 구현하는 프로그래밍 방법 장점 코드 재사용성 증가 유지보수가 쉬움 대형 프로젝트에 적합 단점 처리속도가 느림 설계하는 데 시간 소요 주요 키워드 객체 추상화 캡슐화 상속 다형성 JVM 자바 가상 머신의 준말 특징 자바 프로그램이 OS에 종속되지 않고 실행할 수 있는 환경을 제공 자바 프로그램의 메모리 관리 및 GC를 수행함 결과적으로 OS와 자바 사이의 중개자 역할 수행 쓰레드 동기화 자바 프로그램 실행 과정 자바 프로그램이 실행되면 JVM이 OS로 부터 필요한 메모리를 할당 그 후 자바컴파일러가 자바 소.. 2020. 5. 27. 이전 1 2 3 4 5 6 ··· 11 다음 반응형