본문 바로가기

신입 개발자 면접 기초

(31)
웹 개발 페이지 처리(Paging) 방법 - 성능을 고려해보자 웹 개발 페이지 처리(Paging) 웹 개발을 하면서 당연하게(?) 고민하게 되는 것은 게시판의 페이징 처리다.실제로 면접에서 질문을 받아봤다. "페이징처리할 때 어떻게 하셨어요?"대답은 게시물의 총 개수와 한 페이지당 보여줄 게시물의 개수를 기준으로 이렇게 저렇게 해서 DB는 Mysql을 썼었으니까 LIMIT로 가져왔다고 대답했다.그런데 그런건 당연한 얘기고 본인이 듣고 싶었던 키워드는 "커서"였다고 했다.흠.. 여전히 잘 모르겠으나 페이지 처리를 정리해보고자 한다.MySQL 에는 LIMIT, MS-SQL 2012에서는 OFFSET Fetch로 페이징 쿼리를 조금 더 쉽게 작성할 수 있으나 현업에서 해당 버전, 해당 DBMS를 사용한다는 보장이 없으니 기본적인 것을 알고 가도록 한다.게시판 페이지 처리..
JAVA 컬렉션 (Vector, ArrayList, LinkedList, Set, Map) 자바 컬렉션(Java Collections) JAVA에서 대용량의 데이터를 추가/삭제하면서 처리가 필요할 때 자바 컬렉션을 사용한다.Vector : java 1.0부터 이어져온 List객체, ArrayList가 상위호환(?)이라 잘 안쓴다. 특히 쓰레드의 개수와 상관없이 동기화(synchronize) 처리를 하므로 Thread-safe 하지만 싱글쓰레드 환경이어도 동기화처리를 하므로 성능이 좋지 않아 쓰이지 않는다.ArrayList : Vector와 같은 추가/삭제 기능을 가지고 있고 자동 동기화처리가 되지 않기 때문에 빠르게 처리 가능,대신 내부적으로 배열(array) 구조를 이용하기때문에 데이터 추가/제거를 배열을 복사하는 방법으로 처리하기 때문에 추가/제거가 많을 경우 오버헤드가 많이 발생함. 특히..
싱글톤 패턴(Singleton pattern)을 쓰는 이유와 문제점 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴.생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환한다. (자바에선 생성자를 private로 선언해서 생성 불가하게 하고 getInstance()로 받아쓰기도 함)=> 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다.(인스턴스가 필요 할 때 똑같은 인스턴스를 만들어 내는 것이 아니라, 동일(기존) 인스턴스를 사용하게함) 싱글톤 패턴을 쓰는 이유고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비..
JAVA String, StringBuffer, StringBuilder 차이점 String, StringBuffer, StringBuilder의 장단점 및 차이점 자바에서 String과 StringBuffer, StringBuilder의 차이점을 알아본다. 앞서 이 클래스들의 공통점은 모두다 String(문자열)을 저장하고 관리하는 클래스들이 라는 것이다.(간단히 참고) String vs StringBuffer, StringBuilder String은 immutable(불변)하고 StringBuffer, StringBuilder는 mutable(가변)하다. 다시 말해서, String 클래스는 StringBuffer 클래스나 StringBuilder 클래스와 다르게 리터럴을 통해 생성되면 그 인스턴스의 메모리 공간은 절대 변하지 않는다. String literalString = "l..
WAS 와 웹 서버 차이 (WAS,Web Server) 그리고 아파치, 톰캣 WAS와 웹 서버 - 웹 서버 (Web Server)클라이언트가 서버에 페이지 요청을 하면 요청을 받아 정적 컨텐츠(.html, .png, .css등)를 제공하는 서버클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다.클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터)CASE정적 컨텐츠를 요청(request)했나?1. 정적 컨텐츠구나! 내가 제공해줄게 => .html, .png 등 응답(response)2. 정적 컨텐츠가 아니구나.. 웹서버에서 간단히 처리 못하겠군. WAS에게 처리를 부탁해야겠다! => 결국 WAS가 처리해준 컨텐츠를 받은 웹서버는 응답(response)을 해줌대표 : Apache, nginx- WAS (Web Application S..
JAVA 인터페이스와 추상클래스 공통점, 차이점 정리 인터페이스(Interface) 와 추상클래스(Abstract class) - 공통점: 추상클래스와 인터페이스는 선언만 있고 구현 내용이 없는 클래스다.(자바8부터 인터페이스에 default method 구현이 가능해졌지만 일반적으로 인터페이스는 구현이 없다.)따라서 인터페이스와 추상클래스를 가지고 새로운 인스턴스(객체)를 생성할 수 없다.추상클래스를 extends로 상속받아 구현한 자식클래스나 인터페이스를 implements 하고 구현한 자식클래스만이 객체를 생성할 수 있다.=> 결국 자식클래스가 무언가 반드시 구현하도록 위임해야할 때 사용해야 한다.- 차이점 추상클래스추상클래스는 추상메서드(abstract method)가 하나라도 존재하는 클래스를 말한다.추상클래스는 추상메서드(abstract meth..
Web - 쿠키와 세션의 차이, 용도, 사용법(cookie,session) 웹에서 쿠키와 세션 쿠키와 세션을 사용하는 이유 → HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용한다. HTTP 프로토콜의 특징 비연결지향(Connectionless) HTTP는 클라이언트가 요청(Request)을 서버에 보내고, 서버는 클라이언트에게 적절한 응답(Response)을 주고 연결(Connection)을 끊는 특성이 있다. HTTP1.1 버전에서는 커넥션을 계속 유지하고 요청(Request)에 재활용하는 기능이 추가되었다. (HTTP Header에 keep-alive 옵션을 주어 커넥션을 재활용하게 한다. HTTP1.1 버전에서는 디폴트(default)옵션이다. HTTP가 TCP위에서 구현되었기 때문에(TCP는 연결지향, UDP는 비연결지향) 연결지향적이라고 할 수 있다는 얘기가 ..