21년 2월 22일
한 일
-
배열과 포인터
-
index는 왜 0부터 시작하나
- base + index*sizeOfElement 가 주소가 되므로 index는 0부터 시작한다
- 0부터 시작하지 않으면 첫번째 원소의 주소를 사용할 수 없기 때문에 메모리 낭비
-
배열 선언과 초기화
int *arr1 = malloc(sizeof(int) * 10); int arr2[10]; // arr1[1] = *(arr+1) = *(1+arr) = 1[arr]
-
C언어의 함수는 일급 객체인가?
-
일급 객체는 변수로 할당할 수 있고, 매개변수로 넘겨주고 리턴값으로 반환할 수 있어야 한다.
-
함수에 대한 포인터를 넘겨주면 C언어에서도 일급객체로 사용 가능
void foo(int x) { printf("%d\n",x); } void foreach(int count, void (*apply)(int)){ for(int i = 0; i < count; i++) { apply(i); } }
-
-
배열의 단점
- 사이즈가 정적이다.
- 사이즈를 바꾸려면 복잡한 과정을 거쳐야 한다.
- 새로운 사이즈로 배열 생성
- 기존 배열의 원소를 새로운 배열로 복사
- 기존 배열 변수에 새로운 배열 주소를 할당
-
배열 vs ArrayList
- ArrayList는 사이즈가 꽉찼을 경우 위의 단계(배열의 사이즈 바꾸기)를 코드 내부에서 알아서 해준다.
-
람다
- 자바에서는 함수형 인터페이스를 오버라이드한 익명 클래스이다.
-
스트림
- 연속적인 데이터의 흐름..?
- 원소를 하나하나씩 처리해줄 수 있도록 해주는 객체
- 함수형 프로그래밍의 원칙으로 구현되었기 때문에, Side effect가 없다
- parallel stream 사용하면 병렬 처리 유용하다 -> 나중에 찾아볼 것.
- lazy loading 으로 실행한다.
- 서버에서 잘 사용하지 않는 이유 -> 병렬로 사용한다 -> cpu 자원을 많이 먹는다 -> 서버에서 cpu 자원을 많이 먹으면 좋지 않다.
-
잘못한 것
잘한 것
느낌
할 일
- 코드스쿼드 미션하기
- 자바의 정석 읽기
- 프로그래머스 문제 풀기