2018년 3월 30일 금요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 7일차(JSP, MVC, Redirect, forward)

Session 브라우저마다 세션아이디를 생성하고 HttpSession를 생성한다. Http get get방식은 key=value get방식으로 요청하면 주소뒤에 ?name=값 형태로 붙어서 요청한다. 파라미터가 없으면 null이 반환된다. Jsp Ecriptlets 주소 요청이 오면 jsp가 있는지 없는지 검사한다.  HttpJspBase를 상속받는다. jsp 파일이 있다면 .java파일로 변경하고 _jspService()메소드에서 out.write()메소드로 사용자가 작성한 내용을 출력한다. jsp파일에서...
Share:

JAVA 직렬화

byte로 변환하여 파일 또는 네트워크를 통해서 Stream(송수신)을 하는것을 말한다. 자바 기본 타입과 java.io.Serializable를 인터페이스를 상속받은 객체는 직렬화 사용이 가능하다.  변환하는 객채 안에 필드도 직렬화를 구현하고 있어야 직렬화가 가능하다. ...
Share:

2018년 3월 29일 목요일

Java Stream의 이용 방법

1. Stream에서의 flush()  Applicaion JVM OS(키보드) 의 구조를 가지고 있는데 close, flush라는 함수를 쓰는 이유는 OS 및 Applicaion에 전달하기 위해서다. close() 함수를 호출하면 flush() 함수를 자동으로 실행한다. 2. Stream api이용 방법 사용자가 키보드로 입력한 글자를 한줄씩 읽기위해서는 BufferedReader를 사용하고 싶다고 했을때 stream의 흐름과 사용방법에 대해 알아보자. 사용자가 입력한 값을 한줄씩 읽고 싶다고 할때 BufferedReader를...
Share:

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 6일차(TDD, 쿠키, 세션)

TDD mokito 에서 spy 실제로 객체를 생성해서 테스트 할수 있다. argument.capture()는 메소드가 실행했을때의 객체를 복사한다. 회귀테스트 : 소스는 복잡하게 연결되어 있다. 작은 부분이 수정되면 모든기능을 다시 테스트해야한다. Agile + TDD 개발 개발하면서 문제가 있다면 실시간으로 수정해야한다.(나중에 하면 망한다.) 코드는 시간이 흐르면 조금씩 망가진다. 끊임 없이 ODD와 패턴 구문들을 적용해서 리팩토리 해야한다(Test + 리팩토링은 같이 하는 것이다) 소스를 수정하면 기존 Test코드를 실행하여 이상이 없는지 확인하면 이상이 없는것이다.개발 <-> 수정(리팩토링<-실시간) Agile 짧은 주기로 개발 ,개발 수정,...
Share:

알고리즘 이진검색

문제 1. min = 0 이고 max = n-1 입니다. 2.max < min, 이라면 멈춥니다. 타겟이 배열에 존재하지 않습니다. -1을 반환합니다. 3. 'guess'를 'max'와 'min'의 평균으로 계산하고 (정수가 될 수 있도록) 내림합니다. 4. 배열[guess]가 타겟과 같다면 멈춥니다. 찾았습니다! guess를 반환합니다. 5. 만약 추측이 너무 낮았다면, 즉 배열[guess] < 타켓이라면, min = guess + 1로 바꿉니다. 6. 그렇지 않다면 추측이 너무 높습니다. max = guess - 1로 바꿉니다. 7. 2단계로 돌아갑니다. 풀이 var doSearch = function(array, targetValue) { var min = 0; var max...
Share:

2018년 3월 28일 수요일

Thead사용법과 notify(), notifyAll(), wait() 사용시 주의점

1. Thread 구현 방법 자신이 Runnable 객체를 가지고 있으면 Runnable의 run()메소드를 호출하고 아니면 다른경우의 run()을 호출한다. 1.1. 상속 public class ThreadExam01 { public static void main(String[] args) { MyThread01 t1 = new MyThread01("*"); MyThread01 t2 = new MyThread01("-"); MyThread01 t3 = new MyThread01("|"); ...
Share:

2018년 3월 27일 화요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 4일차(ClassLoader, TDD)

ClassLoader classpath를 참조한다. class 정보를 읽을수 있는게 ClassLoader다. classLoader 한개에 classpath를 다수 가질수도 있다. 예를들어 String을 사용하면 classpath를 참조하여 classLoader가 stirng class를 Metaspace에 올린다. 2번째 호출부터는 Metaspace에 있는 것을 참조한다. 기본적으로 i제공하는 파일을 읽는다.(jdk에 있는 rt.jar등) 부모를 가질수 있다 부모에 있는지 먼저 찾은후 자신의 ClassLoader에서 찾는다. 부모는 자신의 것을 사용하지 못한다. java system <- was <- webapplication 순서를 가질수 있다.(classLoader) system...
Share:

2018년 3월 26일 월요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 3일차(Thread, IO)

Thread 하나의 객채에 synchronized 가 붙은 메소드가 다수라면 먼저 들어온 쓰레드가 실행되고 나머지 쓰레드는 대기한다.(synchronized가 일부분이라면 synchronized가 붙은 메소드끼리만 대기) 쓰레드가 실행됐을때 run상태와 실행가능 상태를 실행한다. synchronized가 들어가 있는 메소드끼리 lock이 생성되어서 lock에 있는 메소드중에서 호출한 메소드 순서대로 실행된다. Thead 를 직접 상속 받은 경우(class명 extends Thread) start()를 메소드를 실행하면 run()메소드를 실행한다. 하지만 (class명  implements Runnable)으로 구현한 경우 thread객체를 생성 후 작성한 class를...
Share:

2018년 3월 24일 토요일

WAS관련 정리

Web.xml(배포기술자) Web.xml은 서블릿 스펙이다. 어떤 WAS든 설정은 같다. context root설정은 WAS마다 다르다. <url-pattern>/</url-pattern> 은 context root 경로 이하인 경로 설정이다. 스프링 웹 MVC 대한 대부분의 설정이 자동으로 되는 것이 많다. @Configuration를 선언할때 사용 Tomcat 과 웹어플리케이션 context root는 웹 어플리케이션마다 유일한 값을 가져야 한다.  WAS마다 설정방법이 다르다. (Tomcat,...
Share:

JAVA로 mini was 만들기

1.  클라이언트 요청 정보 출력 프로젝트를 만들고 'WASMain'이라는 Class를 만들고 소스를 아래와 같이 작성한다 서버에 8080포트를 열고 기다리는 Socket을 생성하고 클라이언트에서 전송한 정보를 출력하는 소스를 작성한다. 아래와 같이 작성 후 Main 메소드를 실행한다. import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class WASMain { public static void main(String[]...
Share:

Blocking 과 NonBlocking

Blocking이란? Blocking이란 함수를 호출하고 결과가 올 때까지 요청 한 상태에서 멈춰있을때 블록킹이 되었다고 표현합니다. 애플리케이션 실행 시 운영체제 대기 큐에 들어가면서 요청에 대한 system call이 완료된 후에 응답을 보낼 경우 Blocking상태에서는 다른 작업을 할 수 없습니다. NonBlocking이란? NonBlocking이란 함수를 호출하고 제어권을 반납하여 작업을 계속 진행합니다. 애플리케이션 실행 시 운영체제 대기 큐에 들어가지 않고, 실행 여부와 관계없이 바로 응답을 보낼 경우 NonBlocking상태에서는...
Share:

Java char, String 형식 입출력

char단위 입출력 클래스는 클래스 이름이 Reader나 Writer로 끝난다. char단위 입출력 클래스를 이용해서 키보드로 부터 한줄 입력 받아서 콘솔 출력 System.in - 키보드 입력을 의미 (InputStream ) BufferedReader - 한줄씩 입력 받기위한 클래스 BufferedReader 클래스의 생성자는 InputStream을 입력받는 생성자가 없다. System.in은 InputStream 타입이여서 BufferedReader의 생성자에 바로 들어갈 수 없으므로 InputStreamReader 클래스를 이용 java.io.InputStreamReader/ OutputStreamWriter InputStream/OutStream 클래스의 경우는 byte 단위의 읽기와 쓰기에...
Share:

2018년 3월 23일 금요일

mac에서 Intellij SPRING INITIALIZR 프로젝트

1. SPRING INITIALIZR  http://start.spring.io/ 사이트에 접속한다. 2. 정보 입력 후 다운로드 Group : examples.boot Arifact : demo1 에 입력 후 Generate Project 버튼을 선택하여 zip 파일을 다운받고 압출을 푼다. 3. Intellij 에서 프로젝트 Import 'close project'  선택 후 'import proejct' 를 선택하여 아래의 그림과 같이 실행한다. ※ 'Search for proejcts...
Share:

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 2일차( was실습)

SPRING INITIALIZR 프로젝트 http://start.spring.io/  Group :패키지명, Artifact : 프로젝트명 을 입력 파일을 다운받아서 import후 구동 클라이언트 <-> 서버 Http 통신 이해하기 get, post 차이점 알기 클라이언트와 서버의 Http 통신 흐름 mini was 작업 https://github.com/lalwr/FastCampusJavaWebMaster/blob/master/study01/src/main/java/examples/WASMain.java client가 요청하고 server와 통신되는 작업 이해하기 miniwas 리팩토링 해보기...
Share:

mac 에서 Intellij maven web 프로젝트 에서 Servlet 구현

1. Maven 프로젝트 생성하기 1.1. new Module에서  'Create from archetype ' 체크 박스를 선택하고 'maven-archetype-webapp' 을 선택한다. 1.2. Maven 경로를 설정한다. 1.3. 원하는 모듈명을 입력하여 생성한다. 1.4. 아래와 같이 프로젝트가 생성된다. 1.5. Tomcat에서 'Edit Configurantions' 를 선택 후 'Artifact' 를 선택하고 'war exploded'를 선택한다. 1.6. 'Build'항목을...
Share:

2018년 3월 22일 목요일

mac 스크린샷 경로 변경

1. 스크린샷 위치 변경 defaults write com.apple.screencapture location 경로 입력후 반영을 위해 killall SystemUIServer 를 입력한다. 2. 기본 경로로 복구 defaults write com.apple.screencapture location ~/Desktop/ && killall SystemUIServer 명령어를 입력...
Share:

mac 에서 Intellij maven 및 jdk 설정하기

1. maven 다운로드 http://maven.apache.org/download.cgi 에 접속하여 bin.tar.gz 파일을 다운로드 받고 압축을 푼다. 2. maven 폴더 이동 /Users/mac/programing/apache-maven-3.5.3 경로에 파일이 있다고 가정하면 터미널에서 mv /Users/mac/programing/apache-maven-3.5.3 /usr/local 를 입력한다. ※ Permission denied error 발생 시 아래명령어를 실행한다. sudo mv...
Share:

2018년 3월 20일 화요일

서블릿이란?

1. 서블릿이란?? 자바 플랫폼에서 컴포넌트를 기반으로 하는 웹 애플리케이션 개발의 핵심 기술  JSP는 서블릿 기반의 웹 프로그래밍 기술로 내부적으로 JSP는 서블릿으로 변환되어 실행  고급 웹 프로그래밍 개발을 위해서는 서블릿에 대한 이해가 필요 서블릿의 장점  자바를 기반으로 하므로 자바API를 모두 사용 운영체제나 하드웨어에 영향을 받지 않으므로, 한번 개발된 애플리케이션은 다양한 서버 환경에서도 실행 웹 애플리케이셔네서 효율적인 자료 공유 방법을 제공 다양한 오픈소스 라이브러리와 개발도구를...
Share: