본문 바로가기

반응형

전체 글

(171)
[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 ..
[Java] 김영한의 자바 중급 2편 #1 - 제네릭 1. Generic이 필요한 이유에 대하여  Integer를 담을 수 있는 Boxpackage generic.ex1;public class IntegerBox { private int value; public void set(Integer value) { this.value = value; } public Integer get() { return value; }}  String을 담을 수 있는 Boxpackage generic.ex1;public class StringBox { private String value; public void set(String object) { this.value = object; } pu..
[Java] 김영한의 자바 중급 1편 #10 - 예외처리 실습 1. 예외 처리 도입1 - 시작 위의 프로그램은 반환값을 사용해서 예외를 처리했다. 이런 경우 다음의 문제가 있다.정상 흐름과 예의 흐름이 섞여 있기 때문에 코드를 한눈에 이해하기 어려움예외 흐름이 더 많은 코드 분량을 차지한다. 1.1. 이 문제를 점진적으로 해결해보기   1.2. 정상 프로그램  1.3. 예외  error1(연결 실패), error2(데이터 전송 실패) 둘 다 모든 곳에서 발생한 예외를 잡지 않았기 때문에 결과적으로 main() 밖으로 예외가 던져진다.main() 밖으로 예외가 던져지면 예외 메시지와 예외를 추적할 수 있는 스택 트레이스를 출력하고 프래그램이 종료된다. 1.4. 남은 문제예외 처리를 도입했지만 아직 예외가 복구되지 않는다. 따라서 예외가 발생하면 프로그램이 종료된다.사..
[Java] 김영한의 자바 중급 1편 #9 - 예외처리 이론 김영한 선생님의 자바 중급을 듣고 정리한 내용입니다.   1. 자바 예외 처리1 - 예외 계층 Java는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황, 즉 예외(Exception)을 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신뢰성을 높이는데 중요한 역할을 한다. try, catch, finally, throw, throws 1.1. 예외 계층 그림 Object : Java에서 기본형을 제외한 모든 것은 객체이고 예외(Exception)도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다.Throwable : 최상위 예외이다. 하위에 Exception과 Error가 있다.Error : 메모리 부족이나 심각한 시스템 오류와 같이 애플리케..
[Java] 김영한의 자바 중급 1편 #8 - 중첩 클래스, 내부 클래스 - 2 김영한 선생님의 자바 중급을 듣고 정리한 내용입니다.   1. 지역 클래스지역 클래스(Local Class)는 내부 클래스의 특별한 종류의 하나이다. 따라서 내부 클래스의 특징을 그대로 가진다. 예를 들어 지역 클래스도 내부 클래스이므로 바깥 클래스이 인스턴스 멤버에 접근할 수 있다.지역 클래스는 지역 변수와 같이 코드 블럭 안에서 정의된다.class Outer { public void process() { // 지역 변수 int localVar = 0; // 지역 클래스 class Local { ... } Local local = new Local(); }} 1.1. 지역 클래스 예제 1  지역 클래스의 접근 범위자신의 인스턴스 변수인 value에 접근할 수 있다.자신이 속한..

반응형