반응형

분류 전체보기 28

[Spring Security] 스프링 시큐리티 아키텍처

1. 필터(Filter) 스프링 시큐리티는 서블릿의 필터를 기반으로 동작합니다. 일반적으로 클라이언트에서 서버로 요청을 보내면, DispatcherServlet이라는 서블릿이 하나의 HttpServeletRequest를 받아서 요청을 처리하고 HttpServletResponse 응답을 클라이언트로 보냅니다. 그런데, 하나 이상의 필터가 포함된다면, 클라이언트에서 보낸 요청이 서블릿으로 전달되기 전에 필터를 거치게 됩니다. 클라이언트가 애플리케이션에 하나의 요청을 보내면, 컨테이너는 하나의 필터 체인(FilterChain)을 생성합니다. 필터 체인에는 필터와 서블릿이 들어 있습니다. 필터 체인 내부의 필터는 말 그대로 '필터'의 역할을 하게 됩니다. 클라이언트에서 보낸 요청이 다음 필터나 서블릿에 전달되지..

Spring 2020.12.27

[Spring Boot] JPA와 ORM

프로젝트를 수행하면서 JPA를 사용할 기회가 생겨 개념을 간단히 정리해보았습니다. ORM이란? Object-Relational Mapping의 약자로 객체와 관계형 데이터베이스를 매핑하는 것입니다. JPA란? JPA란 Java Persistence API의 약자로, Java에서의 ORM을 표준화한 API 명세입니다. JPA 이전에는 EJB(Enterprise Java Beans)라는 기술 표준에 포함된 Entity Bean이라는 ORM 기술을 사용했습니다. 그 당시에 Hibernate가 등장하고 인기를 끌었습니다. 그래서 Hibernate 기반으로 새로운 Java ORM 기술 표준이 만들어졌고 그것이 바로 JPA입니다. Hibernate란? JPA를 사용하려면 JPA를 구현한 ORM 프레임워크를 선택해서..

Spring 2020.11.05

[GCP Essentials] 쿠버네티스 클러스터에 컨테이너 기반 애플리케이션 배포하기

GCP Essentials 과정을 수료하면서 GCP를 이용하여 구글 쿠버네티스 엔진(GKE)를 할당받아 클러스터를 구성하고 애플리케이션을 배포하는 방법을 핸즈온 랩으로 직접 해보며 배워볼 수 있었습니다. [느낀 점 & 배운 점] 이번 GCP Essentials 핸즈온 랩을 진행하기 전에는 도커, 쿠버네티스 등등.. 의 기술들은 이름만 들어봤을 뿐, 저에게는 매우 생소했습니다. 그런데 이번 핸즈온 랩을 진행하고 나서 직접 쿠버네티스 클러스터를 구성하고 컨테이너 기반 애플리케이션을 배포해보면서, 쿠버네티스에서 제공하는 deployment/service 객체에 대해 알 수 있었습니다. 또, 쿠버네티스의 image파라미터에 가상화 이미지 이름을 넣어 배포할 수 있구나~ 하는 정도까지 알게 되었습니다. 아직도 잘..

Cloud Services/GCP 2020.10.25

[Java] JVM 구조

1. JVM이란? JVM은 Java Vritual Machine의 약자로, 자바 애플리케이션을 실행하는 가상의 기계입니다. JVM은 자바 바이트 코드를 운영체제에 맞는 바이너리 코드(기계어)로 변환하여 프로그램을 실행하기 때문에 운영체제에 종속적입니다. 자바 외에도 Groovy, Kotlin, JRuby 등의 다양한 프로그래밍 언어로 작성된 프로그램이 JVM에서 실행될 수 있습니다. 2. JVM의 구조 JVM은 크게 다섯 가지 구조로 구성되어 있습니다. 클래스 로더 시스템 메모리 실행 엔진 네이티브 메소드 인터페이스 네이티브 메소드 라이브러리 2-1. 클래스 로더 시스템 클래스 로더 시스템은 .java 파일의 소스코드를 컴파일한 .class 파일의 바이트 코드를 읽어서 운영체제에 맞는 바이너리 코드로 바..

Java 2020.10.25

[Java] Java로 HTTP GET, POST 통신하기

최근에 프로젝트를 진행하면서 Java로 외부 API를 활용하여 데이터를 얻어와야 하는 일이 생겼습니다. 그래서 Java로 HTTP 통신을 하는 방법에 대해 공부해보았습니다. Oracle JDK 11 버전을 사용했으며, Oracle 공식 문서를 참고하고 직접 Java 클래스를 열어보며 분석했습니다. * 전체 코드는 맨 뒤에 있습니다. Java API 활용하기 Java SE 플랫폼의 기본 API를 정의하는 java.base 모듈에는 java.lang 패키지를 비롯한 다양한 패키지들이 있습니다. 그 중에 java.net 패키지에는 네트워크 애플리케이션을 구현하기 위한 클래스들이 있습니다. 이 패키지에 있는 HttpUrlConnection 클래스와 URL 클래스를 활용하여 HTTP 통신을 할 수 있습니다. 1...

Java 2020.10.22

[경험] 웹서핑중 발견한 에러 코드 429

# 상황 방금 전에 링크드인 홈페이지에 접속하기 위해 구글에 '링크드인'이라고 검색했다. 그리고 맨 위에 뜨는 홈페이지를 클릭했다. 그런데 아래와 같이 HTTP ERROR 429라는 메세지와 함께 에러 창이 떴다. 뒤로가기를 누르고 다시 링크드인 페이지를 눌렀더니 또 같은 창이 떴다. 3번째로 다시 접속해봤을 때 홈페이지에 접속할 수 있었다. 이후에도 계속 다시 접속해보니 이제 에러가 발생하지 않았다. # HTTP ERROR 429 IETF 인터넷 표준에 따르면 400번대 에러 코드는 문제의 원인이 Client일 때 발생한다. 그 중에 429 에러는 일정 시간동안 클라이언트에서 서버에 너무 많은 요청을 보낼 때 발생한다. # 느낌 웹 개발하면서 익숙하게 봐왔던 404 에러, 500 에러와는 생소한 에러 ..

[Spring Boot] Gradle이란? Gradle 의존성 설정하기

🐘 Gradle이 뭐야? 스프링 부트 프로젝트를 생성할 때 빌드 툴을 Maven과 Gradle 중에 선택할 수 있습니다. 저는 스프링 공부를 시작했을 때 부스트코스 웹 프로그래밍 강좌를 수강하면서 커리큘럼에 따라 Maven 빌드 툴을 사용했습니다. 그러다가 여러 기술을 경험해보고 싶은 마음에 새롭게 Gradle 빌드 툴도 사용해보았습니다. 하지만 둘 사이에 큰 차이는 느끼지 못했습니다. Gradle을 사용하니 빌드 스크립트가 Maven에서 사용하는 XML에 비해 간단하다는 차이 정도만 느낄 수 있었습니다. 이 두 빌드 툴 중에 제가 주로 사용하게 된 Gradle에 대해서 좀 더 자세히 알고 싶었습니다. 그래서 공부한 내용을 정리했습니다. ✏️🙂 Gradle이란? Gradle은 오픈소스 빌드 자동화 툴이다..

Spring 2020.10.06

[Spring Boot] Spring Boot란? Spring Boot의 특징과 장점

부제: Spring Boot를 선택한 이유 🍃 Just Run 스프링 부트 메인 페이지에 들어가면 보이는 첫 문장이다. Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". 스프링 부트는 단독 실행이 가능한 상용화 수준의 스프링 기반의 애플리케이션을 쉽게 만들 수 있도록 합니다. 당신은 애플리케이션을 "just run" 하면 됩니다. 이 문장에서 보이는 스프링 부트의 핵심 장점은 두 가지다. 단독 실행이 가능하다. 만들기 쉽다. 이것이 어떻게 가능한지는 스프링 부트의 특징을 통해 알 수 있다. 🍃 Features 단독 실행과 쉬운 설정에 대한 특징 1..

Spring 2020.10.05

[백준 12100] 2048 (Easy) (삼성 SW 역량 테스트 기출 문제)

# 문제 링크 www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net # 접근 방법 문제를 보자마자 재귀함수를 통해 up, down, left, right 네 가지 방향을 탐색하고 재귀함수의 깊이가 5가 되면 최댓값을 업데이트해주는 방식으로 해야겠다고 생각했다. # 신경써야 할 부분 한 번 옮길 때, 각 블록들은 한 번만 합쳐질 수 있다. 예를 들어 다음과 같은 상황에서 위로 한 번 옮기면 2 2 2 2 2 2 2 2 2 2 2 2 2 ..

반응형