본문 바로가기

Java Programming

[spring] spring4 어노테이션과 빈 등록 및 애플리케이션컨텍스트 설명 스프링 프로젝트를 진행하면 여러가지 어노테이션들을 볼 수 있다. @Component, @Controller, @Service, @Repository 등. 어느 상황에 위 어노테이션들이 쓰이고 각각 어떤 특징이 있는지 찾아봤다. 1. @Component 어노테이션은 자바 클래스를 스프링 빈이라고 표시하는 역할을 한다. 이 어노테이션을 사용함으로써 스프링의 component-scanning 기술이 이 클래스를 어플리케이션 컨텍스트에 빈으로 등록하게 된다. 2. @Repository 어노테이션은 DAO에 특화된 어노테이션이다. @Component 어노테이션을 써도 상관없지만, DAO 클래스들에 @Repository 어노테이션을 사용함으로써 @Component 어노테션이 가진 특성과 함께, DAO의 메소드에서 .. 더보기
DB 튜닝 - INDEX 제대로 사용하기 DB에서 INDEX 제대로 사용하기 작성자 : 김문규 최초 작성일 : 2009.5.18 데브피아에서 기가 막히게 좋은 전문가 글을 찾았습니다. 간단하게 정리해 봅니다. 인덱스를 사용하기를 기대하지만 그렇지 않은 기본적이고 대표적인 예입니다. 1. 인덱스 컬럼을 변형하여 비교할 때 BAD WHERE TO_CHAR(HIREDATE,'YYYYMMDD') = '19980518'; GOOD WHERE HIREDATE = TO_DATE('19980518') BAD WHERE SALARY + 1000 > 100000; GOOD WHERE SALARY > 100000 - 1000; 비교하는 인덱스 컬럼의 형이나 값을 변경하면 발생합니다. 이 경우에는 비교값을 변경해 주어야 인덱스를 사용하게 됩니다. 2. 비교 대상의 .. 더보기
Template Method 패턴 템플릿이란 무엇인가?템플릿이란 문자 모양으로 구멍이 뚫려있는 얇은 플라스틱 판을 말합니다.그 구멍을 따라 펜으로 그리면 손으로도 반듯한 문자를 쓸 수 있습니다.템플릿의 구멍을 보면 어떤 모양의 문자인지는 알 수 있지만, 실제로 어떤 문자가 될지는 필기구에 의해 결정됩니다.펜을 사용하면 펜으로 쓴 문자가 되고, 연필을 사용하면 연필로 쓴 문자가 됩니다.그러나 어떤 필기구를 사용해도 쓰여진 문자는 템플릿 구멍의 형태와 동일합니다. Template Method 패턴이란이번 장에서 배울 Template Method 패턴은 템플릿의 기능을 가진 패턴입니다.상위 클래스쪽에 템플릿에 해당하는 메소드가 정의되어 있고, 그 메소드의 정의 안에는 추상 메소드가 사용되고 있습니다.따라서 상위 클래스의 프로그램만 보면 추상 .. 더보기
[Linux] 파일 관리 - rm 파일/디렉토리 삭제 파일 삭제rm [option] [삭제할 파일 위치/이름] remove : 파일을 삭제한다.option :-r 디렉토리와 그 하부 파일까지 삭제 (하부파일이 있는 디렉토리는 한번에 삭제불가)-f 삭제 여부를 묻지 않고 바로 삭제-rf 삭제 여부를 묻지 않으며 하부 파일이 있는 디렉토리까지 삭제rm 명령어파일 및 디렉토리 삭제한다. rm은 remove의 약자이다.사용법rm (옵션) [삭제할 파일 명 및 디렉토리 명] option :-r : 일반 파일은 그냥 지우고 디렉토리면 디렉토리를 포함한 하위 경로와 파일 모두를 지운다.-i : 지울 것인지 확인을 한다 (y,n)-f : 물어보지 않고 지운다.-rf : 삭제 여부를 묻지 않으며 하부 파일이 있는 디렉토리까지 삭제NOTE주로 rm -rf 옵션을 쓴다.rm .. 더보기
[Ubuntu] 리눅스 프로세스 확인하기 (검색하기) 1. ps -ef | grep 프로세스 이름 사진상에서 프로세스 목록을 보면 ts3server가 존재하는것을 알 수 있다. BASHps -ef | grep 프로세스이름즉,BASH ps -ef | grep ts3 명령어를 실행하면 아래와 같이 프로세스가 표시가 된다. 만약 존재하지 않는 프로세스라면 아래와같이 표시가 되지 않는다. 2. pgrep 프로세스 이름 다른방법으로는 프로세스의 pid를 찾아주는 pgrep를 이용할 수 있겠다. 사진과 같이 pid가 뜬다면 존재하는 것이다. 3. pidof 프로세스 이름 다음으로는 pidof이다. pidof는 아쉽게도 프로세스의 이름을 모두 입력하여야 한다. 4. htoptop과 다른 htop으로 확인하는 방법이다. htop은 PageDown/Up 버튼이 유효하다.먼.. 더보기
netty 설명 group - 이벤트 루프 설정정의 : 데이터 송수신 처리를 위한 이벤트 루프를 설정하는 메서드 ServerBootstrap 클래스는 클라이언트의 연결을 수락하는 부모 스레드 그룹과 연결된 클라이언트 소켓에 대한 데이터 입출력을 처리하는자식 스레드 즉, 두 개의 스레드 그룹을 설정할 수 있다. channel - 소켓 입출력 모드 설정정의 : 소켓의 입출력 모드를 설정하는 메서드 channel 메서드는 AbstractBootstrap 추상 클래스의 구현체인 ServerBootstrap 과 Bootstrap 클래스에 모두 존재하는 API며 부트스트랩 클래스를 통해서 생성된 채널의 입출력 몯를 설정할 수 있다.즉, 부트스트랩의 channel 메서드에 등록된 소켓 채널 생성 클래스가 소켓 채널을 생성한다.cha.. 더보기
Synchronous vs Asynchronous (Synchronous vs Asynchronous)(Blocking vs. Non-blocking)동기 : 요청하고 결과를 계속 기다린다.비동기 : 완료되면 알려달라고 요청하고 다른일 한다. 동기 (Synchronous) 코드Blocking call// 동기 방식void greeting(Context ctx) { String req = ctx.readLine(); ctx.write("안녕, " + req); System.out.println("완료");} 비동기 (Asynchronous) 코드Non-blocking call// 비동기 방식void greeting(Context ctx) { ctx.readLine().done(line -> { ctx.write("안녕, " + req); }); Syste.. 더보기
netty 요약 1. pipeline(파이프라인) - 명령어를 읽어 순차적으로 실행하는 실행하는 프로세서에 적용되는 기술로 한번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에 여러개의 명령어를 실행하는 기법 2. Channel - 읽기, 쓰기, 연결(connect), 바인드(bind)등의 I/O 작업을 할 수 있는 요소 또는 네트워크 연결 모든 I/O 작업은 비동기 -> ChannelFuture 핵심 메소드 ChannelFuture write(Object obj) ChannelFuture flush(Object obj) ChannelFuture writeAndFlush(Object obj) ChannelFuture closeFuture() Channel.. 더보기
Web Server와 WAS와 차이 WAS란 WAS의 종류http://littletrue.egloos.com/4619220 Web Server 웹서버는 클라이언트/서버 모델과 웹의 HTTP를 사용하여 웹 페이지가 들어 있는 파일을 사용자들에게 제공하는 프로그램이다. 웹사이트가 운영되고 있는 인터넷상의 모든 컴퓨터들에는 모두 웹서버 프로그램이 설치되어 있다. 가장 보편적인 웹서버들로는 32 비트 윈도우와 유닉스 기반의 운영체계에서 모두 쓸 수 있는 아파치와, 윈도우 NT에 딸려 나오는 IIS, 그리고 넷스케이프의 엔터프라이즈 서버 등이 있다. 그밖에 네트웨어 운영체계를 쓰는 사용자들을 위한 노벨의 웹서버, 주로 IBM의 OS/390과 AS/400 고객들을 위한 IBM의 로터스 도미노 서버를 비롯, 다른 웹서버들도 있다.웹서버들은 흔히 전자우.. 더보기
web.xml 태그 설명 1. icon : 웹 애플리케이션을 나타내기 위해 IDE나 GUI툴에서 사용되는 하나 또는 두개의 이미지 파일들의 위치를 지정하는데 사용한다. 2. Display-name : GUI툴이 웹애플리케이션을 표시하기 위해 사용하는 이름을 지정하는데 사용 3. description : 웹 어플리케이션에 대한 설명을 나타낸다. 4. distributable : Distributable 요소가 있다는 것은 웹어플리케이션이 다중서버간에 분산배치될 수 있다는 것을 의미한다. 5. Context-param : 어플리케이션의 초기화 파라미터를 선언하는데 사용 6. filter : 서블릿이나 jsp 페이지로 들어오는 요청 정보를 사전에 걸러내는 기능 7. Filter-mapping : 필터를 지정했다면 filter-mapp.. 더보기