전체 글(150)
-
spring Boot에서 Redis 연결하기
✔오늘 배운 중요한 🔑 pointRedisTemplate을 사용하여 데이터를 Redis에 저장하고 조회할 수 있다.Redis는 다양한 데이터 형식을 지원하는데 RedisTemplate는 이러한 데이터 형식들을 각각의 Redis 데이터 구조와 매핑하여 사용할 수 있다.🎯 오늘 배운 내용 프로젝트 요구사항 중 회원가입시 해당 이메일로 인증 번호를 보내고 인증이 되야 정상적으로 회원가입이 되야하는 기능을 구현하기 위해서 인증번호를 메모리에 저장하기 위한 인메모리 저장소 Redis를 이용하였다. Redis 설정 build.gradle.ktsdependencies { implementation("org.springframework.boot:spring-boot-starter-data-redis") ..
2024.06.28 -
class java.lang.String cannot be cast to class 오류
✔오늘 배운 중요한 🔑 pointSecurity Context에서 가져온 객체가 String 타입일때 해당 오류가 발생한다 anonymousUser는 인증되지 않은 사용자로 Spring Security에서 기본적으로 사용하는 문자열https://jwt.io/ 사이트를 활용하여 나의 토큰이 제대로 설정되어있는지 처음에 꼭 확인하자🎯 오늘 배운 내용 ❎ 문제발생프로젝트를 진행하면서 기존 CRUD에 추가적인 작업을 하고 swagger로 테스트를 하던 도중 에러가 발생하였다. 로그인 한 사용자가 다른 post를 수정하려고 할때 예외처리가 발생하는데, 예외처리가 발생하고 나서 본인의 게시글을 수정하려고 하는 작업을 3번 4번 이상 수행 할때 해당 오류가 발생하였다. java.lang.ClassCastExc..
2024.06.27 -
.let
✔오늘 배운 중요한 🔑 point.let함수는 nullable 타입을 다룰때 ?.let 을 사용해 안전하게 처리할 수 있다.let 함수는 객체의 범위 내에서 안전하게 작업 수행이 가능하다🎯 오늘 배운 내용 .let 함수는 주어진 잭체를 람다 함수의 인자로 전달하고, 람다 함수 내에서 해당 객체를 처리하는 기능을 한다 .let을 사용하지 않았을 때fun main() { val name: String? = "HJP" if (name != null) { val length = name.length println("Name length: $length") } else { println("Name is null") }} .let을 사용했을 때fu..
2024.06.26 -
CDN(Content Delivery Network)
✔오늘 배운 중요한 🔑 point23CDN은 웹 사이트의 성능, 안정성, 보안, 확장성을 높이는 데 필수적인 도구이다 글로벌 사용자에게 콘텐츠를 빠르고 안정적으로 제공하려는 경우, CDN은 매우 유용하다.🎯 오늘 배운 내용 CDN이란?정적 콘텐츠를 전송하는 데 쓰이는, 지리적으로 분산된 서버의 네트워크 CDN이 왜 필요한가?웹 사이트의 콘텐츠는 보통 서버에서 사용자에게 전달되는데, 서버와 사용자의 물리적 거리가 멀면 멀수록 로딩 속도가 느려지기 때문에 CDN을 사용하면 사용자에게 가장 가까운 서버에서 콘텐츠를 전달하기 때문에 로딩 속도가 빨라진다 또한 CDN은 트래픽을 여러 서버에 분산시켜 부하를 나누어주기 때문에 단일 서버에 과도한 부하가 걸리지 않도록 하여 서버 다운타임을 줄이고, 웹 사이트의 가..
2024.06.25 -
CAP 정리
✔오늘 배운 중요한 🔑 point데이터의 일관성, 가용성, 파티션 감내라는 세가지 요구사항을 동시에 만족하는 분산 시스템을 설계하는 것은 불가능하다.대부분의 실제 분산 시스템은 CA를 선택하지 않고 CP 혹은 AP 중 하나를 선택한다🎯 오늘 배운 내용 REDIS 같은 KEY- VALUE 저장소는 많은 데이터를 저장하기 위해 분산 키-값 저장소(distributed key-value store)를 만들 필요가 있다. 분산 시스템을 설계할 때는 CAP 정리의 이해가 필수적이다 CAP 정리데이터의 일관성, 가용성, 파티션 감내라는 세 가지 요구사항을 동시에 만족하는 분산 시스템을 설계하는 것은 불가능하다 데이터 일관성(Consistency): 모든 클라이언트는 어떤 노드에 접속했느냐에 관계없이 언제나 ..
2024.06.24 -
@Transactional과 롤백
✔오늘 배운 중요한 🔑 pointSpring AOP로 구현된 @Transactional 의 Aspect에서는 PlatfromTransactionalManager를 이용해서 커밋, 롤백 작업을 처리하게 된다.@Transactional(propagation = Propagation.REQUIRES_NEW)를 사용해서 부분 롤백이나, 독릭적인 트랜잭션이 필요한 경우에 적용시킬 수 있다.🎯 오늘 배운 내용 @Transactional 기본 개념트랜잭션은 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이며 하나의 트랜잭션 내에서 수행된 작업은 모두 성공하거나 모두 실패해야한다는 특징을 가진다 @Transactional 동작 방식Spring Transaction Abstraction 에서는 트랜잭션을 처..
2024.06.23