class A {
int a;
int b;
}
public class Test {
static void func1(A m) {
m.a *= 10;
}
static void func2(A m) {
m.a += m.b;
}
public static void main(String args[]){
A m = new A(); // A클래스는 객체 변수 m을 선언.
m.a = 100;
func1(m);
m.b = m.a;
func2(m);
System.out.printf("%d", m.a);
}
}
🖍 2000
1️⃣func1(m)
= m.a = 100 ∗ 10 = 1000
2️⃣m.b = m.a;
의 구문에 의해 m.b = 1000
3️⃣func1(m)
= m.a + m.b = 1000 + 1000 = 2000
4️⃣ ∴ m.a = 2000
🖍 Level 0
DBMS는 데이터베이스에 치명적인 손실이 발생했을 때 이를 복구하기 위해 사용되는 데이터베이스의 처리 내용이나 이용 상황 등 상태 변화를 시간의 흐름에 따라 기록한 로그를 생성한다.
( ① ) : 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(start)과 완료(commit)에 대한 기록이 있는 트랜잭션들의 작업을 재작업한다. 즉 로그를 이용하여 해당 데이터 항목에 대해 이전 값을 이후 값으로 변경하는 연산이다.
( ② ) : 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작을 나타내는 ''는 있지만 완료를 나타내는 '' 기록이 없는 트랜잭션들이 작업한 내용들을 모두 취소한다. 즉 로그를 이용하여 해당 데이터 항목에 대해 이후 값을 이전 값으로 변경한다.
🖍 ① REDO, ②UNDO
<성적>테이블에서 이름(name)과 점수(score)를 조회하되, 점수를 기준으로 내림차순 정령하여 조회하는 <SQL문>을 작성하시오.
🖍 SELECT name, score FROM 성적 ORDER BY 성적 DESC
class Car implements Runnable{ // Runnable 인터페이스를 상속받은 클래스 Car 정의
int a;
public void run(){
try{
while(++a < 100){
System.out.println("miles traveled : " + a);
Thread.sleep(100);
}
}catch(Exception E){ }
}
}
public class Test{
public static void main(String[] args){
Thread t1 = new Thread(new _____());
t1.start();
}
}
🖍 Car
1️⃣Thread t1 = new Thread(new Car());
: 스레드 클래스의 객체 변수 t1을 선언하며, 스레드를 실행할 run() 메소드를 정의하고 있는 Car() 클래스를 생성자의 인수로 사용.
∗ 스레드 클래스는 생성자를 호출할 때 Runnable 인터페이스를 인수로 사용함
2️⃣t1.start();
의start()
는 스레드 클래스에 포함된 메소드로, run() 메소드를 정의한 코드들을 실행하는 메소드이다.
∗run()
은 main()과 별개로 실행되기 때문에 main()이 종료되어도 run()의 작업이 끝나지 않으면 계속 수행.
3️⃣ try ~ catch 문 실행 → a는 전치증가 연산이므로 a에 1을 더한 후, a가 100보다 작은 동안에 for문을 실행.
4️⃣
miles traveled : 1
miles traveled : 2
...
miles traveled : 99
을 출력
5️⃣Thread.sleep(100);
는 0.1초 동안 스레드를 일시 정지시킴.
∗ Thread.sleep(n)` : n/1000초 동안 스레드를 일시 정지시킴
class Car implements Runnable
: Runnable 인터페이스를 상속받은 클래스 Car 정의.
∗implements
:extends
와 같이 상속에 사용하는 예약어로, 인터페이스를 상속할 때 사용함
∗Runnable
: 스레드 클래스를 만들 때 사용하는 인터페이스
∗ Interface는 클래스와 유사하게 변수와 매소드를 갖는 개체
∗ Thread는 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위로, 대부분은 main() 메소드를 실행하는 하나의 스레드로만 작업을 수행하는데, 스레드 클래스는 추가적인 스레드를 가질 수 있도록 생성하는 기능을 가짐public void run()
: 스레드가 수행할 작업들을 정의하는 run()메소드를 정의.try{} catch(Exception E){ }
:
try{}
문을 활용하여, 실행 중에 예외가 발생할 경우, 실행할 코드를 하나의 블록으로 묶어 둔 것.Thread.sleep();
: 인터럽트로 인한 예외를 발생시킬 가능성이 큰 메소드이므로 반드시 try ~ catch 문을 통해 예외를 처리해줘야 함catch(Exception E){ }
:try{}
블록을 수행하다 발생한 예외를 처리하는 블록으로, 예외 객체는InterruptedException
이지만,Exception
을 사용하면InterruptedException
을 포함한 대부분의 예외를 한 번에 처리할 수 있음.
참고,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.