반응형

2018/09/17 46

HTTP 쿠키란

HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 HTTP 메세지의 헤더에 담겨 서버와 브라우저간 주고받는 작은 데이터 조각이다.쿠키를 이용하면 상태가 없는(stateless) HTTP 프로토콜에서 사용자 로그인 상태 유지 등 다양한 상태 기반 정보를 기억할 수 있다.기본적으로 웹 서버는 Set-Cookie 헤더를 통해 브라우저에 쿠키를 저장하라고 알릴 수 있다.HTTP/1.0 200 OK Content-type: text/html Set-Cookie: test=testvalue Set-Cookie: mycookie=good [page content]위 HTTP 응답을 받은 브라우저는 다음 해당 서버에 요청할 때 다음과 같이 보낼 것이다.GET /sample_page.html HTTP/1.1 Host: www...

IT기본 2018.09.17

HTTP Redirection 응답 보내기

간단한 웹서버를 제작중인데, 기본적으로 요청한 URI에 해당하는 파일을 내려주는 기능을 하지만 미약하게나마 WAS의 역할을 할 수 있게끔 혼종스러운 느낌으로 간단하게 만들던 중... 어플리케이션단에서 redirect응답을 주면 어떻게해야하나? 라는 고민이 생겼다. 스프링mvc에서 개발할 땐 viewName앞에 "redirect:"를 붙히면 되고, Servlet에서는 HttpServletRequest의 redirect메소드를 호출하면 되는데.. 그보다 더 로우레벨에서는 어떻게 동작하지..? 한 번도 위 기능들이 어떻게 동작하는지 생각해보지 않아 구글링해 본 결과 간단했다. 응답코드를 302로 지정한 후 헤더에 "Location: REDIRECT_URL" 을 추가해주면 된다. [예시 HTTP Response..

IT기본 2018.09.17

Java Stream API 소개

Java 8 주요 기능 중 하나인 Stream API에 대해 공부한 내용을 정리한다.Stream API의 특징 및 기존 Collection과의 차이점개발자가 직접 반복문을 작성하는 방식의 컬렉션과 달리 내부 반복(internal iteration)을 통해 작업한다. 재사용이 가능한 컬렉션과 달리 재사용이 불가능하다. 스트림은 원본 데이터를 변경하지 않는다. 스트림의 연산은 filter-map 기반의 API를 사용하여 지연(lazy)연산을 통해 성능을 최적화한다. 스트림은 parallelStream() 메소드를 통해 병렬 처리를 쉽게 할 수 있다.Stream API 사용 메커니즘스트림 생성 : 스트림을 생성한다. 중개 연산 : 생성된 스트림을 다른 스트림으로 변환하는 중간 연산으로, 하나 이상의 ..

Back-End/Java 2018.09.17

java 라이브러리를 사용하는 소스 컴파일 및 실행 방법

디렉토리구조 예시)rootsrclib위와 같을때 src의 소스파일들이 lib의 라이브러리를 참조하는 경우 컴파일 방법은 다음과 같다.cmd창에서 root에 위치한 상태에서javac -d [출력위치] -cp [라이브러리위치] [소스파일위치]위와같이 작성하면 Cannot Find Simbol 오류 없이 잘 컴파일 됨을 확인할 수 있다.다음으로, 컴파일된 내용을 실행하기위해서는 다음과 같이하면된다.java -cp [라이브러리위치] [실행할 main메소드를 가진 클래스

Back-End/Java 2018.09.17

Java IDE없이 기본 프로젝트 환경 구성하기

1. 프로젝트 디렉토리 생성 2. .java파일을 저장할 src 디렉토리, 컴파일된 clss파일들을 저장할 bin 디렉토리를 생성 3. 코딩한 소스파일(.java파일)들을 전부 src에 위치해두고, cmd창에서 프로젝트 디렉토리로 이동한 후 아래 명령어 입력javac ./src/*.java -d ./bin 그러면 bin폴더에 class파일들이 생성된다. 4. javadoc을 생성한다. javadoc -version -author -protected -d ./docs 위 명령어를 실행하면 docs폴더 내에 프로젝트에 대한 document가 생성된다. 5. 데모, 샘플등 실행가능한 jar파일을 만든다.1) 데모나 샘플이 여러 개, main메소드가 여러 개인 경우 메니페스트파일을 통해 실행할 main메소드를 ..

Back-End/Java 2018.09.17

Java Dynamic Proxy

다이나믹 프록시란메소드 인터셉팅을 통해 부수적인 코드를 삽입할 수 있는 기술, Spring AOP에서도 사용한다.원래객체에 부수적인코드가 합쳐진 새로운 객체가 프록시 객체가 된다. 사용예)1. 먼저 Proxy로 사용할 클래스에 대한 인터페이스를 정의한다.1234567class interface Computer { public void boot(); public void prepareGUI(); }cs 2. 정의한 인터페이스를 구현123456789101112131415161718192021class ComputerImpl implements Computer { @Override public void boot() { System.out.println("현재 부팅이 진행중입니다..."); } @Override..

Back-End/Java 2018.09.17

자바의 인자 전달 방식은 Call by value다.

자바에서는 인자를 전달할 때 값을 전달한다. 예를들어 public void methodA(SomeClass param) { param = new SomeClass();} public static void main(String[] args) { SomeClass instance = new SomeClass(); methodA(instance);} 위와 같은 상황이 있다고 가정하고 결론부터 얘기하면 methodA를 실행한다고해서 main에 있는 instance에 새로운 SomeClass객체가 할당되지 않는다. methodA에 인자로 전달된 param은 분명 메인에 instance의 주소값을 가지고 있고, 그 주소값을 통해 instance객체에 대한 제어를 할 수 있는 것은 분명한 사실이다. 하지만 param..

Back-End/Java 2018.09.17

BlockingQueue 정리

멀티 스레드 환경에서 Queue는 생산 및 소비의 구조에 필수적인 자료구조이다.여기서 우리는 BlockingQueue라는 interface를 구현한 객체를 가져다 쓸 수 있다. Block 이라는 것은 먼저 무엇일까? '막는다'는 뜻이다.Queue가 꽉찼을때의 삽입 시도 / Queue가 비어있을때의 추출 시도를 막는 다는 것이다.이 자동으로 '막는' 기능이 있어 BlockingQueue 의 구현체는 모두 Thread-safe 하다. BlockingQueue의 종류 1) ArrayBlockingQueue배열로 구현된 큐로 생성시 최대 크기를 인자로 준다. 선택적으로 공평성 정책을 두어 block된 thread들의 순차적 대기열 생성대기열의 순서는 보장되지 않지만 공평성을 따지기 때문에 특정 thread의 기..

Back-End/Java 2018.09.17