일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스레드 풀
- 낙관적 락
- 3-way handshaking
- 삽입 이상
- 삭제 이상
- MSA
- 데이터베이스
- buildSrc
- ocp
- DB
- Kafka
- Kotlin
- 페이지네이션
- JPA
- Redis
- gatway
- 갱신 이상
- Dirty Checking
- HTTP
- Spring
- 비관적 락
- 네트워크
- null
- 자바
- java
- AWS
- 캐시 오염
- well-know port
- 자료구조
- 정규화
- Today
- Total
728x90
목록
728x90
전체 글 (72)
어 나 갱수.

Linux에서 root 권한 없이 Docker를 사용하려고 하면 권한 문제가 발생할 수 있습니다. 이러한 문제를 해결하려면 현재 사용자를 docker 그룹에 추가해야 합니다. 해결 방법은 간단합니다. 기본적으로 Linux에서는 Docker를 root 사용자만 사용할 수 있도록 설정되어 있습니다. 따라서 현재 사용 중인 사용자에게 Docker 사용 권한을 부여하면 문제를 쉽게 해결할 수 있습니다. 어떻게 권한을 추가하나요?linux의 docker group에 현재 사용자를 추가합니다. 1) docker group을 생성합니다.sudo groupadd docker 2) docker group에 현재 로그인 중인 사용자를 추가합니다.sudo usermod -aG docker $USER 3) docker gr..

AWS의 EC2를 프리티어로 이용하다 보면 메모리 부족 현상이 발생할 수 있습니다.그렇기에 디스크 용량을 이용해서 부족한 메모리를 대체할 수 있는 swap memory에 대해 정리하겠습니다.Swap 이란Swap 메모리는 시스템에서 RAM이 부족할 때, 하드디스크(또는 SSD)의 일부 공간을 활용하여 메모리처럼 사용하는 기술을 의미합니다. 이를 통해 일시적으로 메모리를 확장할 수 있어 전체적인 시스템 운영에 도움을 줄 수 있습니다.그러나 Swap 메모리는 실제 RAM이 아니라 저장 장치를 기반으로 하기 때문에 접근 속도가 느립니다. 특히, 하드디스크(HDD)를 사용할 경우 속도 차이가 더욱 크며, 이에 따라 성능 저하가 발생할 수 있습니다.Swap 적용1) 기존의 메모리 상태 확인명령어 free를 통해 현..

Java의 Exception 예외처리에 대해 알아보기 이전에 Error(에러)와 Exceptin(예외)에 대해 정리해보겠습니다. Error(에러)와 Exception(예외)Error는 시스템에서 문제가 생겼을 때 발생하는 것을 말합니다. 이는 시스템 레벨에서 발생하는 것을 뜻하며 심각한 오류로 판단합니다.개발자가 미리 에러를 예측해서 처리하는 것이 쉽지 않기 때문에, 개발자가 에러에 대해 미리 처리에 대해 신경 쓸 필요는 없습니다. Exception은 개발자가 짠 비즈니스 로직에서 문제가 생겼을 때 발생하는 것을 말합니다. 시스템 레벨에서 발생하는 것이 아니기 때문에 개발자가 로직을 짜면서 미리 예외를 예측하여 처리할 수 있습니다. 개발자가 처리할 수 있기 때문에 구분하고 그에 따른 처리 로직을 잘 구현..

프로그램을 실행시켜 보면 다양한 레벨에서 오류가 발생하게 됩니다. 개발자가 의도하지 않은 방향으로 프로그램이 실행되거나 메모리에 공간이 부족해서 시스템이 오작동할 수 있습니다. 심각한 경우에는 실행 중인 프로그램이 강제로 종료될 수 있습니다.프로그램에 오류가 발생하는데에는 다양한 이유가 있습니다. 비즈니스 로직의 논리적인 문제 때문에 오류가 발생할 수 있고, 로직과 연결된 하드웨어에 문제가 생겨 프로그램이 작동 안 할 수 있습니다. 프로그램을 다루다 보면 크게 3가지의 오류를 볼 수 있습니다. 컴파일 에러논리 에러런타임 에러컴파일타임 런타임이란런타임과 컴파일타임은 프로그램 개발을 하면서 나눈 두 계층입니다. 프로그램을 만들기 위해서는 코드를 작성해야하고 그 코드를 기계어 코드로 변환해야 합니다. 개발자가..

Spring으로 개발을 하다 보면 다양한 Exception을 처리하게 됩니다. 에러를 처리하는 방법은 매우 다양합니다. 저는 그 방법들 중에 반복적인 작업을 줄이고 전역에서 공통적으로 Exception을 처리할 수 있는 @ExceptionHandler와 @ControllerAdvice를 사용하여 에러를 처리해 보겠습니다. @ExceptionHandler 예외 처리컨트롤러 코드에서 @ExceptionHandler 어노테이션을 선언하고, 해당 컨트롤러에서 캐시 하고 싶은 예외를 지정하면 됩니다.해당 컨트롤러에서 지정한 예외가 발생하면 예외에 일치하는 메서드가 실행됩니다.아래 코드로 예시를 들어보겠습니다. 아래 코드에서는 회원가입 API에 대한 컨트롤러 코드가 있습니다. 회원가입 API를 요청하는 도중에 Me..

데이터베이스에 접근해서 데이터를 수정할 때 동시에 수정이 일어나게 되면 충돌이 발생하게 됩니다. 충돌이 발생 안 하려면 어떻게 해야 할까요? 저희는 데이터베이스의 락(Lock)을 사용해서 충돌을 방지할 수 있습니다.이러한 동시성 문제는 데이터의 일관성과 무결성을 위협할 수 있습니다. 따라서 동시에 데이터에 접근하려는 다양한 요청들을 잘 제어하는 것은 필수적인 작업입니다. 동시성 제어를 위한 두 가지 핵심적인 방법에 대해 알아보겠습니다.발생할 수 있는 동시성 문제상품 재고 수량이 맞지 않는 경우 사용자 A가 재고가 5개인 상품을 조회하고 재고를 하나 차감하는 트랜잭션을 실행사용자 B가 전체 상품을 조회, 사용자 A가 실행시킨 트랜잭션이 커밋되지 않았기 때문에 5개가 조회사용자 A가 실행한 트랜잭션이 커밋됨..

Pagination이란Pagination이란 검색 결과를 조회할 때 데이터를 한 번에 다 가져오는 것이 아니라 나눠서 일부만 조회하는 방법입니다. Pagination은 게시판이나 상품 목록 조회등을 요청할 때 결과값이 총 1억 개가 있다고 가정하면, 사용자는 이 데이터 1억 개를 모두 보지도 않는데 1억 개의 데이터를 조회해야 합니다. 그렇게 매번 전체의 리스트를 조회하게 되면 조회 속도도 느려지고 성능도 안 좋아지게 될 수 있습니다. 하지만 데이터를 일정한 크기로 나눠서 규칙적으로 조회한다면 조회 속도도 빠르고 성능적으로도 좋은 애플리케이션이 될 수 있습니다.Pagination을 구현하는 방법은 크게 2가지가 있습니다.offset-based pagination말 그대로 페이지를 기반으로 데이터를 나눠서..

JPA를 사용하다 보면 더티 체킹이라는 말을 많이 듣게 됩니다. 대부분의 ORM에서는 기본적으로 CRUD 기능을 제공합니다. JPA에서는 find(조회), persist(저장), remove(삭제)가 있습니다.그러나 변경에 대한 메서드는 제공하지 않습니다. JPA에서 수정에 대한 기능을 제공하기 위해서 더티 체킹이라는 것을 제공해 줍니다. 더티 체킹을 간단하게 말하면 하나의 Transaction안에서 엔티티에 변경사항이 생기면 변경사항을 자동으로 데이터베이스에 반영해 주는 기능입니다. @Transactionaloverride fun execute(updatePasswordRequest: UpdatePasswordRequest) { val accountIdx = accountUtil.getCurre..