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

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

HTTP HTTP는 Hypertext Transfer Protocol의 약자로 클라이언트-서버 간 단방향 통신 프로토콜이다. 클라이언트에서 요청(Request)를 보내면 서버에서 해당 요청에 대한 처리 과정을 거쳐 응답(Response)을 주는 방식으로 통신한다. 네이버에서 검색어를 입력하고 검색 버튼을 누르면 해당 검색어에 대한 내용이 좌르륵 뜨는 것이 HTTP 통신이다. 특징 무상태성(Stateless) : 서버와 클라이언트는 독립적이며 서버에서 클라이언트의 상태를 갖고 있지 않는다. 클라이언트-서버 단방향 구조 : 클라이언트에서 요청을 보내면 서버에서는 그에 대한 응답을 제공하는 단방향 통신만 가능하다. 비연결성(Connectionless) : 요청-응답 처리가 완료되면 연결이 끊어진다. 다양한 메..

오늘의 학습 키워드📚 논리적 참조키, 물리적 참조키 보통 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..

스프링 AOP 스프링 AOP는 관심사를 분리하고 모듈화하는 프로그래밍 기법(관점 지향 프로그래밍)으로 스프링 프레임워크에서 제공한다. Aspect로 정의된 클래스 내부에서 특정 시점에 특정 로직을 수행하게 한다. 현재 진행하고 있는 팀 프로젝트의 ERD의 일부이다. 유저와 보드가 존재하고 보드에는 사용자를 초대하는 기능이 있어 N:N 관계이기 때문에 BoardUser 테이블을 추가로 만들어 보드 권한을 관리하고 있다. 권한 체크 기존에는 각 서비스 로직마다 BoardUser에 접근해 해당 유저가 해당 보드에 권한을 갖고 있는지 체크한 후 로직을 진행했다. @Transactional public void createComment(Long cardId, Long boardId, CommentRequest r..