리스트업프로그래밍웹 클라이언트웹 서버IntelliJ(JetBrains에서 제작한 상용 자바 통합 개발 환경)
(22.10.22)1.list \-HTML \-CSS
(22.10.24)페이지 레이아웃웹 앱 화면 설계
(22.10.26)Linux 기초CIL 기본명령어패키지와 패키지 매니저사용권한환경변수
(22.10.27)버전관리 시스템 - GitGit 설치Git Workflow
(22.10.29)Java변수와 타입문자열연산자콘솔(22.10.31)\-Java : 객체지향 프로그래밍(Object Oriented Programing)운영 체제에 독립적개체지향 언어함수형 프로그래밍 지원자동 메모리 관리(Garbage Collection) : 사용하지
(22.10.31)java조건문제어문반복문
(22.11.01)listjava배열계산기 만들기
(22.11.02)클래스와 객체필드와 메서드
(22.11.03)list생성자내부 클래스
(22.11.06)상속캡슐화
(22.11.08)1.remind실습
(22.11.13)
이게 무엇?인증/보안Before You Learn: 네트워크 및 HTTP 관련 지식: 요청/응답 형태로 이루어지는 HTTP의 클라이언트 - 서버 모델에 대한 이해: HTTP 특징(무상태성)에 대한 이해: Hyper Text Transfer Protocol Secure
if. 보안을 고려하지 않은 상태로 오픈된다면\-로그인 기능(인증 Authentication) 없음:타인이 나의 정보를 애플리케이션 API 호출로 조회 가능함\-API에 대한 권한 부여(인가 Authorization) 기능 없음:손님이 판매되는 커피 종류를 마음대로 등
Spring Security 내부에서 일어나는 과정을 알지 못하고 Spring Security의 아키텍쳐와 Spring Security의 컴포넌트들이 어떻게 인터랙션해서 인증, 권한 등의 보안 작업을 하는지 이해하지 못하면 한계에 부딪힘(1) 리소스 요청:사용자가 보호
서블릿 필터Servlet Filter:서블릿 기반 애플리케이션의 엔드포인트에 요청이 도달하기 전에 중간에서 요청을 가로챈 후 어떤 처리르 할 수 있도록 해주는 Java 컴포넌트:서블릿 기반 애플리케이션에서의 Filter 위치:위 그림처럼 클라이언트가 서버 측 애플리케이
DelegatingPasswordEncoder :Spring Security에서 지원하는 PasswordEncoder 구현 객체를 생성해주는 컴포넌트 :DelegatingPasswordEncoder를 통해 애플리케이션에서 사용할 PasswordEncoder를 결정하고,
Spring Security에서는 Spring Security Filter Chain을 통해 보안을 위한 특정 작업을 처리함? Sprng Security Filter Chain에 사용자의 인증 요청이 전달된다면, 그 다음 처리는?:사용자가 로그인 인증을 위한 요청을 전
애플리케이션의 서비스를 이용하기 위한 사용자 인증에 성공했다하더라도 체크해야 할 또 하나의 중요 보안 요소 : 권한 부여(Authortization, 인가) Spring Security의 권한 부여 처리 흐름 Spring Security Filter Chain에 도달
접근 제어 표현식 Spring Security에서 지원하는 표현식 표현식설명 hasRole(String role) 1)현재 보안 주체(principal)가 지정된 역할을 갖고 있는지 여부를 확인하고 가지고 있을 때 true 리턴2)hasRole('admi
\-JWT 사용하는 이유\-JWT를 이용한 인증 방식\-JWT 사용 시 장단점목표\-인증된 사용자인지를 증명하는 토큰 방식과 세션 방식의 차이점을 설명할 수 있음\-JWT가 무엇인지 설명할 수 있다\-JWT의 구성요소를 설명할 수 있다\-JWT의 동작 방식을 이해할 수
:데이터를 안전하고 간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식:토큰 인증 방식에서 가장 범용적으로 사용됨:JSON 포맷의 토큰 정보를 인코딩 후, 인코딩 된 토큰 정보를 Secret Key로 서명Sign한 메시지를 Web Token으로써 인증 과정에 사용함1
상태를 유지하지 않고 Stateless , 확장에 용이한 Scalable 애플리케이션을 구현하기 용이함\-서버는 클라이언트에 대한 정보를 저장할 필요 없음(토큰이 정상적으로 검증되는지만 판단)\-클라이언트는 request를 전송할 때마다 토큰을 헤더에 포함시키면 됨 :
OAuth 2Open Authorization 2.0OAuth 2 인증방식:사용자가 특정 서비스를 이용하기 위해 신뢰할만한 벤더에게 대신 인증 처리를 위임하는 방식전통적으로 특정 애플리케이션의 서비스를 이용하는 사용자에 대한 인증 처리는 해당 서비스를 직접적으로 제공하
1 Resource Owner:사용하고자 하는 Resource의 소유자(ex. 사용자 'john'이 구글 계정으로 로그인해서 google 서비스(Resource)를 이용하고 있다면, john이 google 서비스라는 Resource에 대한 Resource Owner임)
빈 bean = 인스턴스화된 객체스프링 빈 = 스프링 컨테이너에 등록된 객체 ApplicationContext 사용하여 bean 정의 읽고 액세스 가능함:getBean 이용하여 bean의 인스턴스를 가져올 수 있음(but 실제로 사용하면 안됨 왜??)Bean은 Bean
자바 기반 설정의 가장 중요한 애너테이션@Configuration@Bean메서드가 스프링 컨테이너에서 관리할 새 객체를 인스턴스화, 구성 및 초기화한다는 것을 나타내는데 사용됨
:스프링은 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공@ComponentScan은 (@Component가 붙은 모든 클래스를 스프링 빈으로 등록해주기 때문에):설정 정보에 붙여주면 됨
학습목표:리액티브 프로그래밍이 무엇인지 이해할 수 있다:리액티브 프로그래밍의 특징을 이해할 수 있다:리액티브 스트림즈가 무엇인지 이해할 수 있다:명령형 프로그래밍과 선언형 프로그래밍이 무엇인지 이해할 수 있다:리액티브 프로그래밍을 학습하기 위한 사전 지식이 무엇인지 이
리액티브 프로그래밍의 대표적인 특징 : 선언형 프로그래밍 방식을 사용:List에 포함된 숫자들을 for문을 이용해 순차적으로 접근한 후if 문으로 특정 조건에 맞는 숫자들만 sum 변수에 더해서 합계를 구함? 명령형 프로그래밍이란?:코드가 어떤 식으로 실행되어야 하는지
학습목표:Reactor가 무엇인지 이해할 수 있다:Reactor의 특징이 무엇인지 알 수 있다:Reactor의 동작 방식을 이해할 수 있다:마블 다이어그램이 무엇인지 이해할 수 있다:마블 다이어그램을 보는 방법을 이해할 수 있다:Reactor Publisher 타입의
? 마블Marble이란?:(in dictionary) 구슬:구슬 모양의 동그라미 = 하나의 데이터를 의미:다이어그램 상에서 시간의 흐름에 따라 변화하는 데이터의 흐름을 표현함1 Mono의 마블 다이어그램:마블 다이어그램에는 아래/위 두 개의 타임 라인 존재, 이는 모두
? 스케줄러 Scheduler란?:쓰레드를 관리하는 관리자 역할을 함:Reactor Sequence 상에서 처리되는 동작들을 하나 이상의 쓰레드에서 동작하도록 별도의 쓰레드를 제공해줌:"Reactor의 Scheduler는 복잡한 멀티쓰레딩 프로세스를 단순하게 해줌":R
1) 새로운 Sequence를 생성Creating 하고자 할 경우\-just()\-⭐ fromStream()\-⭐ fromIterable()\-fromArray()\-range()\-interval()\-empty()\-never()\-defer()\-using()\-
WebFlux:Reactor의 타입인 Flux가 Webd에서 사용됨:리액티브한 웹 애플리케이션\-기술 스택 비교1) Netty, Servlet 3.1+ Containers:Spring WebFlux :Non-Blocking 통신 지원:Spring MVC :Blockin
? 테스트란?:어떤 대상에 대한 일정 기준을 정해놓고, 그 대상이 정해진 기준에 부합하는지 부합하지 못하는지를 검증하는 과정1 기능 테스트:위 그림에서 보면, 기능 테스트의 범위가 제일 큼:주로 애플리케이션을 사용하는 사용자 입장에서 애플리케이션이 제공하는 기능이 올바
온프레미스:데이터센터에서 서버의 자원과 공간 및 네트워크 환경을 제공가상화 기술을 사용하는 클라우드 서비스의 장점1) 필요할 때마다 컴퓨터 능력을 유연하게 조절할 수 있음2) 고정적인 비용이 들어가는 온프레미스와 달리 사용한 만큼만의 요금만 지불하면 됨3) 컴퓨터의 스
? JUnit이란?:Java 언어로 만들어진 애플리케이션을 테스트하기 위한 오픈소스 테스트 프레임워크:사실상 Java의 표준 테스트 프레임워크임1 JUnit을 사용한 테스트 케이스의 기본 주고:애플리케이션에서 테스트하고자 하는 대상Target이 있으면,\-public
Hamcrest:JUnit 기반의 단위 테스트에서 사용할 수 있는 Assertion Framework? Hamcrest 사용하는 이유?:Assertion을 위한 매쳐Matcher가 자연스러운 문장으로 이어지므로 가독성이 향상됨:테스트 실패 메시지를 이해하기 쉬움:다양한
일반적 컨테이너:물자를 싣고 내릴 때 선박에 입항해 있는 시간을 획기적으로 단축시킴:물자를 싣고 내릴 때 필요한 인력(분류하는 사람, 짐 옮기는 사람, 감독하는 사람)을 대폭 감소시킴=> 개발자들은 컨테이너 기술을 "소프트웨어 수송, 즉 배포에 사용할 수 없을까?""컨
단위 테스트의 경우:일반적으로 특정 모듈이나 계층, 기술에 의존적이지 않도록 작성하는 것이 좋음하나의 애플리케이션은 계층별로 역할이 있고, 계층별로 서로 연동되기 때문에각각의 계층별로 잘 활동하는지 테스트를 진행해야 함마지막에는 통합 테스트를 통해 계층 간의 연동에 문
:특정기기에 설치해서 사용하는 애플리케이션:특정 실행환경에 종속됨장점:웹애플리케이션보다 빠름:애플리케이션이 설치된 기기의 시스템/기기틔 리소스에 접근이 용이함(GPS, 카메라 등):인터넷 없이 사용 가능:웹애플리케이션에 비해 안전함(모바일의 경우 앱스토어 승인 필요)단