일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 이분탐색
- Unity2D
- BFS
- 워크플로
- 알고리즘
- 순열
- 스파르타내일배움캠프TIL
- 해시
- 유클리드호제법
- FSM
- 유니티
- 구현
- unityui
- 프로그래머스
- Inventory
- Unity3d
- 스택
- 언리얼엔진
- Firebase
- QueryDSL
- 내일배움캠프
- 문자열
- Photon
- 스파르타내일배움캠프
- UE4
- Unity
- c#
- C++
- UnrealEngine
- 포톤
- Today
- Total
목록Java/Sparta (84)
개발 낙서장

오늘의 학습 키워드📚 STOMP에서 JWT 인증 기존에는 필터를 통해 JWT를 검증하고 Header와 SecurityContext에 추가해 Controller에서 @AuthenticationPrincipal 어노테이션으로 UserDetails 정보를 가져올 수 있었다. @MessageMapping("/chat-rooms/{roomId}/messages") @SendTo("/topic/chat-rooms/{roomId}") public GetMessageResponse sendMessage( @DestinationVariable Long roomId, CreateMessageRequest request, @AuthenticationPrincipal UserDetailsImpl userDetails ) th..

오늘의 학습 키워드📚 STOMP STOMP는 스프링 프레임워크에서 제공하는 웹소켓 프로토콜이다. TCP나 웹소켓과 같은 실시간 양방향 통신이 가능하기에 실시간 채팅 등에 활용이 가능하다. 이번 파이널 프로젝트에서 나는 오픈 채팅에 대한 도메인과 기능 구현을 맡았기에 어떤 것이 있을까 찾아보다 STOMP를 알게 되어 이를 사용해 구현하기로 했다. Config @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { // 메세지 브로커 구성 @Override public void configureMessageBroker(MessageBrokerRegis..

오늘의 학습 키워드📚 논리적 참조키, 물리적 참조키 보통 RDB의 가장 큰 특징이 무엇이냐 하면 여러 가지를 답할 수 있겠지만 그중 하나가 테이블 간 관계를 맺을 수 있다는 점이다. RDB의 대표격인 MySQL에서 테이블들의 모든 데이터는 Primary Key를 갖고 있다. 이 때 다른 테이블에서 해당 테이블의 데이터를 갖고 있다는걸 표시하는 컬럼이 '참조 키'이다. 말 그대로 다른 데이터를 참조한다는 것인데 그걸 키 값으로 표현한 것이다. 참조 관계를 맺어 테이블을 구성하면 보통 참조 관계와 제약 조건을 설정하게 되는데 이는 참조 무결성을 위함이다. 참조 무결성이란 참조 키와 기본 키는 항상 일치해야 하며 어느 하나만 수정, 삭제될 수 없음을 말하는데 이를 물리적인 참조라고 (내가)한다. RDBMS에서..

오늘의 학습 키워드📚 Open API Open API는 누구나 사용할 수 있도록 공개된 API를 말한다. 가령 소셜 로그인 API가 있는데, 원래대로라면 모든 프로젝트마다 유저 DB가 있고 전부 회원가입, 로그인, 회원탈퇴 등 전부 구현해줘야 해서 귀찮고 DB도 잘 관리해줘야 하고 그런데 소셜 로그인을 활용하면 보다 쉽게 회원가입, 로그인이 가능하고 관리도 편해진다. Open API는 특정 Key를 발급 받아 해당 API에 요청을 보낼 때 Key 값을 넣어 인증을 받아야 원하는 값을 얻을 수 있다. 나는 영화 진흥 위원회에서 제공하는 영화 목록 오픈 API를 활용해 연습했다. https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo..

오늘의 학습 키워드📚 인덱스 DB에서 인덱스는 매우 중요하다. 인덱스란 한국어로 색인이며 특정 데이터가 어디에 있는지 표시해 주는 항목을 말한다. DB에서는 특정 컬럼 혹은 칼럼들을 인덱스로 설정하면 해당 조건을 통해 데이터를 정렬해 조회할 때 성능을 향상해 준다. 하지만 반드시 인덱스가 존재한다고 해서 성능이 향상되는 것은 아닌데 MySQL에서 일반적으로 인덱스는 B-Tree 인덱스 방식이 사용되기 때문이다. B-Tree 인덱스 B-Tree 자료구조란 2개의 자식을 갖는 이진트리를 확장해 N개의 자식 노드를 갖는 트리 자료구조이다. 하나의 노드에 여러 개의 값을 가질 수 있으며 2개 이상의 자식 노드를 가질 수 있는 트리 구조이다. 가장 최상위 노드인 루트 노드, 중간 노드인 브랜치 노드, 가장 최하위..

오늘의 학습 키워드📚 통합 테스트 테스트 코드는 모든 서비스에서 정말 반드시 필요하다. 테스트의 방법, 시기 등 테스트 자체에 대한 중요도는 규모가 크면 클수록 더더욱 중요해진다. 위 그림은 개발 시간이 늘어나면 늘어날 수록 테스트의 비용이 증가하고 서비스의 유지보수 비용이 기하급수적으로 증가한다는 의미의 그래프이다. 테스트의 단계도 나눠져있는데 각각의 기능들을 테스트하는 단위 테스트, 기능들 간의 흐름을 파악하는 통합 테스트, 전체 서비스를 테스트하는 E2E(End to End) 테스트가 있다. 그 중에서 오늘은 통합 테스트를 진행했다. @SpringBootTest @AutoConfigureMockMvc @AutoConfigureTestDatabase(connection = EmbeddedDatabas..

오늘의 학습 키워드📚 낙관적 락 낙관적 락이란 간단히 말해서 데이터가 수정 중일 때 해당 데이터로의 다른 수정 접근을 막는 동시성 제어 방식이다. 동시성 제어는 서비스에서 반드시 필요한데 콘서트 티켓팅을 한다고 가정해보자. 총 100자리가 있고 순간 동시 접속자가 1000명일 경우 같은 자리에 예매하는 경우가 반드시 생길 것이다. 이 때 동시성 제어를 하지 않게 될 경우 같은 자리에 여러 사람이 예매가 되는 대혼란 사태가 발생할 것이다. 이 외에도 정말 다양한 곳에서 동시성 제어를 필요로 하는데 가장 많이 사용되는 부분이 위의 예매 시스템이나 재고 관리 같은 Count 시스템 등에 활용된다. 동시성 제어 테스트 먼저 스프링 부트 환경에서 낙관적 락을 적용하는 방법은 매우 쉽다. @Version priva..

오늘의 학습 키워드📚 Join? Join이란 '들어가다', '가입하다' 등의 뜻을 갖고 있다. 즉 DB에서 Join이라 함은 다른 테이블에 들어가서 데이터를 가져오는 것을 의미한다. 주로 사용하는 Join의 종류로는 크게 묶으면 두 가지가 있는데 INNER JOIN, OUTER JOIN이 있다. (물론 CROSS JOIN도 있지만 웬만한 상황에서는 쓰지 않는다고 한다.) INNER JOIN은 겹치는 부분을 가져오고 OUTER JOIN은 겹치지 않는 부분까지도 가져온다. TABLE A TABLE B ID NAME ID NAME 1 자바 1 파이썬 2 파이썬 2 C++ 3 C# 3 언리얼 4 유니티 4 자바 오늘의 임시 테이블이다! INNER JOIN 쉽게 말해 교집합이다. 두 테이블에서 특정 조건에 맞는 ..