🕊️

코딩둘기

Programming (5)


JVM은 자바 코드를 어떻게 실행할까?

JVM이란?JVM(Java Virtual Machine)은 Java Bytecode를 실행하기 위한 가상 머신이다.조금 더 정확히 말하면 JVM은 하나의 특정 프로그램을 의미하기보다 Bytecode를 어떻게 실행해야 하는지 정의한 명세에 가깝다. 이를 실제로 구현한 JVM 중 대표적인 것이 HotSpot JVM이다. Java 소스 코드는 CPU가 직접 실행하지 않는다.public class Main { public static void main(String[] args) { System.out.println("Hello JVM"); }}위 코드를 javac로 컴파일하면 Main.class 파일이 생성된다.javac Main.java .class 파일 안에는 특정 CPU를 위한 기계..

Python 실행 구조 완벽 정리: 인터프리터, AST, 바이트코드, PVM까지

데이터 분석가가 알아야 할 Python 실행 구조Python은 데이터 분석과 AI/ML 분야에서 사실상 표준 언어처럼 쓰인다.NumPy, Pandas, scikit-learn, PyTorch, TensorFlow는 물론이고 LangChain, RAG 파이프라인, LLM 애플리케이션 개발까지 Python을 중심으로 돌아가는 경우가 많다. Python이 이렇게 널리 쓰이는 이유는 단순히 “문법이 쉬워서”만은 아니다. Python은 데이터를 다루는 개발 방식과 잘 맞는다. 코드를 짧게 작성할 수 있고, REPL이나 Jupyter Notebook에서 바로 실행해보며 결과를 확인할 수 있다. 분석가는 처음부터 완성된 프로그램을 만드는 사람이 아니라, 데이터를 보면서 가설을 세우고, 코드를 바꾸고, 다시 확인하는 ..

[Python] 파이썬 collections.deque 모듈 사용하기

deque(데크)란? deque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형이다. 양방향이기 때문에 스택(Stack)처럼 써도 되고 큐(Queue)처럼 써도 된다. collections.deque 모듈은 deque 자료형을 생성하는 모듈이다. from collections import deque deq = deque() 리스트(list)와 비슷한 데크(deque) 데크(deque)의 사용법은 리스트(list)와 거의 흡사하다. collections.deque의 메소드들 중 리스트(list)와 차이를 보이는 메소드 위주로 살펴보겠다. 데크(deque)에 요소추가 : append(item) list.append(item)과 마찬가지로 item을 dequeue의 오른쪽(마지막)에 추가해준다. deq ..

[Python] input()과 sys.stdin.readline()의 차이

[Python] input()과 sys.stdin.readline()의 차이

버퍼(buffer) 표준 입출력 함수를 사용할 때에는 버퍼(buffer)라는 임시 메모리 공간을 사용하게 된다. input() input()은 사용자로부터 한 줄을 입력 받은 뒤 입력된 줄(line)을 문자열로 변환하여 처리한다. 이때 입력 마지막의 줄바꿈(\n)은 포함하지 않는다. 사용자가 키를 하나씩 누르면 이에 대응하는 데이터가 버퍼에 보관된다. 개행문자(\n)가 입력되면 버퍼의 입력이 종료된 것으로 간주한다. input() 호출 시 Prompt 문자열을 화면에 출력해 사용자의 입력을 기다린다. 대량의 입력을 받는 경우 입력을 받고 다시 prompt 창을 띄우고의 과정을 반복하므로 오류 발생 가능성이 증가한다. 더 이상 받을 입력이 없을 때 수행될 경우 EOF(End of File) error를 일..

[Python] Heapq 모듈 사용하기

Heapq 모듈이란? 파이썬 heapq 모듈은 우선순위 큐 알고리즘이라고도 하는 힙(heap) 큐 알고리즘의 구현을 제공한다. 기본적으로 Min-priority-queue 구조를 가지고 있다. heapq는 내장 모듈로 별도의 설치 작업 없이 바로 사용할 수 있다. import heapq 힙(heap)에 요소추가 : heappush(heap, item) heapq 모듈은 리스트를 최소 힙처럼 다룰 수 있도록 하기 때문에, 빈 리스트를 생성한 후 heapq의 함수를 호출할 때마다 리스트를 인자에 넘겨야 한다. 힙(배열)에 요소(item)을 추가 import heapq heap = [] heapq.heappush(heap, 50) heapq.heappush(heap, 10) heapq.heappush(heap..