자바 실행 과정 (JVM)
·
☕ Java
✅ 빌드Build TypeProcessExamplecompile소스코드 전체를 기계어로 번역C, C++, Gointerpret소스코드를 한 줄씩 번역하면서 실행Pythonhybrid소스코드 전체를 중간코드(bytecode)로 번역한 뒤, 가상머신(VM)에서 한 줄씩 실행Java영어를 쓰는 사람이 많기 때문에 프랑스어, 힌두어의 책을 1차적으로 영어로 번역함 (중간 번역)그런 다음 한국어로 번역하면 번역 가능한 사람이 많이 때문에 번역 빨리 할 수 있음바이트 코드 (bytecode).java → .class기계어는 아니지만, 어셈블리어처럼 ‘기계에 가까운 언어’하드웨어가 직접 처리하는 것이 아닌, 소프트웨어(VM)에 의해 처리됨바이트코드는 VM 전용 기계어compiler : javac.exeVM (Virt..
PriorityQueue, Comparator
·
☕ Java
자바의 PriorityQueue(우선순위 큐)는 높은 우선순위의 요소를 먼저 꺼내서 처리하는 자료구조이다. 내부 구조는 힙으로 구성되어 있어 이진 트리 구조이고, 시간복잡도는 O(NlogN)이 소요된다. PriorityQueue의 자세한 내용은 https://st-lab.tistory.com/219 을 참고하면 잘 학습할 수 있다. ✔️ 우선순위 부여하기PriorityQueue pq = new PriorityQueue();PriorityQueue는 기본적으로 오름차순으로 구성되기 때문에, 위처럼 Integer로 비교할 때는 문제없이 오름차순으로 구성한다.  class Member { int age; int height; int weight; // 전체 생성자}PriotrityQueu..
스트림, BufferedReader vs. Scanner
·
☕ Java
Java 언어를 사용해서 백준 문제를 풀고 있었는데, Scanner를 사용해서 입력을 받을 때는 시간 초과가 나고 BufferedReader를 사용하자 시간 초과 에러가 발생하지 않았다. 이 둘이 어떤 차이가 있는지 알아보자.✅ 스트림스트림(Stream)을 통해 값을 입력하고, 값을 출력할 수 있다. 스트림은 바이트(byte) 데이터를 읽고 출력하는 "바이트 기반 스트림"과 문자(char) 데이터를 읽고 출력하는 "문자 기반 스트림"으로 구분된다.✅ 보조 스트림"보조 스트림" 이란 다른 스트림과 연결되어 여러가지 편리한 기능을 제공하는 스트림이다.자체적으로 입출력이 불가능하기 때문에 입출력 소스와 바로 연결과는 InputStream, OutputStream, Reader, Writer 등에 연결하여 입출..