CS/Multicore & GPU

[Multicore] 쓰레드의 Workload 관리와 Thread Pool에 대해

1. 쓰레드의 Workload 밸런스 8개의 쓰레드를 가지고 천 만개의 원소를 가진 배열의 각 원소에 대해 특정한 연산(더하기나 빼기 등)을 하는 작업을 한다고 해보겠습니다. 그러면 우리는 각 쓰레드에 10,000,000 / 8 = 1,250,000 개의 원소에 대한 연산을 할당하고, 쓰레드가 작업을 마치면 결과를 모아서 다음 과정을 이어나갈 수 있습니다. 하지만 실제 멀티쓰레드 환경은 언제나 위와 같이 각 쓰레드가 동일하거나 비슷한 수준의 작업량을 할당받는 보장이 없습니다. 어떤 쓰레드는 다른 쓰레드보다 훨씬 더 많은 작업을 처리해야 할 수 있고, 또 다른 쓰레드는 정말 적은 양의 작업을 마치고 다른 쓰레드들이 끝나길 기다려야 할 수 있죠. 위 그림은 시간에 따른 4개 쓰레드의 작업 진행 상황입니다. ..

2022.03.17 게시됨

CS/Multicore & GPU

[Multicore] Race Condition과 Locks

1. 들어가면서 멀티쓰레딩에서 Race Condition과 Lock은 가장 기초적이면서 중요한 개념입니다. 멀티쓰레딩이라는 개념을 단순하게 정의해봐도, 여러 개의 쓰레드가 공유되는 자원을 바탕으로 분산 처리를 하는 것이기 때문입니다. 그래서 이번 포스팅은 운영체제 시간에 배웠던 Race Condition과 Lock 개념을 되짚어보고, 코드를 통해 좀 더 구체적으로 공부해보려고 합니다. 먼저 아래는 Race Condition과 Lock의 정의입니다. [1] Race Condition A race condition occurs when two threads access a shared variable at the same time. The first thread reads the variable, and t..

2022.03.11 게시됨

Spring & Springboot

Springboot와 JWT를 이용한 권한(Authorization) 처리

0. 들어가면서 현재 진행하고 있는 프로젝트에서 회원의 권한 인증 처리 등을 스프링 시큐리티와 JWT을 이용해 처리하고 있습니다. 이전에도 스프링 시큐리티에 관한 간단한 실습을 해봤는데, 이번에는 스프링부트에서 JWT를 이용한 사용자 인증 처리 방법에 대해 정리해보려고 합니다. 먼저 아래와 같이 스프링부트 Initializer를 통해 프로젝트를 생성하겠습니다. 그리고 실습할 코드들의 패키지와 클래스들의 구조는 아래와 같습니다. 이제 JWT의 개념에 대해 공부해보고, 스프링부트에서 JWT 사용을 위한 설정부터 코드 작성까지 살펴보겠습니다. 1. 세션(Session)과 JWT(Json Web Token) 우리가 어떤 서비스를 이용할 때 가장 처음에 하는 행동은 회원가입과 로그인을 하는 것입니다. 하지만 단순..

2022.02.15 게시됨

Spring & Springboot

Springboot, AWS S3를 이용해서 이미지 처리하기 - (2)

0. 들어가면서 이번 시간에는 지난 포스팅에 이어 Springboot와 AWS S3를 이용해서 이미지를 업로드하는 과정을 코드로 살펴보도록 하겠습니다. 지난 포스팅에서 S3 버킷 생성과 IAM 사용자 생성을 다뤘으니 이 부분이 궁금하신 분은 아래 글을 참고해주세요. 그리고 이전 글과 마찬가지로 이동욱님의 블로그에서 많은 도움을 받았습니다. Springboot, AWS S3를 이용해서 이미지 처리하기 - (1) 0. 들어가면서 이번 포스팅에서는 Springboot와 AWS S3를 이용해서 이미지를 처리하는 과정을 기록해보려고 합니다. 내용이 길어질 것 같아 두 편으로 나누어서 글을 쓰려고 하는데요. 이번 편에서는 studyandwrite.tistory.com 그럼 이제 의존성을 추가하는 과정부터 시작해보겠..

2022.02.07 게시됨

Spring & Springboot

Springboot, AWS S3를 이용해서 이미지 처리하기 - (1)

0. 들어가면서 이번 포스팅에서는 Springboot와 AWS S3를 이용해서 이미지를 처리하는 과정을 기록해보려고 합니다. 내용이 길어질 것 같아 두 편으로 나누어서 글을 쓰려고 하는데요. 이번 편에서는 AWS S3 버킷 생성과 IAM 사용자 생성을 다뤄보고, 다음 편에서 Springboot에서 AWS S3를 이용해 이미지를 처리하는 코드를 살펴보겠습니다. 이동욱님의 블로그에서 많은 도움을 받았습니다. 감사합니다. 그럼 바로 시작해보겠습니다. 1. AWS S3 버킷(Bucket) 생성하기 [1] 먼저 아래와 같이 Amazon S3에 접속해서 버킷 만들기를 선택해줍니다. 아래 daangn-images라고 만들어진 버킷은 제가 기존에 만들어둔 버킷이니 무시하셔도 됩니다. [2] 아래와 같이 버킷 이름을 입..

2022.02.05 게시됨

Spring & Springboot

[Spring] JPA Enum Converter를 사용하여 Entity Mapping하기(Feat. Parameter value [~] did not match expected type Error)

0. 문제 먼저 아래와 같은 상품게시물(ItemPost) 엔티티를 보겠습니다. ItemPost(상품게시물)은 자신의 Id, 게시물의 제목과 내용, 이미지 사진들, 그리고 해당 상품의 카테고리를 갖고 있는데요. 여기서 상품의 카테고리를 Enum 타입으로 관리하려고 했습니다. 간단히 두 개의 카테고리만 넣어놓고 테스트를 진행하겠습니다. 그리고 아래와 같이 Enum 필드를 가진 엔티티를 해당 필드를 조건으로 하여 DB에서 조회하고 싶다고 해보겠습니다. 위와 같이 컨트롤러, 서비스, 레포지토리 코드를 작성하고 아래와 같이 세 개의 기본 데이터를 넣어뒀습니다. 이제 Postman으로 SPORTS 카테고리를 갖는 아이템 게시물을 조회해보면 아래와 같은 에러가 발생합니다. 에러 내용을 자세히 보면, Parameter..

2022.01.25 게시됨

Spring & Springboot

[Spring/스프링] JPA에서 엔티티를 수정할 때 - 쿼리와 변경 감지

0. 들어가면서 얼마 전, 새로운 프로젝트를 시작하게 되면서 처음 엔티티 설계부터 컨트롤러, 서비스 등을 어떻게 하면 좋을 지 고민하고 있습니다. 그런데 문득 엔티티의 수정에 대한 컨트롤러를 작성하면서 무의식적으로 업데이트 DTO를 만들고 있는 제 모습을 보게 됐습니다. 사실 DTO를 통해 엔티티를 수정하는 것은 아래에서 소개할 '변경 감지'를 통한 엔티티의 수정 방법인데요. 과연 이 방법이 베스트인가에 대해 다른 블로그들의 글도 보고 JPA 책도 보면서 나름대로 이해한 내용을 글로 옮겨보겠습니다. 1. Update 쿼리를 이용한 엔티티 수정 업데이트 쿼리를 이용해서 엔티티를 수정하는 방법은 간단해보입니다. 우선 Member 엔티티와 JPA 레포지토리를 생성합니다. @Entity @Getter @Sett..

2022.01.13 게시됨

Thinking

2021 네이버 하반기 기술직군 공채 합격 후기

0. 들어가면서 2021 네이버 하반기 기술직군 공채에 최종 합격했습니다. 후기를 쓸까 말까 고민하다가, 면접을 준비할 때 봤던 많은 후기글들이 도움이 되기도 했고 나중에 돌아보면 좋은 회고일 것 같아 한 번 써보기로 결심했습니다. 바로 본론으로 들어가겠습니다. 궁금한 내용이 있으신 분은 댓글 달아주시면, 답해드릴 수 있는 범위에서 답변드리겠습니다. 1-1. 서류 서류에서 작성하는 내용은 그렇게 많지 않았습니다. 먼저 경력사항과 어학성적에는 이전에 했던 인턴 경험 두 번과 가지고 있던 영어성적을 기재했습니다. 그리고 자신있는 분야를 1지망부터 3지망까지 적는 란이 있는데요. 저는 1지망으로 BE 개발 하나만을 기재했습니다. 프론트엔드와 iOS 개발은 거의 해본 적이 없었고, 이 부분이 약간 흠이 되려나 ..

2021.12.22 게시됨

Java & Kotlin

[Java] 자바 람다식과 함수형 인터페이스(Functional Interface) - (2)

1. 들어가면서 지난 포스팅에서는 람다식의 기본적인 개념과 작성법, 그리고 함수형 인터페이스를 설명하면서 람다식이 어떻게 동작하는지에 대해 설명했습니다. [Java] 자바 람다식과 함수형 인터페이스(Functional Interface) - (1) 1. 들어가면서 - 람다식이란? 이번 시간에는 크게 네 가지 주제, [1] 람다식이란 무엇인가 [2] 어떻게 작성하는가 [3] 어떻게 동작하는가 [4] 어떻게 활용하는가에 대해 설명해보겠습니다. 보통 객체 studyandwrite.tistory.com 이번 시간에는 함수형 인터페이스와 관련된 이야기를 조금 더 해보려고 하는데요. "람다식이 함수형 인터페이스를 기반으로 동작하는 것이라면, 람다식을 쓰기 위해서는 매번 함수형 인터페이스를 일일이 만들어야하는가?" ..

2021.12.06 게시됨

Algorithm

[BOJ] 백준 16929 Two dots - Python/Java

문제 https://www.acmicpc.net/problem/16929 16929번: Two Dots 첫째 줄에 게임판의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 게임판의 상태가 주어진다. 게임판은 모두 점으로 가득차 있고, 게임판의 상태는 점의 색을 의미한다. 점의 색은 알파벳 대문 www.acmicpc.net 해설 이 문제에서 정의하는 싸이클을 판단하는 기준은 여러가지가 있는 것 같습니다. 저같은 경우에는 [1] '시작 노드와 연결된 간선(최대 4개)에 대해 동일한 간선을 이용하지 않고 다시 시작 노드로 돌아올 수 있다면, 싸이클이 형성된다' 라고 생각했습니다. 그런데 다른 분들의 풀이를 보니 [2] '시작 노드에 대해서는 방문 체크를 하지 않은 채 DFS 탐색을 하다가, 그 경로의 길이..

2021.12.03 게시됨