많은 스타트업에서 NodeJS를 사용하는 이유가 배우기 쉽고, 개발 속도가 엄청나게 빨라서
라고 한다. 얼마나 빠르길래 그러는지 직접 사용해보기로 했다. 우선 아래 링크에서 Node.js를 다운 받고 설치부터 해야 한다. 대부분의 프로그램들이 그렇듯이 Install을 하면서 나오는 Next 버튼을 계속 눌러서 설치를 끝내면 된다.
스택과 힙, 원시타입과 객체는 어디에 저장될까?
간단히 이미지로 정리하자면 스택과 힙은 위와 같은 특성을 가지고 있다. 아래에서는 위 특성을 이해하면 부차적으로 생기는 의문점들에 대해 정리해보았다.
자바 시점의 Call by Value, Call by Reference
자바에서 원시 타입은 Call by Value에 가깝고 객체는 Call by Reference처럼 동작하지만, 엄밀히 말해 자바는 항상 Call by Value를 사용한다.
Call by Value, Call by Reference에 대해 공부할 때 항상 나오는 말이지만 이것만 보면 뭔 소린가 싶다🤔. 우선 Call by Value vs. Call by Reference 개념을 간단히 정리하고, 자바에서 객체를 어떻게 전달하길래 Call by Ref처럼 보이지만 사실은 Call by Value 라고 하는지 알아보자.
Elastic Search 관련 기초 상식 정리
개인 프로젝트를 진행하며 Elasticsearch를 처음 사용해보았는데, 검색 속도에서도 이점이 있었지만 한글 형태소 검색 최적화 작업이 무척 신기하고 재미있었다. 추후 ES를 더 깊이 있게 다루어 볼 때 도움이 되도록 궁금했던 내용들에 대한 답을 찾아보고 정리해둔다.
Commit 날짜 변경 명령어를 더 간단하게 바꿔보자
커밋 날짜를 변경해야 할 때가 가끔 있다. git commit --date "Wed 29 Jan 2025 00:00:00 KST" -m "커밋메시지"
이런 식으로 매번 커밋 명령어를 입력하는 건 너무 번거롭다. 좀 더 편하게 바꿀 수 있는 방법을 찾아보았다.
- 윈도우 환경이므로 Powershell 스크립트로 작성한다.
스프링 Bean과 Component의 역할과 차이 쉽게 이해하기
스프링 Bean이란 뭘까? 한 마디로 요약하자면 스프링이 관리해주는 객체
를 말한다. 자바에서 일반적으로 객체를 생성할 때를 떠올려보자.
1 |
|
이렇게 선언하면 우리가 객체 생성을 직접 관리해야 한다. 그럼 스프링이 객체를 관리해준다면 어떻게 사용할 수 있을까?
1 |
|
이런 식으로 @Service
(@Service는 @Component에 속한다)를 붙이면 필요한 곳에서 바로 MyService를 가져다 쓸 수 있다. 이게 바로 스프링의 의존성 주입(DI). 객체 관리를 스프링이 해주면 유지보수성도 더 좋아지지만, 성능 상의 이점도 있다. new
키워드로 객체를 계속 만들면 메모리를 많이 차지하지만, 스프링 빈은 기본적으로 싱글톤 패턴을 사용해서 한 번만 만들어지고 계속 재사용이 가능하다.
동시성 제어를 통해 레이스 컨디션을 해결하는 방법 3 - Lettuce, Redisson 활용
동시성 제어를 통해 레이스 컨디션을 해결하는 방법 1 :
https://rustywhite404.github.io/spring/2024/12/10/Concurrency_control1/
동시성 제어를 통해 레이스 컨디션을 해결하는 방법 2 :
https://rustywhite404.github.io/spring/2024/12/11/Concurrency_control2/
앞서 Synchronized와 DB락을 이용한 동시성 제어 방법을 정리해보았고, Lettuce와 Redisson을 사용하는 방법도 알아보기로 했다.
필수적으로 알아야 할 Redis 명령어(feat. 레디스 기본 자료형, 유용한 명령어)
필수적으로 알아야 할 Redis 명령어
레디스는 왜 쓰고 어디에 써야 하는 걸까? - 레디스를 사용하는 이유와 활용 사례
레디스를 쓰면 좋다, 빠르다 하는 말을 수없이 들었지만 어떤 점 때문에 그런건지나 어떤 식으로 활용되는지는 알지 못했다. 왜 쓰는지는 알아두고 시용하기 위해 레디스의 이점과 활용 사례를 알아보았다.
동시성 제어를 통해 레이스 컨디션을 해결하는 방법 2 - DB 락 활용
동시성 제어를 통해 레이스 컨디션을 해결하는 방법 1 :
https://rustywhite404.github.io/spring/2024/12/10/Concurrency_control1/
앞서 Synchronized 을 이용한 동시성 제어 방법을 정리해보았고, 여기서는 데이터베이스 레벨의 락을 활용해 볼 예정이다. DB레벨 락은 아래와 같은 방식들이 있다. 하나씩 장단점과 사용법을 알아보자.