String 은 웹개발을 할 때 가장 많이 사용하는 자료형입니다. 그러다보니 실무에서는 String 객체를 잘 알고 활용하는 것이 중요합니다. 그런데 생각보다 String 객체를 잘 못 사용해서 생기는 버그가 많습니다. 오늘은 간단하게 String 객체를 비교할 때 주의해야 할 점 세 가지를 알아 보도록 하겠습니다. String class 의 method 를 소개한 포스트가 있으니(링크) 참고하시면 좋을 것 같습니다. 1. '==' vs equals() String 자료형을 선언하는 방법은 크게 두 가지가 있습니다. 하나는 리터럴 문자열 값을 대입하는 것이고 하나는 new 키워드를 사용해 String 객체를 직접 생성하는 방법입니다. 그런데 두 값을 '==' 연산을 통해 비교하면 같은 문자열을 저장하고 ..
지난주 한 회사의 면접에서 다음과 같은 질문과 답변을 주고 받았습니다. 면접관 : 추상 클래스와 인터페이스의 차이에 대해서 설명해 보세요. 나 : 네, 추상 클래스는 추상 메소드를 가진 클래스이고 인터페이스는 추상 메소드로만 이루어져 있는 것입니다. 면접관 : 다른 차이점은 없나요? 나 : (당황) 어... 제가 실무에서는 거의 인터페이스만 사용해 봐서... 잘 모르겠습니다. 면접관 : (실망한 표정) 네, 알겠습니다. 집에 돌아오며 생각해 보니 제가 알고 있는 것만으로도 그 자리에서 몇가지 대답을 더 할 수 있었을텐데 당황하는 바람에 제대로 답변을 못 한 부분이 아쉬웠습니다. 만약 다른 면접장에서 비슷한 질문을 받게 된다면 더 잘 대답하기 위해 추상클래스와 인터페이스의 차이에 대해 기록해 두려고 합니다..
하반기 공채 시즌입니다. 올해 하반기 신입 공채를 노리고 있는 저 역시 자소설을 수십페이지는 쓰고 있는 것 같습니다. 며칠 전 하반기 공채 시즌 중에는 처음으로 면접을 보게 되었는데 제대로 답변을 못한 부분이 있어서 기록해두고자 합니다. 아마 면접에서 떨어지게 된다면 이 질문 때문이 아닐까 싶습니다. 질문을 하신 면접관께서는 이 질문에 제대로 답변을 못 한 이후로 단 한 마디도 하지 않으셨기 때문입니다. (슬픔) 지금 제대로 공부를 해 두고 다른 곳에서 질문을 받게 되면 반드시 제대로 답변을 하도록 해야겠습니다. 질문은 final 키워드에 관한 것이었습니다. final 키워드가 무엇이냐는 질문에 저는 제가 아는대로 '단 한번만 값이 할당되는 변수에 사용하는 키워드'라고 대답했습니다. 다시말해 변하지 않는..
웹개발에서 문자열을 다루는 방법은 매우 중요합니다. 그렇다 보니 많은 웹 서비스 업체의 코딩 테스트에는 문자열을 다루는 문제가 꼭 하나씩은 포함되는데요. 때로는 이미 언어의 API에 구현되어 있는 메소드를 통해 손쉽게 해결 가능할 때도 있습니다. 그런 경우에 그 메소드를 미리 몰랐다면 괜한 고생을 하게 되겠죠. 자바의 경우 String 클래스 안에 이미 유용한 메소드들을 많이 제공하고 있습니다. 코딩테스트나 실무에서 문자열을 다룰 때 이 메소드들을 잘 알고 있다면 시간과 비용을 절감할 수 있겠죠? 실제 자바의 String 클래스를 확인해 보면서 자바에서 문자열을 어떻게 다루는지 또, 어떤 메소드를 언제 사용하면 좋을 지 알아 보도록 하겠습니다. String 자바에서 문자열은 String이라는 객체로 표현..
여러가지 일을 다 잘하는 사람은 드물어도 한 가지 일을 기가막히게 잘 하는 사람은 어렵지 않게 찾을 수 있습니다. 누구나 한 가지 일을 오랜시간 반복하다 보면 '생활의 달인'소리를 들을만큼 전문성을 갖출 수 있겠죠(물론 그게 영 안되는 저 같은 사람도 있긴 합니다). 그리고 생산라인을 전문성을 발휘할 수 있는 부문으로 나누어 구성하는 것을 '분업화' 라고 하지요. 분업화는 등장하는 동시에 이전에는 상상할 수 없었던 엄청난 생산성의 향상을 가져 왔습니다. 현재는 사회 전반에 걸쳐 이런 분업화가 잘 정착되어 있습니다. 제가 일하는 회사만 해도 서비스에 대한 기획과 개발, 운영이 각각 다른 팀에서 이루어지고 있고 개발팀은 다시 프론트엔드와 백엔드, 디자인 등의 분야로 나뉘어져 있습니다. 그런데 이렇게 분업화를..
컨테이너는 클라이언트로부터 요청이 있을 때 마다 HttpServletRequest와 HttpServletResponse 객체를 생성하고 서블릿 인스턴스를 찾아 실행시킵니다. 그런데 클라이언트의 요청은 순차적으로 이어지지 않을 확률이 높습니다. 서비스의 규모가 크다면 수 많은 요청이 한 번에 일어나게 되겠죠. 그래서 컨테이너는 요청이 들어올 때 마다 새로운 스레드를 생성하거나 스레드풀에서 스레드를 가져와서 요청을 처리하게 됩니다. 서블릿의 동작구조는 지난 포스트를 참조 부탁드립니다. 스레드는 사용자에게 한 번에 여러가지 일을 처리하는 것 처럼 보이게 만들지만 실제로는 아주 빠른 속도로 스레드를 오가며 작업을 처리하는 것에 불과합니다. CPU는 한 번에 한 가지의 작업만 처리할 수 있기 때문입니다. 그래서 ..
이제 어떤 url에 어떤 클래스를 로드해야 하는지를 알게 되었습니다. 이 때 로드하는 클래스가 바로 동적으로 페이지를 만들어 내는 Servlet이 됩니다. 동적으로 페이지를 만드는 것은 제가 만드는 Web Application Server 에서 가장 중요한 역할이라고 할 수 있고 사실 이 프로젝트의 핵심입니다. 먼저 Servlet 클래스를 만들도록 하겠습니다. 이 Web Application Server 를 사용하는 사용자는 이 Servlet 클래스를 상속받아서 사용하게 됩니다. public class Servlet { private static final String GET = "GET"; private static final String POST = "POST"; private static final..
지난번 포스팅에서 클래스로더를 알아본다고 했는데 순서를 좀 바꾸겠습니다. 어떤 url을 입력 받았을 때 어떤 서블릿을 동작해야 하는지 어떻게 알 수 있을까요? 서블릿은 배포서술자(물론 애너테이션을 사용하는 방법도 있지만 이 프로젝트에서는 고려하지 않도록 하겠습니다)를 통해서 매핑됩니다. 컨테이너는 이 배포서술자 파일을 통해 url과 일치하는 클래스를 찾아서 로드하게 됩니다. 배포서술자는 보통 xml 파일로 만들어지고 다음과 같은 구조를 하고 있습니다. web.xml 이라는 이름을 가진 xml 파일에 배포와 관련된 여러가지 설정 정보들을 담게 됩니다. 사실 이 배포서술자 안에 기술될 수 있는 정보는 매우 많지만 이 프로젝트에서는 서블릿 매핑 부분만 구현해 보도록 하겠습니다. 이 배포서술자나 애너테이션에 대..
- Total
- Today
- Yesterday
- 크롬
- 자바스크립트개론
- 문장 생성기
- was
- 코딩의 기술
- 마르코프
- REST API
- DP
- Spring in Action
- 로그
- 동적계획법
- Warning
- 자바스크립트 개론
- restful api
- java
- 전략패턴
- 유지보수
- 클린코드
- 경고
- 디자인패턴
- html
- markov chain
- CONVENTIONS
- 몰라서망신
- GROUP BY
- 야근
- 마르코프 연쇄
- RESTful
- Count
- Markov
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |