-
Notifications
You must be signed in to change notification settings - Fork 0
최세민 5주차 학습일지 ‐ JSP cafe (1)
현직자분들과 네트워킹을 통해서 많은 인사이트를 얻을 수 있었고 정말 인상깊었습니다. 기억하고 싶었던 내용들을 간단히 정리해봤습니다.
- 모두가 불가능하다고 말하는 것을 가능하게 할 수 있는 사람이 되자. (창의성, 도전정신)
- 프로젝트를 할 때에는 단 한사람이라도 확실하게 타겟을 잡고, 처음부터 완벽한 서비스를 만들기보다는 배포 - 피드백 - 유지보수 과정을 거치면서 더욱 단단한 프로젝트를 만들자.
- 눈 앞에 있는 것 이상을 볼 수 있는 사람이 되자.
- 의사결정의 근거, 내가 문제를 접근한 방식을 잘 기억하고 기록하자. 당장의 취업에서도 도움될 뿐만 아니라 경력이 쌓여가면서 의사결정하는데 더욱 도움이 될 것이다.
- 4번과 비슷한 맥락으로 여러가지 해결 방안이 있을 때에는 생각나는 방법을 모두 구현해보자(시간 자원이 충분하다면..). 나중에는 갈림길에서 가장 빠르고 정확한 지름길을 한 번에 찾을 수 있게 될 것이다.
서블릿은 Url 패턴을 매핑할 때 다음과 같은 우선순위를 가지고 매핑을 진행합니다.
- 정확한 매핑
- 경로 매핑 ("/users/*")
- 확장자 매핑 ("*.png")
- default servlet 매핑 ("/") 여기서 눈여겨봐야할 것은 default servlet 매핑입니다. default servlet 보다 높은 우선순위를 가지는 서블릿에서 구현체를 찾지 못한 모든 요청은 default servlet에 연결됩니다. 그런데, 애플리케이션에서 "/" 매핑을 사용하는 서블릿을 구현하면 톰캣에서 제공하는 default servlet 동작이 Override되어 개발자가 별도의 처리를 하지 않으면 정적인 파일을 처리할 수 없게 됩니다.
만약 루트경로("/")만 매핑하는 서블릿을 구현하고 싶을 때에는 url pattern에 빈 문자열("")을 사용해 주면 default servlet의 동작을 override하지 않고 루트 경로만 매핑하는 서블릿을 구현할 수 있습니다.
외장 톰캣을 이용해 개발할때 커넥션 풀을 이용하는 방법은 두가지가 있습니다.
- Tomcat 수준에서 모든 애플리케이션의 DB 소스 및 커넥션 풀 관리
- 애플리케이션 별로 DB 소스와 커넥션 풀 관리
Tomcat 수준에서 DBCP를 관리하면 중앙 집중식 관리를 통해 더 높은 수준의 보안을 유지하는데 도움을 주며, 일관적인 설정을 한 번에 관리할 수 있다는 장점이 있습니다. Tomcat은 기본적으로 BasicDataSource라는 구현체를 통해 Pooled Connection을 제공합니다. 애플리케이션 별로 DBCP를 관리하면 서비스별로 세부적인 설정이 가능하고 개발자가 직접 관련된 설정에 접근할 수 있다는 장점이 있습니다.
프로세스의 일부 메모리 공간에 디스크 파일을 매핑할 수 있습니다.
매핑할 때에는 flag로 READ, WRITE 모드를 설정할 수 있으며, 해당 모드는 파일 디스크립터의 READ, WRITE 권한과 충돌하면 안됩니다.
특정 플래그를 이용하면 메모리에 WRITE해도 실제 파일에는 반영하지 않도록 할 수 있습니다.
이 때는 WRITE 작업이 실제로 실행될 때 사본 공간에 WRITE를 수행하게 됩니다.
파일 I/O 는 실시간으로 항상 일어나지는 않으며 truncate()
메소드를 이용해 동기적, 비동기적으로 원할때 강제로 수행할 수 있습니다.
💡
void*
란? int* 와 같이 명시적인 포인터는 해당 포인터의 위치에서 해당 타입의 변수를 읽을 수 있습니다. 이것은 int 타입이 얼마만큼의 데이터 크기를 가지는지 알 수 있기 때문입니다. 하지만 해당 주소의 실체를 알 수 없을 때, 즉 실제 할당된 메모리 공간이 몇인지 알 수 없는void *malloc(size_t length);
와 같은 상황에서 사용하는 것이 void 포인터입니다.