본문 바로가기

BE15

[JAVA] HashMap과 HashTable의 차이 서론어느날 Youtube에서 강연을 보다가 "hashMap과 hashTable의 차이 다들 잘 알고계시죠~? 면접에도 많이 나오잖아요." 라고 말씀하셨는데 나는 들어만 봤고, 그냥 남들 다 쓰니까 사용했지 정확한 차이같은건 모르고 있었고 알려하지 않았었기에.. 이번 기회에 정리해보려고 한다! Hash(해시)가 뭔데?먼저 Hash가 뭔지에 대해서 알아보자!해시(Hash)는 데이터구조와 알고리즘에서 중요한 개념으로, 데이터를 고정된 크기의 해시값으로 매핑하는 함수와 그 결과로 생긴 값을들 효율적으로 저장하고 검색하는 방법이다. 따라서 해시 기반 데이터 저장 구조에서는 데이터 검색과 저장이 매우 빠르게 진행된다.​ Hash Function(해시함수)가 뭔데?임의의 크기를 가진 데이터를 고정된 크기의 해시 값(.. 2024. 6. 3.
[SpringBoot] 스케줄러(@Scheduled)가 간헐적으로 동작 안하는 문제 문제 발생 필요한 기능 : 특정 시간(오전 6시)에 외부 API를 호출하여 DB에 Insert문제점 : 오전 6시에 해당 스케줄러가 실행이 되어야 하는데, 출근해서 해당 Table을 확인하니 스케줄러가 동작 안하여 Insert가 안되어 있음 더 심각한건.. 도대체 어느 조건에서 왜? 실행이 안되는건지 모른다는 점이다...  로컬에서 실행하면 매우 잘 되는데 배포만 하면 잘 안된다는 문제만 파악하였다.. 검색을 해도 Timezone 이라는 말뿐......계속 검색해도 타임존 문제라고만 나왔다.  근데 그냥 뭔가 단순히 생각했을때 타임존 문제라면 그냥 그 시간이 되었을 때 동작을 해야하는데 아예 실행이 안됐으니 타임존 문제라는 것이 너무 이해가 안되었다. 해결 과정 - 로그 확인로컬로 스프링 프로젝트를 시작.. 2024. 5. 7.
[SpringBoot] Spring Security Config에서 permitAll()에 대한 진실과 오해 사용 기술 스택 - Spring Boot 3.x.x - Spring Security 6 ( + jwt token 방식) - Spring Data Jpa 문제 발생 Spring Security를 적용하면서 인증이 필요하지 않은 경로를 직접 지정해주어 인증을 안하도록 설정하였다. 대표적으로는 로그인 (/auth/login)이 있는데, 로그인을 할 때 access token을 확인할 필요가 없기 때문에 permitAll()을 사용하여 인증에서 제외했다. http .authorizeHttpRequests(requests -> requests .requestMatchers("/", "/auth/login", "/access-token").permitAll() // 이 부분 .requestMatchers("/swa.. 2024. 1. 6.
[SpringBoot] Controller Unit Test에서 발생한 401, 403 에러를 해결해보자! (+ Spring Security) ❗️컨트롤러 테스트코드를 작성하는 와중에 401과 403 에러를 마주쳤다. 해결하는건 크게 어렵지 않았다!!! 컨트롤러 단위 테스트 진행 과정 먼저, 사용한 기술은 이러하다. ▶︎ Spring Data JPA , Spring Security 단위 테스트를 진행했기 때문에 @WebMvcTest 를 사용했다. @SpringBootTest VS @WebMvcTest ❗️ 여기서 잠깐! ! @SpringBootTest와 @WebMvcTest 이 두 어노테이션의 차이는 뭘까? 분명 둘다 테스트 코드 작성시 사용하는건데.. 언제 어떤것을 사용 해야할까? ▶︎ @SpringBootTest - 애플리케이션 전체를 테스트할 때 주로 사용된다. (통합 테스트) - 애플리케이션의 모든 컴포넌트들을 로드한다. (securit.. 2023. 12. 27.