Language 19

파이선 문법 정리 _ 2

1. 해시맵(dict), Counter, defaultdict 파이썬의 dict는 해시맵입니다. 빈도수 계산이나 그래프 인접리스트를 만들 때 자주 씁니다.from collections import Counter, defaultdict# dict 기본 사용d = {}d['apple'] = d.get('apple', 0) + 1 # 키가 없으면 0에서 시작exists = 'apple' in d # 키 존재 여부 확인# Counter: 빈도수 계산cnt = Counter([1, 2, 2, 3, 3, 3]) # Counter({3:3, 2:2, 1:1})# defaultdict: 키가 없을 때 자동 생성g = defaultdict(list)g[1].append(2) # {..

Language/Python 2025.09.29

파이선 문법 정리

1. 전역 변수 vs 지역 변수# 전역 변수x = 10 # 전역 변수def foo(): y = 5 # 지역 변수 print("지역:", y) print("전역 접근:", x)foo()print("전역:", x)# 전역 변수 변경x = 10 # 전역 변수def update(): global x x = x + 5 # 전역 변수 직접 수정 print("함수 안:", x)update()print("함수 밖:", x)## 변경후 출력함수 안: 15함수 밖: 15 전역 변수(Global): 함수 밖에서 정의 → 프로그램 전체에서 접근 가능지역 변수(Local): 함수 안에서 정의 → 함수 내에서만 유효함수 안에서 전역 변수 수정 → global 키워드 필요2. 클래스..

Language/Python 2025.09.29

파이썬 기본 문법 정리

1. 출력 / 입력print("Hello, World!") # 출력name = input("이름을 입력하세요: ") # 입력 2. 변수와 자료형자료형예시비고정수(int)a = 10 실수(float)b = 3.14 문자열(str)c = “python”작은따옴표도 가능불리언(bool)d = TrueTrue / False리스트(list)arr = [1,2,3]순서, 수정 가능튜플(tuple)t = (1,2,3)순서, 수정 불가딕셔너리(dict)dic = {“a”:1, “b”:2}key-value세트(set)s = {1,2,3}중복 제거, 집합 연산 3. 연산자# 산술 연산a + b, a - b, a * b, a / b, a // b(몫), a % b(나머지), a ** b(제곱)# 비교 연산==, !=..

Language/Python 2025.09.29

JIT(Just-In-Time) 최적화란?

1. 배경인터프리터 방식: 한 줄씩 코드를 읽어 바로 실행 → 빠른 시작은 가능하지만 실행 속도가 느림.컴파일 방식: 전체 코드를 미리 기계어로 변환 후 실행 → 실행 속도는 빠르지만 시작이 느리고, 플랫폼별로 다른 기계어로 컴파일해야 함.JIT 컴파일은 이 두 방식의 장점을 결합한 방법으로, JVM(Java Virtual Machine) 에서 대표적으로 사용됩니다.2. 동작 원리Java 코드 → 바이트코드(.class 파일) 로 컴파일.JVM이 이 바이트코드를 실행할 때, 처음에는 인터프리터처럼 한 줄씩 실행.실행 중 자주 호출되는 메서드(HotSpot) 를 감지.해당 코드를 런타임 중에 네이티브 기계어로 변환해 캐싱.이후 같은 코드가 실행될 때는 기계어로 직접 실행 → 성능이 크게 향상됨.3. 왜 이..

Language/Java 2025.09.23

Kotlin은 Java보다 항상 좋은 걸까? – 코틀린의 단점 정리

Kotlin은 최근 몇 년간 빠르게 확산된 JVM 언어입니다.간결한 문법, Null-safety, 코루틴 등으로 인해 생산성이 높아 많은 개발자들이 선호합니다.하지만 Java와 비교했을 때 불리한 점도 분명히 존재합니다. 이번 글에서는 Kotlin이 Java에 비해 덜 좋은 부분을 정리해 보겠습니다.1. 컴파일 속도Kotlin은 컴파일 시간이 Java보다 느린 편입니다.Null 검사, 코루틴 코드 변환 등 추가 처리가 많기 때문입니다.특히 멀티모듈 프로젝트에서는 빌드 시간이 체감될 정도로 늘어날 수 있습니다.반면 Java는 오랜 기간 최적화된 Javac을 사용해 빌드 속도가 빠릅니다.2. 라이브러리 및 호환성Kotlin은 JVM 위에서 실행되지만,Lombok 같은 일부 라이브러리와 충돌이 생기기도 하고,..

Language/Kotlin 2025.09.23

맥북에서 VSCode로 Python 개발 환경 만들기

1. Python 설치 확인맥북에는 기본적으로 python3가 설치되어 있습니다. 터미널에서 확인하세요.python3 --versionwhich python3Homebrew로 최신 버전을 관리하려면:brew install pythonbrew upgrade python2. VSCode 확장(Extension) 설치필수 확장:Python (ms-python.python) : 기본 파이썬 실행/디버깅Pylance (ms-python.vscode-pylance) : 코드 분석/자동완성Jupyter (선택) : 노트북(.ipynb) 지원3. 가상환경 설정 방식(1) venv (표준 방식)파이썬 표준 라이브러리 포함 → 추가 설치 불필요프로젝트 단위로 독립적인 환경 생성디스크 용량 부담이 적음# 생성python3 ..

Language/Python 2025.09.22

멀티스레드 vs 버추얼 스레드 vs 코루틴: 실패와 중지 처리는 어떻게 다를까?

동시성과 병렬성을 구현할 때 스레드나 코루틴을 사용할 수 있지만, 실무에서는 단순 실행만큼 중요한 것이 있습니다.바로 작업 도중 실패했을 때 어떻게 중단하고 복구할 수 있느냐입니다.이 글에서는 Java의 전통적인 멀티스레드, Java 21의 버추얼 스레드, 그리고 Kotlin의 코루틴에서 **실패 처리(예외 처리, 중단, 롤백)**를 어떻게 다루는지 구조적으로 비교합니다.✅ 1. 전통 멀티스레드의 실패 처리특징OS 레벨 스레드중단: Thread.interrupt() 호출 → 내부에서 체크해야 함실패 처리: try-catch 사용, 직접 제어 필요자동 롤백 없음 (DB 트랜잭션, 상태 복구는 별도로 구현)예시Thread t = new Thread(() -> { try { for (int ..

Language/Kotlin 2025.07.14

Kotlin 코루틴은 멀티스레드 안에서 비동기 처리가 되는 걸까

코루틴을 처음 접할 때 가장 흔히 드는 의문 중 하나는 다음과 같습니다.“멀티스레드 위에서 비동기로 실행된다면, 결국 그냥 멀티스레드 아닌가?”“멀티스레드, 코루틴, 버추얼 스레드 각각은 어떻게 다르고 언제 써야 하지?”이 글에서는 Kotlin의 코루틴이 멀티스레드 환경에서 어떻게 비동기 처리를 수행하는지, 그리고 전통적인 멀티스레드나 Java의 버추얼 스레드와 어떤 차이가 있는지를 실무적인 관점에서 입체적으로 정리합니다.✅ 코루틴의 등장 배경: 왜 필요했을까?Java의 전통적인 멀티스레드는 다음과 같은 한계가 있습니다.스레드 하나당 약 1MB의 메모리 소비컨텍스트 스위칭 비용이 큼 (OS가 직접 관리)수천 개 이상의 동시 작업 처리 시 리소스 한계이런 제약을 극복하기 위해 등장한 것이 경량 스레드(Li..

Language/Kotlin 2025.07.14

Kotlin/Java 컬렉션 구조 비교: Stack vs Queue vs ArrayDeque

스택과 큐는 모든 프로그래머가 한 번쯤은 접해보는 대표적인 선형 자료구조입니다. Java 및 Kotlin에서도 다양한 구현체가 제공되지만, 실제로 어떤 자료구조를 써야 할지 헷갈릴 수 있습니다. 특히 Stack, Queue, ArrayDeque는 모두 삽입/삭제 연산을 제공하면서도 구조와 성능, 사용 목적이 다르기 때문에 정확한 이해가 필요합니다.이 글에서는 각 자료구조의 특징과 차이점을 비교하고, 어떤 상황에 어떤 자료구조를 선택해야 하는지 실용적인 가이드를 제공합니다.기본 개념 요약Stack (스택)LIFO (Last In, First Out) 구조가장 나중에 삽입된 요소가 가장 먼저 제거됨Java의 Stack 클래스는 Vector를 상속 → 동기화 처리됨 (synchronized)Kotlin에서도 ..

Language/Kotlin 2025.07.07

Kotlin Coroutine 핵심 키워드 & 함수 정리

✅ 1. 키워드(예약어)키워드설명suspend일시 중단 가능한 함수 정의. 코루틴 내부에서만 호출 가능* “이 함수는 중간에 멈췄다가, 나중에 다시 이어서 실행할 수 있어” 라고 선언하는 것.✅ 2. 코루틴 빌더 함수함수설명runBlocking현재 스레드를 블로킹하며 코루틴 실행 (main/test 진입점에 사용)launch결과 없이 코루틴 실행. fire-and-forget 작업에 적합asyncDeferred 결과 반환. await()으로 값 획득 가능✅ 3. 스코프 관련 함수함수설명coroutineScope모든 하위 코루틴이 끝날 때까지 기다림. 예외 전파됨supervisorScope하위 코루틴 예외가 다른 코루틴에 영향을 주지 않음CoroutineScope코루틴 실행 환경(Context)을 정의하는..

Language/Kotlin 2025.06.06