지난 면접에 게시판만들 때 페이징 처리를 어떻게 했는지 물어보셔서 rownum을 사용했다고 했더니 그건 60점짜리 답안이라고, rownum+index가 제일 좋은 답이라고 하셔서 index에 대해 정리해둔다. 인덱스란 데이터베이스에서 데이터 검색 성능의 향상을 위해 테이블 열에 사용하는 객체를 말한다. 특정 행 데이터의 주소를 목록으로 만들어 놓은 것. 인덱스 사용 여부에 따라 데이터를 검색하기 위해 테이블 전체를 스캔하는 Table Full Scan과 인덱스를 사용하는 Index Scan으로 나눈다. 인덱스는 열이 Primary key 또는 Unique key일 경우 자동 생성되지만 직접 특정 열을 지정할 수도 있다. // 인덱스 생성 CREATE INDEX 인덱스명 ON 테이블명(열1 ASC or D..
오늘 아주 열심히 공부를 하고 있는데 test코드를 작성할 일이 생겼다. 그래서 test패키지에 java파일을 만들었는데 인식을 못하는 문제가 생겼다. test패키지에 만든 java파일도 main에 만든 java파일처럼 아이콘이 생겨야 하는데 생기지 않았다. 그래서 알아보다가 누군가가 이렇게 하면 된다고 알려줬다. 1. 상단메뉴 중 [File]을 선택하고 [Project Structure...]를 선택한다. 1. 왼쪽 메뉴에서 [Modules]를 선택하고 [Sources]탭을 선택한 후 src/test/java를 클릭하고 Mark as: 옆의 Tests를 선택하면 오른쪽처럼 Test Source Folders에 src/test/java라고 생긴다. 그럼 끝! (난 이미 지정했으니까 이미지 상에는 있지만 ..
구현 1. Thread 클래스 상속 -> 다중상속이 불가능하므로 다른 클래스를 상속받을 수 없다! class ExThread extends Thread { public void run() { // 비즈니스 코드 } } 2. Runnable 인터페이스 구현 -> 이 방법이 일반적. 재사용성 높고, 코드의 일관성 유지 가능! class ExThread implements Runnable { public void run() { // 비즈니스 코드 } } 쓰레드를 구현한다? -> 스레드를 통해 작업하고자 하는 내용으로 run()의 내부를 채우는 것 실행 ExThread t = new ExThread(); t.start(); // 실행 t.start(); // 에러 -> 한 번 종료된 스레드는 다시 실행할 수 없..
여러 사용자에게 서비스를 해주는 서버의 경우 멀티스레드로 작성하는 것이 필수적이어서 하나의 서버 프로세스가 여러 개의 스레드를 생성해서 스레드와 사용자의 요청이 일대일로 처리되도록 해야 한다. 만일 싱글스레드로 서버 프로그램을 작성한다면 사용자의 요청마다 새로운 프로세스를 생성해야 하는데 프로세스를 생성하는 것은 스레드를 생성하는 것보다 더 많은 시간과 메모리 공간이 필요하기 때문에 많은 수의 사용자 요청을 서비스하기 어렵다. 그러나 멀티스레드 프로세스는 여러 스레드가 같은 프로세스 내에서 자원을 공유하면서 작업하기 때문에 발생할 수 있는 동기화, 교착상태와 같은 문제들을 고려해서 신중히 프로그래밍해야 한다. 자바의 정석 P.723
라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다. 반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다. 보통 프레임워크 위에 개발한 클래스를 등록해두고, 프레임워크가 흐름을 주도하는 중에 개발자가 만든 애플리케이션 코드를 사용하도록 만드는 방식이다. 최근에는 툴킷, 엔진, 라이브러리 등도 유행을 따라서 무작정 프레임워크라고 부르기도 하는데 이는 잘못된 것이다. 프레임워크에는 분명한 제어의 역전 개념이 적용되어 있어야 한다. 토비의 스프링(P.94)