profile
일주일에 한 번

Inheritance vs Composition

현실 상속? : 부모가 자식에게 물려주는 행위, 부모가 자식 선택 자바 상속? : 부모 클래스가 자식 클래스에게 멤버를 물려주는 행위, 자식 클래스가 부모 클래스 선택 private 멤버는 상속에서 제외 !!부모 클래스와 자식 클래스가 다른 패키지에 존재하는 경

2023년 11월 9일
·
0개의 댓글
·

QueryDSL 쿼리 최적화

기존 UserRepositoryQueryImpl.java 이용해 검색했을 때Jpa 쿼리 메서드를 이용해 검색했을 때UserService.java기존 코드는 QueryDSL을 사용하지 않아도 된다.(간단한 검색이고 동적인 쿼리를 만들 필요가 없기 때문)오히려 Jpa 쿼리

2023년 9월 26일
·
0개의 댓글
·

채팅 내용 Redis -> MySQL

메모리 기반의 저장소로 데이터에 접근하는 속도가 빠름다양한 type의 아키텍처를 지원함String, Hash, List, Set, Sorted Set, Map 등의 구조 활용 가능데이터를 분할하여 여러 서버에 분산 저장, 처리할 수 있음데이터가 휘발성이라 서버 재시작이

2023년 9월 22일
·
0개의 댓글
·

Redis에 저장할 때 Serialize

에러 메세지🚨 DefaultSerializer requires a Serializable payload but received an object of type ~ChatRoom~ChatRoom을 만들고 redis에 저장할 때 위와 같은 에러 발생Redis 는 data

2023년 9월 22일
·
0개의 댓글
·
post-thumbnail

WebSocket 채팅 (4)

다른 Redis Java 클라이언트에 비해 가벼움적은 기능을 제공하지만 많은 양의 메모리 처리 가능동기 통신 지원Jedis pool 이용하면 멀티 스레드 환경에서 동작 가능 (모든 풀이 사용 중일 경우 요청과 응답 사이 블로킹이 발생해 어느 정도의 유휴상태에 빠질 수

2023년 9월 22일
·
0개의 댓글
·
post-thumbnail

sockjs, stomp front 404 error

채팅방 만들기 까지 됐지만 채팅방 상세화면으로 넘어갈 때 아래와 같은 에러 발생 시도 1기존 roomdetail.html수정 1 \- 라이브러리 버전 삭제시도 2기존 roomdetail.html수정 2 \- 라이브러리 버전 build.gradle과 맞추

2023년 9월 21일
·
0개의 댓글
·
post-thumbnail

WebSocket 채팅 (3) - Stomp 적용

stomp 추가sockjs : websocket을 지원하지 않는 낮은 버전의 브라우저에서도 websocket 사용할 수 있도록webjar : 채팅 웹 화면 구현 관련 js 로드freemarker, vue.js : 프론트 웹 개발build.gradlestatic 파일 개

2023년 9월 21일
·
0개의 댓글
·
post-thumbnail

WebSocket 채팅 (2)

클라이언트 서버에 접속 → 개별적으로 WebSocket session 가지게 됨채팅방에 클라이언트의 session 정보 저장서버에 전달된 메세지를 채팅방의 sessionList로 발송ChatMessage.java클라이언트 메세지 DTOChatRoom.java채팅방

2023년 9월 21일
·
0개의 댓글
·
post-thumbnail

WebSocket 채팅 (1)

websocket 의존성 추가build.gradlesocket 통신은 서버와 클라이언트가 1:N → 서버에는 여러 클라이언트가 발송한 메세지를 받아 처리해줄 Handler 필요 WebSocketChatHandler.java클라이언트 메세지 송신WebSocketCon

2023년 9월 21일
·
0개의 댓글
·
post-thumbnail

S3 이미지 업로드

S3 버킷 생성 > IAM 사용자 생성Spring Boot 연결build.gradleapplication.properties : 배포하지 않을 예정이기 때문에 application.properties에 한꺼번에 적어둠 : IAM 사용자의 access key를 발급받아

2023년 8월 14일
·
0개의 댓글
·

230813 GET 요청 데이터 전달 방식

UserController.javaindex.js에러메세지 안에 /api/users/search? 라고 뜨며 body에 보낸 data가 암호화 되어 보내졌다는 것을 알 수 있음UserController.javaindex.jsGET 요청은 간단한 데이터를 url에 넣도록

2023년 8월 13일
·
1개의 댓글
·

230810 javascript this, modal, thymeleaf

html 파일 내 scriptjava와 유사하게 this를 사용하면 선택한 요소의 id와 속의 text를 가져올 수 있다.view controllermypage.html전에는 text만 model로 전달했었는데이렇게 dto를 만들어 통째로 보내는 것도 가능하다.현재 로

2023년 8월 10일
·
0개의 댓글
·

Spring Data Redis 사용, Refresh token, Access token

Redis 설치 설치 후 -> 작업 관리자 > 서비스 탭에서 확인 가능 만약 실행되지 않았다면 -> 설치경로 > redis-server.exe 파일 수동 실행 redis-cli.exe 통해 명령어 사용 (참고 : https://inpa.tistory.com/en

2023년 8월 8일
·
0개의 댓글
·

Redis Jedis vs Lettuce

RedisConfig.java를 작성하는 도중 위와 같은 에러 문구 발생클래스 위에 @Configuration을 붙이지 않은 채로 @Bean으로 만든 메서드를 사용했기 때문@Configuration처럼 어플리케이션 컨텍스트, 빈 팩토리가 사용할 설정 정보라는 표시를 해

2023년 8월 7일
·
0개의 댓글
·

QueryDSL

2023년 8월 3일
·
0개의 댓글
·

230802 테스트 코드 결과 status 415

Controller 테스트 코드 메모를 생성하는 기능을 테스트하기 위한 코드 status code 201로 기대했지만 415가 반환 시도 accept를 contentType으로 바꿔봤더니 이전과는 다른 type definition error가 발생 content

2023년 8월 3일
·
1개의 댓글
·

230727 JUnit Test 실행 안됨

문제 Junit Test 실행 불가능 원인 Application 패키지 구조와 Test 패키지 구조가 다른 경우 (application context가 따라가지 못함) @SpringBootApplication으로 선언된 Class명과 Test Class명이 다른 경

2023년 7월 27일
·
0개의 댓글
·
post-thumbnail

230726 PasswordEncoder.matches()

둘 다 암호화 되어있어서 받아온 password 값과 confirmPassword 값은 항상 다를 수 밖에 없다는 것을 깨달았다.confirmPassword는 저장할 데이터가 아니기 때문에 이 값을 암호화하지 않은 채로 가져왔다.하지만 여전히 matches 함수는 fa

2023년 7월 26일
·
0개의 댓글
·

230725 DTO, DAO, VO

DTO (Data Transfer Object) : 계층간 데이터 교환을 위해 사용하는 객체 : 로직을 가지지 않음 (getter, setter, toString, equals 등 작성 가능) DAO (Data Access Object) : 데이터베이스의 데이터에 접

2023년 7월 25일
·
0개의 댓글
·

230724 Thymeleaf

서버에서 데이터를 보내 웹 서비스를 만드는 방법 \- Single Page Application Server Side RenderingHTML과 데이터를 결합해 만들 수 있도록 도와주는 도구build.gradle에 dependency 추가html 태그에 추가xmlns

2023년 7월 24일
·
0개의 댓글
·