목록전체 글 (261)
당니의 개발자 스토리
보호되어 있는 글입니다.
메모리와 포인터(pointer) #2 포인터 메모리 관리는 언어마다 다르게 관리된다. Java, Python, JavaScript는 개발자가 직접 변수에 메모리를 할당하거나 해제할 수 없고, 가비지 컬렉터를 통해 이를 수행한다. Java의 JVM 아키텍처이다. 하위레벨 언어인 C, C++ 등은 가비지 컬렉터가 없으며 대신, 개발자가 좀더 핸들링할 수 있다. 개발자가 직접 필요한 메모리를 예약하고 해제할 수 있으며, 포인터 또한 지원한다. 포인터 변수의 메모리 주소를 담는 타입이 바로 포인터다. 포인터는 메모리 동적할당이나, 데이터를 복사하지 않고 함수 매개변수로 사용하거나, 클래스 및 구조체를 연결할 때 사용된다. 연결리스트의 노드를 예시로 들어보자. 먼저, 연결리스트에 대해서 설명하겠다. data가 있..
보호되어 있는 글입니다.
메모리와 포인터(pointer) #1 메모리와 주소 큰돌t 컴퓨터는 128GB RAM을 가졌다. 이 컴퓨터의 메모리는 어떻게 구현이 되어있냐면, 1바이트짜리의 메모리 셀들로 이루어져있다. 그리고 이 메모리 셀 각각은 고유한 주소를 갖는데, 16진수로 이루어진 주소를 가진다. 여기서 내가 프로그램을 작성한다 라고 치자. 4바이트인 int형 변수를 선언한다고 하자. int i; 라고 했을 때, int는 선언만 했는데도 불구하고, 이 변수를 저장할 메모리 공간이 필요하다. 그래서 선언을 하면, "야야 128GB 중에서 int i 가 쓸만한 공간을 예약 좀 해" 라고 해서 메모리 셀 4개짜리 공간을 차지, 즉 예약하게 된다. 그리고 나서, int i 에다가 어떠한 값을 할당하면, 이러한 메모리 셀에다가 값들이..
보호되어 있는 글입니다.
split() 코딩테스트에서 굉장히 자주 나오는 로직이다. 최고의 코드를 기반으로 설명하겠다. 그 전에 split() 함수에 대해 설명하자면, 이러한 문자열이 있다고 했다고 하자. '나는 띄어쓰기를 기준으로 쪼개어서 어떠한 배열을 만들고 싶어!' 라고 했을 때 사용되는게 split() 함수이다. 이러한 문자열을 split() 하게 되면, 여기에서는 띄어쓰기로 split 하므로, 배열에는 {aaa, bbb, ccc} 이렇게 담긴다. C++에서는 이 split() 함수를 지원하지 않아서 우리가 만들어야 한다. 단순하게 3줄만 외우면 된다. 여기서 delimiter는 구분자다. 아까 띄어쓰기 같은 거다. string의 find() 메서드를 써서 delimiter를 찾을 때마다, 못 찾고 문자열이 종료되기 전까..
10. 다음으로 여러분 드디어 스프링 핵심 원리 기본편 강의가 끝이 났습니다. 그러면 지금까지 학습한 목차에 대해서 설명을 드릴게요. 우리가 1장, 객체지향 설계와 스프링에 대해서 쭉 설명을 한번 해드렸고요. 스프링이 단순히 기능 때문에 배워야 되는 게 아니라, 진짜 중요한 건 객체지향의 원리를 가지고 해야된다는 거죠. 그리고 2장, 3장을 통해서 우리가 과거로 돌아가서 예제를 만들어보고, 요구사항을 바꿔보니까 문제가 생기더라. 그런데 단순히 객체지향이 제공하는 다형성(역할과 구현으로 세상을 구분)만 가지고 해결되는 게 아니라, 거기에 DI 컨테이너나 의존관계 주입 같은 것들이 적용이 돼야 객체지향을 정말 제대로 사용할 수 있다라는 걸 알았습니다. 그리고 스프링이 그 모든 걸 다 제공해준다 라는 걸 알게..
스코프와 프록시 이제 스코프와 프록시에 대해서 말씀드리겠습니다. 이번에는 프록시 방식을 한번 사용해 볼게요. 코드 먼저 보여드리겠습니다. 이거를 그냥 "request" 라고만 해도 되는데, 이렇게 하면 proxyMode = 라는 걸 못 넣기 때문에, 이렇게 넣어야 합니다. 값이 한 개면 "request" 라고만 해도 되지만, 그게 아니기 때문에 이렇게 해야합니다. 이제 proxyMode 라는 옵션이 있는데, ScopedProxyMode.TARGET_CLASS라고 지정을 해줄게요. 그러면 MyLogger를 가짜로 만드는 겁니다. 즉, 프록시를 만드는 거예요. 그리고 나서, 기존에 오류났던 코드로 다시 바꾸는 겁니다. 참 깔끔해졌죠? Provider에서 get 할 것도 없어요. 이렇게 하고 만약 이전처럼 이..