일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 13460 구슬탈출 2
- Kotlin in action 3장
- 스프링 컨테이너와 스프링 빈
- 백준 20055 컨베이어 벨트 위의 로봇
- spring
- 20055 컨베이어 벨트 위의 로봇
- 코틀린인액션
- 싱글톤 컨테이너
- Kotlin in action 10장
- Python
- kotlin in action 정리
- Kotlin
- 20055
- 고급매핑
- Kotlin in action 6장
- 스프링 핵심 원리
- 객체 지향 설계와 스프링
- 7장 고급매핑
- 코틸린인액션
- Kotlin In Action
- Kotlin in action 5장
- 스프링 핵심 원리 이해
- 컨베이어 벨트 위의 로봇 Python
- 코틀린
- 자바 ORM 표준 JPA 프로그래밍 7장
- 백준 13460 Python
- 백준
- 기능개발 python
- KotlinInAction
- 스프링 핵심 원리 - 기본편
- Today
- Total
목록분류 전체보기 (157)
기록하는 습관
HTTP 완벽 가이드 7장 캐시 7.2 대역폭 병목 네트워크 속도는 가장 느린 속도에 맞춰지기 때문에 병목 현상이 일어난다. 캐시는 이러한 네트워크 병목을 줄여준다. 국내에서는 지역 간 거리가 그렇게 멀지 않지만, 천조국의 경우는 다르다. 근처에 캐시 서버가 있다면 응답을 빨리 할 수 있다. 7.5 적중과 비적중 운영체제에서 배운 캐시 hit랑 같은 개념이다. 클라이언트에 요청한 데이터가 캐시에 있다면 원서버에 가지 않고 내려주고, 요청한 데이터가 없다면 원서버에 가져와서 캐시 서버 자체로 저장도 하고 클라이언트에게 넘긴다. 7.5.1 재검사 캐시 서버가 hit 하더라도 정말 최신이 맞는지 검증해야 한다. 캐시 서버는 사진이 원할 때 언제든지 재검사 할 수 있다. 304 Not Modified : 데이터..
HTTP 완벽 가이드 6장 프락시 6.1 웹 중개자 웹 프락시 서버는 클라이언트의 입장에서 트랜잭션을 수행하는 중개인이다. 중간에서 요청과 응답을 둘 다 받게 되므로 웹 클라이언트이면서 웹 서버가 되기도 한다. 사용 목적 네트워크 캐싱 특정 웹 사이트 액세스 방지 보안 방화벽 웹 케시 문서 접근 등.. 6.1.1 개인 프락시와 공유 프락시 공용 프락시 - 여러 클라이언트가 사용하는 프락시 개인 프락시 - 하나의 클라이언트가 독점적으로 사용하는 프락시 6.1.2 프락시 VS 게이트웨이 프락시 - 둘 이상의 애플리케이션을 연결하는데 “같은” 프로토콜을 사용 게이트웨이- 둘 이상의 애플리케이션을 연결하는데 “다른” 프로토콜을 사용 게이트웨이란? 리소스와 어플리케이션을 연결하는 것으로, HTTP 트래픽을 다른 ..
HTTP 완벽 가이드 4장 HTTP 커넥션 관리 HTTP는 어떻게 TCP 커넥션을 사용하는가 TCP 커넥션의 지연, 병목, 막힘 병렬 커넥션, keep-alive 커넥션, 커넥션 파이프라인을 활용한 HTTP의 최적화 커넥션 관리를 위해 따라야 할 규칙들 4.1 TCP 커넥션 HTTP 프로토콜은 비연결성이 특징이다. 이런 특징을 보완하기 위해 TCP를 선행하여 사용한다. [그림1] 웹브라우저가 TCP 커넥션을 통해 웹 서버에 요청을 보냄. 4.1.1 신뢰할 수 있는 데이터 전송 통로인 TCP HTTP 커넥션은 몇가지 사용 규칙이 추가된 TCP 커넥션이다. TCP는 HTTP에게 신뢰할 만한 통신 방식을 제공한다. 4.1.2 TCP 스트림은 세그먼트로 나뉘어 IP 패킷을 통해 전송된다. TCP는 IP 패킷(또..
HTTP 완벽 가이드 9장 9.1 크롤러와 크롤링 9.1.1 어디에서 시작하는가: ‘루트 집합’ 루트 집합: 크롤러가 방문을 시작하는 url들의 초기 집합 위 그림에서 웹을 크롤링 하려고 한다면, 어떤 루트 집합이 좋은가? 루트 집합에 A, G, S만 있다면 모든 페이지에 도달할 수 있다. 진짜 웹에서는, 최종적으로 모든 문서로 이어지게 되는 하나의 문서란 없다. 9.1.2 링크 추출과 상대 링크 정상화 크롤러는 간단한 HTML 파신을 해서 이들 링크들을 추출하고 상대 링크를 절대 링크로 변환할 필요가 있다. 9.1.3 순환 피하기 웹 크롤링 할 때, 루프나 순환에 빠지지 않도록 조심해야 한다. 순환을 피하기 위해 로봇들은 자신들이 어디를 방문했는지 알아야 한다. 9.1.4 루프와 중복 순환이 크롤러에게..
회사에서 개발 지식 향상을 위해 도서를 지원해준다. 평소 서버 개발을 하면서 http 지식이 얕다는 것을 느꼈기에 위의 책을 선택했다. 앞으로 책을 읽으며 정리한 내용들을 블로그에 올릴 예정이다. 아래 블로그를 많이 참고하면서 정리했습니다. http://tlog.tammolo.com/blog/9-db93e4d6-5d48-4f86-a20e-2cc4e469fbfb/ Tlog Tamm's dev log tlog.tammolo.com 감사합니다.
문제 www.acmicpc.net/problem/11279 코드 import sys N, M = map(int, sys.stdin.readline().split()) answer = 0 base = {str(sys.stdin.readline()) for _ in range(N)} for _ in range(M): if str(sys.stdin.readline()) in base: answer += 1 print(answer) 풀이 base set을 만들어 문장을 담는다. M개의 문장을 입력받을 때마다, base set에 있는지 확인하여 있다면 정답 count를 올린다. 개념 List 시간 복잡도 Set 시간 복잡도 Dictionary 시간 복잡도
문제 www.acmicpc.net/problem/11279 코드 첫 번째 코드 (시간 초과) 아래 코드는 시간 초과가 나는 코드이다. 이유는 input()을 사용했기 때문이다. 시간초과가 나지 않으려면 sys.stdin.readline()을 사용해야 한다고 한다. from heapq import heappop, heappush N = int(input()) heap = [] for _ in range(N): num = int(input()) if num == 0: if len(heap) == 0: print(0) else: print(heappop(heap)[1]) else: heappush(heap, (-num, num)) 두 번째 코드 from heapq import heappop, heappush ..
문제 www.acmicpc.net/problem/2504 코드 string = input() stack = [] answer = 0 for s in string: if s == "(" or s == "[": stack.append(s) elif s == ")": sum = 0 while stack: top = stack.pop() if top == "[" or top == "]": # 올바르지 못한 괄호 print(0) exit(0) elif top == "(": if sum == 0: # () 일 경우 stack.append(2) else: # (X) 일 경우 stack.append(2 * sum) break # ( 괄호 만났으면 다음 괄호문자열 받기 else: # ( 만날 때까지 숫자 더하기 sum ..