2025/01 14

JWT_사용자 정의 로그인

목적JWT 로그인 인증을 REST API 형식으로 구축한다.과정프론트 : 로그인 요청백엔드 : 로그인 인증 및 JWT 쿠키 전달프론트 : 각 요청 헤더에 JWT를 담아서 백엔드에게 API 요청(전달받은 JWT 쿠키는 자동으로 클라이언트에 저장됨)백엔드 : JwtFilter를 통해 요청 헤더의 JWT를 검증. 그 후, 인증된 사용자에게는 API 제공 1. SecurityConfig스프링 시큐리티각 요청에 필터를 적용 할 수 있음(검증된 요청자에게만 API 제공)목적각 API 요청마다 JwtAuthenticationFilter를 적용 시키는 것(JwtAuthenticationFilter는 요청 헤더에 있는 JWT 토큰을 검증함)@Configuration@EnableWebSecuritypublic class ..

스프링 2025.01.31

2021 Dev-Matching: 웹 백엔드 개발자(상반기) - 다단계 칫솔 판매

문제 유형구현문제 접근답각 인원이 가지는 돈주어지는 정보인원 100,000자식, 부모 관계소득이 발생하는 대상후보완전탐색부적합분기점에 따른 경우의 수가 나눠지지 않기 때문에 부적합구현적합n*n = 1억 연산(전체 인원) * (각 인원으로 인해 발생하는 최대 연산량)⇒ 문제에서 주어지는 설명을 그대로 따라해서 코드를 구성해도 연산량 초과X전체 코드import java.util.*;class Node{ public String parent; public String name; public int value; public Node(String parent, String name){ this.parent = parent; this.name = name; ..

알고리즘 2025.01.29

2021 Dev-Matching: 웹 백엔드 개발자(헤비 유저가 소유한 장소)

문법SELECT출력할 열 선택FROM테이블 선택GROUP BY같은 값의 행끼리 그룹화그룹화된 행 중에서 출력되는 값은 순서상 제일 먼저 위치해있는 행 값임SELECT *FROM PLACESGROUP BY HOST_IDHOST_ID100200100-------HOST_ID100200  WHERE, HAVING조건문WHEREGROUP BY 이전 테이블에 대한 조건문 지정# HOST_ID = 5507453인 데이터 개수 출력SELECT count(*)FROM PLACESWHERE HOST_ID = 5507453 HAVINGGROUP BY 이후 테이블에 대한 조건문 지정# HOST_ID = 760849인 데이터 개수 출력SELECT count(*)FROM PLACESGROUP BY HOST_IDHAVING HO..

알고리즘 2025.01.27

2020 KAKAO BLIND RECRUITMENT(자물쇠와 열쇠)

문제 유형완전탐색문제 접근답열쇠가 자물쇠의 빈곳을 모두 채우면 true, 아니면 false 반환주어지는 정보열쇠 크기 m(m ≤ 20)자물쇠 크기 n (n ≤ 20)홈 0, 돌기 1후보완전탐색적합추정 연산 횟수 : (20204)(2020 + 20*20) = 1,280,000열쇠 4회전 * (자물쇠의 모든 좌표와 매칭 + 자물쇠의 빈 곳이 모두 없어지는 지 확인)⇒ 안정적인 연산 횟수로, 완전탐색 적합설명열쇠 회전key의 좌표를 읽는 시작 위치를 다르게 하면 90*n도 회전이 가능함예시(90도 회전)y=0, x=0부터 읽는게 아닌, x=0, y=n-1부터 읽는 것//90도 회전for(int x = 0; x= 0; y--){ rotateBoard[i][j] = (board[y][x] == 1) ..

알고리즘 2025.01.24

7장 : 고성능 컴퓨터시스템 구조 - (5) 성능 분석과 측정

(컴퓨터의 성능을 분석함을 의미)성능 분석 방법기존 시스템 분석시뮬레이션분석 모델링성능 측정 방법클럭 주파수MIPSMFLOPSSPEC(벤치마크 프로그램)실행시간1. 성능 분석 방법종류기존 시스템 분석시뮬레이션분석 모델링2. 기존 시스템 분석의미실제 컴퓨터 대상으로, 변수(버퍼 등)에 따라 성능 변화를 측정장점성능 측정이 가장 정확단점컴퓨터의 다른 요인들이 영향을 줄 수 있기 때문에 측정이 어려움3. 시뮬레이션의미시스템의 중요 기능 대상으로 시뮬레이션을 돌림장점높은 유연성컴퓨터 구매보다 저렴단점시뮬레이션 비용(시뮬레이션 개발 시간, 실행 시간 등)4. 분석 모델링의미수학적 기법으로 성능을 분석위의 2가지 방법에 대한 결과가 합리적인지 판단하는데 도움을 줌5. 성능 측정 척도의미시스템 성능에 대한 실제 값좋..

CS/컴퓨터 구조 2025.01.22

7장 : 고성능 컴퓨터시스템 구조 - (4) 그래픽처리유니트(GPU)

CUDA구성호스트디바이스GPU계층 구조SMSP(GPU → SM → SP)기억장치지역 기억장치공유 기억장치전역 기억장치CUDA계층 구조그리드블록스레드(GPU안에서 해당 그룹대로 나눔)GPU ↔ CUDASM ↔ 블록SP ↔ 스레드FermiSM 16개SP 32개(각 SM 마다)왑 스케줄러0. CUDA의미GPU를 동작시키기 위한 프레임 워크(병렬 동작 수행)구성 요소호스트CPU(순차적인 프로그램 처리)디바이스GPU 기능(병렬 처리 실행 → SIMD 방식 처리)1. GPU(=디바이스)의미그래픽 처리 보조 프로세서내부 구성스트리밍 다중프로세서(SM)스트리밍 프로세서(SP)GPU → 여러 SM → 여러 SPSM = 5개각 SM 안에 SP = 16개각 SP 간에 교류는 전역 기억장치를 사용함 2. CUDA 프로그래밍 ..

CS/컴퓨터 구조 2025.01.20

7장 : 고성능 컴퓨터시스템 구조 - (3) 다중프로세서시스템 구조

다중프로세서시스템공유-기억장치 시스템공유 버스다중 버스크로스바 스위치다단계 상호연결망분산-기억장치 시스템선형 배열 구조링/코달 구조트리 구조팻 트리 구조매시 네트워크토러스 네트워크하이퍼큐브 구조1. 다중프로세서시스템의미MIMD 조직 기반 시스템분류공유기억장치 시스템분산기억장치 시스템2. 공유기억장치 시스템의미주기억장치가 모든 프로세서들에 공유되는 밀결합 시스템장점프로세서 간의 데이터 교환 필요X단점프로세서들은 기억장치에 접근하기 위해 자신의 순서를 기다려야함프로세서 수가 증가해도 선형적인 성능 향상X단점 극복 대안공유버스다중버스크로스바 스위치다단계 상호연결망3. 공유 버스의미하나의 버스로 모든 장치(프로세서, 기억장치 등)가 이동장점하드웨어 심플단점버스 경합으로 인한 지연 시간 증가(성능 향상을 위해 프..

CS/컴퓨터 구조 2025.01.17

7장 : 고성능 컴퓨터시스템 구조 - (2) 병렬컴퓨터 분류

플린의 분류SISDMISDSIMDMIMD병렬 컴퓨터-기억장치 액세스 분류UMANUMANORMA병렬 컴퓨터 분류대칭적 다중 프로세서(SMP)대규모 병렬 프로세서(MPP)캐시-일관성 NUMA 시스템(CC-NUMA)분산 시스템(DS)클러스터 컴퓨터(CS)1. 플린의 분류의미병렬 처리 방법을 분리한 것단어스트림하나의 프로세서가 순서대로 처리하는 명령어, 데이터 흐름명령어 스트림순서대로 처리되는 명령어 집합데이터 스트림명령어 스트림 수행을 위해 순서대로 나열된 데이터 집합PU(프로세싱 유니트)해당 프로세스의 연산을 수행하기 위한 하드웨어 모듈 집합(프로세스 수행을 위한 모든 하드웨어 집합이 아닌, 연산만을 담당하는 곳들)예시 → (ALU, …)CU(제어 유니트)MM(기억장치 모듈)IS(명령어 스트림)DS(데이터 ..

CS/컴퓨터 구조 2025.01.15

7장 : 고성능 컴퓨터시스템 구조 - (1) 병렬처리 단위

병렬처리 단위작업-단위 병렬성테스크-단위 병렬성스레드-단위 병렬성명령어-단위 병렬성※ 프로그램, 프로세스 차이프로그램 : 디스크에 저장된 데이터, 명령어프로세스 : 프로그램이 실행중인 상태(메모리에 할당된 상태)1. 병렬처리의미다수의 프로세서가 프로그램의 각 작업을 분할해서 수행조건다수의 프로세서가 작업을 분할해서 수행 시, 동시에 시작해서 동시에 끝나야함(동시에 끝나지 않으면 병렬처리의 의미가 없기 때문인가?)고려사항문제 분할프로세서간 통신2. 병렬처리 단위단위작업-단위 병렬성아예 다른 프로그램을 병렬처리ex) 음악, 문서 작성을 동시에 처리태스크-단위 병렬성하나의 큰 작업을 여러 개의 프로그램으로 분할 후 병렬처리(큰 작업?)프로세서들간의 정보 교환이 필요해짐스레드-단위 병렬성하나의 프로그램을 여러 ..

CS/컴퓨터 구조 2025.01.13

6장 : 시스템 버스, I/O 및 인터럽트 - (5) 직접기억장치액세스

I/O 제어기I/O 장치 접속 방법프로그램을 이용한 I/O 장치 접속인터럽트를 이용한 I/O 장치 접속직접기억장치액세스를 이용한 I/O 장치 접속방법DMA 활용한 I/O 장치 접속 방식DMA 및 입출력 버스 활용 방식DMA 및 입출력 프로세서 활용 방식IOP1. 직접기억장치액세스(DMA)의미I/O 장치 ↔ 기억장치CPU 없이, I/O 장치의 신호를 기억장치를 통해 처리하겠다.사이클 스틸링CPU가 시스템 버스를 사용하지 않을 때, DMA제어기가 버스를 사용하는 것2. DMA 제어기의미I/O 장치 ↔ 기억장치로 데이터 전송하는 하드웨어 모듈구조실행 순서(주기억장치 내용을 디스크에 저장)CPU → DMA 제어기 정보 보내기(정보 : I/O장치 ↔ 기억장치 연결을 위한 정보(기억장치 주소 등))DMA 제어기 →..

CS/컴퓨터 구조 2025.01.10