Back-End/백엔드 관련 정리 23

[자바][List] - 리스트 인터페이스를 사용해 직접 LinkedList 클래스를 구현해보자

📖본 포스팅은 'think data structures'를 보고 포스팅 되었습니다. ListNode class package list; /** * 연결 리스트로 요소를 저장하는 List 인터페이스의 일부 구현을 제공 */ public class ListNode { public Object data; //어떤 오브젝트에 대한 참조 public ListNode next; // 다음 노드에 대한 참조 public ListNode() { this.data = null; this.next = null; } public ListNode(Object data) { this.data = data; this.next = null; } public ListNode(Object data, ListNode next) { th..

[자바][List] - 인터페이스 기반 프로그래밍

📖본 포스팅은 'think data structures'를 보고 포스팅 되었습니다. 간단 정리 Interface? 인터페이스는 메소드들의 집합으로 최소한의 설계만을 해서 나머지를 구현체가 채울 수 있도록 하는 것을 의미한다. List Interface? 리스트 인터페이스에는 ArrayList LinkedList 두 개의 List가 있다. (둘은 구현 클래스이다.) 필요한 경우가 아니라면 List 인터페이스를 사용해야하고 ArrayList나 LinkedList처럼 구현 클래스는 필요할 때만 사용해야 한다. 인터페이스 기반 프로그래밍? 특정 구현 클래스에 의존하는 것이 아닌 인터페이스에 의존해 구현 클래스가 바뀌어도 문제가 없게 프로그래밍 하는 방법을 인터페이스 기반 프로그래밍이라고 합니다. 실습 Linke..

[백엔드 과정][자바 기초] - 1. 스레드(Thread)

Java의 스레드 프로그래밍 스레드 생성, 실행 단일 스레드 멀티 스레드 스레드 상채변화 스레드 동시성 제어 스레드 생성,실행 java에서의 스레드 구현 Thread 클래스 상속 자바에서 지원하는 Thread 클래스를 상속하여 구현하는 것을 말한다. Thread 클래스의 경우 Runnable을 구현하여 정의했다. 한 번만 사용할거라면 따로 객체 생성 없이 사용이 바로 가능하다(상속을 했기 때문 Runnable 인터페이스 구현은 무조건 객체 생성 후 사용해야 한다.) Runnable 인터페이스 구현 Runnable 인터페이스를 구현하는 방식도 쓰레드의 생성, 실행 방법 중 하나다. Thread 클래스 역시 Runnable 인터페이스를 구현하여 정의되었다. Thread 클래스 상속에 의한 구현 package..

[백엔드 과정][자바 기초] - 프로세스

프로세스 프로세스 실행 중에 있는 프로그램을 의미한다. 스케줄링의 대상이 되는 작업과 같은 의미로 쓰인다. 하드 디스크의 프로그램 실행 시 실행을 위해서 메모리 할당이 이루어지고 할당된 메모리 공간으로 바이너리 코드가 올라간다. 이순간부터 프로세스라고 부른다. 프로세스 스케줄링 컴퓨터의 CPU는 한정적이고 대부분의 경우 프로세스가 CPU보다 많다. 물리적 연산장치 - 프로세서 논리적 연산장치 - 프로세스 스케줄링 CPU 할당 순서 및 방법을 결정하는 일을 스케줄링이라고 한다. 스케줄링에 따른 분류 선점형(Preemptive) 선점이란? 컴퓨터의 자원을 우선적으로 차지할 수 있는 권한을 뜻한다. 이때 선점권은 실행 중에 있는 프로세스가 아닌 대기중인 프로세스가 갖는다. 다만, 일정 조건이 맞는다면 선점권을..

[백엔드 과정][자바 기초] - 큐 구현하기 (3.DoubleLinkedList를 이용한 구현)

FIFO(First-In-First-Out)으로 먼저 저장한 데이터가 먼저 나오는 구조를 가집니다.(선입선출) 즉, 저장된 데이터중 가장 앞에 있는 데이터만 접근 가능함을 나타냅니다. 음식점에서 주문을 위해 줄을 서고, 가장 앞에서부터 주문함으로 예로 들 수 있습니다. DoubleLinkedList A Doubly Linked List (DLL) contains an extra pointer, typically called the previous pointer, together with the next pointer and data which are there in the singly linked list. 📌출처: https://www.geeksforgeeks.org/doubly-linked-list/..

[백엔드 과정][자바 기초] - 큐 구현하기 (2. LinkedList를 이용한 구현)

FIFO(First-In-First-Out)으로 먼저 저장한 데이터가 먼저 나오는 구조를 가집니다.(선입선출) 즉, 저장된 데이터중 가장 앞에 있는 데이터만 접근 가능함을 나타냅니다. 음식점에서 주문을 위해 줄을 서고, 가장 앞에서부터 주문함으로 예로 들 수 있습니다. LinkedList A linked list is a linear data structure, in which the elements are not stored at contiguous memory locations.(linked list는 선형데이터 구조로 연속적 공간에 값을 저장하지 않는다.) The elements in a linked list are linked using pointers as shown in the below im..

[백엔드 과정][자바 기초] - 큐 구현하기 (1. ArrayList를 이용한 구현)

FIFO(First-In-First-Out)으로 먼저 저장한 데이터가 먼저 나오는 구조를 가집니다.(선입선출) 즉, 저장된 데이터중 가장 앞에 있는 데이터만 접근 가능함을 나타냅니다. 음식점에서 주문을 위해 줄을 서고, 가장 앞에서부터 주문함으로 예로 들 수 있습니다. ArrayList An array is a collection of items stored at contiguous memory locations.(배열은 연속되는 메모리 공간에 값을 저장한다.) The idea is to store multiple items of the same type together.(같은 타입의 값을 저장한다.) This makes it easier to calculate the position of each el..

[백엔드 과정][자바 기초] - 스택 구현하기 (2.LinkedList를 이용한 구현)

Stack 스택은 선입후출 구조로 먼저 들어온 값이 맨 아래로 깔려서 맨 나중에 들어온 값부터 차례대로 삭제해야 맨 마지막에 맨 처음에 들어온 값을 빼내는 구조이다. 스택을 구현하는 자료구조로는 ArrayList와 LinkedList가 있다. Linked List 📌출처 : https://www.geeksforgeeks.org/data-structures/linked-list/ [Stack Interface] package arrays; public interface Stack{ public boolean isEmpty(); public void push(Integer element); public Integer pop(); public Integer peek(); public int size(); } ..

[백엔드 과정][자바 기초] - 스택 구현하기 (1. ArrayList를 이용한 구현)

스택은 선입후출 구조로 먼저 들어온 값이 맨 아래로 깔려서 맨 나중에 들어온 값부터 차례대로 삭제해야 맨 마지막에 맨 처음에 들어온 값을 빼내는 구조이다. 스택을 구현하는 자료구조로는 ArrayList와 LinkedList가 있다. [Stack Interface] package arrays; public interface Stack{ public boolean isEmpty(); public void push(Integer element); public Integer pop(); public Integer peek(); public int size(); } [ArrayList로 구현한 Stack] package arrays; import java.util.Arrays; import java.util.Em..