BackEnd/Java

· BackEnd/Java
try ~ catch 구문 MultiCatch try { // 예외가 발생할 수 있는 코드 } catch(Exception e) { // 예외 처리 코드 } finally { // finally 는 생략 가능하다. // 특수한 경우 사용하게 되는데, try단에서 예외가 발생하여 프로그램이 종료 된 경우 // 실행이 안된 남아있는 코드들 중 반드시 실행해야하는 코드를 finally에 넣는다. // 프로그램이 예외가 없어 종료되지 않아도 무조건 실행된다. // 주로 Checked Exception 에서 사용하는 경우가 많다. // 자원해제할 때 사용하는 코드. } 일반적인 try catch package kh20200312; public class Exception03_Try { public static v..
· BackEnd/Java
서블릿의 동작 원리 클라이언트 요청 -> Apache Tomcat 서버(WEB + WAS) -> 서블릿 컨테이너 -> 서블릿 객체 -> service() 호출 -> doGet() 또는 doPost() 호출 -> 서블릿 컨테이너 -> Apache Tomcat 서버 -> 클라이언트 응답 서블릿 컨테이너, Servlet Container 서블릿 처리(동작) 환경을 구축하는 역할 서블릿을 생성하고 실행시켜주는 역할을 수행한다. WAS서버와 서블릿 객체 사이의 중간다리 역할을 수행한다. HttpServletRequest(HTTP 요청객체), HttpServletResponse(HTTP 응답객체) 두 가지를 생성하여 서블릿에 전달한다. 요청 URL-Pattern과 서블릿 객체를 1:1로 따로 매핑해놓고 요청을 기다..
· BackEnd/Java
세션, Session 서버가 클라이언트의 요청을 식별하는 방법 javax.servlet.http.HttpSession 객체를 사용한다 request(요청객체)를 통해서 HttpSession 객체를 얻어와 사용하게 된다 ex) HttpSession session = request.getSession(); 서버가 사용자의 정보를 유지하기 위한 기술 ex) 로그인 상태 쿠키보다 상태 정보에 대한 유지력, 보안성이 좋다 쿠키 정보는 클라이언트에 저장되고, 언제든 지워질 위험이 있다 세션 정보는 서버가 관리한다 클라이언트(브라우저) 별로 따로 관리한다 세션 정보는 기본적으로 메모리로 관리한다 세션의 동작 원리 클라이언트의 요청(첫 접속)이 들어오면 서버는 Session ID 를 생성한다. 서버가 응답하면서 Set..
· BackEnd/Java
쿠키, Cookie 웹 서버가 클라이언트(브라우저)에 정보를 저장하는 기술 웹 서버에서 필요할 때 쿠키 정보를 꺼내서 사용할 수 있게 만들어 준다 자바에서는 javax.servlet.http.Cookie 객체를 이용하여 관리한다. 쿠키 정보는 name = value 쌍으로 이루어진 정보이다. 여러개의 쿠키를 저장할 수 있다. 브라우저는 도메인별로 쿠키를 저장하고 관리한다. 쿠키는 유지시간(MaxAge)을 가지고 있다. - 쿠키 보관 기간 기본값은 무한이며 초단위로 설정 가능하다. 쿠키의 기본 동작 흐름 클라이언트(브라우저)는 서버에 요청을 보낼 때 항상 쿠키 정보를 포함하여 전달한다. 요청 정보에 포함 시킨다 없으면 보내지 않는다 서버는 클라이언트의 요청데이터에서 쿠키 정보를 확인할 수 있다. 응답 헤더..
· BackEnd/Java
일반화 프로그래밍, 제네릭 자바에서는 일반화 프로그래밍 이라는 용어는 많이 사용하지 않고 제네릭이라고 한다. 일반화 프로그래밍은 C언어 쪽에 더 가깝다. 일반화 프로그래밍 자료형을 일반화시켜 프로그래밍 하는 것 int double float boolean String(참조형 포함) Point Person .. 등등 위의 자료형들의 특성을 무시하고 데이터타입의 이름을 정해 일반화하고 개발하는 것 자바에서는 제네릭을 이용하여 구현한다. // ex) public void out (String var) { } public void out (Integer var) { } public void out (Boolean var) { } // 세개를 오버라이딩하는데 내용이 매우 흡사하다. // 이럴 때 제네릭을 사용한다..
· BackEnd/Java
메소드 오버로딩 메소드 오버로딩(Method Overloading), 정해져있는 한계량보다 더더더더더더더 같은 이름의 메소드를 여러 개 정의하는 것. 비슷한 기능을 하는 추가 메소드를 개발하기 위해 별도의 이름을 사용하지않고 기존의 메소드 이름을 사용할 수 있게 해준다. 메소드 오버로딩 성립 조건 매개변수가 달라야한다. (정확히는 데이터 타입이 달라야 함) 매개변수에 들어간 데이터타입의 갯수가 달라야한다. 반환 데이터타입은 오버로딩과 상관 없다. ex) public class Overloading_01 { private int x; private int y; // 멤버필드 x, y 를 출력하는 메소드 구현 public void display() { // 매개변수가 없는 Display System.out...
· BackEnd/Java
멀티 스레드, Multi-Thread 프로그램, Program 실행 파일 (exe 파일) 하드디스크에 저장되어 있는 상태 프로세스, Process 실행 중인 프로그램 메모리(RAM)에 실행 상태로 로드된 프로그램 스레드, Thread 프로세스의 작업 단위(실행가능 단위) 멀티스레드, Multi-Thread 스레드가 여러개인 프로세스 상태 약간 다른 개념들이지만 멀티 프로세스, Multi Process 프로세스가 여러 개인 프로그램 프로세서, Processor 프로세스를 동작시키는 장치, CPU 멀티 프로세서, Multi-Processor 다중처리 컴퓨터 프로세서가 여러개인 시스템(컴퓨터) 멀티 코어 프로세서 코어가 여러개인 프로세서 듀얼 코어, 쿼드 코어, 헥사 코어 .. 등등
· BackEnd/Java
네트워크와 프로토콜 Node(노드)들의 연결망 노드 : 네트워크에 연결된 시스템 컴퓨터, 주변장치, 네트워크장비, 등 노드의 구분 노드(컴퓨터)들의 역할을 고려해서 구분 서버 Server : 다른 노드에게 서비스를 제공하는 노드 클라이언트 Client : 서비스를 이용하는(제공받는) 노드 전용 서버를 두는 방식을 CS방식이라고 한다( Client - Server ) 대부분 CS 방식을 사용한다. 서버기반 네트워크 모델 서버시스템 구축과 관리에 비용이 많이 든다. 비용 감당만 가능하다면 안정적인 서비스가 가능하다. 데이터의 관리와 보안이 수월하다. 서버, 클라이언트 역할 구분이 없으면 P2P(Peer to Peer)라고 한다. 서버구축, 운용, 관리비용 절감이 가능하다. 자원의 활용이 극대화 된다. 자원에..
· BackEnd/Java
멀티 스레딩 관련 클래스 interface Runnable run() 추상 메소드를 가지고 있다. run() 메소드는 스레드화 될 수 있는 코드를 정의할 수 있다. 스레드 코드를 작성(정의)하는 메소드 class Thread implements Runnable run() 메소드를 가지고 있다. 스레드를 제어하고 관리하는 메소드들을 정의하고 있다. 스레드의 정보를 확인할 수 있게 해준다. 스레드를 실행시킬 수 있다. start() 메소드 사용 스레드 제어 메소드 스레드의 동작을 제어하는 메소드 스레드 생명 주기(Life Cycle)에 영향을 준다. public static void sleep(long millis) throws InterruptedException 주어진 밀리초만큼 sleep을 호출한 스레..
· BackEnd/Java
클래스의 개념 클래스 기능 클래스 - 메인메소드 없이 기능만 가지고 있는 클래스 멤버 필드 - 데이터의 정보, 속성만 가지고 있다. 멤버 메소드 - 기능, 행위, 동작을 한다. 추상 클래스 - 일반 클래스가 완성된 설계도라면 추상 클래스는 미완성 설계도와 같다. 흐름상 서브클래스에서 값을 바꿔야 하는 상황이 발생한다면 추상 클래스, 메소드를 만든다. 변할 가능성이 있는 기능들은 추상클래스와 메소드로 구현하고 변할 가능성이 없는 기능들은 일반 클래스로 만든다. 추상 메소드 - 미완성 되어 있는 메소드를 서브클래스(자식클래스)에서 구현한다. 추상 클래스에서 미구현한 '접근제한자 abstract void 메소드명();' 을 상속받아 오버라이딩하고 알맞은 기능을 구현하여 사용할 수 있도록 한다!
· BackEnd/Java
자바 국비 과정을 이수하면서 깜빡할 때마다 읽어보려고 만들었습니다! 지켜야 할 약속, 꼭 알고 있어야 하는 부분 변수명, 패키지명, 메소드명은 소문자로 시작한다. 클래스명, 프로젝트명은 대문자로 시작한다. 인스턴스 변수 - 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 생성해야한다. 클래스 변수 - 인스턴스 변수에 static만 붙여주면 된다. 스태틱은 정적으로 값이 변하지 않는다. 선언하면 프로그램이 종료될 때 까지 값이 고정이다. 그러나 선언된 함수나 공간에서만 사용이 된다. 스태틱을 선언하면 프로그램이 종료될 때 까지 값을 가지고 있고 종료되면 사라진다. 지역 변수 - 메서드 내에서 선언하며 선언된 메서드 내에서만 사용할 수 있는 변수이다. 메서드가 실행될 때 메모리를 할당 받으며 메서드가 ..
헌일