본문 바로가기
728x90
반응형

2022-286

[자바] 인터페이스 interface I{ public void m(); } class A implements I{ public void m(){ //m메소드 구현 } } 인터페이스 I가 있다. 인터페이스에는 몸통이 구현되지 않은 메소드 m이 있다. class A implements I라고 되어있다. 클래스A는 인터페이스I의 모든 메소드를 구현해야한다는 말이다. 만약 구현하지 않으면 컴파일조차 되지 않는다. implements I는 결국 class가 I의 메소드를 구현해야만 하도록 제한하는 것이다. 인터페이스는 어떤 클래스가 어떤 메소드를 가지는지 명세해주는 역할을 한다. abstract class는 본체가 있는 메소드, 본체가 없는 abstract메소드를 모두 가질 수 있지만 interface class 는 본체가 없는 .. 2022. 12. 18.
[자바] 스레드와 멀티태스킹 자바에서 스레드 만들기 java.lang.Thread 클래스를 이용하는 방법 java.lang.Runnable 인터페이스를 이용하는 방법 Thread 클래스를 이용한 스레드 생성 class MyThread extends Thread{ @Override public void run(){ ...//run 오버라이딩 } } run()메소드를 스레드 코드라고 부름. run()메소드에서 스레드 실행 시작 MyThread mythread= new MyThread(); mythread.start(); 스레드 객체를 생성하고, start() 메소드를 호출하여 스레드를 시작할 수 있다. Runnable 인터페이스로 스레드 만들기 class MyThread implements Runnable{ @Override publi.. 2022. 12. 18.
[자바] 제네릭과 컬렉션 컬렉션(collection) 요소(element) 객체들의 저장소 고정 크기의 배열을 다루는 어려움 해소 다양한 객체들의 삽입,삭제,검색 등의 관리 용이 컬렉션은 제네릭 기법으로 구현된다. 컬렉션의 요소는 객체만 가능하다 (int,char,double과 같은 기본 타입이 아니라 Integer,String같은 객체를 사용하여야 함) 오늘 알아볼 것들 Vector ArrayList LinkedList Iterator HashMap Collections 제네릭 클래스 만들기 Vector java.util.Vector Vector 클래스의 주요 메소드 boolean add(E element) : 맨 뒤에 element 추가 void add(int index, E element): index 위치에 element.. 2022. 12. 18.
[자바] 네트워크 서버 코드 package networkEx; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class ServerEx { public static void main(String[] args) { try { ServerSocket ss=new ServerSocket(8888); Socket server=ss.accept(); InputStream in =server.getInputStream(); OutputStream out = server.getOutputStream(); byte[] arr.. 2022. 12. 17.
[자료구조] 7.Sorting: Heap Sort Heap sort void adjust(int list[], int root, int n) { int rootkey = list[root], child = 2 * root; while (child list[child]) break; //그 자식보다 rootkey가 크면 멈춤 else {//자식이 rootkey보다 큰 경우 list[child / 2] = list[child]; //자식을 위로 보냄 child *= 2; } } list[child / 2] = rootkey; //rootkey 입력 } void heapsort(int list[], int n) { int i, j; int temp; for (i = n / 2; i > 0; i--) {//n/2는 자식을 가지는 가장 끝의 값 adjust(li.. 2022. 12. 13.
[자바] ArrayList<클래스> 형의 정렬방법 일반적으로는 collections.sort(arraylist)를 하면 되지만 어레이리스트가 어떠한 클래스 객체를 담는다면.. 정렬을 어떻게 해야할까? Collections.sort에서 자동완성을 시켜보면 sort(List list)가 있고 sort(List list, Comparator 2022. 12. 12.
[데이터통신] Wireless LAN(2) (CSMA/CA) 유선통신과 달리 무선랜에서는 collision 감지하는것이 어렵다. 따라서 무선랜에서는 가능한 한 충돌을 회피(collision avoidance)하는 CSMA/CA방식을 사용한다. 왼쪽은 sender, 오른쪽은 receiver이다. 우선 sender는 전송하기 전 channel idle인지 확인한다. idle이라면 바로 전송하는것이 아니라, 일정시간 대기한다. (DIFS) DIFS시간이 끝날 때까지 계속 idle하다면, 데이터를 전송한다. receiver는 데이터를 받았다면 SIFS만큼 대기한 이후, ACK를 보내준다.(잘 받았다는 뜻) sender는 일정 시간동안 ACK가 오기를 기다리고, ACK가 정상적으로 오면 전송이 완료되었다고 생각한다. 반면 ACK가 도착하지 않는다면, 전송이 실패했다고 생각.. 2022. 12. 8.
백도어 트로이 목마: 사용자가 의도치 않은 코드를 정상적인 프로그램에 삽입한 프로그램 스파이웨어: 설치된 시스템의 정보를 주기적으로 원격지의 특정한 서버에 보내는 프로그램 백도어: 운영체제나 프로그램을 생성할 때 정상적인 인증 과정을 거치지 않고 접근할 수 있도록 만든 일종의 통로 로컬 백도어: 로컬에서 서버의 셸을 얻어내 관리자로 권한을 상승할 때 사용. 공격자는 일반 계정이 하나 필요 함(일반계정에서 루트 계정으로 권한 상승) 원격 백도어: 원격으로 관리자 권한을 획득해 시스템에 접근. 시스템 계정이 필요 없음 백도어 생성 #include main(int argc, char *argv[]) { char exec[100]; setuid(0); setgid(0); sprintf(exec, "%s 2>/dev/n.. 2022. 12. 6.
[데이터통신] Wireless LAN Wireless LAN =무선 랜 =IEEE 802.11 =Wi-Fi 무선 랜을 사용하면서 2.4GHz, 5GHz 라고 적혀있는걸 본 적 많을 것이다. 이것은 주파수 대역을 표시해 놓은 것이다. 무선 랜 통신은 ISM band 이 주파수 대역은 ISM band에 포함되는 주파수대역에 포함된다. ISM band는 Industrial, Scientific and Medical band 라는 뜻으로, 산업,과학,의료용 기기에 사용하기 위한 주파수 대역이라는 뜻이다. Non-license 대역으로, 사용시 허가를 받지 않아도 된다. IEEE 802.11 자료인데, 새로운 표준이 나올 수록 Bandwidth가 커지고 Max data rate도 커진 것을 볼 수 있다. IEEE802.11은 두 가지 모드가 있다 I.. 2022. 12. 4.
[자료구조] 7. Sorting Sorting의 응용 분야 이진 검색(binary search) 두 리스트의 동일성/합집합/차집합/교집합 계산 Stable Sorting 리스트에서 같은 키 값이 여러 개 존재하는 경우, 해당 값의 순서가 sorting 전의 순서로 유지되는 경우 Sort 알고리즘의 종류 Internal sorting(내부 정렬): 메모리 상에서 정렬 External sorting(외부 정렬): 리스트 내용이 커서 메모리에 저장될 수 없는 경우 사용 삽입 정렬(Insertion Sort) void insertion_sort(int list[],int n) { int next; for(int i=1;i=0 && next 2022. 12. 3.
[자바] 멀티스레드, synchronized MultiThread program 작성 방법 Thread class 이용 Runnable interface 이용 Thread class 상속받는 방법 public class DigitThread extends Thread { public void run() {//Thread.run 오버라이딩 for (int count = 0; count < 10; count++) { System.out.println(count); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } thread로 실행할 클래스를 선언한다.(Thread class 상속.. 2022. 12. 1.
[자바] Vector 벡터 생성하기 Vector vc = new Vector(); Vector v = new Vector(); //타입을 지정하지 않으면 Object타입으로 설정 import java.util.Vector; class Point{ int x,y; public Point(int x, int y) { this.x = x; this.y = y; } public String toString() { return getClass().getName() +"("+x+","+y+")"; } } public class PointVectorExam { public static void main(String[] args) { Vector pointV=new Vector(); pointV.add(new Point(1,2)); poi.. 2022. 12. 1.
[자료구조] 그래프 - 작업 네트워크 두 가지 종류의 네트워크가 있다. AOV (Activity on Vertex) Networks AOE (Activity on Edge) Networks AOV (Activity on Vertex) 작업을 정점으로 표현한 방향성 그래프이다. edge는 작업들간의 선후 관계를 표현한다. u에서 v로 가는 방향 경로가 존재할 때 u를 v의 predecessor, v를 u의 successor 라고 한다. 선수과목을 AOV로 표현한 예시 Topological Order vertex들 간의 선행 관계를 고려하여 모든 vertex의 선형순서를 정의하는 것. topological order은 여러 개 존재할 수 있다. 더보기 #include #include #define MAX_VERTICES 6 struct node.. 2022. 11. 29.
그래프 - 최단거리 Single Source All Destinations 하나의 출발점에서 나머지 각각의 vertex들 까지의 최단거리를 구하자.. Dijkstra Algorithm n개의 vertex가 있다 found[n]배열이 있다. 그래프는 인접 행렬로 표현, cost[n][n]이다. 결과는 distance[n]에 저장한다. #define MAX_VERTICES 6 int cost[][MAX_VERTICES] = { {0,50,10,1000,45,1000}, {1000,0,15,1000,10,1000}, {20,1000,0,15,1000,1000}, {1000,20,1000,0,35,1000}, {1000,1000,30,1000,0,1000}, {1000,1000,1000,3,1000,0} }; int distanc.. 2022. 11. 24.
자바 Exception/Generic <T> Exception import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class ExceptExam08 { public static void main(String[] args) { try { FileReader rd = new FileReader("some.txt"); } catch(FileNotFoundException e) { System.err.println("파일이 없다"); } catch (IOException e) { System.err.println("입출력 에러 발생"); } } } catch문을 여러 개 달 수도 있다. 여기서 IOException이 FileNot.. 2022. 11. 24.
Switch Star 토폴로지에서 쓰이는 Switch 장비를 알아보자. 스위치에 연결된 호스트가 프레임을 보내면, 스위치가 프레임에있는 헤더 안의 dest(목적지)를 보고 알맞은 대상에게 프레임을 전송한다. 이 때, 목적지에 보내려면 몇 번 포트로 보내야 할까? 스위치 테이블에서 목적지의 포트번호를 찾아 해당 포트번호로 보낸다. 스위치 테이블에 해당하는 목적지 정보가 없다면 플러딩을 통해 전송하고, 새로운 정보를 얻을 때마다 스위치 테이블에 저장하는 셀프러닝을 한다. Switch 스위치는 link-layer 장비이다. (=L2장비) 이더넷 프레임을 수신하고, 전달한다. 프레임을 수신하고, 하나 이상의 링크로 프레임을 전달한다. CSMA/CD가 적용된다. 세번째 설명에서, 하나 이상의 링크로 프레임을 전달한다고 하는데.. 2022. 11. 23.
계정과 권한/패스워드 크래킹 리눅스/유닉스의 계정과 권한 체계 리눅스/유닉스의 권한 상승 윈도우의 계정과 권한 체계 윈도우의 권한 상승 리눅스/유닉스의 계정과 권한 리눅스 시스템의 계정과 권한 체계 root라고 불리는 관리자와 일반 사용자 계정만 있음 계정 목록을 /etc/passwd 파일에 저장 /etc/passwd 파일 내용 1)root : 2)x : 3)0 : 4)0 : 5)root : 6)/root : 7)/bin/bash 1)id : 2)패스워드(암호화됨) : 3)UID : 4)GID : 5)이름 : 6)홈 디렉터리 : 7)사용자 셸 파일정보 drwxrwxrwx, 1 root rot 접근권한,링크수,소유자,그룹 소유자변경(chown/chgrp 새 소유자 파일명) ,권한변경(chmod 644 파일명),umask등 이전에 배운.. 2022. 11. 22.
Biconnected Components/최소 비용 신장트리 단절점(articulation point) 그래프 G의 vertex, v로서 v와 v에 부속된 edge들을 삭제할 경우, G가 두 개 이상의 connected component들로 분할되는 vertex들 이중 결합 그래프(biconnected graph) 단절점이 없는 connected graph 이중 결합 부분 그래프(biconnected component) (a)는 connected graph인데, 빨간색으로 그어놓은 vertex를 삭제하게 되면 그래프가 끊어지게 된다. 이 빨간 vertex들이 단절점(articulation point)인 것이다. (b)는 biconnected components들이다. 단절점이 없어 무엇 하나를 끊어도 모두 연결되어있다는 뜻이다. vertex가 두개 뿐인 것도 bi.. 2022. 11. 22.
10. Microprocessor Computer Category Desktop(PC,Workstation) Servers laptop Embedded computers Ultra-Mobile Personal Computers 서버는 신뢰성,성능이 중요. 복잡한 연산을 하는 서버가 있고, 간단한 연산이지만 많은 일을 처리해야하는 서버도 있음. 임베디드는 내장형. 냉장고,청소기.. 등 special purpose 모든 컴퓨터 기능은 네 가지 기본 요소로 구성된다 Data processing (명령어 처리) Data storage (명령어 저장) Data movement (연산결과를 메모리에 쓰기) Control 폰 노이만 구조의 컴퓨터를 사용하기 때문에 메모리에 저장되어있는 값을 cpu가 가져와서 처리하고, 처리한 값을 메모리에 써줘야 함.. 2022. 11. 21.
6장 - 기초적인 그래프 연산들 깊이 우선 탐색(DFS) 너비 우선 탐색(BFS) 연결 요소(Connected Components) 신장 트리(Spanning Trees) 이중 결합 요소와 단절점 Depth First Search (DFS) include #include #define FALSE 0 #define TRUE 1 #define MAX_VERTICES 10 short int visited[MAX_VERTICES];//방문표시할 리스트 node graph[MAX_VERTICES]; struct node{ int vertex; node* link; }; void dfs(int v) { struct node* w; visited[v] = TRUE; printf("%5d", v); for (w = graph[v]; w; w = w-.. 2022. 11. 18.
728x90
반응형