Print

    GET 방식과 POST 방식

    GET 방식 - default 전송방식으로 http header에 정보(QueryString, 환경변수를 통해 전달)를 실어 보냄 - URL에 데이터가 노출되어 보안에 취약. - 캐싱 가능 ● 캐싱이 사용 가능으로 설정되면 서버의 비즈니스 오브젝트 대신 브라우저 캐시에서 데이터 검색 ● 요청의 엔티티 태그(ETag) 값이 이전 요청 값과 일치하는 경우 요청에 대해 캐싱 사용 ● 캐싱은 각 사용자에 대해 고유하며 Cache-Control HTTP 헤더 특성에 의해 제어 - 브라우저 히스토리에 기록이 남음 - 전송하는 데이터양에 한계가 있음(브라우저마다 GET 요청 길이 제한 존재) - 검색엔진에서 검색단어 전송에 많이 이용함 POST 방식 - 서버로 정보를 전송하기 위해 설계되었으며 http body에 정..

    웹 서버 및 WAS

    웹 서버(Web Server) - HTTP를 통해 웹 브라우저와 같이 클라이언트가 요청하는 HTML 문서나 CSS, JavaScript, Image 등의 웹 페이지를 전송해주는 서비스 프로그램 - HTTP 프로토콜을 기반으로 브라우저 요청을 서비스하는 기능을 담당(정적 컨텐츠) 종류 : Apache Server, IIS(Internet Information Server), 엔진 x(nginx), GWS 등 WAS(Web Application Server) - 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진) - Server 단에서 Application을 동작할 수 있도록 지원 - 동적 서버 컨텐츠를 수행하며, 정적 컨텐츠를 수행하는 웹 서버와 구별..

    직렬화와 모듈

    직렬화 - 객체안의 멤버 변수들을 유지한 채로 파일에 저장하거나 네트워크를 통해 전달할 수 있는 기능 - 객체 멤버의 변수 값을 바이트 단위로 변환해 파일 또는 네트워크를 통해 송수신 가능하게 만듦 - 메서드, 생성자, static 변수는 직렬화 대상에서 제외 - 먼저 객체 직렬화가 가능하도록 java.io.Serializable 인터페이스 구현 모듈 - Java 9 부터 모듈이라는 새로운 수준의 추상화 도입 - 여러 패키지와 이미지 등의 자원을 모아 놓은 컨테이너 - JDK 9부터 자바 API의 모든 클래스(자바 실행 환경)를 패키지 기반에서 모듈로 완전히 재구성함 - 응용프로그램도 여러 개의 모듈로 분할하여 작성 가능 - 자바 API를 여러 모듈로 분할하여 응용 프로그램의 실행에 적합한 모듈들로만 실..

    JDBC

    Statement 객체 - 정적인 SQL문 실행 결과를 돌려주는 객체 - Connection의 createStatement() 메서드를 호출 PreparedStatement 객체 - Statement 하위 인터페이스로 프리 컴파일(전 처리)된 SQL문을 나타내는 객체 Statement 와 PreparedStatement 차이점 - 캐시 사용여부. 전자는 매번 쿼리 실행할 때마다 컴파일을 하기에 성능상 이슈 발생 후자는 컴파일이 미리 되어 있어 좋은 성능, 특수 문자를 자동으로 파싱하여 SQL Injection 공격 방지 CallableStatement 객체 - 프로시저 호출할 때 사용 Connection Pool(DBCP : Database Connection Pool) - DB와 연결된 커넥션을 미리 ..

    람다식

    람다식(Lambda Expression) - 메서드를 하나의 식(Expression)으로 표현한 것 - 함수 지향 언어에 가까움 - 메소드의 이름 및 반환 값이 없어져 익명 함수 라고 함 - 매개 변수를 가진 코드블럭이지만 런타임 시에는 익명 구현 객체를 생성 - 하나의 추상 메서드를 가진 인터페이스는 람다식 사용 가능 - JDK 8부터 지원 - 예시) ( 파라미터명 ) -> { 수행할 코드 }

    스레드와 동기화

    스레드(Thread) - 작업 스케줄러(Job Scheduler)에 의해 시간을 배정받아 CPU에서 작업할 수 있는 단위 - 실제 CPU 시간을 할당받아 수행되는 실행 단위 - 하나의 애플리케이션이 실행되기 위해서는 최소 하나의 스레드가 필요. 스레드는 프로그램 코드를 실행하는 단위로 프로세스에 할당된 메모리 영역에서 실행되고, 프로세스에 할당된 시스템 리소스를 공유 동기화(Synchronized) - 프로세스 또는 스레드들이 수행되는 시점을 조절하여 서로가 알고 있는 정보를 일치하는 것 - Thread-safe : 여러 스레드가 한 리소스를 사용하려 할 때, 사용하려는 스레드 하나를 제외한 나머지 스레드들은 리소스를 사용하지 못하도록 막는 것을 말한다. 락(Lock) - 락을 가지고 있는 스레드만 해당..

    제네릭과 컬렉션

    제네릭(Generic) - 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하는 방법 - 미리 정의된 하나의 메서드 또는 멤버 변수에 서로 다른 자료형의 결과를 얻을 수 있도록 하는 기능 - 컴파일 할 때 타입 체크를 통해 실행시 발생하는 타입에러를 사전에 방지. 불필요한 타입 변환(casting)을 안하므로 프로그램의 안전성 향상 컬렉션(Collection) Set - 순서가 없고, 중복을 허용하지 않는 자료구조 - 주요 구현 클래스 : HashSet List - 순서가 있는 요소들의 집합으로 배열과 같은 구조이나 가변적 길이를 가지고 있음. Set 과 다르게 중복 요소 추가 가능 - 주요 구현 클래스 : Vector, ArrayList, LinkedList, St..

    예외 처리

    예외 처리 - 예외 : 프로그램 실행 중에 명령어의 정상적인 흐름을 방해하는 이벤트 - 자바에서 예외는 하나의 객체 - 에러 발생시 에러 객체를 생성하여 자바 런타임 시스템에 전달 예외 처리의 장점 - 실행 코드와 에러 처리 코드 분류 - 메서드의 콜 스택(Call Stack)에 에러를 차례대로 보낼 수 있음 - 에러 타입을 종류별로 분류 가능 StackOverflowException - Java 프로그램 또는 JVM에서 작성된 모든 스레드는 Java 힙과 관계 없이 고유 스택 공간이 존재 - 지정한 스택 메모리 사이즈보다 더 많은 스택 메모리를 사용하게 되어 에러가 발생하는 상황