728x90

개발/ETC 63

git 브랜치 생성, 전환하기

git 사용 시 브랜치를 생성하거나 전환할 일이 많다. 그 방법을 알아보자   1. 브랜치 생성하기브랜치 생성하는 명령어는git이 설치되어 있다는 가정하에  git branch newbranch   newbranch 자리에 원하는 브랜치 이름을 넣어주면 된다.   2. 광고   3. 브랜치 전환하기전환을 원하는 브랜치가 있다면그 명령어는 바로   git checkout newbranch  마찬가지로 newbranch 자리에 원하는 브랜치 이름을 입력하면 된다.    4. 브랜치 목록확인어떤 브랜치가 있는지 확인하기 위해서는  git branch  이렇게 이름 없이 git branch만 입력하면브랜치 목록이 뜨고, 현재 선택되어 있는 브랜치는 *표시가 붙어있다.    끝.

개발/ETC 2025.01.08

DB 동시성 제어하는 방법 알아보기

DB 시스템에서 동시성을 제어하는 방법에 대해서 알아보자 !!!   대표적인 동시성 제어 방식은 MVCC(Multi Version Concurrency Control)Lock-Based Concurrency Control이 있다.  1. MVCCMVCC는 데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식이다.각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않는다. 데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있다.트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못한다. 읽기 작업 시 잠금을 사용하지 안항 높은 동시성을 제공한다.읽기 작업..

개발/ETC 2025.01.06

스레드, 프로세스, 코어 알아보기

스레드, 프로세스, 코어를 알아보자 !!!   1. 개념 - 스레드란?일반적으로 "프로세스 내에서 실행되는 하나의 흐름"을 의미.컴퓨터 프로그램에서 스레드는 프로그램 내에서 동시에 실행되는 여러 작업을 처리하는 단위.스레드는 멀티태스킹을 지원하며, 하나의 프로세스 내에서 여러 작업을 동시에 처리하는 데 사용.프로세스는 하나 이상의 스레드를 포함할 수 있다.  - 프로세스란?운영 체제에서 실행 중인 프로그램을 의미.프로세스는 실행 중인 프로그램에 의해 사용하는 메모리 공간과 시스템 자원들을 포함하는 실행 단위.프로세스는 프로그램 코드뿐만 아니라 그 코드가 실행되는 동안 필요한 데이터, 자원, 상태 정보 등을 포함.  - 코어란?컴퓨터의 중앙 처리 장치(CPU) 내부에서 실제로 명령을 처리하고 실행하는 물리..

개발/ETC 2025.01.03

단위 테스트, 통합 테스트 차이

단위 테스트, 통합 테스트 차이를 알아보자 !  1. 개념단위 테스트는 소프트웨어의 가장 작은 단위, 즉 개별 메서드나 함수의 기능을 검증하는 테스트.특정 기능이 올바르게 동작하는지 확인하기 위함이며 독립적이고 빠르게 실행. 통합 테스트는 개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트.모듈 간의 상호작용이 올바르게 동작하는지 확인하기 위함이며 실제 데이터베이스, 네트워크 등의 외부 시스템과의 통합을 테스트 한다.     2. 슬라이스 테스트슬라이스 테스트는 특정 레이어(ex. controller, service, repository)에 대한 테스트.애플리케이션의 특정 슬라이스가 올바르게 동작하는지 확인하기 위해 작성.스프링의 특정 컴포넌트만 로드하여 테스트하므로 상대적으로 빠르..

개발/ETC 2025.01.02

TCP 3-way handshake 알아보기

TCP 3-way Handshake에 대해서 알아보자 !!! TCP 3-way handshake는 TCP/IP 네트워크에서 안정적이고 연결 지향적인 통신을 설정하기 위해 사용되는 절차다.이 절차는 클라이언트와 서버 간에 신뢰할 수 있는 연결을 설정하기 위해 세 개의 메시지(세그먼트)를 교환하는 과정을 포함한다. 1.우선 클라이언트는 서버에 연결을 요청하는 SYN 세그먼트를 보낸다.이 세그먼트에는 초기 순서 번호(Sequence Number)와 윈도우 크기(Window Size) 정보가 포함되어 있다.      2.이후 서버는 클라이언트의 요청을 수락하고, SYN과 ACK 플래그가 설정된 세그먼트를 클라이언트에 보낸다. 이 세그먼트는 서버의 초기 순서 번호와 클라이언트의 초기 순서 번호에 대한 응답(ACK..

개발/ETC 2024.12.29

공유 락, 배타 락 차이

공유 락 배타 락을 알아보자!!  1. 개념유 락과 배타 락은 비관적 락(Pessimistic Lock)의 데이터 일관성과 무결성을 위해 사용하는 락 유형이다. - 공유 락공유 락은 읽기 락(Read Lock)이라고 부르며, 공유 락이 걸린 데이터는 읽기(SELECT)연산만 가능하며, 쓰기(UPDATE, DELETE)는 불가능하다.공유 락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유 락을 획득할 수 있지만, 배타 락은 획득할 수 없다.즉, 공유 락을 사용하면 트랜잭션 내에서 조회한 데이터가 변경되지 않는다는 것을 보장한다. SELECT * FROM table_name WHERE id = 1 FOR SHARE;  - 배타 락배타 락은 쓰기 락(Write Lock)이라고 부르며, 배타 락을 획득한 트랜잭..

개발/ETC 2024.12.24

로그와 메트릭 알아보기

로그와 메트릭을 알아보자 !!   1. 로그와 메트릭이란? 로그는 서버가 동작할 때 서버의 상태와 동작 정보를 시간 경과에 따라 기록된 결과.로그는 시스템의 오류와 문제들을 쉽게 찾아낼 수 있도록 도와준다. 메트릭은 시스템의 성능과 상태에 대한 통계적인 정보를 의미.메트릭을 잘 수집하면 시스템의 현재 상태를 손쉽게 파악할 수 있고, 사업 현황에 관한 유용한 정보를 얻을 수 있다.메트릭은 DAU, Retension, CPU 사용량, 메모리 사용량 등이 있다.     2. 로그, 메트릭 수집 예시스프링 부트 액추에이터를 사용해 메트릭을 생성하고 프로메테우스에 저장한 다음 그라파나로 시각화수집한 지표 예시CPU, 메모리, JVM 힙 사용량톰캣 스레드 풀과 데이터베이스 커넥션 풀 상태error 레벨 로그 증가량..

개발/ETC 2024.12.14

트랜잭션 격리수준 알아보기

트랜잭션 격리수준을 알아보자!!   1. 트랜잭션 걱리 수준이란?트랜잭션의 격리 수준은 동시에 여러 트랜잭션이 실행될 때 한 트랜잭션이 다른 트랜잭션의 연산에 영향을 받지 않도록 하는 정도를 말한다.낮은 격리 수준은 동시 처리 능력을 높이지만, 데이터의 일관성 문제를 발생시킬 수 있다.반면, 높은 격리 수준은 데이터의 일관성을 보장하지만, 동시 처리 능력이 떨어질 수 있다.즉, 데이터 정합성과 성능은 반비례한다.트랜잭션 격리 수준은 개발자가 트랜잭션 격리 수준을 설정할 수 있는 기능을 제공하는 기능이다.     2. 트랜잭션 격리 수준 종류트랜잭션 격리 수준은 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ가 존재한다. READ UNCOMMITTED는 커밋이 되지..

개발/ETC 2024.12.09

데이터베이스 인덱스 알아보기

DB의 인덱스에 대해서 알아보자  1. 인덱스란인덱스는 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로 백과사전의 색인과 같다.저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지하는 것이 특징.이러한 특징으로 인해 인덱스는 INSERT, UPDATE, DELETE의 성능이 희생된다는 것이 단점.    2. 인덱스의 자료 구조MySQL InnoDB를 기준으로 설명드리자면, B+Tree와 같은 변형 B-Tree 자료구조를 이용해서 인덱스를 구현한다.기본 토대는 B-Tree 인덱스이기 때문에 이를 기준으로 설명한다.B-Tree 인덱스는 컬럼의 값을 변형하지 않고 인덱스 구조체 내에서 항상 정렬된 상태로 유지한다. B-Tree(Balanced-Tree)에서는 크게 3가지 노드가 존재한다.최상위에..

개발/ETC 2024.12.07

cannot inspect work tree in repository with unmerged files 에러 해결

컴퓨터를 바꾸고 D드라이브에 있던 프로젝트를 git과 연결시킨 후 업데이트를 하려는데 에러가 발생했다  detected dubious ownership in repository at 'D:/~~~' 'D:/~~~' is owned by: (inconvertible) (S-1-5-21-2995346877-315592488-2163824232-1001) but the current user is: ~~~~ (S-1-5-21-211324981-537285231-2465116909-1001) To add an exception for this directory, call: git config --global --add safe.directory D:/~~~      에러 발생의 이유는 디렉터리의 소유자와 현재 ..

개발/ETC 2024.10.25
728x90