본문 바로가기

분류 전체보기276

STOMP 프로토콜 STOMP란 ? Simple Text Oriented Messaging Protocol 의 약자로 메세징 전송을 효율적으로 하기 위해 탄생한 프로토콜이다. 기본적으로 pub/sub 구조로 되어있어 메세지를 전송하고 메세지를 받아 처리하는 부분이 확실히 정해져 있어 개발자가 명확하게 인지하고 개발할 수 있음. STOMP 프로토콜은 WebSocket위에서 동작하는 프로토콜로, 클라이언트와 서버가 전송할 메세지의 유형, 형식, 내용들을 정의하는 매커니즘. STOMP는 TCP 또는 WebSocket 같은 양방향 네트워크 프로토콜 기반으로 동작. 이름에서 알 수 있듯이 Text 지향 프로토콜이나, Message Payload에는 Text or Binary 데이터를 포함할 수 있다. pub/sub는 메세지를 공급하.. 2024. 1. 2.
Git clone을 이용한 협업 멘토님께서 fork보다 clone으로 협업하는 방식을 추천해주셨다. 그래서 이전에 fork떠온 것들을 제거하고 clone으로 다시 해보려고 한다. 1. Repository clone $ git clone [Repository_URL] [폴더명(생략가능)] 클론이 되었다 ! 인텔리제이로 해당 프로젝트를 열어준다. 2. branch 생성 $ git checkout -b [브랜치이름] 3. 작업 후 Commit & Push 4. PR 요청과 Merge 참조 https://velog.io/@rkio/git-clone%EC%9C%BC%EB%A1%9C-%ED%98%91%EC%97%85%EC%9D%84-%ED%95%B4%EB%B3%B4%EC%9E%90 2024. 1. 2.
Websocket 프로토콜 웹 소켓 (Web Socket) 서버와 클라이언트 간의 메세지 교환을 위한 통신규약 (프로토콜) 웹 소켓의 특징 1. 양방향 통신(Full-Duplex) - 데이터 송수신을 도잇에 처리할 수 있는 통신 방법 - 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있다. - 통상적인 Http 통신은 client가 요청을 보내는 경우에만 server가 응답을 하는 단방향 통신 2. 실시간 네트워킹(Real Time-Networking) - 웹 환경에서 연속된 ㄴ데이터를 빠르게 노출하는 것 ex) 채팅, 주식 웹 소켓 이전의 기술 1. Polling : 서버로 일정 주기에 요청을 송신 - real-time 통신에서는 언제 통신이 발생할지 예측 불가능 - 불필요한 request와 connection을 .. 2024. 1. 1.
Keyword) Github organization repository와 상호작용(push, fetch, pull) * 기본 용어 정리 - fetch : remote repository -> local repository - merge : local repository -> working directory - pull : remote repository -> working directory (fetch + merge) [pull이 일어나는 상황] 원격 저장소는 여러 프로젝트 개발 인원들이 동시에 사용 다른 개발자가 변경상태를 push해 원격 저장소에 반영한다면 내 입장에서 원격 저장소에 변경이 생겼으니 내려받아서 같은 상태를 유지 해야함. fetch를 이용해서 팀 remote repository(upstream)의 변경사항을 내 remote repository에 가져옴. merge를 이용해서 내 remote repos.. 2024. 1. 1.
협업 프로젝트 Keyword) Github Organization Repository 초기 설정 (fork, clone, upstream) 드디어 부트캠프의 마지막 과정인 협업 프로젝트에 들어섰다. 이전에 나 혼자만 github 형상 관리를 하던 것에서 이젠 팀원들과 하게 되었다. 정신 바짝 차리고 잘못 올리지 않게 주의해야겠다. 1. [Fork 복제] 팀 Remote Repository ➡️ 내 Remote Repository 일단 팀장님이 만들어놓은 remote repository에서 fork를 누르면 아래와 같은 화면이 뜬다. 리포지토리 이름을 입력하고 아래 체크박스의 체크를 해제했는데 이는 팀장님이 만들어놓은 main을 포함한 develope 브랜치를 갖고올 수 있게 한다. (체크 할 경우 main 브랜치만 가져오게 됨) 2. [Clone] 내 Remote Reposiotry ➡️ 내 Local Repository 통상적인 Local.. 2023. 12. 29.
data.sql 실행 안 될 때 개인 프로젝트를 진행하면서 상품 정보는 미리 db에 넣어주고 사용하기 위해서 data.sql을 사용해 데이터를 넣어주었는데 DB에 제대로 입력이 되지 않았다. insert into mail_template (ID, TEMPLATE_ID, TITLE, CONTENTS) values (1, 'expiredate_remain_3_day', '펀딩 상품 마감일 3일 전 안내' ,'{USER_NAME}님의 {FUNDING_ID}항목의 펀딩 마감일이 3일 남았습니다.'), (2, 'funding_expired', '펀딩 상품 마감 안내' ,'{USER_NAME}님의 {FUNDING_ID}펀딩이 완료되었습니다.배송 받을 주소를 확인해주세요.'); insert into product(id, price, product_.. 2023. 12. 15.
GiftFunding) 스켸줄러 이용해 친구 요청 거절 항목을 하루 뒤 삭제 내 프로젝트에서 스켸줄러가 이용될 구간은 많은데 우선은 친구 요청을 거절했을 때 하루에 한 번씩 REJECT 항목을 찾아 제거 해주려고 한다. 그러기 위해서는 일단 Friend 테이블에 updated_at 컬럼을 추가해야한다. 스켸줄링 기능 구현 1. main application에 @EnableScheduling 추가 2. scheduler를 사용할 Class에 @Component, Method에 @Scheduled추가. @Scheduled 규칙 -> Method는 void타입 -> Method는 매개변수 사용 불가 요렇게 해주면 됨. 참고로 @Component 꼭 해줘야 된다 ! cron 규칙에 따라 원하는 시간 작성하면 끝 2023. 12. 13.
동시성(Concurrency) 이슈 동시성이란 ? 어떤 두 사건이 같은 시간에 일어나는 것을 이르는 말 나의 경우는 여러군데서 동시성 이슈가 발생할 수 있다. 현재까지 구현한 기능에서 보면 A->B에게 , B->A에게 동시에 친구요청을 거는 일이 발생한다면 동시성 이슈가 발생하게 된다. Y ?) - A가 B에게 친구요청을 걸었을 때 WAIT 상태의 Friend 컬럼 생성. - A->B 요청이 처리되기 전의 상태로 B가 A에게 친구요청을 걸었을 때 똑같이 WAIT상태의 컬럼 생성. 정상적으로 A->B, B->A 요청이 순차적으로 들어왔다면 B가 A에게 친구요청을 걸수 없다. (이미 상대에게 요청이 들어온 건에 대해서 자신이 또 상대에게 요청을 걸 수 없게 해놨으므로) 위와 같은 상황을 경쟁 상태라고 한다. 경쟁상태(race condition.. 2023. 12. 13.
트랜잭션 트랜잭션이란 ? 트랜잭션은 쪼갤 수 없는 작업의 단위로 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야 할 일련의 연산들을 의미. 여기서 작업의 단위는 질의어 한문장이 아니다 ! 작업 단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것 ex) 사용자 A가 사용자 B에게 송금시 1. A의 계좌에서 금액 차감 : update로 A의 잔고 변경 2. B의 계죄에 금액 추가 : update로 B의 잔고 변경 작업 단위 : 출금 update + 입금 update를 통틀어 하나의 트랜잭션 이라고 함. =>> 두 쿼리문이 모두 성공적으로 완료되어야만 하나의 작업 완료 트랜잭션의 특징 ACID 트랜잭션의 특징 4가지는 원자성(Atomicity), 일관성(Consistency),.. 2023. 12. 13.
728x90