
Java 8 변경사항 2014년에 발표된 Java SE(Standard Edition) 8 버전에서는 다음과 같은 주요 변경사항이 있습니다. 람다 표현식 (Lambda expression): 함수형 프로그래밍이 가능하게 됨 스트림 API (Stream API): 데이터를 추상화하여 다룰 수 있게 됨 java.time 패키지: 더 직관적이고 개선된 Date, Time API를 제공 나즈혼 (Nashorn): 자바스크립트의 새로운 엔진을 도입 각 변경사항들의 특징에 대해서 살펴보겠습니다. 람다 표현식 (Lambda Expression) 람다 표현식(Lambda Expression)이란? 람다 표현식이란 익명 클래스의 한 개의 메소드를 식으로 표현한 것입니다. 여기서 익명 클래스란 말 그대로 이름이 없는 클래..

문제 보기 이 문제는 수학 문제이다. 최대 공약수를 활용한 문제인데, 최대 공약수를 구하는 부분은 math 모듈의 gcd 메소드를 사용하였다. 문제를 푼 로직은 다음과 같다. 숫자의 개수와 숫자들을 입력받는다. (6~7번째 줄) 주어진 숫자의 모든 경우의 수에 대해서 최대 공약수를 구하고, 이 최대공약수들의 합을 구해야 하기 때문에 answer 변수에 더해준다. (9~13번째 줄) 주어진 테스트 케이스만큼 실행한다. (4~5번째 줄) import sys from math import gcd t = int(sys.stdin.readline()) for _ in range(t): line = list(map(int, sys.stdin.readline().split())) n, numbers = line[0]..

문제 보기 이 문제는 시뮬레이션 문제이다. (시뮬레이션 구현을 위해 노가다가 필요하다..) 문제에서 요구하는 바는 주어진 순서대로 큐브를 회전시켰을 때의 상태를 구하는 것이다. 문제를 푸는 로직 자체는 매우 쉽지만, 이를 구현하기 위한 방법이 매우 까다롭다. 먼저, 나는 문제를 풀기 위해 다음과 같이 큐브의 전개도를 구성하였다. 이 전개도는 가상의 위치로써, 큐브가 회전하더라도 어떻게 큐브가 회전하였는지 우리가 알기 쉽게 도와준다. 이 전개도를 구현하기 위해 나는 cube라는 3차원 리스트 변수를 두었고, 다음과 같이 구성하였다. 즉, cube는 3*3 2차원 배열을 6개 가진 변수이다. 큐브의 각 칸에 대한 숫자들은 나중에 큐브가 회전할 때 우리가 쉽게 이해하기 위해 임의로 둔 숫자이다. 이제 우리는 ..

Virtual Memory Management (가상 메모리 관리) 가상 메모리란 메모리 내에 완전히 존재하지 않는 프로세스를 실행하는 기술을 의미한다. 프로그램의 인스트럭션들은 실행되기 위해서 메모리에 로드되어야 하지만, 프로그램 전체가 필요한 것은 아니다. 만약 그렇다 하더라도, 동시에 프로그램 전체를 사용하지는 않는다. 즉, 프로그램이 CPU에 의해 실제로 사용되는 부분만 메모리로 로드하고, 사용되지 않는 부분은 디스크로 옮겨서 실제 메모리를 대체하도록 하는 것이다. 프로그램의 일부만 메모리로 로드하여 실행하는 것은 다음과 같은 장점이 있다. 물리 메모리의 크기에 제한받지 않는다. 더 많은 프로그램이 동시에 실행될 수 있다. (CPU utilization 증가) 페이지 테이블 전체를 읽을 필요가 없..

JVM이란? JVM이란 Java Virtual Machine의 약자이다. 즉, 자바 애플리케이션을 실행하기 위한 가상 머신이다. JVM은 컴파일된 자바의 소스코드를 읽어 들이고, Java API를 통하여 운영체제와 Java의 중간자 역할로써 운영체제마다 다른 system call을 사용하여 운영체제가 다르더라도 동일한 연산을 수행할 수 있다. 자바 프로그램의 실행 과정은 다음과 같다. Java 컴파일러는 소스코드(.java)를 읽어서 바이트 코드(.class)로 변환한다. Class Loader는 변환된 바이트 코드(.class)를 JVM의 Runtime Data Area로 로딩한다. Exeuction Engine은 로딩된 바이트 코드(.class)를 해석한다. (해석하는 방법에는 Interpreter와..

Java란? Java는 대표적인 객체지향 프로그래밍 언어(Object-Oriented Language)이다. 또한, 현재 세계에서 가장 많이 사용되고 있는 프로그래밍 언어이기도 하다. 자바는 주로 다음과 같은 언어로 불린다. Platform Independant Language 여기서 플랫폼이라 함은, 운영체제를 의미한다. Java 컴파일러는 소스코드를 JVM이 이해할 수 있는 언어인 바이트 코드로 변환한다. 변환된 바이트 코드는 JVM을 통해 Windows, Linux, Mac OS와 같이 여러 운영체제에서 실행될 수 있다. (이는 이식성(=portability)을 보장한다.) 단, 해당 운영체제를 지원하는 JVM이 있어야 한다. 즉, 운영체제의 제약을 받지 않는 언어이다. Object-Oriented..

본 포스트에서는 제출한 변경사항을 수정하는 방법과, 제출한 변경사항이 병합되는 과정을 살펴보겠습니다. 본 포스트는 변경사항을 이미 한 번 제출했다고 가정합니다. 리뷰 확인하기 우리가 제출한 변경사항에 대해서 코멘트가 달렸네요! 한 번 살펴봅시다. 먼저, 7번 패치셋을 제출하고 나서, Zuul로부터 Verified +1을 받았습니다. 즉, 빌드 테스트가 성공했다는 뜻입니다. 그다음으로 Lajos Katona와 Slawek Kalponski로부터 코멘트를 받았네요. 한 번 클릭해서 자세하게 살펴보겠습니다. 위 사진은 제가 작성한 커밋 메시지입니다. 노란색으로 하이라이트 된 부분에 달린 코멘트들을 한 마디로 요약하자면, '커밋 메시지를 이렇게 작성하지 마라'가 되겠네요... 하하 (쓴웃음) 다음으로는 제가 실..
- Total
- Today
- Yesterday