본문 바로가기

분류 전체보기58

이펙티브 파이썬 7장 - 동시성과 병렬성 동시성 vs 병렬성구분동시성 (Concurrency)병렬성 (Parallelism)의미여러 작업을 번갈아가며 처리 (겉으로는 동시에)여러 작업을 실제로 동시에 처리처리 방식하나의 코어가 작업을 빠르게 전환하며 처리여러 코어가 각 작업을 동시에 실행예시카페에서 혼자 주문 받고, 계산하고, 음료 만들기카페에서 세 명이 각각 주문, 계산, 음료 만들기목적응답성 향상, I/O 대기 시간 활용처리 속도 향상파이썬스레드, 코루틴 (asyncio)하위 프로세스, C 확장, 시스템 콜자바스크립트이벤트 루프, 프로미스, async/await Web Workers, Node.js의 Worker Threads GIL (Global Interupt Lock)파이썬에는 GIL이라는 전역 인터프리터 락이 존재함하나의 스레드만 파.. 2025. 4. 1.
이펙티브 파이썬 6장 - 메타클래스와 애트리뷰트 Better way 44 세터와 게터 메서드 대신 평범한 애트리뷰트를 사용하라 setter, getter 메서드 활용이 아닌 애트리뷰트를 직접 활용하자# 안 좋은 예시 - getter, setter 활용class Person: def __init__(self): self._name = '' def get_name(self): return self._name def set_name(self, value): self._name = valuep = Person()p.set_name('Sungchan')print(p.get_name()) # 좋은 예시 - 애트리뷰트 활용class Person: def __init__(self): self.n.. 2025. 3. 30.
백준 21279번 광부 호석 - Python 문제https://www.acmicpc.net/problem/21279  시도했지만 실패한 방법BFS(?) 방법으로 mines[x][y] = mines[x-1][y] + mines[x][y-1] - mines[x-1][y-1] + mineral[x][y] -> O(W*H)로 실패모든 포인트를 반복해서 넣어서 처리 -> O(N^2)로 실패 마지막은 투포인터 + set을 활용했다. import sysfrom collections import defaultdictinput = sys.stdin.readlinen, cash = map(int, input().split())x_gems = defaultdict(list) # x좌표에 있는 보석들y_gems = defaultdict(list) # y좌표에 있는 보석.. 2025. 3. 29.
HTTP 정리 및 질문 리스트 (feat.RESTful) 1. HTTP 정리📌 주요 상태 코드 요약 정리표 상태 코드 의미사용예시200 OK성공일반적인 요청 성공201 Created리소스 생성됨POST로 새로운 리소스 생성204 No Content성공했지만 응답 본문 없음DELETE, PATCH 등 후에 본문 불필요할 때400 Bad Request클라이언트 요청 오류잘못된 파라미터, JSON 파싱 실패401 Unauthorized인증 실패로그인/토큰 없음, 만료403 Forbidden권한 없음로그인은 됐지만 권한 없음404 Not Found리소스 없음경로 또는 리소스 존재하지 않음405 Method Not Allowed메서드 허용 안됨GET만 지원하는 API에 POST 요청 등409 Conflict리소스 충돌중복 요청, 버전 충돌 등429 Too Many R.. 2025. 3. 22.
이펙티브 파이썬 5장 - 클래스와 인터페이스 Better way 38 간단한 인터페이스의 경우 클래스 대신 함수를 받아라훅(hook)Python 내장 API 사용할 때, 함수를 전달하여 실행하는 경우Python은 함수를 일급 시민 객체로 취급하기에 가능 일급 시민 (first-class citizen)아무런 제약 없이 사용할 수 있는 데이터 값함수 인자로 넘기기 가능함수 반환 값으로 사용 가능변수나 데이터 구조에 저장 가능 languages = ['python', 'swift', 'java']languages.sort(key=len) # hookprint(languages)>>>['java', 'swift', 'python']  딕셔너리에 키가 추가 여부를 추적하는 내용이 필요하다고 하자.defaultdict 인자에 log_missing 을 구현하.. 2025. 3. 21.
이펙티브 파이썬 4장 - 컴프리헨션과 제너레이터 Better way 27 map과 filter 대신 컴프리헨션을 사용하라# map과 filter 사용numbers = [1, 2, 3, 4, 5, 6]even_numbers = list(filter(lambda x: x % 2 == 0, numbers))even_squares = list(map(lambda x: x ** 2, even_numbers))# 좋은 예시 - 리스트 컴프리헨션even_squares = [x ** 2 for x in numbers if x % 2 == 0] Better way 28 컴프리헨션 내부에 제어 하위 식을 세 개 이상 사용하지 말라# 안 좋은 예시matrix = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]flattened = [num for laye.. 2025. 3. 18.