배움/백엔드
-
Race condition (경쟁 상태)배움/백엔드 2025. 1. 28. 23:59
Race condition (경쟁 상태)은 여러 프로세스나 스레드가 동시에 같은 리소스에 접근하거나 조작할 때 발생하는 문제이다.각 프로세스의 실행 순서에 따라 결과가 달라질 수 있어서, 의도하지 않은 오류나 버그가 발생할 수 있다.특히 병렬 처리나 멀티스레드 환경, 그리고 비동기 처리에서 자주 나타나는 문제이다. Race Condition의 예시1. 은행 계좌 잔액 문제한 계좌에서 두 사용자가 동시에 출금을 시도하는 경우를 생각해 보자.let balance = 1000;function withdraw(amount) { if (balance >= amount) { balance -= amount; // 잔액 차감 }}// 동시에 실행되는 요청withdraw(700); // 요청 1withdr..
-
MongoDB 데이터를 백업하거나 덮어씌우는 방법 (dump, restore)배움/백엔드 2024. 1. 24. 12:00
기존 DB를 dump하는 방법은? * dump : 간단히 말하면 원래 이용하던 db를 백업하는 개념. 명령어 : mongodump --host {123.456.789.0} --port 27017 --db {myDatabase} --out {myFilename} DB에 Username, password가 걸려있다면 명령어 : mongodump --host {123.456.789.0} --port 27017 -u {USERNAME} -p {PASSWORD} --db {myDatabase} --out {myFilename} 로컬의 DB 덤프하려면 host값으로 127.0.0.1 이용. port는 mongodb는 보통 27017 씀. 새 DB를 Restore 하려면? Restore : 백업한 DB를 다시 불러옴..
-
MongoDB aggregation: $lookup, $unwind, $project배움/백엔드 2022. 9. 29. 21:04
1. 문제상황 가령 블로그 사이트를 만든다고 생각한다. 셀 수 없이 수많은 요소들이 필요하지만.. 유저, 본문, 댓글 정보로 한정해서 다루어보겠다. MongoDB와 같은 NoSQL기반 데이터베이스에는 다음과 같이 저장이 될 것이다. 일단은 '유저'라는 하나의 컬렉션 안에 모두 표현하고자 시도했다. - '유저' 컬렉션 - [ { "_id": ObjectId("..."), "이름": "최재휘", "별명": "jaytsol", "국가": "대한민국", "이메일": "jaytsol@naver.com", "글": [ { "id": "1", "제목": "JavaScript 입문", "본문내용": "JavaScript는 어쩌구저쩌구.....", "생성일시": "2022-09-08 07:13:25.914Z", "수정일..
-
JavaScript에서의 객체 순서 보장법배움/백엔드 2022. 9. 26. 13:12
{ "id": 1, "name": "jaytsol", "address": "경기도 성남시 ...", "phone_number": "010-..." } 흔히 사용하는 object.assign() 등으로 객체를 생성하면 키의 삽입 순서에 따라 객체의 형태가 정해진다. 기능적으로는 순서가 어떤들 아무 상관이 없겠으나, 프론트로 넘겨주려는 객체를 생성할 때 각 객체의 특징을 한눈에 알아보기 좋게 정렬하고 싶다. 가장 중요한 id값이나 name 등이 중요한 정보에 해당하므로 위쪽으로 올리는 식이다. 이는 팀의 개발 효율성을 높일 수 있다. 1. object.key()를 이용 Object.keys({ 2: true, 1: true, '00': true, 'b': true, 'a': true, '3': true, }..
-
Param, Query, Body배움/백엔드 2022. 8. 17. 17:26
그동안 특히 param과 query에 대한 명확한 구분 없이 혼용해서 사용했던 것 같다. 제대로 정리해서 보다 명확하고 보기 좋은 API를 생산해야겠다. 1. req.param 주소에 포함된 변수. e.g) https://jaytsol.tistory.com/entry/이미지에-속지-마라 이 경우 entry와 '이미지에-속지-마라'가 param이 되겠다. 2. req.query 주소 바깥의 ? 이후의 변수. e.g) https://www.youtube.com/results?search_query=%EC%BF%BC%EB%A6%AC 유튜브에 '쿼리'를 검색했을때 나오는 주소. 이 경우 search_query=%EC%BF%BC%EB%A6%AC 가 query가 되겠다. 3. req.body XML, JSON, M..
-
Kafka - Acks 옵션배움/백엔드 2022. 7. 26. 10:50
메시지의 손실을 방지하기 위한 전달 완료 확인 옵션인 acks 옵션. 간단히 말하면, acks = 0 이면 메시지 전달을 확인하지 않는다. acks = 1 이면 브로커 중 리더에 대해서만 메시지를 수신했는지 확인한다. acks = -1 이면 리더와 팔로워 브로커 모두에 대해 메시지를 수신했는지 확인한다. 몇 개의 팔로워까지 확인을 하는지는 추가적인 옵션(min.insync.replicas)에 따라 설정 가능하다. 자세한 내용은 다음 링크의 글쓴이분이 자세히 설명을 해주셨으니 참고바람. https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-producer-acks/