암호화는 데이터를 안전하게 보호하기 위해 중요한 기술이며,크게 대칭키 방식(Symmetric Encryption)과 비대칭키 방식(Asymmetric Encryption)으로 나뉩니다.하나의 동일한 키를 사용하여 데이터를 암호화하고 복호화송신자와 수신자가 같은 비밀키를
웹 개발이나 네트워크 프로그래밍을 하다 보면 URI, URL, URN이라는 용어를 자주 접하게 됩니다.이 개념들은 자원을 식별하는 방식에 대한 표준이며, 서로 포함 관계를 가지고 있습니다.자원을 식별하는 모든 방식의 상위 개념URL과 URN을 포함하는 개념자원이 어디에
디스크 접근 시간은 하드디스크(HDD)에서 데이터를 읽거나 쓰는 데 걸리는 전체 시간을 의미합니다.HDD는 기계적으로 동작하는 장치이기 때문에, 물리적인 움직임이 포함되며 다음 3가지 요소로 구성됩니다.헤드가 데이터를 저장하고 있는 트랙으로 이동하는 데 걸리는 시간가장
해시 충돌은 서로 다른 두 데이터가 동일한 해시값을 가질 때 발생하는 현상입니다.Java에서는 객체의 hashCode() 값을 기반으로 해시 자료구조(HashMap, HashSet 등)를 구성하기 때문에, 해시 충돌이 발생할 수 있습니다.해시 함수는 무한한 입력(객체)
교착 상태(Deadlock)란 둘 이상의 프로세스(또는 스레드)가 서로가 가진 자원을 기다리며 무한히 대기하는 상태를 의미한다.이 상태에 빠지면 아무 작업도 진행되지 않으며, 외부 개입 없이는 복구가 어렵다.교착 상태는 다음 네 가지 조건이 동시에 만족될 때 발생한다.
Redis는 빠른 인메모리 데이터 저장소로 유명하다. 그런데 놀랍게도 Redis는 기본적으로 싱글 스레드(single-threaded) 구조로 동작한다. 멀티스레드가 대세인 환경에서, 왜 Redis는 싱글 스레드를 고수하는 걸까?Redis의 핵심 목표는 고속 성능이다.
시스템 간 통신은 반드시 동기적일 필요는 없다. 비동기 연동 방식은 시스템들이 즉시 응답을 기다리지 않고, 메시지를 큐에 넣거나 이벤트를 발행해두고 나중에 처리할 수 있도록 설계된 구조를 말한다. 이는 특히 대용량 트래픽 처리, 장시간 작업 처리, 시스템 간 느슨한 결
캐시 스탬피드는 인기 있는 캐시 항목이 만료되었을 때, 동시에 다수의 요청이 캐시 미스를 발생시키고, 모두가 원본 데이터 소스(예: 데이터베이스)에 접근하여 데이터를 재생성하려고 시도하는 현상을 말합니다. 이로 인해 백엔드 시스템에 과도한 부하가 발생하고, 성능 저하
운영체제에서 여러 작업을 동시에 수행하려면 프로세스(Process)나 스레드(Thread)를 사용한다. 이때 여러 작업 사이를 전환하는 것을 컨텍스트 스위칭(Context Switching)이라고 한다. 일반적으로 스레드 간의 컨텍스트 스위칭이 프로세스보다 빠르다고 알
하나의 서버에 CPU, 메모리, 저장 공간 등 하드웨어 자원을 추가하여 성능을 높이는 방식이다.예: 기존 서버에 더 빠른 CPU나 더 많은 RAM을 장착하여 처리 성능을 향상시키는 경우.장점: 시스템 구조 변경 없이 빠르게 성능 향상이 가능함단점: 물리적인 한계가 있으
데이터베이스를 다룰 때 반드시 이해하고 있어야 할 핵심 개념이 있다면 바로 트랜잭션(Transaction)이다. 트랜잭션의 신뢰성과 안정성을 보장하기 위해 데이터베이스 시스템은 ACID라는 네 가지 속성을 따른다.트랜잭션 내의 작업들은 모두 하나의 단위로 처리되어야 한
피드백 오딧 로그 적용 로그에 IP, 브라우저 추가 🌊 think flow Log는 Filter에 남기기와 Interceptor 두가지 방법이 있다고 한다. 어느 한 블로그의 말에 의하면 많은 사람들이 Filter를 사용한다고 한다. 난 찾아보지는 않았으나 그저
로그 레벨 설정 (INFO, ERROR)로그 파일 저장 (application.xml 설정)어떤 것을 로그로 남겨야 하나? AOP 활용한 공통 로깅 로그 롤링 (날짜 기준으로 회전) 콘솔과 파일 로그 분리 (콘솔 - INFO, 파일 로그 - ERROR)오딧 로그AOP로
Audit logging is the process of documenting activity. Audit logs record the occurrence of an event, the time at which it occurred, the responsible use
JPA를 사용할 때 save() 메서드의 동작 방식과 트랜잭션의 역할을 정확히 이해하는 것이 중요합니다. 특히 @Transactional과 readOnly = true 옵션이 JPA의 동작 방식에 미치는 영향을 잘 알고 사용하기 위해 글을 남겼습니다.1️⃣ save()
📚 오늘 팀과 한 일 💡 Redis Lock 을 구현할 때 고려해야할 것! 1) Lock 획득에 실패했을 때 어떻게 할 것인가? 오류로 DuplicationRequestException(customException)을 반환하여 돌려보냅니다. 2) Redis 를 이용해 Lock 을 구현한 이유는 무엇일까? Redis는 Spring Framework와...
프로젝트 필수기능 제외 기본 CRUD 및 각 계층 만들기중간중간 각자 맡은 부분에 의존성이 필요하면 요청하여 빠르게 develop branch로 merge하기Entity에 제약 조건 설정하기👤유저이메일이메일 형식, 중복x비밀번호대소문자 포함 영문 + 숫자 + 특수문자