본문 바로가기

Develop Study160

(25.06.26) equals() 와 hashCode() 의 contract에 관하여 알고리즘 문제를 풀면서 공부를 하던 중,Java 에서 HashSet같은 Hash 자료구조에서의 객체간 비교를 위해 equals를 override 통해 참조값을 비교하지 않도록 만들었지만,추가로 contract를 살펴서 hashCode() 까지 오버라이드를 해야할 부분을 Java 명세를 읽어보면서 알게 되었다.관련 개념은 쉽지만, 인는 객체의 특성보다는 Java 매뉴얼에 가깝기 때문에 기억을 해야하므로 기록을 하고자한다. class Solution { public int solution(int[] arrows) { // 방향 하드코딩 int[] dx = {0, 1, 1, 1, 0, -1, -1, -1}; int[] dy = {1, 1, 0, -1, -1, -1, .. 2025. 6. 26.
(25.06.19) 다중 서버에서의 Spring WebSocket 키덜트 사용자들이 공통 주제로 자유롭게 대" data-og-host="andr" data-og-host="andrew75313.tistory.com" data-og-source-url="https://andrew75313.tistory.com/236" data-og-url="https://andrew75313.tistory.com/236" data-og-image="https://blog.kakaocdn.net/dna/kKpRH/hyY8ONeZFt/AAAAAAAAAAAAAAAAAAAAAIzpRe5wran8lA14o2gXWekssiG6vpNqCvotEncQ1gGl/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1764514799&allow_ip=&allow_referer=&signature=9b7IwIehAU0Iik%2F8wp3laCwVFPw%3D 2025. 6. 19.
(25.06.05) record 클래스 & DTO 활용 WebSocket 기반의 대화방에서 채팅을 구현하는데 있어서,Subscribe 한 클라이언트들에게 채팅을 보내는데 사용하는 responseDTO 클래스를 record 에 사용하는 것으로 참고자료에서 나타냈다.하지만, DTO에서 사용되는 컴포넌트들을 그대로 축약했다고 생각한 클래스라고 치부하기 보다는좀더 고려를 해야하는 부분이 많아서Java 에 최신으로 등재된 record 클래스에 대해서 설펴보고,중간중간 나의 궁금한 점들을 "주의 사항" 내지는 표로 정리했다. record 클래스boilerplate 코드를 줄이기 위해서 자동으로 필요한 객체들과 여러 필요한 내용을 생성해주는 특수한 불변 데이터 클래스(immutable data class)Java 14 preview 버전, Java 16 정식 버전(sta.. 2025. 6. 5.
(25.05.23) OAuth 2.0 카카오 간편 로그인 구현하기 - Spring Boot (25.05.21) OAuth 2.0 간편 소셜 로그인간편 로그인은 이제 서비스웹 앱에서는 필수적인 요소이며,인턴십 기간에서도 결제와 더불어서 OAuth 를 통한 소셜 로그인을 가장 1순위로 구현될 User 스토리였다. 물론 해당 구현은 OAuth 2.0으로andrew75313.tistory.comOAuth 에 대한 내용은 쉽게 인식할 수 있지만, 실제로 Spring Boot 기반의 MVC (3-Layered Architecture) 구조에서 어떻게 작동이 될지 생각해보면서 구현하는지 설계하는 기록을 하고자 했다. Kakao 간편 로그인 FLOW와 Spring Boot에서 구현1. 인가 코드 받아오기 카카오로 로그인하기 FE 단에서 https://kauth.kakao.com/oaut.. 2025. 5. 23.
(25.05.21) OAuth 2.0 간편 소셜 로그인 간편 로그인은 이제 서비스웹 앱에서는 필수적인 요소이며,인턴십 기간에서도 결제와 더불어서 OAuth 를 통한 소셜 로그인을 가장 1순위로 구현될 User 스토리였다. 물론 해당 구현은 OAuth 2.0으로 시그니쳐가 없어졌기 때문에, JWT 발급 구현을 할수 있다면 구현을 할 수 있다. 관련 내용을 Blog에 정리한 적이 없기 떄문에 Notion에 있던 내용 그리고프로젝트 시작시 사용할 수 있는 개인 공용 Boiler Plate 에 적용하기 위해 간단한 개념을 먼저 정리하고,Flow에 따라 구현 코드를 미리 Boiler Plate에 적용하고자 한다. OAuth, Open Authorization웹사이트 상의 사용자 정보에 대해서 다른 website/application 에게 사용자 인증을 위힘할 수 있.. 2025. 5. 21.
(25.05.13) SQL 재귀 WITH RECURSIVE SQLD 자격증을 공부하면서 습득했던 구문들과 문법들을 나름 다 활용하고 있다고 생각했는데,Java 기반의 알고리즘 프로그래밍에서나 볼 수 있었던 "재귀" 에대해서 SQL구문을 활용을 하는 예제를 맞닥드렸다.만약, 재귀법 없이 하나하나 구해야한다면 무한의 조건문을 만들어야 하기 때문에,반드시 알아둬야하는 CTE 구문을 간단하게 정리하고 이를 활용하는 예제도 정리했다. 단! CTE (Common Table Expressions) 기능은 MySQL 8.0 버전부터 지원하기 때문에 ( MySQL 8.0 이상, PostgreSQL, SQL Server 2005 이상, Oracle 11g 이상 )비교적 최신 구문으로, SQLD 자격 부분에 대해서는 쉽사리 다루지 않았던 것 같다.이전 버전의 SQL 서버에서는 동작.. 2025. 5. 13.
(25.05.12) 조건이 많은 경우의 LIS 기존에 보았던 간단한 LIS Longest Increasing Subsequence를 구하는 알고리즘의 확장되어 여러개의 조건을 비교하면서 Subsequence를 구해야하는 경우에 대해 정리를 하고자 한다. 즉, 1개의 조건을 만족하나 2번째 조건을 만족하는 경우까지 고려를 해 LIS를 구해야하고1개의 조건이 동일한 경우, 2번쨰 조건에 따라 정렬하여 LIS를 구해야하는 것이다. You are given a 2D array of integers envelopes where envelopes[i] = [wi, hi] represents the width and the height of an envelope.One envelope can fit into another if and only if both t.. 2025. 5. 12.