컴퓨터 네트워크 2.1.1 OSI 모델 계층 1 : 물리 계층 물리 계층에서는 하드웨어를 다룹니다. 예를 들어 보낼 데이터를 어떤 파형의 전류로 보낼지 등을 정의합니다. 계층 2 : 데이터 링크 계층 로컬 지역 네트워크(LAN)에서 통신을 가능하게 합니다. 계층 3 : 네트워크 계층 광역 통신망(WAN)에서 통신을 가능하게 합니다. 계층 4 : 전송 계층 이 계층에서는 상대방에게 데이터가 반드시 도착하게 된다. 계층 2에서는 상대방에게 데이터가 변조 없이 가게는 하지만, 반드시 가게 하는 것은 아니다. 계층 5 : 세션계층, 계층 6 : 표현 계층, 계층 7 : 응용 계층 응용 프로그램이나 운영체제 안 모듈이 다른 컴퓨터의 응용 프로그램이나 운영체제 모듈과 통신을 하는 동안 논리적 연결 단위나 기능들은 ..
멀티 쓰레딩 1.1 프로그램과 프로세스 프로그램 이란 컴퓨터에서 실행되는 명령어 모음이 들어 있는 데이터 덩어리 코드(code) 와 데이터(Data) 로 구성 프로그램을 실행하면 명령어가 한 줄 씩 실행되면서 활동하는 상태가 되고 이를 프로세스(Process) 라고 한다. 코드와 데이터는 이 프로세스 메모리로 불러들인다. 프로세스 메모리에는 프로그램 코드와 데이터는 물론 힙(heap)과 스택(stack)도 공존한다 스택(stack)에는 현재 실행중인 함수들의 호출 기록과 로컬 변수가 들어있다. 아래와 같이 프로세스가 여러 개 실행되고 있는 것을 멀티프로세싱 이라고 한다. 1.2 스레드 각 프로세스에는 독립된 메모리 공간이 있다. 기본적으로 서로 다른 프로세스는 상대방의 메모리 공간을 읽고 쓸 수 없다. ..
Spring Security Spring Security의 동작에 대해 이해할려고 많은 문서들을 뒤져봤지만 쉽게 이해할 수 없어 직접 코드를 쓰면서 이해해 보기로 했다. 필자는 Spring Security 를 적용하여 간단한 로그인 인증관련 테스트를 진행할 예정이다. 개발 환경 IntelliJ IDEA Spring Boot 2.6.3 Java 8 Gradle H2 Gradle 의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementation 'o..
Spring Security 인증처리 흐름과 구조 사실 필자는 Spring 에서 가장 어렵고 복잡한 부분이 바로 Spring Security라고 생각한다. 그래서 더 이해하기 어렵고 사용하기 어렵다. 스프링 시큐리티는 수 많은 클래스 및 인터페이스들로 이루어져 있다. 이 클래스들은 인증환경을 구성하기 위한 각각의 역할이 있으며, 인증처리 역시 관련 시큐리티 클래스들이 적절하게 호출되어 구현된 것이다. Spring Security 란? 스프링 시큐리티에서는 인증 과 권한을 분리하여 체크할 수 잇도록 구조를 만들었다. Authentication(인증) : A 라고 주장하는 주체(user, subject, principal) 가 A가 맞는지 확인 하는 것. 코드에서 Authenitication : 인증 과정에..
Transaction(트랜잭션) 이란? 트랜잭션이란, 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻한다. D의 상태를 변화시킨다는 것은 무얼 의미하는 것 인가? 간단하게 말해서 SQL을 이요하여 DB 에 접근하여 CRUD를 수행하는 것이다. 본격적으로 Spring 에서 제공하는 @Transcation 에 대해 알아보자 Spring Transaction VS Spring Boot Transaction @Transactional은 많은 편리성을 제공해준다. transcation begin, commit을 자동 수행해준다. 예외를 발생시키면, rollback처리를 자동 수행해준다. public class BooksImpl implements Books { @Transactional publi..
JWT(Json Web Token) 서버 기반 인증 vs 토큰 기반 인증 특정 사용자가 서버에 접근 했을 떄, 이 사용자가 인증된 사용자인지 구분하기 위해서는 여러 방법을 사용할 수 있다. 대표적으로 서버 기반 인증 토큰 기반 인증 JWT는 토큰 기반 인증에 속한다. 위 그림은 서버와 클라이언트 간의 JWT 인증 방식이다. 클라이언트가 ID, Password로 서버에 로그인을 요청한다. 서버는 ID, Password를 통해 유효한 사용자 인지 검증하고, 유효한 사용자인 경우 토큰을 생성해서 응답한다. 클라이언트는 토큰을 저장해두었다가, 인증이 필요한 api에 요청할 때 토큰 정보와 함께 요청 한다. 서버는 토큰이 유효한지 검증하고, 유효한 경우에는 응답 해준다. 토큰 사용 방식의 특징 무상태성 사용자의 ..
Spring Thread Pool 스프링 부트 다중 처리 요청에 대해 너무 잘 정리되어있는 블로그를 보고 나 또한 기록해 놓기로 하였다. 스프링 부트가 다중 처리 요청을 처리하는 것이 아닌, 내장되어있는 Servlet Container(Tomcat)에서 다중요청을 처리한다. 스프링 부트는 내장 서블릿 컨테이너인 Tomcat을 사용한다. Tomcat은 다중 요청을 처리하기 위해서, 부팅할 때 Thread의 컬렉션인 Thread Pool을 생성한다. 유저 요청(HttpServletRequest)가 들어오면 Thread Pool에서 하나씩 Thread를 할당한다. 해당 Thread에서 스프링부트에서 작성한 Dispathcer Servlet을 거쳐 유저 요청 을 처리한다. 작업을 모두 수행하고 나면 Thread..
이전 글에서 Java Excel Export 기능의 코드를 구현해보았다. 필자는 이러한 코드를 모든 프로젝트에 중복으로 구현하기 번거로워 라이브러리로 Export 하여 쓸려고 하여 JitPack에 Github Repo를 등록하여 사용 할려고 한다. 프로젝트에 라이브러리 추가하기 Gradle allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.russell-seo:ExcelExport:master-SNAPSHOT' } Maven jitpack.io https://jitpack.io com.github.russell-seo ExcelExport master..
필자는 업무를 하면서 게임 회사 백오피스쪽을 지원하고 있는데 엑셀 다운로드하는 기능에 대한 요청이 자주왔기에 엑셀 모듈을 만들기로 했습니다. 필자는 Annotation 과 Java Reflection을 이용해 DTO에 어노테이션을 적용하여 손쉽게 Excel 다운로드 하는 모듈을 개발할 것 입니다. 혹시 해당 코드를 구현할 시간이 없다! 나는 그냥 라이브러리 추가해서 빨리 구현해야 한다는 분은 아래 링크로 들어가시면 빠르게 라이브러리를 추가해서 사용하실 수 있습니다. https://russell-seo.tistory.com/8 Excel 다운로드 모듈 만들기 1. Apache POI 라이브러리 추가 Apache POI 라이브러리를 활용하여 개발 먼저 Apache POI 라이브러리를 Dependency에 추..
Index 란? 내가 찾고 싶은 데이터를 찾을 때, 모든 레코드에서 찾는 것 보다 특정한 범위 내 한정해서 데이터를 찾는게 빠르다. 즉, 우리가 책에다 포스트잇을 붙여 넣거나 목차를 달아두어서 찾고자 하는 내용이 있으면 해당 내용이 속한 포스트잇이나 목차를 바로 찾아서 둘러 보는 것과 같다. DB에서 레인지 스캔을 하려면 책처럼 색인(목차)이 필요하다. 이러한 색인, 포스트잇을 DB에서 인덱스(Index)라고 부른다. 예를 들어 사용자가 100만명이 있는 테이블에서 userid 가 akdu39 라는 값을 찾고자 한다면, 다음 이 쿼리를 사용해야 한다. select userid from user_table where userid = "akdu39" 만약 인덱스가 없다면 100만개의 데이터를 모두 찾아보고 ..
- Total
- Today
- Yesterday
- Index
- oauth2
- 데이터베이스
- java
- github
- 쓰레드
- 네트워크
- 스프링
- 인덱스
- Excel
- GIS
- 공간쿼리
- 영속성 컨텍스트
- lock
- 논블로킹
- R-Tree
- TCP
- spring boot
- 비동기
- jenkins
- spring mvc
- DispatcherServlet
- Spring Security
- 다운로드
- mysql
- jpa
- database
- spring
- thread
- db
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |