반응형

전체 글 106

동시성 이슈( Lock 비교)

동시성 문제먼저 동시성 문제가 무엇인지 간단하게 짚고 넘어가보자.동시성 문제란?여러 작업들이 **동시에 하나의 공통 자원을 점유**하려고 시도할 때 발생하는 문제그럼 이런 동시성 문제가 발생하면 무엇이 문제인가?내가 원하는 결과와 다른 결과가 발생할 수 있다.ex) 데이터를 수정하였으나 조회했을 때 내 예상과 다른 값이 반환동시성 문제로 인해 데이터 무결성이 깨지고, 이로 인해 정합성을 저해시킬 수 있다.데이터의 무결성?데이터 값이 정확한 상태데이터의 정합성어떤 데이터들의 값이 서로 일치하는 상태데이터의 무결성이 훼손 되는 경우 주문정보 테이블에서 고객번호가 모두 -1으로 입력되어 있고, 고객정보 테이블에도 -1의 값을 갖는 고객이 존재한다. (데이터의 값이 일치한다.)그러나 고객번호는 반드시 1 이상의..

항해 플러스 백엔드 챕터 2 후기

1. 간단한 자기소개 안녕하세요 백엔드 5년차 개발자입니다. 열심히 항해 중입니다.   2. 이번 챕터를 시작하며 꼭 해내고 싶었던 목표 하나의 온전한 서버 개발을 목표로 하였습니다.   3. 이번 챕터를 마무리하며 가장 기억에 남는 성취 db를 통하여 대기열을 구현한 것에 가장 큰 성취감을 느꼈습니다.    4. 이번 챕터에서 반드시 이뤘으면 했는데 이루지 못한 것 domain 과 entity 를 완전히 분리하여 계층 간에 종속성을 없애고 싶었는데, 그렇게까지 못하여 아쉬웠습니다.   5. 다음 챕터에서 반드시 성공하고 싶은 목표  다음 챕터에서는 동시성과 대용량 트래픽에 대하여 다 고려하여 실무에서까지 이용할 수 있도록 설계해보도록 하겠습니다.   6. 내가 강화해야 할 강점 중 가장 중요하다고 생각..

2024 인프콘 가즈아~!

https://www.rallit.com/resumes/745688@smileboy0014/%EB%B0%95%EA%B2%BD%ED%83%9C?theme=STANDARD 박경태 - 백엔드 개발자 이력서안녕하세요 백엔드 5년차 개발자 박경태입니다.www.rallit.com 인프콘의 존재를 작년에 끝나서야 알았고, 이번에 다시 개최한다길래 바로 신청했지만 얄짤없이 탈락했다....개발자로서 성장하고 싶은 지금...나에게 인프콘은 선택이 아닌 필수인 것 같다!!!꼭 가고 싶습니다 ㅠㅠㅠㅠㅠ

세션 2024.07.15

WIL 4주차 회고

문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?-> 대기열 구현이 가장 어려웠던 것 같습니다.시도문제를 해결하기 위해 어떤 시도를 하셨나요?-> 대기열 구현을 위해 처음에는 수동으로 대기열을 확인하는 API를 풀링으로 호출할 때 마다 대기열 순서대로 활성화를 시키려고 했습니다. 다만, 이 방법을 사용하면 풀링을 하지 않으면 계속 활성화 할 수 있는 공간이 남아서, 문제가 발생할 수 있다는 걸 알았습니다.해결문제를 어떻게 해결하셨나요?-> 스케줄러를 사용해보기로 하였습니다. 정해진 시각마다 순차적으로 대기열에서 활성화열로 옮기는 작업을 진행하였습니다. 그러면 풀링을 하지 않아도 계속해서 빈자리가 발생할 때 마다 토큰을 활성화 시키게 됩니다.  @Component@RequiredArgsConstructo..

카테고리 없음 2024.07.15

WIL 3주차 회고

문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?-> 시퀀스 다이어그램과 DB 설계가 가장 어려웠습니다.시도문제를 해결하기 위해 어떤 시도를 하셨나요?-> 시퀀스 다이어그램에서 주체의 단위를 도메인별로 설정하고 진행하였습니다.또한 DB 설계를 할때 어디까지 정규화와 반정규화를 할지 다른 사람들 설계한 것도 참고하고, 코치님들의 발제 Q&A도 한번 더 녹화본으로 보았습니다.해결문제를 어떻게 해결하셨나요?-> 코치님이 올려주신 시퀀스 다이어그램 작성 예시를 보고 도메인 관점으로 작성을 하였습니다.    시퀀스 다이어그램을 작성할 때 중요한 점은 디자이너나 코드를 모르는 사람도 보고 알아볼 수 있게 쉽게 작성이 되야 한다는 점입니다.DB ERD 설계를 할 때는 어디까지 정규화를 하고, 반정규화를 할지가 정말..

WIL 2주차 회고

문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?-> 이번 주차에서 제일 힘들었던 것은 클린 아키텍처를 적용해보는 것이었습니다.시도문제를 해결하기 위해 어떤 시도를 하셨나요?-> 인프라 레이어가 도메인 레이어를 바라보도록 DIP를 적용시켰습니다.해결문제를 어떻게 해결하셨나요?-> 먼저 패키지 구조를 3개로 나누었습니다. 이렇게 나눈 이유는 Domain Layer를 중심으로 레이어 계층간의 간섭이 이뤄줘야 클린 아키텍처가 적용이 되기 때문입니다. 또한 계층간에 간섭이 일어나지 않도록 Presentation 레이어와 Domain 레이어에 각각 DTO를 만들어서 하위모듈이 상위모듈을 참조하지 않게 만들었습니다.  LectureServicepackage com.hhplus.clean.lecture.domain..

99클럽 코테 스터디 30일차 TIL, Stack(Removing Stars From a String)

1. 문제 정의2. 문제 접근*가 나올때마다 stack에서 제거해주면 될 것 같다.3. 문제 풀이string 을 char 배열로 만들어서 순회한다.'*' 만날때마다 stack에서 맨 위의 문자를 빼준다.정답을 리턴한다.4. 코드class Solution { public String removeStars(String s) { Stack stack = new Stack(); StringBuilder sb = new StringBuilder(); for(char ch:s.toCharArray()){ if(ch == '*'){ stack.pop(); } else { stack..

WIL 1주차 회고

문제이번 주차를 지나며 겪었던 문제가 무엇이었나요?첫번째는 TDD로 개발을 하는 것이었습니다. TDD에 익숙하지 않다 보니 TDD로 개발하는 것이 어려웠습니다. 특히 bottom-up 방식에 익숙했던 제가 top-down 방식으로 개발을 하려고 하니 시간이 더 오래걸렸습니다.두번째는 단일 서버에서의 동시성 이슈를 해결하기 위해서 어떤 방법을 쓸지에 대한 고민이었습니다.시도문제를 해결하기 위해 어떤 시도를 하셨나요?문제를 해결하기 위해 먼저 synchronized 키워드를 사용하였습니다. 동시성 이슈가 발생하는 메서드에 synchronized 키워드를 사용하여 메서드 전체에 lock을 건다면 다른 스레드에서 접근을 하지 못해 순차적으로 로직을 수행하게 됩니다. 다만, 블록 전체에 lock을 사용하기 때문에..

99클럽 코테 스터디 29일차 TIL, 정렬(Top K Frequent Elements)

1. 문제 정의2. 문제 접근각 숫자가 반복된 숫자를 map에 담아주고 정렬하여 정답을 리턴하면 된다.3. 문제 풀이map에 각 number가 몇번 반복됐는지 담는다.리스트 배열에 옮겨 담는다.정답을 리턴한다.4. 코드class Solution { public int[] topKFrequent(int[] nums, int k) { int[] answer = new int[k]; List[] list = new ArrayList[nums.length + 1]; Map map = new HashMap(); for(int n:nums){ map.put(n,map.getOrDefault(n,0)+1); } fo..

99클럽 코테 스터디 28일차 TIL, 그리디(Iterator for Combination)

1. 문제 정의2. 문제 접근할 수 있는 만큼 flip을 시켜주면 되므로 greedy를 이용한다.3. 문제 풀이처음 '0'부터 비교 문자를 시작한다.인덱스가 0부터 이전 문자와 비교하여 다르면 count를 1 증가시킨다.count를 리턴한다.4. 코드class Solution { public int minFlips(String target) { char[] array = target.toCharArray(); int count = 0; char prev = '0'; for(int i = 0; i  5. 회고만약 10101 이 우리가 원하는 문자열이라고 생각해보자. 우리는 00000 부터 시작하므로000001111111000010..

반응형