Computer Science 46

#1 Spring Framework

[ CHAP 1 ]Spring Frameworkopen source application framework for JAVA platformContainer와 Library의 결합크기 작고 성능 우수, Java 객체의 life-cycle 관리Dependency Injection 지원 (DI, 객체들 간 의존 관계 설정)-> DI와 Interface 활용한 객체들 간의 느슨한 결합(loose coupling)annotation 통한 선언적 프로그래밍Aspects와 templates 이용한 단순 반복 코드 제거AOP(Aspect-Oriented-Programming) 지원-> 핵심 business logic과 system service 사이의 독립성 보장mvc framework 제공 Spring Web MVC..

[JAVA] BFS - 너비 우선 탐색

////너비 우선 탐색(BFS)BFS : Breath First Search시작 정점으로부터 인접한 정점들을 모두 차례로 방문한 후 방문했던 정점을 다시 시작점으로 하여 인접한 정점들을 차례로 방문한다.가까운 정점들을 먼저 방문하고 멀리 있는 정점들은 나중에 방문하는 순회 방법인접한 정점들에 대해 차례로 다시 탐색을 반복해야하므로 큐를 사용한다.시작 정점 v를 결정하여 방문한다.정점 v에 인접한 정점들 중에서 방문하지 않은 인접 정점이 있으면 차례로 방문하면서 큐에 enQueue한다.방문하지 않은 인접 정점이 없으면 큐를 deQueue하여 구한 정점을 v로 다시 설정하고 2번을 반복한다.큐가 공백이 될 때까지 반복한다. package BFS; ​ public class ArrayQueue { privat..

[JAVA] 연결 리스트(Linked List)

////단순 연결 리스트(Singly Linked List)연결될 다음 원소에 대한 주소를 저장해야하므로 의 단위로 저장한다.이러한 단위 구조를 노드(node)라 함. 삽입삽입할 새 노드를 만든다. 공백 노드 준비.새 노드의 데이터 필드값을 저장.삽입, 새 노드와 다음 노드 연결앞 노드와 새 노드 연결삭제삭제할 원소의 앞 노드(선행자)를 찾음앞 노드의 링크 필드에 삭제할 노드의 링크 필드값을 저장한다. (삭제 노드 뒤의 링크 값 저장) package LinkedList; ​ public class ListNode { private String data; public ListNode link; public ListNode(){ this.data = null; this.link = null; } public..

[JAVA] 스택(Stack)과 큐(Queue)

//자바로 배우는 쉬운 자료구조 chap7//스택(stack)후입 선출(LIFO : Last In First Out) - 마지막에 삽입된 자료가 가장 먼저 삭제됨.top이 가리키고 있는 자료의 위에 새로운 자료가 쌓임 -> top 올라감삭제할 때는 top이 가리키고 있는 스택의 마지막 자료만 삭제.top은 0 ~ n-1까지의 인덱스를 저장하므로, 스택이 초기상태(공백 상태)일 때는 -1를 저장함push : top을 통한 삽입 연산pop : top을 통한 삭제 연산 package Stack; ​ public interface Stack { boolean isEmpty(); void push(char item); char pop(); void delete(); char peek(); } package Sta..

[JAVA] DFS - 깊이 우선 탐색

//자바로 배우는 쉬운 자료구조 chap 10//그래프객체를 나타내는 정점(vertex), 객체를 연결하는 간선(edge)의 집합G=(V,E)무방향 그래프 : 정점 V1과 정점 V2를 연결하는 간선을 (V1,V2)로 표현, (V1,V2)과 (V2,V1)는 같은 간선방향 그래프 : 정점 V1 -> 정점 V2를 연결하는 간선을 로 표현, 과 는 같은 간선차수 degree간선으로 연결되어 있을 때 두 정점 v1과 v2는 인접(adjacent)되었다고 함.단순 경로 중 시작 정점과 마지막 정점이 같은 경로를 사이클(cycle)이라고 함. DFS(Depth First Search)깊이 우선 탐색시작 정점에서 한 방향으로 갈 수 있는 가장 먼 경로까지 깊이 탐색해가다가 더이상 갈 곳이 없으면 가장 마지막에 만났던 ..

[JAVA] 인접행렬과 인접리스트

////인접 행렬 package AdjGraph; ​ public class GraphNode { int vertex; GraphNode link; ​ } package AdjGraph; ​ public class AdjMatrix { //"인접 행렬" 출력하기 위한 클래스 private int matrix[][] = new int[10][10]; private int totalV = 0; public void insertVertex(int v){ totalV++; } public void insertEdge(int v1, int v2){ if(v1>=totalV || v2>=totalV){ //총 정점의 개수보다 초과하면 System.out.println("그래프에 없는 정점입니다."); } else{..

Java 벼락치기2

//자바 벼락치기 2 chap11 ~ chap12// 상속기존에 존재하는 유사한 클래스로부터 속성을 물려받고 자신이 필요한 기능을 추가.class SubClass extends SuperClass중복을 줄임다중 상속은 불가 but 인터페이스 이용하여 다중 상속의 효과 가능수퍼 클래스에서 private으로 정의된 멤버는 접근 못함메소드 재정의 가능. @Override , public으로 선언되어 있어야 함.재정의 시 super 키워드로 수퍼클래스 메소드를 호출한 후 필요한 부분 추가 ㅇsuper.print();재정의 시 매개변수가 없으면 super(); 서브 클래스의 생성자가 호출되기 전에 수퍼 클래스의 생성자가 자동으로 호출됨. 추상클래스완전하게 구현 x -> 객체 생성 x주로 상속에서 추상적인 개념을 ..

Java 벼락치기1

//자바 벼락치기 chap1~chap10// 정적 변수 static모든 객체들이 공유하나의 클래스에 하나만 존재private static int number = 0;외부에서 클래스 이름을 객체처럼 사용하여 접근. int n = Car.number;정적 메소드는 객체가 생성되지 않은 상태에서 호출되는 메소드이므로 정적 변수와 정적 메소드만 호출이 가능하다.main함수도 static이므로 main함수 안에서 메소드 호출하려면 static 정적 메소드.비정적 메소드에서는 정적변수 사용 가능. 상수 finalstatic final int MAX_SPEED = 40; 배열배열도 객체. 다른 객체 생성,선언하는 것과 유사int[] number = new int[5];사용자 입력을 받아서 배열의 크기에 넣을 수도 있..