목차 이번 포스팅은 3주차 배운 내용 보다는 스터디 주제에 대해 공부한 내용을 정리할 생각이다. 스터디 주제는 : DI, Bean, Configuration, Controller, Rest Controller, ControllerAdvice, InterCeptor, HTTP method, status code DI (Dependency Injection) 의존대상 B가 변하면, 그것이 A에 영향을 미친다. (이일민, 토비의 스프링 3.1) public class A { private B b = new B(); } A라는 클래스가 있고, 이 클래스는 B라는 클래스를 필드로 가질때 B에 final 필드가 추가되는 변경이 일어난다면 new B()부분에서 컴파일 에러가난다. B 내부의 변경이 일어났는데, A에도..
목차 Process - 실행중인 프로그램 프로그램은 실행되기 전까지는 보조기억장치에 있는 데이터 덩어리지만, 이 프로그램을 메모리에 적재하고 실행하는 순간 이 프로그램은 프로세스가 된다. 프로세스의 요소 - 프로그램 코드 - 데이터 집합 - PCB (Process Control Block) PCB는 프로세스를 만들기 위함. 프로세스마다 생성된다. PCB에 대해 더 자세히 알아보자. PCB (Process Control Block) 다중 프로세스나 멀티프로세싱을 가능하게 해주는 중요한 기능이다. 프로세스가 인터럽트를 받으면 program counter의 현재 값과 process register를 적절한 곳에 저장한다. 그리고 프로세스의 상태를 blocked나 ready처럼 바뀐다. blocked와 read..
목차 1.1 Basic Elements Operating System (운영체제) 가 하는 일 1. Exploits(활용) the hardware resources 2. Provides(제공) a set of services to system users 3. Manages(관리) secondary memory and I/O devices Processor(CPU) Main memory - Control Unit (제어장치) - volatile - ALU - referred to as real memory - registers I/O modules System Bus - secondary memory(hard disk) - communication among - communications equipment..
목차 데이터 통신(Data Communications) 통신 매체의 형태를 통하여 두 디바이스 사이에서 데이터 교환이 이루어지는 것 데이터 통신 시스템의 효율성 - Delivery : 시스템은 올바른 목적지에 전달되어야 한다. - Accuracy : 시스템은 정확하게 전달되어야한다. - Timeliness : 시스템은 알맞은 때에 데이터를 전달해야 한다. - Jitter : 패킷 도착시간에서의 변수를 나타난다. ex) 비디오 패킷이 매번 30ms 마다 전송된다 했을때 몇몇 패킷은 고르지 않은 품질을 가지고 40ms 딜레이를 갖고 전송된다 네트워크 (Network) 통신이 가능한 디바이스들 집합의 상호연결이다. 디바이스는 컴퓨터,데스크탑,휴대폰 또는 데이터의 형태를 바꿀 수 있는 라우터, 스위치, 모뎀 같..
인증 & 인가 인증(Authentication) 이란? 사용자가 누구인지 확인하는 과정 인가(Authorization) 란? 인증된 사용자가 특정 리소스에 접근할 수 있는 권한을 결정하는 과정 쉽게 예시를 들어보면 공항에서 보안 검사대를 통과할 때 여권과 티켓을 제시해야 하는데 이것이 바로 인증 과정이다. 여권과 티켓(웹에선 아이디, 비밀번호)을 통해 비행기를 탈 수 있는 승객임을 증명하는 것이다. 즉, 인증은 누구인지 확인하는 과정이다. 인증 과정을 통과한 후에도 이코노미석 티켓을 구매한 승객은 이코노미석 영역에만 앉을 수 있다. 비즈니스 또는 퍼스트 클래스 영역에는 들어갈 수 없다. 이것이 인가 과정이다. 인증된 사용자(승객)가 어떤 리소스(좌석 클래스 영역)에 접근할 수 있는 권한이 있는지 결정하는..
isPresent() 메소드 - Boolean 타입 - Optional 객체가 값을 가지고 있다면 true, 값이 없다면 false 리턴 예시) if(user.isPresent()) { System.out.println("이미 존재하는 이메일"); } else ~~~~~ ifPresent() 메소드 - void 타입 - ifPresent()는 Optional 객체가 값을 가지고 있으면 실행, 값이 없으면 넘어감. 예시) isPresent() 메소드 = true,false 체크 ifPresent() 메소드 = 값을 가지고 있는지 확인 후 예외처리 orElseThrow() 메소드 Optional의 인자가 null일 경우 예외처리를 시킨다.
Optional이란? - 개발을 할 때 가장 많이 발생하는 예외 중 하나가 바로 NPE(NullPointerException)이다. NPE를 피하려면 null 여부를 검사 해야 하는데 null 검사를 해야하는 변수가 많은 경우 코드가 복잡해지고 번거로워 지기 때문에 이를 방지할수 있도록 도와준다. -Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. Optional 활용하기 Optional.empty() - 값이 Null인 경우 Optional은 Wrapper 클래스이기 때문에 값이 없을 수도 있는데, 이때는 Optional.empty()로 생성할 수 있다. Optional optional = Optional.empty(); Sy..
람다(Lambda) - 현대적 프로그래밍 기법 = 객체지향 프로그래밍 + 함수적 프로그래밍 - 자바 8버전부터 함수적 프로그래밍 지원 스트림(Stream) 1. 람다식으로 요소 처리를 제공 2. 내부 반복자를 사용하므로 병렬처리가 쉽다. -> 컬랙션 내부에서 객체를 반복시킬 것인가는 컬렉션에게 맡기고, 개발자는 객체 처리 코드에만 집중할 수 있다. 스트림은 '중간처리' 와 '최종처리'를 할 수 있다. 람다식과 스트림 import java.util.*; import java.util.stream.Stream; public class StreamEx01 { public static void main(String[] args) { List list = (List) Arrays.asList(10,20,30,40..
HTTP(Hypertext Transfer Protocol)란? 인터넷에서 정보를 주고받는데 사용되는 통신 규약 (protocol)이다. 간단히 말해, 웹 브라우저와 웹 서버 사이에 데이터를 주고받는 방법을 정의 하는 규칙이다. 클라이언트(Client) 클라이언트는 정보를 요청하는 사용자입니다. 보통은 웹 브라우저가 클라 이언트 역할을 합니다. 사용자가 웹 브라우저를 통해 웹 페이지를 요청하면, 이 요청이 HTTP 메시지로 웹 서버로 전송됩니다. 서버(Server) 서버는 클라이언트 요청에 응답하여 정보를 제공하는 컴퓨터이다. 웹 서버는 클라이언트의 요청을 받아 해당하는 웹 페이지나 데이터를 전송한다. 쉽게 생각하면 클라이언프는 프런트이고, 서버는 백이다. HTTP 메시지(HTTP Message) HTT..
스프링의 탄생배경 EJB(Enterprise Java Bean) 이란? JB에 해당하는 Java Bean이란 자바 객체를 재사용 가능하게 컴포넌트화 시킬 수 있는 코딩 방침을 정의한 것을 의미합니다. 즉, EJB는 컴포넌트(빈 혹은 객체)들을 관리하는 컨테이너 라고 이해할 수 있습니다. EJB 스펙을 지키면서 구현하면 실제 로직보다 EJB 컨테이너를 사용하기 위한 코드들이 많아지는 결과를 발생시켰고, 객체간 의존성을 해결하기 위해서 컨테이너를 개발했는데, 이것이 스프링의 시작입니다. Spring이란? 스프링은 '여러 기술들의 집합체'로 정의 할 수 있는데 그러한 기술들에는 스프링 프레임워크, 스프링부트, 스프링 데이터 등등.. 이 있습니다. 스프링부트 - 스프링 프레임워크 기반 프로젝트를 복잡한 설정없이..