목록Development (13)
자르비 왕국
1. 문제 직면 `리액트를 다루는 기술` 책으로 리액트 공부를 하다가 코드를 똑같이 작성했음에도 프로젝트가 오작동 하는 것을 발견했다. 게시글을 수정하기 위해, write state에 기존 게시글 정보를 담고, 게시글 작성 페이지로 이동하도록 구현하였다. 하지만 게시글 정보가 계속 초기화 되었다. 리덕스 개발 툴로 확인해 보니, 게시글 수정 페이지가 unmount 될 때 write state를 초기화하는 함수가 호출되는 것이었다. 언마운트는 일어나지 않았음에도 호출되는게 이상하여 디버깅 해보니, mount -> unmount -> mount가 되고 있었다. 해당 문제에 관하여 구글링 하니 React 18버전 이후에는 컴포넌트가 두 번 호출된다는 것이었다. 2. 문제 원인 구버전에는 컴포넌트가 오직 한 번..
Key와 Value - Key : Value를 찾을 지표, 중복 불가 - Value : 저장되는 데이터 값, 중복 가능 클래스 - HashMap - TreeMap : 정렬 상태 유지, 정렬 대상은 Key HashMap public Set keySet() : 모든 Key를 담아서 반환, 해당 Key를 활용하여 value접근 가능 TreeMap 해당 클래스는 정렬 상태를 유지하므로, TreeSet처럼 Comparable를 구현하던지, Comparator를 TreeSet의 생성자에 전달한다. (Set 컬렉션 클래스 포스팅 참고)
List 인터페이스를 구현하는 컬렉션 클래스 - ArrayList : 배열을 이용하여 인스턴스 저장 - LinkedList : 리스트를 구성하여 인스턴스 저장 ArrayList - 패키지 : java.util.List, java.util.ArrayList List list = new ArrayList(); List형 참조변수를 선언한 이유는 코드에 유연성을 제공하기 위함이다. List list = new ArrayList(); -> List list = new LinkedList(); 메소드 - add() : 저장 - get(index) : 참조 - remove(index) : 제거 특징 - 배열처럼 길이를 신경쓰지 않아도 된다. - 내부적으로 배열을 생성하여 인스턴스를 저장하는데, 필요하면 그 배열의 ..
- 성격이 같은 자료형을 담을 수 있는 객체 - Object로 자료형을 일반화할 경우 구현은 가능하지만 매번 형변환을 해줘야하는 불편함이 있다. - 또한 Object라서 어떠한 자료형도 저장할 수 있기 때문에, 개발자의 의도와 맞지 않는 방식으로 코드가 흘러갈 수 있다. 예를 들어서 아래와 같은 Box 클래스가 있다고 가정하자 class Box { private Object o; public void set(Object o) { tihs.o = o; } public Object get() { return this.o; } } 개발자는 원래 이 코드를 Apple, Banana와 같이 과일 class를 담는 용도로 구현했다. 하지만 아래와 같이 String문자열도 저장이 가능하기 때문에 개발자의 의도와 벗어..
JVM의 메모리 모델 - 메소드 영역 (Method Area) : 메소드의 바이트 코드, static 변수 - 스택 영역 (Stack Area) : 지역변수, 매개변수 - 힙 영역 (Heap Area) : 인스턴스 메소드 영역 ※ 바이트코드 : 소스파일을 컴파일 할 때 생성되는, JVM에 의해 실행이 가능한 코드 특정 클래스의 정보가 메모리 공간에 올려질 때 채워지는 영역 스택 영역 - 지역변수와 매개변수가 저장되는 공간 - 해당 중괄호를 벗어나면 바로 소멸되는 특성의 데이터 저장을 위한 영역 힙 영역 - 인스턴스가 저장되는 영역 - 가상머신에 의한 가비지 컬렉션이 일어나는 메모리 공간 - 인스턴스의 소멸 시점과 소멸 방법이 지역변수와 달라서 따로 저장 - 인스턴스의 소멸 시점 : 가상머신의 역할 (개..
인터페이스 (Interface) 구성 - interface 선언 - 추상 메소드 : 몸체 없는 메소드 interface Printable { public void print(String dox);// 추상 메소드 } - 상속 키워드 : implements (구현) 특징 - 구현할 인터페이스를 명시할 때 키워드 implements를 사용 - 한 클래스는 둘 이상의 인터페이스 구현 가능 (다중 상속) - 상속과 구현 동시 가능 본질적 의미 인터페이스를 상속한 클래스들이 내부적으로 어떻게 이루어지는지 알 필요가 없다. 사용자는 인터페이스의 메소드만 호출하면 된다. 인터페이스 문법 메소드 인터페이스의 모든 메소드는 public이 선언된 것으로 간주 (public 생략) 변수 - 반드시 선언과 동시에 초기화 필요..