티스토리챌린지 (5) 썸네일형 리스트형 [Java] 김영한의 자바 중급 2편 #5 - List 1. 리스트 추상화1 - 인터페이스 도입자료 구조에 다형성과 OCP 원칙이 어떻게 적용되는지 확인해본다. List : 순서가 있고, 중복을 허용하는 자료 구조→ MyArrayList와 MyLinkedList의 공통 기능을 인터페이스로 뽑아서 추상화를 한다면 다형성을 활용한 다양한 이득을 얻을 수 있다. MyListpackage collection.list;public interface MyList { int size(); void add(E e); void add(int index, E e); E get(int index); E set(int index, E element); E remove(int index); int indexOf(E o);}아래의 메서드들은 .. [Java] 김영한의 자바 중급 2편 #4 - LinkedList 1. 노드와 연결11.1. 배열 리스트의 단점배열의 사용하지 않는 공간 낭비배열의 중간에 데이터를 추가할 때데이터를 추가할 때 기존 데이터들을 오른쪽으로 이동시켜야 한다.데이터를 삭제할 때 빈 공간을 채우기 위해 데이터들을 왼쪽으로 이동시켜야 한다.1.2. 노드와 연결낭비되는 메모리 없이 필요한 만큼 메모리를 확보해서 사용하고, 또 앞이나 중간에 데이터를 추가하거나 삭제할 때도 효율적인 자료 구조가 있는데, 바로 노드를 만들고 서로 연결하는 방식이다.Node Classpublic class Node{ // 저장할 데이터 Object item; // 연결할 노드의 참조 Node next;}1.3. 간단한 예제Node Classpackage collection.link;public class Node { .. [Java] 김영한의 자바 중급 2편 #3 - ArrayList 0. 빅오(O) 표기법빅오(Big O) 표기법은 알고리즘의 성능을 분석할 때 사용하는 수학적 표현 방식이다.여기서 중요한 것은 알고리즘의 정확한 실행 시간을 계산하는 것이 아니라, 데이터 양의 증가에 따른 성능의 변화 추세를 이해하는 것이다. 빅오 표기법의 예시 O(1) - 상수 시간: 입력 데이터의 크기에 관계없이 알고리즘의 실행 시간이 일정한다.O(n) - 선형 시간: 알고리즘의 실행 시간이 입력 데이터의 크기에 비례하여 증가한다.O(n²) - 제곱 시간: 알고리즘의 실행 시간이 입력 데이터의 크기의 제곱에 비례하여 증가한다.O(log n) - 로그 시간: 알고리즘의 실행 시간이 데이터 크기의 로그에 비례하여 증가한다.O(n log n) - 선형 로그 시간 0.1. 빅오 표기법 정리빅오 표기법은 매.. [Java] 김영한의 자바 중급 2편 #2 - 제네릭2 1. 타입 매개변수 제한다음의 요구사항이 있다고 가정해본다.요구 사항 : 개 병원은 개만 받을 수 있고, 고양이 병원은 고양이만 받을 수 있다.개 병원과 고양이 병원은 검진(checkup)을 할 수 있고, 다른 개 혹은 고양이와의 크기를 비교할 수 있다.1.1. 아무것도 모르는 상태일 경우아무것도 모르는 상태라면 다음의 관점으로 접근할 수 있을 것이다.Dog는 DogHospital 클래스를 만든다.Cat은 CatHospital 클래스를 만든다.main 메서드에서는 dogHospital과 catHospital에 각각 dog와 cat 객체를 생성한다음에 setter 메서드로 집어넣고, 각각 checkup과 bigger 메서드를 통해 검진과 대소비교를 할 수 있을 것이다.1.1.1. 장단점장점으로는 CatHo.. [EKS] Spot Instance를 안전하게 처리하는 방안에 대해서 1. 개요요즘에는 대부분 Karpenter를 활용해서 EKS Node를 관리한다. Karpenter에서는 Spot Instance를 손쉽게 활용할 수 있기 때문에 Spot Instance를 활용하는 곳들이 많을 것이다. Spot Instance는 미사용 EC2 용량을 온디맨드 가격에 비해 최대 90% 저렴하게 사용할 수 있지만 언제든지 AWS에 의해 회수당할 수 있기 때문에 안정성이 떨어질 수 있다는 단점이 있다. 이 때 다음의 문제가 발생할 수 있다. 1. Deployment가 1대인데 파드가 떠있는 Node가 Spot Instance이기 때문에 강제로 evict 당한다면, 기존 Pod는 terminating이 되고 신규 pod는 Pending -> ContainerCreating -> Running .. 이전 1 다음