728x90
반응형
SMALL

#열거형 (enum)

- 관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공

enum 에 저장된 값들은 자동으로 0부터 값을 부여받는다. 순서를 부여받는다.

즉 enum은 static final int 인 것이다.

관련된 Static final 상수들을 관련되게 묶어 놓은 것.

자바는 값과 타입이 둘 다 같아야 같다 라고 한다. 그래서 값이 같더라도 타입이 다르다면 다르다.

그래서 if(Card.Kind.CLOVER == Card.Value.TWO) 는 컴파일 에러가 난다. 타입이 달라서 비교가 불가능하다.

#열거형의 정의와 사용

- 열거형을 정의하는 방법

enum 열거형 이름 { 상수명1, 상수명2, ... }

enum Direction { EAST, SOUTH, WEST, NORTH }

- 열거형 타입의 변수를 선언하고 사용하는 방법

- 열거형 상수의 비교에 ==와 compareTo() 사용가능

==, equals()는 값을 비교하고 

compareTo()는 이전 값에서 파라미터를 뺀 값을 반환한다.

비교 연산자는 불가능하지만 compareTo()는 가능 -> dir.compareTo(Direction.WEST) > 0 은 가능

#열거형의 조상 - java.lang.Enum

- 모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속받는다.

for문을 통해서 값들을 출력할 수 있다.

배열로 받을 수도 있다. vlaues()를 통해서 배열을 반환한다.

switch문에서는 case 값에 Direction.EAST 값을 쓸 수 없고, EAST 값이 들어갈 수 있다.

#enum 선언 방법

 

참고 - https://www.youtube.com/watch?v=ODHC-n4mpMY&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=142

728x90
반응형
LIST

'Java의 정석' 카테고리의 다른 글

열거형 - 열거형 멤버 추가하기  (3) 2024.10.14
클래스의 또 다른 정의  (0) 2023.09.08
객체 배열  (0) 2023.09.08
클래스와 객체의 정의와 용도  (0) 2023.09.08
객체지향언어  (0) 2023.09.08
728x90
반응형
SMALL

1. 랜섬웨어란?

랜선이란 몸값이란 뜻. 몸값을 요구하는 소프트 웨어이다. 중요한 소프트웨어를 암호화 시켜버리고 돈을 결제해야 복호화를 시켜주는거에요. 정말 사악한 소프트웨어라고 할 수 있습니다.

2. 감염경로

평범한 파일로 위장하면 클릭하면 감염되도록 할 수 있다.

사이트를 통해서도 감염될 수 있다.

100% 안 걸릴 수 있는 뾰족한 방법은 없습니다.

3. 치료법

안타깝지만 치료법은 두 가지 밖에 없다.

돈을 결제한다.

랜섬웨어를 만든 사람을 잡아서 두들겨 팬다.

4. 예방법

랜섬웨어 복호 툴들도 조직을 잡아서 만든 것.

예방은 피해는 줄일 수 있다.

바이러스 토탈이라는 사이트를 애용하면 좋겠다. 수십가지 백신들이 검사를 해주기 때문에 조금 더 안전합니다.

웹 사이트를 검사할 수도 있다.

백업을 자주 자주 해 놓는 것. 컴퓨터가 날아가도 상관이 없습니다. -> 클라우드 (웹 하드 등에 백업을 해야 한다.)

작업용 그리고 개인용. 컴퓨터를 물리적으로 두 개를 장만하셔도 되고, 한 컴퓨터에 윈도우를 두 개 까는 것도 나쁘지 않은 방법이다.

컴퓨터에 중요한 파일을 놓지 않는 겁니다.

5. 평범한 파일 위장 침입 예시

스타크래프트 파일을 열었는데 강좌 파일이 삭제된다는지 하는 랜섬웨어 피해가 있을 수 있다.

 

감사합니다.

참고 - https://www.youtube.com/watch?v=bK1qM-8D2Bw&list=PLZIOAx7U0dil7sDpXvSNWSugHPrNBxUyG&index=6

 

728x90
반응형
LIST
728x90
반응형
SMALL

#DFS BFS

#DFS = Depth First Search = 깊이 우선 탐색

 

#BFS = Breadth First Search = 너비 우선 탐색

 

#미로로 보는 DFS

#미로로 보는 BFS

#컴퓨터에서는 어떻게 쓰이나?

최대한 아래까지 최대한 빠르게 (부모 노드, 형제 노드, 자식 노드로 구성)

형제 노드 부터 검색

 

#요약을 하자면

DFS는 최대한 깊게 (나무)

BFS는 최대한 넓게 (숲)

 

728x90
반응형
LIST
728x90
반응형
SMALL

Q. 상대방이 패킷을 많이 던졌을 때 통신 중인 상대방의 IP주소를 어떻게 알아내는지?

DOS(Denial of Service, 분산 공격) 공격을 해서 서비스 공격을 하는 거에요. 

맨 위 컴퓨터가 attacker 그리고 맨 아래가 server 입니다. 여러 컴퓨터가 인터넷을 통해서 한 컴퓨터 (서버)에 접속을 시도하면 서버가 폭주합니다.

홈페이지 폭주도 마찬가지입니다.

다운로드를 많이 받으면 인터넷이 느려집니다.

한 컴퓨터로 공격을 하면 DOS 공격이고, 여러 컴퓨터가 되면 DDOS(Distributed DoS, 분산 서비스 거부 공격) 공격입니다.

좀비 컴퓨터들의 IP주소는 바로 알아낼 수 있지만 그 뒤에 attacker의 IP주소를 알아내는 것은 쉽지가 않습니다.

상대방을 공격을 해서 인터넷이 안 되도록 하는 것입니다.

 

Wire Shark 등의 Tool을 사용하여, 많은 중복되는 공격 IP주소들을 KISA의 who is에 IP 주소를 검색해볼 수 있습니다.

 

=> 예를 들어 채팅방에서 닉네임을 가지고 채팅을 한다고 가정해봅시다. 

KISA의 who is 에 IP주소를 검색을 하면 해당 서비스 제공자를 알 수 있습니다.

 

nslookup 등의 명령어를 통해서 IP 주소를 알아낼 수 있습니다.

 

경찰은 공격자의 IP 주소로 예상되는 IP 주소를 SKT나 KT 또는 U+와 같은 해당 서비스 업체에 제출을 하면 해당 IP 주소를 사용하는 컴퓨터들을 모두 조회할 수 있는거죠. 그렇게 해서 집주소를 알아내는거에요. 경찰은.

 

참고1. IP주소는 함부러 못 바꾼다.

함부러 IP주소를 바꾸면 SKT, KT, LGU+ 등 인터넷 서비스 업체에서 인터넷이 안 되도록 막어버리기도 한다.

 

참고2. IP와 IP주소는 다르다.

IP - Internet Protocol

IP 주소 - Internet Protocol의 주소 

 

감사합니다.

참고 - https://www.youtube.com/watch?v=a7lLH2LmGDI&list=PLZIOAx7U0dil7sDpXvSNWSugHPrNBxUyG&index=4

728x90
반응형
LIST
728x90
반응형
SMALL

기본적으로 유선 인터넷에 연결이 되어 있어야 하고 무선 랜카드가 준비가 되어 있어야 합니다.

명령 프롬프트를 관리자 권한으로 실행합니다.

"netsh wlan show drivers"를 실행합니다.

호스트된 네트워크 지원 항목이 "예"로 표시가 되어 있어야 합니다. 다른 경우에는 와이파이존을 만들 수가 없습니다.

netsh wlan set hostednetwork mode=allow ssid='ID' key='비밀번호'을 입력을 하여주세요. *아이디는 5자 비밀번호는 8자로 지정하여 주세요.

명령어를 입력하면 다음과 같은 화면이 보여집니다. 그리고

바탕화면 작업표시줄의 네트워크 아이콘을 클릭을 하여주세요. 그리고 네트워크 공유 센터 열기를 클릭을 하여주세요!

어댑터 설정 변경을 클릭을 하여주세요.

명령 프롬프트를 이용해서 만들어진 무선 네트워크 입니다.

현재 유선으로 연결이 되어있는 네트워크를 더블 클릭 후 속성을 클릭을 하여주세요!

공유 탭을 클릭하여 주세요.

빨간색 부분을 체크하여 주시고 홈 네트워크 연결을 조금 전에 만들어 놓은 무선 네트워크 2번으로 연결을 하여주세요.

이렇게 만들어주세요.

"netsh wlan start hostednetwork" 입력을 하고 엔터를 눌러 주세요.

"호스트된 네트워크를 시작했습니다." 화면을 보실 수 있습니다.

조금전까지 연결이 되어 있지 않던 무선 네트워크2가 연결이 되었습니다.

이제 와이파이 존이 만들어 졌습니다. 무선 기기를 연결을 해서 사용을 하시면 됩니다.

감사합니다.

참고자료 - https://www.youtube.com/watch?v=30tzQUWf9Fw&list=PLZIOAx7U0dil7sDpXvSNWSugHPrNBxUyG&index=3

728x90
반응형
LIST
728x90
반응형
SMALL

컴퓨터 구조를 위해 

한빛 미디어의 혼자 공부하는 컴퓨터 구조 및 운영체제를 참고하였습니다.

도움이 많이 되었습니다.

유튜브 강의도 찾아보실 수 있어 아주 편리합니다.

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

#들어가며

어떻게 입출력장치가 레지스터를 통해 작동하는지를 알아보려고 합니다.

작은 컴퓨터를 하나 보여드립니다.

보이는 시계와 스위치와 LED 등 CPU를 제외하고는 전부 다 입출력 장치 입니다.

이 장치들이 모두 입출력을 하기 위해서는 각각의 레지스터가 있고 레지스터를 통해서 읽고/쓰기 기능이 작동될 수 있습니다.

#프로그래밍

프로그래밍을 통해서 이러한 레지스터들을 직접 읽고 씀으로써 작동시킬 수 있다.

위에 보이는 LED를 위한 미리 정해진 레지스터들이 있습니다. (장치의 이름은 ATmega 128 GPIO 입니다.)

예를 들어 DDRx에 x에 포트를 연결할 수 있습니다. DDRA 또는 DDRB 이러한 방식입니다.

DDRA에 값 1을 대입하면 LED등에 불빛이 들어올 것입니다.

DDRE에 값 0을 입력하면 스위치를 입력으로 사용할 수 있습니다.

PORTA에는 LED에 어떻게 불빛을 쏘고 싶은지를 정하게 됩니다. 출력하고자 하는 값을 쓰면 됩니다.

PINE은 스위치에 입력된 입력값을 레지스터에 저장된 값을 읽어들일 수 있게 됩니다.

#프로그래밍 방법

다음과 같이 C언어를 통해서 프로그래밍을 할 수 있습니다.

DDRA = ob11111111; 은 LED의 8개 모두를 출력으로 쓰겠습니다가 됩니다.

PORTA = ob11111111; 모든 LED에 불을 킬 수 있습니다.

빌드를 한 다음에 이 소스 코드를 직접적으로 판에다가 다운로드를 받아주면은 

다음과 같이 LED에 불빛이 들어옵니다.

위 소스와 같이 코드를 입력하고 빌드를 하고 판에 다운로드를 하면

스위치를 누르기 전 그리고

이렇게 됩니다.

특정 레지스터를 통해서 불빛을 조정하고

특정 인터럽트를 통해서 불빛을 켜기/끄기를 할 수 있습니다.

감사합니다.

 

728x90
반응형
LIST
728x90
반응형
SMALL

#들어가며

세 가지 입출력 방식 : 프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력

#프로그램 입출력

프로그램 속 명령어로 입출력장치를 제어하는 방법

입출력 명령어로써 장치 컨트롤러와 상호작용

메모리에 저장된 정보를 하드 디스크에 백업

(= 하드 디스크에 새로운 정보 쓰기)

#프로그램 입출력 - 메모리 맵 입출력

#프로그램 입출력 - 고립형 입출력

#인터럽트 기반 입출력

인터럽트 복습

- (하드웨어) 인터럽트의 개념

- 플래그 레지스터 속 인터럽트 비트

- 인터럽트 요청 신호

- 인터럽트 서비스 루틴

순차적으로 인터럽트를 처리하는 방식

인터럽트 중에서도 우선 순위가 높은 인터럽트가 있다.

NMI = None Maskable Interupt

#DMA 입출력

프로그램 입출력, 인터럽트 기반 입출력의 공통점?

입출력장치와 메모리 간의 데이터 이동은 CPU가 주도하고 이동하는 데이터도 반드시 CPU를 거친다

가뜩이나 바쁜 CPU..

하드 디스크 백업과 같이 대용량 데이터를 이동한다면?

#DMA 입출력 과정

* 이 때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근

입출력 버스를 통해서 시스템 버스를 CPU와 함께 공동으로 사용하는 버스를 사용하지 않고도 입출력 버스를 사용하지 않음

#마무리하며

입출력 장치가 자체 RAM을 장착하거나, 자체 CPU를 장착한 경우도 있다.

 

728x90
반응형
LIST

+ Recent posts