[JAVA] 자바의 기본 타입과 참조 타입 (메모리 저장 방식)
·
JAVA
📚 서론자바를 공부하다 보면 기본 타입(Primitive Type)과 참조 타입(Reference Type)이라는 용어를 자주 마주치게 됩니다. 이 두 타입의 가장 큰 차이점은 메모리에 저장되는 방식에 있는데요. 오늘은 이 두 타입의 차이점과 메모리 저장 방식에 대해 자세히 알아보겠습니다.💡 본론1. 기본 타입(Primitive Type)의 특징기본 타입은 자바에서 제공하는 가장 기본적인 데이터 타입입니다.기본 타입의 종류byte num1 = 1; // 1바이트short num2 = 2; // 2바이트int num3 = 3; // 4바이트long num4 = 4L; // 8바이트float num5 = 5.5f; // 4바이트double num6 =..
[CS] 자바 메모리 구조: 스택(Stack)과 힙(Heap)
·
CS
📌 서론프로그래밍을 공부하다 보면 자주 마주치는 '스택'과 '힙'이라는 용어들. 한 번쯤은 들어봤을 이 두 메모리 영역에 대해 자세히 알아보겠습니다. 비전공자도 쉽게 이해할 수 있도록 실생활의 예시와 함께 설명해드리겠습니다. (비유이기 때문에 100% 일치하지 않을 수도 있습니다. 참고만 해주세요!)💡 본론1. 메모리 구조 개요JVM(Java Virtual Machine)의 메모리는 크게 스택(Stack)과 힙(Heap) 영역으로 나눌 수 있습니다. 이를 실생활에 비유하자면 다음과 같습니다스택(Stack): 사무실의 책상당장 필요한 물건들을 올려두고 작업공간이 제한적빠르게 접근 가능힙(Heap): 창고큰 물건들을 보관상대적으로 큰 공간찾는데 시간이 좀 더 걸림2. 스택(Stack) 메모리 심층 분석특..
[Spring Security]OAuth2UserService 로직 실행되지 않는 문제(OAuth2 로그인: Google OpenID Connect 트러블슈팅)
·
트러블슈팅
Spring Security는 강력한 인증 및 권한 부여 프레임워크로, 다양한 인증 방식을 지원합니다. 그 중 OAuth2는 널리 사용되는 인증 프로토콜이며, 특히 Google, Facebook 등의 소셜 로그인에 많이 활용됩니다. 하지만 때로는 예상치 못한 동작으로 인해 개발자를 당황스럽게 만들기도 합니다. 오늘은 Google OAuth2 로그인 구현 중 마주친 흥미로운 문제와 그 해결 과정을 공유하고자 합니다.문제 상황Spring Security를 사용하여 Google OAuth2 로그인을 구현하던 중, 다음과 같은 설정을 통해 커스텀 OAuth2UserService를 등록했습니다: .oauth2Login { oauth2 -> oauth2 .userInfoEndpoint { it.u..
conda python 버전 변경
·
카테고리 없음
현재 환경 확인conda activate (your_env)conda env list  설치 가능한 파이썬 버전 확인conda search python 전체 업데이트conda update --all 특정 버전 설치conda install python=3.12.4  버전 확인python -V만약 변경이 안되었다면?conda deactivateconda activate (your_env)
IntelliJ 현재 활성화된 창으로 Project 파일 확인하고 싶다면?
·
카테고리 없음
IntelliJ, Webstorm 등 젯브레인 IDE에서 현재 활성화된 파일대로 Project 구조가 반영되고자한다면 아래와 같이 옵션을 활성화해준다.
diesel-cli setup
·
카테고리 없음
Diesel CLI 설치 및 사용 가이드1. Diesel CLI 설치아래 방법 중 선택a) 미리 빌드된 바이너리 사용:Linux/macOS:curl --proto '=https' --tlsv1.2 -LsSf https://github.com/diesel-rs/diesel/releases/download/v2.2.1/diesel_cli-installer.sh | shWindows:powershell -c "irm https://github.com/diesel-rs/diesel/releases/download/v2.2.1/diesel_cli-installer.ps1 | iex"b) cargo-binstall 사용:cargo binstall diesel_clic) cargo install 사용:저희 프로젝트는..
윈도우에서 nvm 설치하는 방법 (winget)
·
카테고리 없음
Mac OS에서는 brew를 통해 손쉽게 nvm을 설치할 수 있습니다.  brew install nvm  다만, 윈도우에서는 brew를 사용하기가 어려워 이를 대체하고자한다면 두 가지 방법이 있을 것 같습니다.   방법 1 https://github.com/coreybutler/nvm-windows/releases Releases · coreybutler/nvm-windowsA node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windowsgithub.com nvm windows 공식 installer를 설치하여 nvm을 설치한다.  방법 2 winget을 통하여 설치한다. https://a..
Redis Sorted Set으로 랭킹보드 구현
·
Redis
서론랭킹 보드를 구현해야 하는 요구사항이 있을 때, 이를 어떻게 효율적으로 구현할 수 있을까? 가장 단순하게는 데이터베이스에서 집계성 테이블이나 배치 과정을 통해 랭킹 정보를 가져오는 방법이 있을 것이다. 주간 또는 일간 랭킹 정보를 특정한 간격마다 배치 작업을 통해 갱신하는 방식은 비교적 낮은 DB 비용으로 처리할 수 있다.하지만, 실시간으로 변경되는 데이터를 정렬하고자 한다면 어떻게 해야 할까? 수많은 데이터가 쌓인 DB 테이블에서 쿼리를 날려 집계하는 방법이 과연 효율적일까? 다음은 특정 로그나 정보가 담긴 테이블(row size = 40,000)에서 주간 value를 합산하여 랭킹을 가져오는 쿼리의 예시다.explain analyzeSELECT user_id, nickname, SUM((log->..
AWS CDK lifecycle
·
카테고리 없음
1. 구성 (또는 초기화)코드에서 정의된 모든 구문을 인스턴스화하고 연결합니다. 이 단계에서는 앱, 스택, 하위 구문 등 모든 구문이 인스턴스화되며 생성자 체인이 실행됩니다. 대부분의 앱 코드는 이 단계에서 실행됩니다.2. 준비prepare 메서드를 구현한 모든 구문은 최종 수정 단계를 거쳐 최종 상태로 설정됩니다. 준비 단계는 자동으로 진행됩니다. 사용자는 이 단계에서 피드백을 볼 수 없습니다. “prepare” 후크를 사용할 필요는 거의 없으며 일반적으로 권장되지 않습니다. 이 단계에서 구문 트리를 변경할 때는 작업 순서가 동작에 영향을 줄 수 있으므로 매우 주의해야 합니다.3. 유효성 검사validate 메서드를 구현한 모든 구문은 자체 유효성을 검사하여 올바르게 배포될 수 있는 상태인지 확인합니다..
EC2 amazon linux 2 -> amazon linux 2023, (node.js 20 upgrade)
·
AWS
AS-IS현재 구동중인 백엔드 서버의 node 버전은 16버전을 사용하고 있다. node 16은 지원이 중단되었으며 보안 업데이트도 받을 수 없는 버전에 놓여있기에 최근 lts인 node 20으로 업그레이드를 진행 하고자 한다. 현재 서버 EC2 AMI는 amazon linux 2를 사용 중에 있다.  TO-BEnode 20 버전으로 업그레이드를 진행하기 위해서 Amazon linux 2에서 Amazon linux 2023으로 업그레이드를 진행하고자 한다.단, 현재 가동 중인 prod 환경에서 다운타임 없이 업데이트를 진행하고자 한다.  이 때의 best pracitce와 더불어 각 인프라를 분석하며 업그레이드를 진행한다.  Node.js BenchmarkState of Node.js Performanc..