분류 전체보기 107

이미지 전송

1. 요약목적이미지 전송 원리 이해동기현재 제작하고 있는 프로젝트의 더 깊은 이해현 프로젝트에서는 이미지를 GCS에 저장하여 사용하고 있음해당 이미지 전송에 대한 이해도가 부족하다고 생각되어, 이미지 전송 과정을 공부하고자 함과정FE → BE로 이미지 전송하는 과정을 그리기2. FE요약통신 방법XMLXHLXMLHttpRequestAJAX데이터 형식MIME-TYPEContent-Typemultipart/*multipart/form-dataXML데이터 표기 방법 중 하나데이터 전송 시, xml 형식으로 데이터 정보 기술 가능예시 Harry Potter J.K. Rowling 1997  XHL비동기 통신 방법XML, JSON 등의 데이터를 주고받게 됨이점페이지 새로고침 없이 최신 정보로 업데이트※ 동기 / 비..

기타 2025.02.07

테스트 코드

https://tech.kakaopay.com/post/mock-test-code/1. 요약테스트 코드는 Mock을 스프링 빈으로 등록하여 사용한다.각 의존하는 객체는 실제 사용하는 것이 아닌, return 값을 미리 정해준다.2. 문제테스트 코드 작성 시, 의존하는 객체에 의해서 문제가 발생한다.아래 코드는 AuthService의 login 함수를 테스트하는 코드다.문제는 login 함수를 테스트 하기 위해서 DB에 데이터를 저장해야 한다.즉, AuthService는 UserRepository(DB 저장 객체)에 의존적이다.이와 같은 의존 객체가 많아질 수록, 테스트가 어려워진다.@SpringBootTestclass AuthServiceTest { private final AuthService a..

스프링 2025.02.05

스프링 - GCS 이미지 저장/덮어쓰기/삭제

목적GCS로 이미지 저장, 삭제, 수정 구현설명GCS는 Storage 객체를 통해 이미지 저장소(bucket)에 접근 가능Storage를 통해 이미지 저장 및 삭제 가능(수정은 불가)보완 계획GCS 이미지 등록을 비동기적으로 수행Storage 객체를 비동기적 또는 멀티 스레드 방식으로 해결 예정(현재는 ADMIN 관리자만 상품 등록이 가능하므로, GCS를 스프링 빈으로 선언해서 싱글톤 객체로 쓰고 있음) QnA)1. GCS 용어용어https://techblog-history-younghunjo1.tistory.com/27Bucket데이터 저장소Bucket안에 Bucket이 있을 수 없음각 Bucket 안에 각 데이터(이미지)를 저장 가능ObjectBucket 안에 있는 각 데이터구성 요소객체 데이터실제 ..

스프링 2025.02.03

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