본문 바로가기

반응형

전체 글

(76)
DB 트랜잭션 & 트랜잭션 격리수준 트랜잭션이란? 여러 쿼리를 논리적으로 하나의 작업으로 묶어 주는 것 트랜잭션의 4가지 특징 : ACID Atomicity : 원자성 한 트랜잭션의 연산이 모두 성공하거나(commit), 모두 실패해야한다 (rollback) Consistency : 일관성 한 트랜잭션 이전과 이후의 데이터베이스 상태가 유효해야한다 즉, 데이터베이스의 제약이나 규칙을 만족해야한다 Isolation : 독립성 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야한다 둘 이상의 트랜잭션이 동시 실행되고 있을 때 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다 durability : 지속성 한 트랜잭션이 성공적으로 수행되었다면 결과는 영구히 반영되어야 한다 트랜잭션이 동시 접근 시 발생되는 현상 Dirty Write : 커밋되지..
[Spring] 정적 리소스 미출력 오류 해결 프로젝트 진행 중 잘 출력되던 이미지가 엑박으로 출력되는 오류가 발생했다 관련해서 찾아보니, 이미지 폴더에 대해 Spring Security 처리를 해주지 않아 발생한 문제였다. OAuth 로그인 기능을 추가하며 홈 화면 이외의 경로에 대해 보안 처리하도록 설정이 되어있었는데, 이미지 폴더는 보지 않도록 처리해주었다. 이미지 폴더 경로는 /src/main/resources/static/images/** 이다. @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/", "/index", "/login/**", "/images/**").permitAll() .a..
[Spring] Spring Boot + Spring Security OAuth2 Client + Kakao Login - 2 Spring Security OAuth2 Client 라이브러리 사용 시 access token 을 갱신하는 부분에 대한 언급이 없어 찾고 찾다가 내부적으로 갱신된다는 부분을 찾아서 혹시 헤메고 있는 다른분이 있으시다면 도움이 되고자 정리해본다 ! 권한 부여 타입이 authorization_code, password 일 때만 액세스 토크 응답에 OAuth2RefreshToken 이 들어있다. 만약 OAuth2AuthorizedClient.getRefreshToken() 을 사용할 수 있고 OAuth2AuthorizedClient.getAccessToken() 이 만료됬다면 RefreshTokenOAuth2AuthorizedClientProvider 가 토큰을 자동으로 갱신한다. 레퍼런스 페이지에서 위와 ..
[Spring] Spring Boot + Spring Security OAuth2 Client + Kakao Login - 1 0. 의존성 추가 먼저 프로젝트에 사용할 라이브러리들의 의존성을 추가한다 dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' implementation 'org.springframework.boot:spring-boot-star..
[운영체제] Context Switching Context 란? CPU가 어떤 프로세스를 실행하기 위해 필요한 프로세스의 정보들로, 이 정보들은 PCB(Process Control Block)에 저장된다 PCB(Process Control Block) 포인터 : 프로세스의 현재 위치 저장 프로세스 상태 : 생성(new), 준비(ready), 실행(running), 대기(waiting), 종료(terminated) 저장 프로세스 번호 (PID) : 프로세스에 할당되는 고유한 ID 프로그램 카운터 (제어 레지스터) : 다음 실행될 명령어의 주소를 가르킴 스택 포인터 (데이터 레지스터) : 현재 스택 영역의 top을 가르킴 Process State Context Switching Interrupt reference https://math-coding.t..
[운영체제] Program vs Process vs Thread Program 어떤 작업을 위해 실행할 수 있는 정적인 파일 ex) file system 의 .exe file Process 메모리에 올라와 CPU를 할당받아 실행중인 동적인 프로그램 Process의 특징 프로세스는 각각 code, data, stack, heap의 구조로 되어있는 독립된 메모리 영역을 할당 받는다. 각 프로세스는 별도의 주소 공간에서 실행되어 메모리 공간을 공유할 수 없다. 따라서 다른 프로세스의 자원에 접근하려면 프로세스간 통신(IPC)을 사용해야한다. 또한 프로세스는 최소 하나 이상의 Thread를 포함한다. 각 영역은 다음과 같은 역할을 한다. code(text) : 실행할 프로그램의 코드가 저장. CPU는 이 영역에서 명령어를 하나씩 가져와 처리한다. data : 전역 변수와 정..
[알고리즘] Heap Sort Heap Sort 최대 힙, 최소 힙 구조를 통해 정렬하는 알고리즘 Heap 이란? 최솟값이나 최댓값을 빠르게 찾아내기 위해 사용되는 구조로 완전 이진 트리를 기반으로 하는 트리이다 각 노드의 값이 자신의 자식노드가 가진 값보다 크거나 같다면 최대 힙 (Max Heap) 각 노드의 값이 자신의 자식노드가 가진 값보다 작거나 같다면 최소 힙 (Min Heap) Process 1. 완전 이진트리 형태의 최대 힙을 만든다 2. 힙에서 하나씩 데이터를 꺼내어 배열의 맨 뒤에 저장한다 이 때 최댓값부터 꺼내지므로 내림차순으로 정렬된다 3. 남겨진 데이터는 최대 힙을 유지한다 heapify 힙 성질을 만족하도록 하는 연산을 heapify 라고 한다 예를 들어 최대 힙의 경우 루트 노드부터 리프 노드까지 부모 노드가..
[알고리즘] Counting Sort Counting Sort 데이터의 크기 범위가 양의 정수이며, 값의 범위가 메모리 사이즈를 넘지 않는 경우 값을 카운팅해 정렬하는 알고리즘 Process 1. 최댓값을 찾는다 2. 최댓값 + 1 크기의 카운팅 배열을 만든다 3. 데이터를 카운팅 배열의 인덱스와 매핑해 갯수를 센다 4. 카운팅 배열을 조회하며 카운트만큼 출력한다 Code numbers = [1, 0, 3, 2, 4, 3, 2, 2, 1, 1, 1, 1, 5, 3, 3, 4, 5] k = 5 counts = [] result = [] length = len(numbers) counts = [0] * length for num in numbers: counts[num] += 1 for num, cnt in enumerate(counts): f..

반응형