전체 글 (68) 썸네일형 리스트형 멀티쓰레드 프로그래밍 스레드 운영체제는 두가지 이상의 작업을 동시에 처리하는 멀티 태스킹(multi tasking)을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킵니다. 예를 들어, 워드로 문서 작업을 하면서 동시에 윈도우 미디어 플레이어로 음악을 들을 수 있습니다. 멀티 태스킹은 꼭 멀티 프로세스(프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원과 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는것이 바로 쓰레드입니다.)를 뜻하는 것은 아닙니다. 한 프로세스 내에서 멀티 태스킹을 할 수 있도록 만들어진 애플리케이션도 있습니다. 대표적인 것이 미디어 플레이어와 메신저입니다. 미디어 플레이어는 동영상과 재생과 음악 재생이라는 두 가지 작업을 동시.. 자바의 예외처리 자바에서 예외 처리 방법(try, catch, throw, throws, finally) try - catch - finally 블록은 생성자 내부와 메스드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 할 수 있도록 해줍니다. try - catch - finally 블록은 다음과 같이 작성합니다. 정상 실행 되었을 경우 try { [실행 O] [예외 발생가능 코드] } catch(예외클래스 e) { [실행 X] [예외 처리] } finally { [실행 O] [항상 실행] } 예외가 발생되었을 경우 try { [실행 O] [예외 발생O] [예외 발생가능 코드] } catch(예외클래스 e) { [실행 O] [예외 처리] } finally { [실행 O] [항상 실행] } try 블.. StringBuffer, StringBuilder 가 String 보다 성능이 좋은 이유와 원리 String, StringBuffer, StringBuilder 특징 및 차이점 Java에서 세 가지 클래스의 특징과 차이가 무엇인지 요약하면, 세가지 클래스는 모두 문자열을 처리하기 위한 클래스입니다. 문자열을 더하는 연산을 할 때는 성능의 차이가 발생하는데, String 클래스가 StringBuffer, StringBuilder 보다 느리고 메모리 관측 측면에서도 큰 차이를 보입니다. 따라서 문자열의 더하기 연산을 할 때는 StringBuffer 혹은 StringBuilder의 사용을 고려해야 합니다. StringBuffer와 StringBuilder는 기능이 동일하지만 한 가지 차이점이 존재합니다. 바로 동기화 처리 문제입니다. StringBuffer는 동기화(Synchronization)를 지원하.. 영속성 유닛(Persistence Unit) A persistence unit defines a set of all entity classes that are managed by EntityManager instances in an application. 영속성 유닛은 응용프로그램의 EntityManager 인스턴스에 의해 관리되는 모든 엔티티 클래스 집합을 정의한다. JPA 역시 VO객체와 테이블을 매핑하기 위한 다양한 설정 정보가 필요한데, 이를 위해 persistence.xml 파일을 환경설정 파일로 사용한다. persistence.xml 파일은 를 루트 엘리먼트로 사용하며, 영속성 유닛(persistence-unit)과 관련된 다양한 정보가 설정된다. 영속성 유닛은 연동할 연동할 데이터베이스당 하나씩 등록하며, 영속성 유닛에 설정된 이름은 .. 스프링 컨테이너의 관계 1. 톰캣 서버를 구동하면 web.xml 파일을 로딩하여 서블릿 컨테이너가 구동된다. 2. 서블릿 컨테이너는 web.xml 파일에 등록된 ContextLoaderListener 객체를 생성(pre Loading) 한다. 이때 ContextLoaderListener 객체는 src/main/resources 소스 폴더에 있는 appliccationContext.xml 파일을 로딩하여 스프링 컨테이너를 구동하는데, 이를 'Root 컨테이너'라고 한다. 그리고 이때, Service 구현 클래스나 DAO 객체들이 메모리에 생성된다. 그리고 사용자가 로그인 버튼 ".do" d요청을 서버에 전달하면 서블릿 컨테이너는 DispatcherServlet 객체를 생성하고 3 . DispatcherServlet 객체는 /WE.. 어노테이션 - @Component 를 설정했으면 이제 스프링 설정 파일에 클래스들을 일일이 엘리먼트로 등록할 필요가 없다. @Component만 클래스 선언부 위에 설정하면 끝난다. 예를 들어, LgTV 클래스에 대한 등록을 XML 설정과 어노테이션 설정으로 처리하면 다음과 같다. XML 설정 Annotation 설정 @Component public class LgTV implements TV { public LgTV() { System.out.println("===> LgTv 객체 생성"); } } 당연한 얘기겠지만 여기에서 두 설정 모두 해당 클래스에 기본 생성자가 있어야만 컨테이너가 객체를 생성할 수 있다. 이렇게 설정했다면 클래스의 객체가 메모리에 생성되는 것은 문제 없다. 그러나 클라이언트 프로그램에서 LgTV 객체를 요청할 수.. 의존성 주입 어노테이션 - @Autowired @Autowired는 생성자나 메소드, 멤버변수 위에 모두 사용할 수 있다. 어디에 사용하든 결과는 같지만, 대부분 멤버변수 위에 선언하여 사용한다. 스프링 컨테이너는 멤버변수 위에 붙은 @Autowired를 확인하는 순간 해당 변수의 타입을 체크한다. 그리고 그 타입의 객체가 메모리에 존재하는지를 확인한 후에, 그 객체를 변수에 주입한다. 만약 @Autowired가 붙은 객체가 메모리에 없다면 컨테이너가 NoSuchBeanDefinitionException을 발생시킨다. @Autowired의 기능을 테스트하기 위해서 LgTv 클래스에 다음과 같이 멤버변수를 추가하고 의존관계를 설정한다. package polymorphism; @Component("tv") public class LgTv implemen.. 포워딩(Forwarding) vs 리다이렉트(Redirect) 차이 포워딩(Forwarding)과 리다이렉트(Redirect) - JSP환경에서 개발시 주로 사용되는 용어이다. - 현재 작업하는 웹페이지에서 다른 페이지로 이동하는 방법의 종류로 다른 매커니즘에 의해 동작한다. 포워딩(Forwarding) 개념 - 웹 컨테이터(Web Container) 차원에서 페이지 이동을 의미한다. - 동일 웹 컨테이너에서 관리하는 페이지로만 이동이 가능하다. - 웹 브라라우저의 URL 정보는 변경되지 않으므로 클라이언트는 다른 페이지로 이동했는지 확인이 불가능하다. - 포워딩은 클라이언트와 통신없이 서버에서만 처리되며 리다이렉트보다 나은 성능을 보여준다. - 현재 페이지와 포워딩에 의해 호출도니 페이지는 Request와 Response 객체를 공유한다. 리다이렉트(Redirect) .. 이전 1 2 3 4 5 6 7 ··· 9 다음