오늘 공부한 내용

  • Spring 입문주차 2주차 시청 
  • 알고리즘 특강

어려웠던 내용

1. Entity에 대한 이해

- DB를 보다 쉽게 다루기 위하여 사용되는 JPA에서 관리되는 객체를 의미

- 하지만 실제 코드를 보면서 따라해봐도 뭐가뭔지 잘 모르겠다.

2. 영속성 컨텍스트

-  Entity 객체들이 저장된 공간을 의미

 

새로 알게된점

1. 포인터 / C 언어

포인터란 변수의 메모리 공간의 주소를 가리키는 변수 이다.

변수명 앞에 *를 붙이면 된다.

✔️ 포인터 변수 선언

int a = 123;
int *p = &a; // &a 는 int a의 주소값
  • 주소 연산자(&)는 변수의 이름앞에 사용하여, 해당변수의 주소 값을 반환하며 변수 a에 &를 붙힘으로 a의 주소값을 의미
  • int *p = &a; 처럼 선언할 때에는 변수명(p) 앞에 *를 붙혀서 포인터 변수임을 명시
  • 선언한 이후에 *p라고 쓰게 되면, 포인터 변수 p가 가리키는 주소의 값을 의미. 즉 123가 된다
  • 즉 a 와 *p는 같다. (a에 저장된 값 = 123, * p가 가리킨 주소에 있는것 = 123)
  • &a 와 p는 같다. (a의 주소 값 = 10000, p가 가리키는 주소 = 10000)

중요 ! 자바에는 왜 포인터가 없을까?

  • 자바에는 참조(Reference)가 있기 때문
  • 포인터 vs 참조
    • 포인터: 메모리를 직접 핸들링 할 수 있음
    • 참조: 메모리를 직접 핸들링할 수 없음
  • 포인터는 주소값을 임의로 변경가능하며 유연성과 성능을 향상시킬수 있지만 안정성이 떨어져 개발자가 실수하면 바로 에거로 이어질 수 있다. Java에서는 개발자의 실수를 방지하기 위해 자바가 메모리 영역을 관리한다.
  • GC(Garbage Collector)가 실행될 때 마다 Heap 영역의 객체의 주소가 계속 바뀌기 때문 (자바가 관리)
    • 더이상 stack에서 참조되지 않는 Heap 영역의 객체들은 GC가 제거

  

오늘의 느낀점

금일 특강에서는 알고리즘 처리방법, C언어에 대한 간단한 설명 을 해주었는데 현업에서도 자바 뿐만 아니라 컴퓨터의 근본이었던 C언어에 파이썬 등 다양한 언어까지 사용되니 개발자는 끊임없이 공부를 해야한다는 튜더님의 말씀을 들으며 참 갈길이 멀구나라는걸 느꼈다.

자바도 어렵게 느껴지는데 C언어는 정말 복잡한 구조였겠구나라고 생각이 든다.

그래도 나중에 따로 공부해 봐야지...

 

+ Recent posts