낙관적 락(Optimistic Lock) 과 비관적 락(Pessimistic Lock): 낙관적 락 과 비관적 락은 데이터 동시성 문제를 해결 하기 위한 2 가지 주요 기법입니다. 둘 다 동시에 여러 트랜잭션이 동일한 데이터에 접근 할 때 데이터의 일관성을 보장하기 위해 사용됩니다. 하지만, 사용하는 방식과 적용 시점에서 큰 차이가 있습니다.1. 낙관적 락(Optimisitc Lock)1. 1. 개념데이터 충돌이 드물 것이라고 가정트랜잭션이 데이터베이스에 변경사항을 적용하기 전에만 충돌을 확인버전 관리(Versioning)를 통해 동시성 문제를 감지1.2. 동작 방식데이터를 읽어올 때 트랜잭션이 Lock이 걸지 않습니다.데이터를 수정한 후 업데이트 시점에 버전 번호를 확인하여 충돌 여부를 판단합니다.데..
전체 글
개발자. Java, SpringMysql dump 명령어 1. 구조mysqldump [옵션] > 파일명.sql 2. 백업단일 DB 백업mysqldump -u root -p 데이터베이스이름 > 백업파일명.sql사용자로 로그인하면 -u 및 -p 옵션 생략 하여mysqldump 데이터베이스이름 > 백업파일명.sqlex) mysqldump db1_schema > db1_dump.sql 여러 DB 백업—databases 옵션을 사용하여 백업 데이터베이스 목록들을 공백으로 구분하여 사용하고 단일 덤프 파일이 생성됩니다.mysqldump -u root -p —databases db_1 db_2 > db_1_2_dump.sql 모든 DB 백업—all-databases 옵션 사용하여 모든 DB를 백업mysqldump -u root -p —all-d..
[Docker + Mysql 구성한 Database 원격 접근]일을 다니면서 퇴근 후 인강들으면서 공부하다보니 DB를 자꾸 껐다 켰다 반복하고 드문드문 공부하다보니 깜빡하는 것들이 생겨놔서 집에 남는 맥북도 있어 도커로 별도 DB 컨테이너를 구성해서 휴대하고 다니는 맥북으로 공부할 때마다 상시 켜져 있는 DB에 원격 접근하도록 구성해봐야겠다는 생각이 들어서 하게 되었다. 1. Docker 설치https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | DockerDocker Desktop is collaborative containerization software for..
1. 쓰레드와 멀티쓰레드프로세스를 실행 중인 프로그램이라고 하면, 프로그램은 OS로 부터 실행에 필요한 메모리를 할당받아 프로세스가 됩니다.프로세스의 메모리를 이용해서 실제로 작업을 수행하는 것이 쓰레드 입니다. 둘 이상의 쓰레드를 가진 프로세스가 멀티 쓰레드 프로세스 입니다. 2. 멀티쓰레드 장단점장점1. CPU 사용률 향상2. 효율적인 메모리 사용3. 사용자에 대한 응답성 향상4. 작업이 분리되어 코드 간결단점1. 동기화와 교착 상태 문제 3. 쓰레드 구현쓰레드를 구현하는 방법은 Thread 클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이 있습니다.public class MyThread extends Thread{ @Override public void run() {..
Pull Request 절차1. Fork2. clone, remote 로컬에 clonegit clone https://github.com/humback915/Design.git 원격 저장소에 추가git remote add 원격 저장소 현황git remote -v 3. branch 생성로컬에서 작업할 branch 생성 및 이동git switch -c sub 4. add, commit, pushgit 수정 파일 추가git add . git commit 메세지 추가git commit -m git 원격 저장소에 push 하여 로컬 개발 브랜치가 원격 저장소에 생성git push 5. Pull Request 생성 6. Merge 7. branch 삭제 및 동기화원격 저장소와 로컬 동기화git pull ..
옵저버 패턴(Observer Pattern)변화가 일어 났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현하는 것입니다.일대다(one-to-many) 의존성을 가지며, 분산 이벤트 핸들링 시스템을 구현하는 데 사용됩니다.ex) event listener 옵저버 패턴 흐름1. 일 대 다 관계로 구성2. 관찰 대상의 상태가 변경되면 옵저버 한테 통보3. 통보 받은 값을 바꿀 수 있고, 삭제 하는 등의 적절한 대응을 합니다.4. 일 대 다 관계의 그룹에서 추가/삭제 될 수 있으며 그로 인하여 정보를 전달 받거나 받을 수 없게 합니다.옵저버 패턴 특징1. 대상 객체의 상태가 변경될 때마다 다른 객체의 동작을 트리거해야 할때2. 앱이 한정된 시간, 특정한 케이스에만 다른 객체를 관찰해야 할 때3. 한 객..
팩토리 메소드 패턴(Factory method pattern)생성 패턴 중 하나로 객체를 생성할 때 어떤 클래스의 인스턴스를 만들지 서브 클래스에서 결정합니다.즉, 인스턴스 생성을 서브 클래스에게 위임합니다.부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용합니다.부모 추상 클래스는 인터페이스에만 의존하고 실제로 어떤 구현 클래스를 호출할 지는 서브 클래스에서 구현합니다.이렇게 하면 새로운 구현 클래스가 추가되어도 기존 Factory 코드의 수정없이 새로운 Factory를 추가하면 됩니다. 팩토리 메소드 패턴의 구조팩토리 메소드 패턴 코드Product 인터페이스/** * 물건 A의 클래스 */public class CreateProductA implements Product{ ..
Docker 도커https://docs.docker.com/get-started/overview/컨테이너 가상화 방식 기술애플리케이션을 개발, 제공 및 실행하기 위한 개방형 플랫폼Docker를 사용하면 애플리케이션을 인프라에서 분리하여 소프트웨어를 신속하게 제공코드 전달, 테스트 및 배포 지연시간을 줄임(코드 작성과 프로덕션 환경 사이) Docker는 개발자가 애플리케이션과 서비스를 제공하는 로컬 컨테이너를 사용하여 표준화된 환경에서 작업할 수 있도록 하여 개발 수명 주기를 간소화컨테이너는 CI/CD(지속적인 통합 및 지속적 전달) 에 적합 Docker 플랫폼컨테이너라고 하는 격리된 환경에서 애플리케이션을 패키징하고 실행하는 기능 제공 컨테이너실행 가능한 이미지 인스턴스, Docker API 또는 CLI..