본문 바로가기

반응형

전체 글

(63)
예외처리 (종류와 범위) 지난 글에서 1,2번에 대해 알아봤습니다. 1. 예외가 어디서 발생하고 어디서 처리되는지 2. 예외가 발생하는 위치에 따른 코드의 흐름 3. 예외의 종류와 범위 이번에는 예외의 종류와 범위에 대해 알아보고자 합니다. 예외는 크게 프로그래머들의 실수로 발생할 수 있는 RunTimeException과 사용자들의 실수로 인해 발생 하는 Exception 이 있습니다 라고 언급되지만 여기서는 이 내용을 다루기 위한 것이 아니기에 넘어가도록 하겠습니다. 이전 글들에서 썻던 예외 중 가장 상위 클래스 Exception입니다. 모든 예외의 조상이기 때문에 Exception을 쓰게 되면 모든 예외를 다 처리할 수 있습니다. parent 클래스를 생성하고 child 라는 자손 클래스로 이를 상속했습니다. 그리고 chil..
예외처리 (발생하는 위치와 코드의 흐름) 예외처리에 대한 글을 쓰면서 3가지 유의 사항이 있다고 했습니다. 1. 예외가 어디서 발생하고 어디서 처리되는지 2. 예외가 발생하는 위치에 따른 코드의 흐름 3. 예외의 종류와 범위 이번 글에서는 2번째 내용 2. 예외가 발생하는 위치에 따른 코드의 흐름에 대해 알아보려 합니다. 기본적으로 위에서 아래로 순차적으로 진행되는 코드의 흐름에서 try~catch 문에서 예외를 처리하면서 순서를 건너뛰게 되는 상황이 발생하며 이는 자바 관련된 시험에 많이 다뤄지는 것을 봤습니다. 위의 코드는 1부터 순차적으로 출력됩니다. 1,2,3,4, 하지만 0/0에서 0으로 나눠지지 않기에 예외가 발생하며 5가 출력되지 않고 catch 구문으로 가서 6을 출력한 뒤 마지막으로 7을 출력합니다. 2번째 코드를 보겠습니다. ..
예외처리 예외처리라고 하면 예외가 날 구문을 작성하고 예외가 났을 경우 실행할 코드를 작성해 주는 아래와 같은 구문이 생각나게 됩니다. 저도 사실은 이게 다라고 생각했지만 예외처리 부분에서 꼭 알아야 할 내용들이 몇 가지 있다는 것을 알게 되었습니다. 1. 예외가 어디서 발생하고 어디서 처리되는지 2. 예외가 발생하는 위치에 따른 코드의 흐름 3. 예외의 종류와 범위 첫번째로 예외가 발생되고 처리되는 위치에 대해 알아보겠습니다. 우선 이 코드에 대해 설명하자면 method1에서 예외를 발생시키고 method2에서 예외를 처리했습니다. 그리고 method3 은 method1에서 발생한 예외를 전달받는 코드입니다. main에서 method1()을 호출해 보겠습니다. 예외처리가 안되었기 때문에 당연히 예외가 발생하였기..
알파-베타 가지치기, Alpha-beta pruning 미니맥스 알고리즘에서 몇 수 앞까지 예상 가능한지는 이 알고리즘의 성능에 관련되어 있을 것입니다. 가능한 멀리까지 예상할 수 있을수록 더 나은 결과를 얻을 수 있을 것입니다. 하지만 이러한 성능을 가지려면 막대한 시간과 공간을 차지하게 될 것입니다. 바둑의 경우 19*19 칸에서 이뤄지게 되는데 한수앞을 더 예상하기 위해서는 (19*19)(19*19-1)(19*19-2)(19*19-3)... 이렇게 거의 19*19 만큼의 경우가 곱해지게 됩니다. 극단적인 예로 엄청난 공간을 가지고 있는 인공지능이기에 기하급수적으로 추가되는 공간을 소화할 수 있다고 해도 바둑은 제한시간이 존재하기 때문에 한 수를 두는데 모든 시간을 다 차지해 버릴 수도 모릅니다. 하지만 잘 생각해보면 바둑에서 상대방 흑돌이 중앙자리에 돌..
Minimax algorithm, 미니맥스 알고리즘 이번 글에서는 미니맥스 알고리즘에 대해 알아보기 앞서 간단한 맛보기 개념으로 실제로 어떻게 진행되는지 알아보겠습니다. 체스나 바둑같이 상대방과 번갈아 가며 하는 게임에 있어 상대방의 수를 미리 예측하고 플레이하는 것이 일반적일 것입니다. 그런데 상대방이 가장 최악의 플레이를 한다고 판단하지는 않을 것입니다. 상대방 역시 나와 같이 영리하기 때문에 최선의 결과가 예측되는 선택을 할 것이 분명합니다. 이런 개념에서 상대방의 최고의 수가 나에게 가장 최소의 영향을 끼치게 만들자 라며 나온 것이 바로 MiniMax Algorithm, 미니맥스 입니다. 위 그림을 통해 미니맥스 알고리즘이 어떻게 진행되는지 살펴 보겠습니다. 이 상황은 4수 앞을 예측한 트리 노드이며 0, 2, 4는 내 차례이며 1,3 은 상대방의..
STP, Spanning Tree Protocol, 스패닝트리 STP, IEEE 802.1D 스패닝 트리 프로토콜이란 스위치에서 발생하는 루핑을 막아주는 역할을 한다고 알려져 있습니다. 보통 스위치 경로를 구성할 때 하나의 경로가 문제가 생길 경우를 대비해 예비 경로를 마련합니다. 이때 STP 가 없다면 루핑에 빠지게 되는데 우선 어떻게 루핑에 빠지는지를 살펴보겠습니다. 1. R1이 R2에게 ping 을 보내려 하는데 해당 아이피의 맥주소를 모르기 때문에 이를 알아내기 위해 ARP broadcast를 보내게 됩니다. 2. e0/0 을 통해 ARP broadcast 프레임을 주고받은 SW1 은 e0/0 포트를 제외한 모든 포트에 이 프레임을 플러딩 합니다. 3. SW2는 e0/1 과 e0/2를 통해 ARP broadcast 프레임을 받았습니다. 2번 과정처럼 수신받은..
스위치, 트랜스패런트 브리징, Transparent Bridging 네트워크, 보안을 공부하다 보면 자주 접하게 되는 용어 ARP 가 있습니다. ARP 란 네트워크 상의 IP 주소를 물리적 네트워크 주소로 대응시키기 위해 사용되는 프로토콜로서 상대방의 IP 주소는 알고 있지만 MAC 주소를 모를 때 이를 알아내기 위해 목적지 IP 주소와 브로드캐스팅 물리적 네트워크 주소 FFFF.FFFF.FFFF로 ARP 패킷을 전송해 해당 IP 소유자가 자신의 IP 주소가 목적지에 있는 ARP 패킷을 수신하고 자신의 MAC 주소를 replay 패킷에 담아 송신자에게 전달해 MAC 주소를 알 수 있게 됩니다. Transparent Bridging 이란 스위치가 수신하는 이더넷 프레임 (ARP)을 참조해 MAC Address Table 을 생성하고 갱신해 목적지로 전송할 때 사용하는 프로..
생성자, Constructor 이전의 글에서 클래스, 객체지향이 무엇인가에 대해 다뤘습니다. 그리고 클래스의 객체를 정의하고 객체를 생성할 때 사용한다고 언급했습니다. 이 객체를 생성할 때 사용하는 것이 바로 생성자입니다. 생성자의 구조는 메서드와 비슷합니다. void나 리턴타입이 존재하지 않고 클래스명과 동일한 이름 가지게 됩니다. lecture_constructor con = new lecture_constructor(); 라는 명령어를 통해 객체를 생성하게 됩니다. 메서드를 수행할 때 명령어를 보면 main에서 ToString();이라는 명령어를 통해 메서드를 실행하게 됩니다. 마찬가지로 new라는 명령어를 통해 객체를 생성하면서 lecture_constructor();라는 메서드와 동일한 생성자를 수행해 객체를 만들게 됩니다...

반응형