람다식은 메서드를 하나의 식(expression)으로 표현한 것.람다식을 '익명 함수'라고도 한다. 람다식의 기본 구문은 다음과 같다. //일반적인 메서드의 형식 int sum(int a, int b){ return a+b; } //람다식을 사용한 경우 (int a, int b) -> { return a+b; }; 메서드 선언부의 메서드명이 없어지고 선언부와 구현부 사이에 화살표 표시가 존재한다. 람다식은 그 자체는 메서드 모습을 하고 있지만 엄밀히 말하면 익명 클래스의 객체와 같다고 볼 수있다. Test t = new Test(){ int sum(int a, int b){ return a+b; } }; 익명 클래스의 객체라는게 위에서 보는 것 처럼 인스턴스 생성 즉시 그 클래스 타입의 멤버를 바로 기술..
JUnit은 자바에서 제공하는 표준 테스트 도구이다. 스프링도 JUnit을 발판으로 테스트를 하면서 만들어졌다고 한다. JUnit을 실행하는 방법 대부분의 자바 개발자가 사용하는 이클립스는 JUnit테스트를 지원하는 기능을 제공하고 있다.@Test가 들어있는 클래스를 선택 - Run - Run as - JUnit Test를 선택하면 실행할 수 있다. JUnit은 한번에 여러 테스트 클래스를 동시에 실행 할 수도 있다. 이클립스 왼쪽 소스폴더 트리의 프로젝트나 패키지 디렉토리를 선택해서 위에서 설명한 실행방법 대로 하면 JUnit테스트를 한번에 실행해준다. 테스트 클래스 작성방법 JUnit이 하나의 테스트 클래스를 가져와 테스트 하는 방식(과정)1. 테스트 클래스 내부에서 메서드 레벨에 @Test가 붙고 ..
제네릭스 - 메서드나 컬렉션클래스에 대해 컴파일시 타입체크를 해주는 기능. 장점 - 컴파일 시 의도하지 않는 타입객체가 저장되는 것을 막으므로 타입안정성 제공 - 타입의 체크와 형변환을 생략할 수 있기 때문에 코드의 간략화 > 제네릭클래스 기본형태 class Student{ private T name; List list = new ArrayList(); public void setName(T name){ this.name=name; list.add(name); } public T getName(){ return this.name; } } 제네릭 클래스를 만드는 방법은 클래스 명옆에 를 붙이고 이 T와 같은 타입을 가지는 곳에 똑같이 T를 써주면 된다. T를 '타입변수'라고 하며, Type의 첫글자를 의미..
기본적으로 로그파일은 var/log 라는 디렉토리 하위에 존재한다. /var/log/maillog메일과 관련된 로그를 기록하며, 이 파일을 이용하여 어떤 메일들이 오고 가는지 확인할 수 있다.메일이 오고 간 시간, 호스트, 데몬 유저, 메일 크기 등. /var/log/messages메일, 뉴스 등을 제외한 전체적인 로그를 기록하는 파일. /var/log/secure유저의 접속 기록을 표시 /var/log/lastlog각각의 계정에 대하여 마지막으로 로그인한 정보를 기록하는 파일이다.lastlog명령어로 확인 할 수 있다. /var/log/boot.log부팅시 서비스 데몬들의 실행 상태 기록 /var/log/dmesg시스템이 부팅할 때 출력되는 메세지가 기록되어 있다. /var/log/croncron과 관..
시스템 종료와 재부팅 - shutdwon 명령어shutdown [옵션] [시간] [메세지] shutdwon -h 1010분후에 시스템을 종료shutdwon -r now바로 시스템 재부팅shutdown -c시스템종료 예약 취소 명령 - init 명령어리눅스 시스템이 가동되는 방법에는 0~6까지 7개가 있다. 이를 런레벨(Run Level)이라고 한다.0 - 종료모드1 - 단일 사용자 모드(시스템 복구시 사용)2 - 다중 사용자 텍스트 모드(NFS 사용불가)3 - 다중 사용자 텍스트 모드4 - 사용안함5 - 다중 사용자 그래픽 모드6 - 재부팅 모드 init 0 시스템을 종료한다.init 6 시스템을 재부팅 한다.init 3 다중사용자 텍스트 모드로 전환한다. 현재 사용되고 있는 init모드를 설정하거나 확..
익명클래스는 인스턴스 생성시 이름이 없는 클래스이다. 익명 클래스는 클래스, 인터페이스가 그 대상이 된다. 클래스의 선언과 인스턴스 생성을 동시에 하기 때문에 한번만 사용되며, 하나의 객체만을 생성한다는 특징이 있다. 익명클래스 형태 new 조상클래스이름{} new 인터페이스이름{} 이름이 없기 때문에 생성자도 가질 수 없다. 일반적인 클래스와는 달리 상속과 구현을 동시에 할 수 없으며 오로지 하나의 인터페이스를 구현하거나 하나의 클래스를 상속 받을 수 있다.System.out.println(new Layout(){ void test(){ System.out.println(i); } void tests(){ System.out.println(222); } }); 위의 결과는 패키지명,메인클래스이름$1@1..
jsp 개발환경 구축 ○ java 설치 및 설정 - java se jdk 다운로드(본인은 1.8 버전받음)http://www.oracle.com/technetwork/java/javase/downloads - FTP를 열어서 다운받은 jdk파일 올린다. - java jdk1.8.~ 압축파일 해제 (tar -xvf 파일명) - mv 명령어로 압축을 해제한 jdk1.8.~디렉토리를 /usr/local/ 경로로 이동시킨다. - jdk 경로설정을 쉽게 알아보기 위해 jdk1.8.~디렉토리의 심볼릭링크를 java이름으로 변경> ln -s /usr/local/jdk.1.8~ java - 콘솔에서 자바를 컴파일, 실행하기 위해 환경변수를 설정한다.1. 수정을 위해 profile파일을 연다(vi 모드)> vi /etc..
1. 구글 리캡차 api key 발급https://www.google.com/recaptcha/admin#list label : 이름domain : URL입력 (로컬이라면 localhost 입력) owner : 소유자 이메일 발급받은 후 sitekey, secretkey 복사 2. 메이븐 의존성 주입net.tanesha.recaptcha4jrecaptcha4j0.0.7 3. jsp 엘리먼트 작성 siteKey는 발급받은 것 적으면 됨 4. 자바스크립트 메서드 작성(본인은 ajax 처리) $.ajax({ url : '/member/captchaAjax', type : 'post', data : { recaptcha : document.getElementById("g-recaptcha-response").v..
저장 프로시저는.. 하나 이상의 sql문을 후에 사용하기 편하게 저장해둔 것. mysql 4.x 이하 버전에서는 프로시저를 지원하지 않는다. mysql 5.x 부터 지원.. 저장 프로시저를 사용하는 이유? - 복잡한 작업을 하나의 단위로 묶어 쉽게 사용하기 위해 - 같은 코드를 반복할 필요없이 프로시저를 만들어 놓고 재활용 하기 위해 - 테이블의 칼럼이름이나 로직 등이 변경 되었을 때 저장 프로시저만 변경하면 되므로 사용하는 입장에서는 신경을 쓸 필요가 없다 - 저장 프로시저는 컴파일된 형식으로 저장되기 때문에 DBMS가 명령을 수행하는 작업이 보다 적어지므로 성능의 향상을 기대해 볼 수 있다. 간단한 사용법(사용프로그램 토드 FOR MYSQL) 1 2 3 4 5 6 7 8 9 10CREATE PROCE..
Spring 3.2 부터 이 @ControllerAdvice가 생겼다고 한다.컨트롤러 서비스 퍼시스턴스 단에 발생할 수 있는 예외를 이 어노테이션을 지정한 클래스에서 공통적으로 관리 해 줄 수 있다. 사용 방법은 간단하다.(세부적으로 들어가면 간단하지 않음.) 보는 것처럼 스프링 빈을 정의해주는 config파일에 구문을 넣어준다.context:component-scan이라는 것은 bean엘리먼트를 정의하지 않아도 자동으로 해당 패키지에 있는 @compoenet, @service, @controller 등을 알아서 스캔해 인스턴스를 생성해준다. 안에 있는 context:include-filter는 스프링이 제공하는 기본필터를 사용하지 않고 @ControllerAdvice의 클래스를 사용하겠다는 뜻.. 다음..
Thread 쓰레드는 프로세스에 포함되는 자원이다.프로세스란 실행중인 프로그램이며, 프로그램을 실행할 때 필요한 자원이 하나 이상의 쓰레드이다. 하나의 프로세스에 하나의 쓰레드만 있다면 싱글 쓰레드 프로세스라 부르고, 하나의 프로세스에 하나 이상의 쓰레드가 있다면 멀티 쓰레드 프로세스라고 부른다.옛날에 쓰던 DOS환경을 보통 싱글쓰레드, 요즘 쓰는 windows환경을 멀티쓰레드로 이해하면 되겠다. 자바에서 콘솔 프로그램을 짤 때 public staitc void main(String[] args)라는 메서드가 있는데 이것조차도 하나의 쓰레드이다. 아래의 쓰레드 예제는 쓰레드를 생성하는 두가지 방법을 코딩한 것이다.쓰레드를 생성하는 방법은 Runnble인터페이스를 구현하는 방법과 Thread클래스를 상속하..
소스코딩을 하면서 JDBC연결에 필요한 username, password, url 같은 접속 정보나 로컬호스트와 서버의 파일 저장 경로같은 설정을 기존에는 MessageSource기능을 이용해서 사용하였는데..이 방법의 단점은 자바의 controller단에서 request객체를 이용하여 서버의 url을 가져온 다음에 조건문으로 localhost나 127.0.0.1, 192.168.x.x 같은 호스트가 포함되어 있으면 로컬이라하고 아니면 서버로 구분한 문자열을 service단으로 넘겨서이문자열을 플래그 값으로 해서 실서버 환경인지 로컬작업 환경인지를 구분하는 조금 복잡한 구조를 가지고 있었는데.. 어떻게 다른 방법이 없나 하다가 profile이라는 기능을 발견하게 되었다. 사용방법은 의외로 간단하면서 유용..
본인의 OS : centos 6.X 설치 ### 필수 패키지 설치 ### # yum install gcc gcc-c++ make automake unzip zip xz kernel-devel-`uname -r` iptables-devel ### perl-Text-CSV_XS 설치 (2가지) ### 1) 직접 rpm으로 설치하는 방법 http://pkgs.repoforge.org/perl-Text-CSV_XS/ 에서 최신 버전을 확인하고 설치해준다. # rpm -Uvh http://pkgs.repoforge.org/perl-Text-CSV_XS/perl-Text-CSV_XS-0.80-1.el6.rf.x86_64.rpm 2) rpmforge repo 를 추가하여 yum으로 설치하는 방법 # rpm -i ht..
DNS 서버의 잘못된 설정을 이용한 분산 반사 서비스 거부 공격 (DRDoS 공격)의 형태인증 절차가 존재 하지 않는 DNS 서버의 경우 Reflector로 사용되어 공격에 사용될 수 있습니다. 방법(vi /etc/named.conf) recursion no;additional-from-auth no; additional-from-cache no;Then restart named so that it will use the new secure options:/etc/init.d/named restart
메이븐 의존 라이브러리 주입 javax.validation validation-api 1.1.0.Final org.hibernate hibernate-validator 5.2.2.Final org.hibernate hibernate-validator-annotation-processor 5.2.2.Final @Valid를 사용하기 위하여 스프링 컨테이너에 빈 등록 모델클래스에 어노테이션 기반의 검증 코드 작성 컨트롤러단에 적용@ModelAttribute 로 받은 모델 객체가 @Valid 적용이 되어 있다면 수행BindingResult 타입으로 성공 실패 여부 판단