- [백엔드 로드맵] 언어 배우기 - JAVA2024-01-04 00:08:57백엔드 개발자로서 다룰 수 있는 언어가 다양하다면 많은 장점이 있을 것이다. 하지만 여러 언어를 조금씩 파는 것보다 주 언어를 더 깊게 파는 것이 중요하다고 생각하여 Java에 대해 공부하였다. 1. Java 기본 1-1. 기동 원리 1. 시스템으로부터 메모리 할당(JVM) 2. Java 컴파일러에 의해. java 형식에서. class 형식으로 변환(바이트 코드 변환) 3. 클래스 로더에 의해 클래스 파일들은 JVM에 로드된다. 4. 실행기(Execution Engine)에 의해 클래스 파일을 해석하며 프로그램 실행 1-2. 변수 지역 변수 : 함수 안에 선언 / 함수가 실행될 때 전역 변수(필드 변수) : 함수 밖에 선언 클래스 변수 : static 변수 인스턴스 변수 : 객체 변수 변수의 사용처에 따..
- [실전 알고리즘] 배열2024-01-03 14:30:17지금까지 프로그래밍 언어의 관점에서 배열을 다뤘었기 때문에 자료구조로써의 배열을 익힐 필요가 있어 공부하였다. 1. 정의와 성질 배열의 정의 배열이란 메모리 상에 원소를 연속하게 배치한 자료구조를 말한다. C++에서는 이미 선언된 배열의 길이를 변경하는게 불가능하지만, 자료구조로써의 배열에서는 길이를 마음대로 늘리거나 줄일 수 있다고 생각하겠다. 배열의 성질 1. O(1)에 K번째 원소를 확인/변경 가능 - 시작 주소에서 k칸 만큼 오른쪽으로 가면 되기 때문 2. 추가적으로 소모되는 메모리의 양(=overhead)가 거의 없음 - 다른 자료구조와는 다르게 추가적으로 소모되는 메모리 양이 거의 없슴 3. Cache hit rate가 높음 - 메모리 상에 데이터들이 붙어있으니까 Cache hit rate가 ..
- Spring 이란?2024-01-03 10:18:53너무나 당연하게 쓰고 있던 Spring에 대해서 궁금증이 생겼기에 이 글을 쓴다. Spring framework란? 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 엔터프라이즈급 애플리케이션 개발을 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션 경량 컨테이너로 자바 객체를 담고 직접 관리 엔터프라이즈급 개발 환경 대규모 데이터 처리와 트랜잭션이 동시에 여러 사용자로부터 행해지는 매우 큰 규모의 환경 객체의 생성 및 소멸, 라이프사이클을 관리하며 언제든 spring 컨테이너로부터 필요한 객체를 가져와 사용하기 때문에 spring은 IOC(Inversion Of Control) 기반의 Framework임을 알 수 있다 IOC Spring에서는 일반적인 Java 객체를 new로 생성하여 개발자가 ..
- 컴퓨터 보안[2]2023-12-12 02:34:10보안시스템 이란? 사이버 공격을 탐지하거나 방지하기 위한 시스템 보안 시스템의 분류 [침입 종류와 대응 방식에 따른 분류] 방화벽(Firewall) : 침입 차단 시스템 - 내부 컴퓨터를 외부로부터 보호하기 위한 정책 이를 수행하는 하드웨어 및 소프트웨어 - 공격자, 인증되지 않은 사용자, 유해정보 내부 네트워크에 진입하지 못하도록 하는 보호 정책과 보호 장치 침입 탐지 시스템 침입 방지 시스템 가상사설망(VPN) 네트워크 접근제어 시스템(NAC) 통합 보안 위협 관리 기술(UTM) - 트래픽의 종류와 양을 결정 - 정상적인 사용자 접근 가능하게 해 주고 불법적이고 인증되지 않은 자는 접근 차단 방화벽의 구성방식 패킷 필터링 OSI 7계층 중 3 계층(네트워크 계층)과 4 계층(트랜스포트 계층)의 패킷..
- [Spring Boot] Spring Security & OAuth2.0 사용 - 소셜 로그인 기능 구현하기12023-11-08 22:42:20오늘은 Spring Security 와 OAuth 2.0 으로 소셜 로그인을 구현해 봤는데 각각 뭘 의미하는지와 버전이 달라지면서 바뀐 부분들을 설명하겠다. 0. 환경 설정 Gradle 사용 plugins { id 'java' id 'org.springframework.boot' version '3.1.2' id 'io.spring.dependency-management' version '1.1.2' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } 1. 구글 서비스 등록 구글 클라우드 플랫폼 주소로 이동하여 프로젝트를 생성해야 하는데 이 과정은 여기를 참고하면 되겠다. 2-1. application-oau..
- [Spring] Spring Security 기본 개념(JWT / OAuth 2.0 / 동작방식 / 구성요소)2023-11-06 23:49:25이번엔 Spring Security의 기본 개념에 대해 공부했다. 1. JWT(Jason Web Token) 유저 인증, 식별하기 위한 토큰 기반의 인증에 쓰인다. - 구조 헤더(Header) 타입(Type) : 항상 JWT 알고리즘(alg) 페이로드 (Payload) : 사용자 정보 담김 서명 (Verify Signature) - 동작 방식 클라이언트 측에서부터 서버 측으로 JWT 받음 서버 측의 비밀 값과 JWT의 헤더, 페이로드를 alg에 넣고 서명값과 같은지 확인 같다면 유저에 인가한다. - 특징 시간에 따라 상태 값이 달라지지 않음(Stateless) 서버가 통제하지 않아 여러 사용자가 같은 JWT로 여러 요청 보내도 추적 불가능 - 종류 Access Token : 인가받았을 때 쓰는 수명이 짧..
- [Spring] RESTful 이란?2023-11-06 18:01:52RESTful Web Service를 구현해보기 전에 RESTful 에 대해서 알아보자. 1. RESTful Api 를 사용하는 이유 앱에서 사용되는 대량의 데이터는 파일을 따로 구성하여 앱 내부에 넣어두고, 이 파일을 읽는 방식으로 처리된다. 콘텐츠 서비스 앱의 핵심요소는 최신 데이터이다. 하지만 데이터를 파일에 저장하는 방식으로 처리하게 되면 새로운 데이터를 추가할 때 마다 사용자가 앱 업데이트를 해야하고, 그럴수록 사용자 경험은 점점 나빠질 것이다. 따라서 데이터를 서버에 두고, 서버로부터 다운받아 사용한다면 이를 해결 할 수 있다. 서버에 새로운 데이터를 업로드하고, 앱은 이 서버로부터 데이터를 받아내면 사용자는 앱에 대한 업데이트 없이 최신 데이터를 받을 수 있는 것이다. 2. 비연결성 지향 통..
- [Spring] EntityNotFoundException 이란?2023-11-02 01:50:011. 사용 예시 이번 글은 Spring에서 데이터베이스에 있는 데이터를 조회하는 경우 해당 데이터가 없을 때 발생시킬 예외 중 하나를 소개하겠다. 전에는 존재하지 않는 데이터를 조회하는 예외처리를 할 때마다 NoSuchElementExeption만 사용했었다. 위와 같은 경우에서 예외를 처리하는 권장 방법 중 하나는 커스텀 예외를 발생시키는 것이다. 2. 예외 발생 방법 Spring.io를 보면, 이런 경우에 대한 권장 커스텀 예외가 바로 EntityNotFoundException이다. 이 예외는 일반적으로 데이터베이스에서 리소스를 찾을 수 없을 때 사용된다. 이 예외는 java.persistence 패키지의 일부로서 쿼리에서 결과가 없을 때 레포지토리 레이어에서 발생시킬 수 있다. Spring Data..