하반기 공채 시즌입니다. 올해 하반기 신입 공채를 노리고 있는 저 역시 자소설을 수십페이지는 쓰고 있는 것 같습니다. 며칠 전 하반기 공채 시즌 중에는 처음으로 면접을 보게 되었는데 제대로 답변을 못한 부분이 있어서 기록해두고자 합니다. 아마 면접에서 떨어지게 된다면 이 질문 때문이 아닐까 싶습니다. 질문을 하신 면접관께서는 이 질문에 제대로 답변을 못 한 이후로 단 한 마디도 하지 않으셨기 때문입니다. (슬픔) 지금 제대로 공부를 해 두고 다른 곳에서 질문을 받게 되면 반드시 제대로 답변을 하도록 해야겠습니다. 질문은 final 키워드에 관한 것이었습니다. final 키워드가 무엇이냐는 질문에 저는 제가 아는대로 '단 한번만 값이 할당되는 변수에 사용하는 키워드'라고 대답했습니다. 다시말해 변하지 않는..
웹개발에서 문자열을 다루는 방법은 매우 중요합니다. 그렇다 보니 많은 웹 서비스 업체의 코딩 테스트에는 문자열을 다루는 문제가 꼭 하나씩은 포함되는데요. 때로는 이미 언어의 API에 구현되어 있는 메소드를 통해 손쉽게 해결 가능할 때도 있습니다. 그런 경우에 그 메소드를 미리 몰랐다면 괜한 고생을 하게 되겠죠. 자바의 경우 String 클래스 안에 이미 유용한 메소드들을 많이 제공하고 있습니다. 코딩테스트나 실무에서 문자열을 다룰 때 이 메소드들을 잘 알고 있다면 시간과 비용을 절감할 수 있겠죠? 실제 자바의 String 클래스를 확인해 보면서 자바에서 문자열을 어떻게 다루는지 또, 어떤 메소드를 언제 사용하면 좋을 지 알아 보도록 하겠습니다. String 자바에서 문자열은 String이라는 객체로 표현..
알고리즘 책이나 강의를 보면 항상 초반에 한 가지 탐색 방법이 소개 됩니다. 이분탐색(binary search)라는 이름을 가지고 있는 이 알고리즘은 보통 책이나 강좌의 앞쪽에 소개 되는데다 그 개념 자체가 이해하기 어렵지 않기 때문에 배울 때는 큰 어려움이 없지만, 의외로 코딩테스트의 문제로 만나게 되면 문제를 쉽게 풀 수 없게 만드는 복병이 되기도 합니다. 오늘은 이 이분 탐색에 대해 간단히 알아보고 실제 코딩 테스트에서 어떻게 활용할 수 있는지에 대해 생각해 보도록 하겠습니다. 사실 이분탐색의 개념은 매우 간단하고 직관적입니다. 이를 설명하기 위해 스무고개 놀이를 한 번 해 보도록 하겠습니다. 1부터 100사이에 있는 숫자를 하나 생각하고 가능한 적은 횟수의 추측으로 이 숫자를 알아내는 방법을 생각..
정렬(Sort)은 알고리즘 과목에서 항상 단골로 출제되는 영역입니다. 오늘은 그 중에서 힙 정렬(Heapsort)를 알아보도록 하겠습니다. 우선 이 정렬 알고리즘을 이해하기 위해서는 힙(heap)이라는 독특한 자료구조에 대해 먼저 이해 해야 합니다. 그런데 이 heap을 알려면 우선순위큐(Priority Queue)를 또 먼저 알아야 합니다. 그러면 또 그냥 큐(Queue)가 뭔지도 알아야겠죠. 점점 일이 복잡해 지니까 아주 단순하게 설명하도록 하겠습니다. 각각의 개념에 대해 부족한 설명은 추후에 (가능하다면)포스트 하도록 하겠습니다. 큐(Queue)는 컴퓨터의 기본적인 자료구조의 일종입니다. 먼저 삽입된 데이터가 먼저 나오는 FIFO(First In First Out)구조로 되어 있는데 화장실 앞에 줄..
여러가지 일을 다 잘하는 사람은 드물어도 한 가지 일을 기가막히게 잘 하는 사람은 어렵지 않게 찾을 수 있습니다. 누구나 한 가지 일을 오랜시간 반복하다 보면 '생활의 달인'소리를 들을만큼 전문성을 갖출 수 있겠죠(물론 그게 영 안되는 저 같은 사람도 있긴 합니다). 그리고 생산라인을 전문성을 발휘할 수 있는 부문으로 나누어 구성하는 것을 '분업화' 라고 하지요. 분업화는 등장하는 동시에 이전에는 상상할 수 없었던 엄청난 생산성의 향상을 가져 왔습니다. 현재는 사회 전반에 걸쳐 이런 분업화가 잘 정착되어 있습니다. 제가 일하는 회사만 해도 서비스에 대한 기획과 개발, 운영이 각각 다른 팀에서 이루어지고 있고 개발팀은 다시 프론트엔드와 백엔드, 디자인 등의 분야로 나뉘어져 있습니다. 그런데 이렇게 분업화를..
컨테이너는 클라이언트로부터 요청이 있을 때 마다 HttpServletRequest와 HttpServletResponse 객체를 생성하고 서블릿 인스턴스를 찾아 실행시킵니다. 그런데 클라이언트의 요청은 순차적으로 이어지지 않을 확률이 높습니다. 서비스의 규모가 크다면 수 많은 요청이 한 번에 일어나게 되겠죠. 그래서 컨테이너는 요청이 들어올 때 마다 새로운 스레드를 생성하거나 스레드풀에서 스레드를 가져와서 요청을 처리하게 됩니다. 서블릿의 동작구조는 지난 포스트를 참조 부탁드립니다. 스레드는 사용자에게 한 번에 여러가지 일을 처리하는 것 처럼 보이게 만들지만 실제로는 아주 빠른 속도로 스레드를 오가며 작업을 처리하는 것에 불과합니다. CPU는 한 번에 한 가지의 작업만 처리할 수 있기 때문입니다. 그래서 ..
1. standard html/xml comments 표준 html/xml 주석( )은 thymeleaf templates 어디서나 사용가능하다. 이 주석 안에 어떤 것이 들어가더라도 백엔드에서나 프론트엔드에서 실제로 수행 되지 않는다. 단순히 결과에 그대로 복사될 뿐이다. 2. Thymeleaf parser-level comment blocks parser-level comment block들은 thymeleaf가 문서를 파싱할 때 템플릿에서 제거되는 코드를 의미한다. thymeleaf는 이 블록 안에 있는 모든 것들을 완전하게 제거한다. 3. Thymeleaf prototype-only comment blocks thymeleaf에는 템플릿이 static하게 보여질 때만 주석이 되는 특별한 주석 블록..
이제 어떤 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..
- Total
- Today
- Yesterday
- REST API
- 자바스크립트개론
- 코딩의 기술
- RESTful
- 전략패턴
- 크롬
- GROUP BY
- 마르코프
- Markov
- 자바스크립트 개론
- 동적계획법
- 몰라서망신
- html
- 경고
- Count
- Spring in Action
- CONVENTIONS
- DP
- 디자인패턴
- Warning
- was
- 야근
- 클린코드
- 마르코프 연쇄
- 유지보수
- 문장 생성기
- restful api
- markov chain
- java
- 로그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |