12월 중반 부터 시작한 인프런 자바 강의, 자바를 메모리와 연관지어서 설명해주기 때문에 자바에 대한 더 깊은 이해가 가능하다. 지금은 CS를 배우고 있지만 짬나는 대로 해보려고 한다. 오늘은 JVM의 메모리 영역에 대해서 배웠다. JVM은 운영체제에서 메모리를 할당받아 동작한다. 그래서 JVM은 운영체제에 종속적이라고 말하고, 자바프로그램은 운영체제에 독립적이라고 말한다. JVM에서 클래스파일을 실행하기 때문이다. JVM의 메모리 영역에는 Class loader가 코드의 클래스를 메모리에 적재하고, 이 클래스들은 execution engine(실행 엔진)에 의해서 binary code로 해석된다. 해석된 프로그램은 Runtime Data Areas에 배치되어 실질적인 수행이 이루어지게 된다. (Method Area, Stack Area, Heap Area 등)
링크드 리스트 (Linked List) 에 대해서 배웠다. LinkedList의 특성은 한 element(Node, Vertex)에 다음 데이터를 가리키는 영역과 데이터를 같이 담고 있다. ㅇ
를 데이터라고 예를 들자면, O -> O -> O
대충 이런 식이 될 것이다. 그리고 제일 첫 데이터를 Head
가 가리키고, 마지막 데이터를 Tail
이 가리킨다. ArrayList와는 구조적으로 다르다. 그래서 검색속도와 추가/삭제에서 성능차이를 보인다.
생활 강의를 보면서 링크드 리스트를 직접 구현해보고 있다. addFirst, addLast, add 등까지 해봤지만 이해 안가는 부분이 많아서 도중에 중단하고 처음부터 다시 공부하고 있다. 코드를 한줄한줄씩 읽으면서 나름대로 해석해보고 이해가 안되면 다시 영상을 돌려본다.
빅오(Big-O) 표기법에 대해서 배웠다. 알고리즘 간에 효율성을 비교하기 위해서 사용한다고 한다. 시간 복잡성이나 공간 복잡성 같은 키워드가 나온다. 글로는 이해가 가능한데, 실질적으로 이게 어떻게 적용되는지는 전~혀 감이 안온다.
큐 오늘도 고생 많으셨어요!ㅎㅎ TIL을 시작하게 된 계기에 제가 보탬이 되었다니 영광인데요?🤭