경주란 빨리 달리는 사람들의 것이 아니라
       계속 뛰어가는 사람들의 것이다.
LinkTree🌲

Development 27

[Java] Hashcode

면접 질문에서, Hashcode의 대한 질문을 받았다.👨🏻‍🏫 HashCode는 무엇이고, 어떤 기능을 하나요? HashCode란객체를 식별하는 하나의 정수값을 말한다. Object의 HashCode() 메소드는 객체의 메모리 번지를 이용해서 해시코드를 만들어서 리턴하기 때문에 객체마다 다른 값을 가지고 있다. 또한, 동등성 비교 시 컬렉션 프레임워크 중 HashSet, HashMap, HashTable 들은 hashCode를 통해서 동등한지 비교한다. 👨🏻‍🏫 그렇다면, 동등성 비교할 때, Equals로도 충분히 가능하지 않을까요?그렇다, equals의 기능으로도 동등성 비교는 충분히 가능하다. HashCode는 같은 객체 인지 판별하는 기능만 있는게 아니다. hashCode()를 ..

Development/Java 2025.04.16

[Project] Cloud Migration 도전기

왜 마이그레이션을 하려고 하는가?MSA 기반 도서 이커머스 서비스를 제작했는데, 그 당시 요구사항과 데드라인이 있어 개인적으로 고도화를 하지 못해 아쉬운 부분이 많았다. 그런 아쉬움을 해소하고자, 리펙토링 및 고도화를 진행해보려고 한다. 진행하기 위해서, 우선 배포를 해야 하는데 기존 무료로 제공하던 NHN Cloud 사용 기간이 종료되었다.  NHH Cloud에서 AWS로 이전  왜 AWS를 선택했는가?AWS를 사용하는 기업이 점차 늘어가고 있다.뿐만 아니라, AWS 사용할 경우 자체적으로 제공하는 서비스(RDS, EKS, MQ)들이 많아져 개발자들은 개발에만 집중할 수 있다는 장점이 있다. 다만, 비용이 비싸다는 단점이 있지만 AWS 경험을 우대하는 기업이 점점 많아지고 있어 공부하는 겸 사용하기로 ..

Development 2025.02.09

[database] 식별 관계 vs 비식별관계

제가 아는 지식 + 참고 자료로 작성해 보겠습니다.  식별 관계란?해당 키를 식별하는 데 사용하겠다는 의미입니다.따라서, 무조건 자식(혹은 가져온 테이블)에 존재하는 키 여야만 합니다.따라서, NULL 이 들어갈 수 없습니다.   비식별관계란?그에 비해 비식별관계는 Null 일 수 있고 다른 테이블의 의존하지 않고 독립적으로 존재할 수 있습니다.비교적 자유롭고, JPA에서도 쉽게 구현하고 있습니다.  🤷🏻‍♂️ 그러면 다 비식별 쓰면 되는 거 아닌가요?    식별관계를 사용하는 이유식별관계를 사용하는 이유는 다음과 같습니다.데이터의 정합성을 유지하고 보장할 수 있다.자식 테이블에 데이터가 존재한다면 부모 데이터도 반드시 존재한다고 보장할 수 있다.3가지 복합 키의 종류가 유니크해야 하는 것을 보장할 ..


Spring Security 컨트리뷰터가 되다..!

얼마 전, Spring Security에 기여를 하게 되었다! 🎉🎉첫 오픈소스 기여였다!결론은 2줄 아주 작은 부분을 수정했다.     발단요즘 Spring Security 공부를 하면서, 시큐리티 전체 프로세스 과정을 공부하고 있었다.그중 인프런 강의를 보다가 강사님께서 Spring Security의 FilterChainProxy를 설명해 주시는 과정에서 Security에서 List가 비어있는지 확인하기 위해서 filters.size() == 0을 사용한 부분이 눈에 거슬렸다.   Size() == 0 vs isEmpty()JAVA Collection 메서드 중 isEmpty()는 원소가 비어 있는지 확인하는 기능을 한다.코드를 볼 때, isEmpty가 코드의 의도를 더 쉽게 이해할 수 있고 가독..

Development 2025.01.19

[spring security] 시큐리티 초기화 과정 톺아보기

Spring Security를 공부하면서, 초기화 과정을 정리하고자 기록한다. 수정이나 피드백은 언제나 환영합니다!    스프링 Security를 공부하다 보면, 특별한 설정 없이도 폼 로그인 화면을 볼 수 있는데 스프링 시큐리티가 스프링 애플리케이션에 어떻게 초기화하고 설정들을 등록하는지 알아보자.어떻게 security 설정이 되는 걸까?Spring Boot의 자동 설정 (SpringBootWebSecurityConfiguration)기본적으로, SpringBootWebSecurityConfiguration에서 위 그림처럼defaultSecurityFilterChain을 만들어서 빈으로 등록하는 것을 코드로 확인할 수 있다. 그 위에 @ConditionalOnClass 어노테이션에 보면 EnableWe..

Development 2025.01.17

[MSA] Spring Cloud vs Kubernetes

쿠버네티스 스프링 클라우드 둘 중 뭘 사용하면 좋을까?배경 📝k8s를 공부하면서 이전에 사용했던 Spring cloud의 기능과 상당히 유사한 역할을 한다는 점을 느꼈습니다. 그렇다면 둘 중 하나만 사용해서 서비스를 구축할 수 있지 않을까 하는 의문이 들었고, 이를 바탕으로 공부한 내용을 기록해보려 합니다.  소개 💭Spring Cloud를 사용하면 MSA 아키텍처를 쉽게 구축, 관리, 실행할 수 있도록 제공해 줍니다. 뿐만 아니라, log 분석, Config 서버, 서비스 discovery 기능, 인증/인가 서비스 등 모두 제공해 줍니다. 하지만, Spring Cloud에서는 MSA에서 중요한 패키징, CI/CD, 확장, 고가용성, 자가치유에 관한 것은 다루지 않습니다. 이런 추가적인 고려사항들을 ..

Development 2025.01.11

[CS] REST이란?

Rest는 Representational State Transfer의 약자로, 분산 하이퍼 미디어 시스템 아키텍처의 한 형식이다. 주고 받는 자원(Resource)에 이름을 규정하고 URI에 명시해 HTTP 메서드 (GET, POST, PUT, DELETE)를 통해자원의 상태를 주고받는 것을 의미한다. REST 를 쉽게 말하면 표현 방식이라고 봐도 좋다.  API란?그렇다면 API는 application Programming interface의 약자로 애플리케이션에서 제공하는 인터페이스를 의미한다. API를 통해 서버 또는 프로그램 사이를 연결할 수 있다. API는 애플리케이션을 나타내는 형식이라고 봐도 되겠다. REST API란? REST API 는 이 둘을 합쳐, REST 아키텍처를 따르는 시스템/애..

Development 2024.05.27

[Library] 오렐리 COS 라이브러리 이미지 다중 업로드

문제저장은 모두 저장되지만, 한 개 파일만 순차적으로 읽을 수 있음.파일이름을 while (files.hasMoreElements()) {}  을 통해서 모두 읽을 수 없음 .파일이름을 통해 DB에 파일이름을 저장해야 했기 때문에 모든 파일의 정보가 필요했다.   소개서블릿에서 이미지 업로드를 검색하면 가장 많이 나오는 라이브러리 중 하나가 오렐리의 COS 라이브러리이다.  엄청 오래되어 보이는 냄새..  이미지 업로드 구현을 위해서 다중 업로드 기능을 만들던 중 위에 처럼 다중 선택이 가능하도록 만들려고 코드에 multiple을 추가했다. 이렇게 추가하면 file에 대한 값이 여러개 입력할 수 있도록 값이 전달된다. -----------------------------123456789012345678..

Development/Java 2024.05.04

[UML] Mermaid를 사용해서 다이어그램을 그려보자.

StarUML이나 draw.io 를 통해서 UML을 많이 그리곤 하는데, Github에 이를 업로드하기 어렵다는 단점이 있습니다. Mermaid를 사용하면 텍스트와 코드를 통해서 여러가지 다이어그램을 제작할 수 있습니다. Github에 올린 모습 깃에서 코드가 아닌 바로 이렇게 눈으로 UML을 가시화하여 볼 수 있습니다. 또한, 사용하면 좋은 장점 중 하나가 제가 잘 사용하는 Intellij에 plugin에 있다는 사실 ! 플러그인을 사용하면 Preview 모드로 바로 입력한 그래프를 눈으로 확인할 수 있습니다. 아마 Vscode에서는 Mermaid Preview ~~ extension이 있는 걸로 알고 있습니다. 사용법 intellij->setting -> plugin -> mermaid 설치 문법 `..

Development 2023.10.21