1. 멤버 변수란?- 클래스 내부에서 정의된 변수- 객체(인스턴스)의 속성을 저장하는 역할 1) 클래스 변수- 클래스명.변수명으로 선언- 모든 객체가 공유하는 변수 2) 인스턴스 변수- self.변수명으로 선언- 각 객체(인스턴스)마다 개별적으로 존재하는 변수- 즉, 객체마다 다른 값을 가질 수 있음class Person: species = "Human" # 클래스 변수 def __init__(self, name, age): self.name = name # 인스턴스 변수 self.age = age # 인스턴스 변수p1 = Person("Alice", 25)p2 = Person("Bob", 30)print(p1.name, p1.age) # Alice 25pri..
1. 싱글톤 패턴이란?- 클래스의 인스턴스를 단 하나만 생성하여 전역적으로 공유하는 디자인 패턴- 동일한 객체를 여러 곳에서 공유할 수 있어, 메모리 낭비를 줄이고 일관성을 유지할 수 있다- 한 번 만들어진 객체의 메모리 주소를 공유 2. 싱글톤 패턴이 필요한 경우1) 데이터베이스 연결- DB 커넥션은 여러 개 만들 필요 없이 하나만 유지해야 함2) 웹크롤러 인스턴스- Selenium 같은 크롤러를 사용할 때, 여러 개 만들지 않고 하나의 브라우저 인스턴스를 공유3) 설정(Configuration) 객체- 애플리케이션의 환경 설정을 하나의 객체로 관리하여 모든 모듈에서 동일한 설정을 사용4) 로그 시스템- 모든 모듈이 동일한 로그 시스템을 공유 3. 일반 클래스와 싱글톤 패턴 비교class Normal:..
Python 함수의 매개변수 개수를 동적으로 받을 때 사용하는 문법 1. *args 위치 인자- 여러 개의 위치 인자(positional arguments)를 받을 때 사용- 튜플 형태로 전달됨- 인자의 개수가 정해져 있지 않아, 여러 개를 받을 수 있다def add_numbers(*args): return sum(args) # args는 튜플로 저장됨print(add_numbers(1, 2, 3, 4)) # 10print(add_numbers(10, 20)) # 30 2. **kwargs 키워드 인자- 여러 개의 키워드 인자를 받을 때 사용- 딕셔너리 형태로 전달됨- 매개변수 이름과 값을 같이 넘길 수 있다- 함수 내부에서 kwargs.items()를 사용해 키-값 쌍을 처리할 수 있다def..
1. GIL이란?- Global Interpreter Lock- Python의 CPython 인터프리터에서 동시에 하나의 스레드만 실행될 수 있도록 제한하는메커니즘- 멀티스레드 환경에서도 한 번에 하나의 스레드만 Python 바이트 코드를 실행할 수 있다.- 따라서 멀티스레딩으로 처리하면 느려질 수 있다. 2. GIL이 왜 필요할까?- Python의 메모리 안전성을 유지하기 위해 존재- Python이 메모리 관리 시스템은 참조 카운트를 기반으로 한다- 여러 개의 스레드가 동시에 실행되면 참조 카운트 값을 수정하는 과정에서 Race Condition이 발생할 수 있는데, 이를 방지하기 위함이다* Race Condition 이란?- 두 개 이상의 스레드가 동시에 같은 자원(메모리, 파일, 변수 등)에 접근..
1. asyncio가 필요한 이유* asyncio란? Pytyhon의 내장 모듈(라이브러리)- python은 위에서 아래로 순차적으로 실행된다(동기)- 네트워크 요청이나 데이터베이스 쿼리 같은 작업은 실행하는데 시간이 걸리기 때문에 대기 시간을 줄이기 위해 사용- I/O 작업이 완료될 때까지 기다리는 동안 다른 작업을 수행할 수 있다-싱글 스레드 환경에서도 병렬적으로 작업을 처리할 수 있다- 멀티스레딩보다 메모리 사용량이 적고, 코드가 간결해진다 2. 이벤트 루프란?- 비동기 작업(코루틴, I/O 작업 등)을 실행하고 관리하는 역할을 하는 핵심 엔진- 비동기함수(async def)를 실행하려면 반드시 이벤트 루프가 필요하다- 이벤트 루프는 비동기 작업을 예약하고 실행하며, 실행이 끝날때까지 관리한다- 한..
1. TCP/IP(Transmission Control Protocol / Internet Protocol)- 컴퓨터와 네트워크 장비가 데이터를 주고 받는 규칙(프로토콜)들- TCP(전송 제어 프로토콜): 데이터를 정확하고 안정적으로 전달- IP(인터넷 프로토콜) : 데이터를 어디로 보낼지 주소를 지정- TCP/IP의 4계층TCP/IP 계층설명대표 프로토콜네트워크 인터페이스 계층실제 물리적인 네트워크 연결MAC 주소(물리적 주소)를 사용해 장치 식별이더넷, Wi-Fi, ARP인터넷 계층IP 주소를 기반으로 데이터 전달IP, ICMP, ARP전송 계층신뢰성 있는 데이터 전송TCP, UDP응용 계층최종 사용자에게 서비스 제공HTTP, FTP, SMTP, DNS 2. 쿠키의 탄생- 웹은 초기 상태 관리를 하지..
1. 비동기란? - 하나의 스레드에서 여러 작업을 동시에 실행하고 나중에 결과를 받아 처리할 수 있다.- I/O 바운드 작업에 적합(네트워크, DB 요청, API 호출 등 대기시간이 긴 작업)- FastAPI는 내부적으로 이벤트루프를 관리하므로 따로 asyncio.run()을 쓰지 않아도 됨* def로 정의된 엔드포인트는 기존의 동기 방식으로 실행됨 (이벤트 루프를 사용X, CPU 작업 최적화), 스레드풀에서 실행a- 멀티스레드 기반 처리(ThreadPoolExecutor에서 실행)- 관련 함수비동기 기능설명async def비동기 함수 선언await비동기 함수 호출 시 사용asyncio.run()비동기 함수 실행asyncio.gather()여러개의 비동기 작업 병렬 실행asuncio.create_task..
1. 도메인의 기본 구조 - api.example.com이라는 도메인이 있다면 뒤에서부터1) com : 최상위 도메인2) example.com : 도메인 (2차 도메인, 우리가 보통 말하는 도메인)3) api.example.com : 서브 도메인- 예시: mail.google.com, blog.naver.com 2. 도메인이란?- 웹사이트의 주소, IP대신 사람이 읽기 쉽게 만든 이름- 브랜드나 회사를 대표하는 주소- 한 곳에서 모든 서비스를 제공(example.com/home, example.com/about) 3. 서브도메인이란? - 도메인의 일부, 도메인을 더 세분화하여 관리할 때 사용- 기능별로 구분- 서버를 따로 운영(API 서버와 웹사이트를 분리)- 다른 서비스를 제공(쇼핑몰, 커뮤니티 등)-..
- Total
- Today
- Yesterday
- 실기
- 다이어트
- 오픽
- 티스토리챌린지
- Ai
- 갓생
- 아침운동
- 스크랩
- 습관
- Python
- 기초
- 줄넘기
- opic
- 오블완
- ChatGPT
- SQL
- C언어
- 빅데이터 분석기사
- 30분
- 경제
- 영어회화
- 프로그래머스
- 고득점 Kit
- 루틴
- 뉴스
- 운동
- 미라클모닝
- IH
- 아침
- llm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |