본문 바로가기
728x90
반응형
SMALL

전체 글139

[JAVA] 자바 - 큐(Queue) 구현하기 Queue의 특징 맨 앞(front)에서 자료를 꺼내거나 삭제하고 맨 뒤(rear)에서 자료를 추가합니다. First In First Out (선입선출) 구조입니다. 일상생활에서 일렬로 줄 서 있는 모양을 생각하면 이해하기 쉽습니다. 순차적으로 입력된 자료를 순서대로 처리하는데 많이 사용되는 자료구조입니다. 콜센터에 들어온 문의 전화, 메시지 큐 등에 활용됩니다. jdk 클래스: ArrayList 연결 리스트를 활용하여 Queue 구현하기 MyLinkedQueue.java import ch38.MyLinkedList; import ch38.MyListNode; interface Queue { public void enQueue(String data); public String deQueue(); publ.. 2022. 1. 5.
[JAVA] 자바 - 스택(Stack) 구현하기 Stack의 특징 맨 마지막의 위치(top)에서만 자료를 추가, 삭제, 꺼내올 수 있습니다. (중간의 자료를 꺼낼 수 없습니다.) Last In First Out (후입 선출) 구조입니다. 택배 상자가 쌓여 있는 모양이라고 생각하면 이해하기 쉽습니다. 가장 최근의 자료를 찾아오거나 게임에서 히스토리를 유지하고 이를 무를 때 사용할 수 있습니다. 함수의 메모리는 호출 순서에 따른 stack구조입니다. jdk 클래스: Stack 배열을 활용하여 Stack 구현하기 MyArrayStack.java import ch37.MyArray; public class MyArrayStack { MyArray arrayStack; int top; public MyArrayStack() { top = 0; arrayStac.. 2022. 1. 5.
[JAVA] 자바 - 연결리스트(LinkedList) 구현하기 연결 리스트 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료구조입니다. 자료를 저장하는 노드에는 자료와 다음 요소를 가리키는 링크(포인터)가 있습니다. 자료가 추가될 때 노드만큼의 메모리를 할당받고 이전 노드의 링크로 연결합니다.(정해진 크기가 없습니다.) 연결 리스트의 i번째 요소를 찾는데 걸리는 시간은 요소의 개수에 비례합니다. (O(n)) jdk 클래스 : LinkedList 연결리스트 구현 MyListNode.java public class MyListNode { private String data; // 자료 public MyListNode next; // 다음 노드를 가리키는 링크 public MyListNode() { data = null; next = null; } public MyL.. 2022. 1. 4.
[JAVA] 자바 - 배열 구현하기 배열 구현하기 배열의 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조입니다. 정해진 크기가 있습니다. 요소의 추가와 제거 시 다른 요소들의 이동이 필요합니다. 배열의 i번째 요소를 찾는 인덱스 연산이 빠릅니다. jdk클래스 : ArrayList, Vector 배열 구현 MyArray.java public class MyArray { int[] intArr; int count; // 개수 public int ARRAY_SIZE; public static final int ERROR_NUM = -9999999; public MyArray() { count = 0; ARRAY_SIZE = 10; intArr = new int[ARRAY_SIZE]; } public MyArray(int size) {.. 2022. 1. 4.
[JAVA] 자바 - 자료구조 자료구조란 무엇인가? (Data Structure) 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현 방법들입니다. 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됩니다. 자료의 효율적인 관리는 프로그램의 수행 속도와 밀접한 관련이 있습니다. 여러 자료 구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 하므로 자료구조에 대한 이해가 중요합니다. 자료구조의 종류 선형 자료구조 배열 (Array) 선형으로 자료를 관리, 정해진 크기의 메모리를 먼저 할당받아 사용하고, 자료의 물리적 위치와 논리적 위치가 같습니다. 몇 번째 항을 찾가아가는데에 걸리는 시간이 빠릅니다. 자료의 추가/삭제에 드는 비용이 많습니다. 하지만 위치를 알 경우 자료를 꺼내오거나 검색하는 데에 드는 비용.. 2022. 1. 4.
[JAVA] 자바 - Class 클래스 사용하기 Class 클래스 자바의 모든 클래스와 인터페이스는 컴파일 후 class 파일이 생성됩니다. CLass 클래스는 컴파일된 class 파일을 로드하여 객체를 동적 로드하고, 정보를 가져오는 메서드가 제공됩니다. Class.forName("클래스 이름") 메서드로 클래스를 동적으로 로드합니다. Class c = Class.forName("java.lang.String"); 클래스 이름으로 직접 Class 클래스 가져오기 Class c = String.class; 생성된 인스턴스에서 Class 클래스 가져오기 String s = new String(); Class c = s.getClass(); // Object 메서드 동적 로딩 컴파일 시에 데이터 타입이 binding 되는 것이 아닌, 실행(runtime).. 2022. 1. 4.
[OS] 운영체제 - 프로세스의 개념과 상태 변화 프로세스의 개념 다중 프로그래밍 환경에서는 여러 프로그램을 메모리에 적재하여 병행 실행할 수 있어 컴퓨터의 효율을 높일 수 있습니다. 병행 실행하는 프로그램들은 컴퓨터 자원을 공유하는데 이를 제어하는 방법이 프로세스입니다. 실행 중인 프로그램 비동기적 행위 실행 중인 프로시저 실행 중인 프로시저의 제어 추적 운영체제에 들어 있는 프로세스 제어 블록(PCB) 프로세서에 할당하여 실행할 수 있는 개체 디스패치(dispatch)가 가능한 대상입니다. 프로세스가 실행 중인 프로그램이 되려면 프로세서 점유 시간, 메모리, 파일, 입출력 장치 같은 자원이 필요한데, 프로세스를 생성하거나 실행할 때 이 자원을 할당합니다. 그리고 현재의 활동 상태를 나타내는 PC, 레지스터 내용도 포함합니다. 사용자 관점에서의 프로세.. 2021. 12. 30.
[OS] 운영체제 - 운영체제의 구조 단일 구조 운영체제 초기에 생겨난 가장 보편적인 형태입니다. 운영체제의 모든 기능을 커널과 동일한 메모리 공간에 적재한 후 시스템 호출만으로 사용할 수 있습니다. 작고 간단하면서 시스템 기능이 제한된 구조입니다. 장단점 대부분의 기능을 커널에 그룹화해서 구현하므로, 직접 통신하여 시스템 자원을 효율적으로 관리할 수 있다는 장점이 있습니다. 그러나 커널 크기가 상대적으로 커지면서 버그의 원인이나 기타 오류를 구분하기 어렵고, 새 기능을 추가하는 수정과 유지 보수가 매우 어렵습니다. 또 동일한 메모리에서 실행하므로 한 부분에서 발생한 문제 때문에 시스템 전체에 심각한 영향을 줄 수 있고 악성 코드로 피해를 입기가 쉽다는 단점이 있습니다. 계층 구조 운영체제 계층 구조에서는 비슷한 기능을 수행하는 요소를 그룹.. 2021. 12. 30.
[OS] 운영체제 - 운영체제의 서비스 부팅 서비스 : 컴퓨터 하드웨어를 관리하고 프로그램을 실행할 수 있도록 컴퓨터에 시동을 겁니다. 사용자 서비스 : 프로그래머가 프로그래밍 작업을 쉽게 수행할 수 있도록 합니다. 시스템 서비스 : 시스템의 효율적인 동작을 보장합니다. 시스템 호출 : 프로그램이 운영체제의 기능을 서비스받을 수 있는 프로그램과 운영체제 간의 인터페이스를 제공합니다. 사용자 서비스 사용자 인터페이스 제공 사용자와 컴퓨터 간의 상호작용이 발생하는 공간 CLI(Command Line Interface) : 명령 라인 인터페이스 CLI는 사용자가 키보드 등으로 명령어를 입력하여 시스템에서 응답을 받은 후, 또 다른 명령어를 입력하여 시스템을 동작하게 하는 텍스트 전용 인터페이스입니다. 메뉴 인터페이스 메뉴 등을 사용하여 시스템과 상.. 2021. 12. 30.
728x90
반응형
LIST