여행 동행 참여에 대해 동시성 문제 해결하고 성능 비교 해보기
·
💻 Dev/Spring
개요현재 여행 동행 모집 프로젝트를 진행하는 중에, 동행 참여에 대한 동시성 이슈가 발생했다. 1. 동시성 문제 발생 원인여행 동행 모임 참여 로직은 다음과 같다.멤버가 우동(동행 모임)에 대해 참여 요청을 보낸다.참여할 수 있는지 유효성 검증을 한다. (인원 체크, 기존 참여 여부 확인 등)우동에 대기자로 등록한다.관리자가 승인하면 동행에 최종 참여된다.한 우동에 대해 대기자는 최대 5명만 가능하기 때문에, 처음에는 대기자 객체를 생성할 때 대기자 수를 체크했다.public class WaitingMember { public static WaitingMember of(Udong udong, Long memberId, int currentWaitingMembersCount) { ..
[F-Lab] 16주차 회고
·
📝 끄적끄적/F-Lab
사전 질문괜찮은 스타트업 찾는 법동시성 제어 관련 접근법 질문락 주체가 Udong인 이유 + 객체지향적 관점과 동시성 해결의 충돌…락 트랜잭션 이해했는지 확인받기같은 멤버에 대해서 중복 참여 막는 법 이런 식으로 하면 될는지+멱등키?락 비교 테스트 관련사전 학습이론김영한 님 스프링 핵심 원리 고급 편 섹션 1, 2, 3박우빈 님 테스트 주도 개발 3, 4, 5프로젝트우동 참여 요청에 대한 동시성 제어 마무리 멘토님 질문낙관적 락/비관적 락에서 순서가 깨지는 상황이 언제라고 생각하시나요?동시성 이슈에서 가시성 문제와 원자성 문제Atomic 키워드, CAS 알고리즘SynchronizedList vs CopyOnArrayList ConcurrentHashMap vs HashMapQueue vs Blocking..
[F-Lab] 백엔드(BackEnd) 코스 3개월 솔직후기
·
📝 끄적끄적/F-Lab
3개월 동안 뭘 했을까조금 늦게 작성하는 감이 있지만... 그만큼 프로젝트에 집중하고 있다는 것^^!자세한 내용은 1개월, 2개월 차 후기에 이미 작성했으니까, 이번엔 간단하게 정리해 보자면,한 달 차까지는 자바 이론 공부를 정말 힘들게 했고, 이후부터는 프로젝트 기획부터 구현까지 이론과 병행해서 진행했다. 지금은 프로젝트 핵심 기능을 끝내고, 동시성 관련 이슈들을 해결하고 있는 중이다.거의 마무리 단계인데, 여태 했던 것 중에 제일 어려운 구간인 것 같다.그리고 왜 서비스 기업에서 개발자의 역량을 CS, 기본기에서 본다는 건지 이제야 진짜 체감했다.3개월 동안 쌓아왔던 이론 공부를 전부 다 써먹고 있다.앞에서 제대로 이해하지 못했다면, 동시성 이슈 해결은커녕 아예 접근조차 못했을 거다.설령 어떻게든 해..
[F-Lab] 15주차 회고
·
📝 끄적끄적/F-Lab
사전 질문git rebase&merge구직 제안 관련B2C vs B2B부하 테스트 서버 분리에 따른 CPU, 메모리 설정 추가 질문(k6, 스프링 서버 분리)HTTP Status Code 200 vs 204Repository 내 패키지 분리 사전 학습이론김영한님 JPA 기본편 섹션 8, 9, 10, 11(완강)최상용님 재고시스템으로 알아보는 동시성이슈 해결방법(완강)테스트 주도 개발 1, 2객체지향의 사실과 오해 2장프로젝트동행 모집글 조회 마무리모니터링 및 부하테스트 세팅 마무리 멘토님 질문우동 Service, Repository 레이어 관련도커 네트워크 Host의 단점부하 테스트 관련 질문동시성 관련 질문 느낀 점우동 관련 핵심 기능을 마무리하고, 동시성 제어를 위해 학습해 오라고 하셨다.인프런에 사..
[Java] 이진트리순회(깊이우선탐색)
·
💡 Algorithm/인프런
Problem 💻아래 그림과 같은 이진트리를 전위순회, 중위순회, 후위순회로 출력할 수 있게 연습해 보세요. 전위순회 출력 : 1 2 4 5 3 6 7중위순회 출력 : 4 2 5 1 6 3 7후위순회 출력 : 4 5 2 6 7 3 1 Solution 💡class Node { int data; Node lt, rt; public Node(int val) { data = val; lt = rt = null; }}public class INF0705 { Node root; public static void main(String args[]) { INF0705 tree = new INF0705(); tree.root = new..
[F-Lab] 14주차 회고
·
📝 끄적끄적/F-Lab
사전 질문DTO vs Domain 유효성 검증Map 자료구조 질문모니터링, 부하테스트 세팅 오류무조건 JPQL  사전 학습이론김영한님 스프링 핵심 원리 기본편 섹션 9, 10(완강)프로젝트동행 모집글 조회 마무리모니터링 및 부하테스트 세팅 마무리 멘토님 질문스프링의 단점스프링 vs 스프링 프레임워크 vs 스프링 부트Spring Boot Actuator란?메트릭이란?Prometheus란?도커 네트워크 관련 느낀 점이번주는 모니터링&부하테스트 세팅까지 PR 2개를 진행하느라 이론을 거의 못했다.ㅠㅠ확실히 CS 스터디까지 같이 하니까 빡세다.2마리 토끼를 놓치지않게 시간 분배를 열심히 해야겠다...😥 예전에 도커 강의 쭉 들을 때 신기하고 재밌었는데, 이번에 활용해볼 수 있어서 좋았다.그때는 도커 관련 이론..