성장과정(dev)
-
[협업] git 작업브랜치 main (마스터) branch 기준으로 최신화 하기성장과정(dev)/Git (feat. github, bitbucket) 2025. 1. 7. 23:02
Git Pull vs Git Rebasehttps://www.atlassian.com/git/tutorials/merging-vs-rebasing문서 내용 정리해보자면git pull 은 git fetch & git merge 을 연이어 실행하는 것이다.그래서 git rebase 와 git merge 를 비교해보기로 하자. [[참고]]ex) $ git fetch origingit fetch는 **원격 저장소(remote)**의 변경 사항을 로컬 저장소로 가져오지만, 로컬 브랜치에는 병합하지 않는 명령어입니다. git 브랜치 상황 예시main 으로부터 새로운 나의 feature branch A 에서 작업중이다.main 에 새로운 커밋이 들어왔고, 내가 작업중인 내용과 관련이 있기 때문에 이 커밋을 가져와야..
-
샤드란? 데이터베이스 수평 확장의 핵심 개념!성장과정(dev)/DB(mysql) 2024. 12. 21. 20:57
1. 샤드란?큰 데이터베이스를 다수의 독립적인 작은 데이터베이스(샤드)로 나누어 저장하는 방식각 샤드는 전체 데이터의 일부를 담당하며, 샤드 간에는 데이터가 중복되지 않음.MongoDB, Cassandra, Elasticsearch 등과 같은 데이터베이스는 샤딩을 기본적으로 지원함."왜 사용하나요?"수평적 확장성(Horizontal Scaling): 데이터베이스 용량이나 성능을 높이기 위해 여러 노드를 추가하여 분산 처리.단일 서버의 처리 용량에는 한계가 있기 때문에, 수직적 확장(Vertical Scaling)(서버 업그레이드) 대신 수평적 확장이 선호됨."샤딩을 적용하면 어떤 효과를 누리나요?"읽기/쓰기 부하 분산.저장 용량 분산.단일 장애점(Single Point of Failure) 방지. 2. ..
-
DB 시스템에서의 동시성 제어 방법성장과정(dev)/DB(mysql) 2024. 12. 20. 16:54
데이터베이스 시스템에서는 동시성 제어를 위해서 주로 사용하는 두가지 방법 MVCC, Lock-Based Concurrency Control 이 있습니다. 1. MVCC (다중버전 동시성 제어)데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식입니다.특징각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않습니다.데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있습니다. 트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못합니다.트랜잭션이 시작된 시점의 데이터 상태를 기반으로 읽기 작업을 수행하여 일관성을 유지합니다. 또 갭락과 넥스트키 락을 통해 ..
-
데이터베이스 데드락, 공유락, 베타락: 꼭 알아야 할 실무 필수 개념 (JPA)성장과정(dev)/Spring + Java + JPA 2024. 12. 13. 16:10
Lock 의 종류 비관적 락(Pessimistic Lock): 항상 락을 사용. 데드락이 발생할 가능성이 높아질 수 있습니다.낙관적 락(Optimistic Lock): 데이터 충돌이 발생했을 때만 처리. 이 방식이 데드락을 방지한다고 해도 한계가 있음. 잦은 충돌 발생 시 트랜잭션 반복 재시도로 성능 저하, 트랜젝션이 길 경우 충돌 가능성 상승. 따라서 낮은 경쟁환경에서 효과적 특성을 반영하면 낙관적 락, 비관적 락은 실무에서 보통 어떤 상황에 사용하나요?낙관적 락전자상거래 시스템에서 사용자 장바구니의 데이터 관리.게시판, 블로그 등 대부분 읽기 위주의 애플리케이션.비관적 락은행 거래 시스템, 재고 관리 시스템. 비관적 락의 주요 유형 2가지 공유 락, 베타 락공유 락 (Shared Lock)..
-
git remote 연동 시 failed to push some refs to {git url} 에러성장과정(dev)/Git (feat. github, bitbucket) 2024. 11. 20. 10:18
failed to push some refs to '{ssh git uri}' 발생 시 여러 이유가 있겠지만, (원격저장소랑 동기화가 안되어있어서 생기는 경우도 있음) 나의 경우에는 commit 된 것이 없어서 그러니, commit 후에 push 해주면 된다. $ git add .$ git commit -m "first commit"$ git push -u origin main git remote add origin git@github.com:sunnylowell/effective-typescript.gitgit branch -M maingit push -u origin main
-
nodeJS 개발자에서 다시 JAVA 개발자로, Java 9 ~ Java21 주요 변경사항들성장과정(dev)/Spring + Java + JPA 2024. 10. 24. 11:00
Java8 시절까지 java 개발자였는데 마지막으로 java로 개발한지 4년, 아주 많은 것이 바뀌었더라.신규 기능 중 주요 기능들만 요약해봤다. 1. var 키워드 (Java 10)지역 변수 타입 추론을 가능하게 하여, 변수를 선언할 때 타입을 생략하고도 컴파일러가 자동으로 타입을 추론var list = new ArrayList();2. HttpClient API (Java 11)새로운 HTTP 클라이언트 API로, HTTP 요청을 더 간단하게 처리할 수 있습니다. 비동기 요청과 HTTP/2, WebSocket 지원도 포함 HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(..