PostgreSQL :: 연산자 사용법PostgreSQL에서는 데이터 타입 변환을 위해 :: 연산자를 자주 사용한다. 이 연산자는 SQL 표준의 CAST 구문과 같은 역할을 하지만, 더 간결하고 직관적으로 쓸 수 있다. :: 연산자는 특정 데이터 타입으로 변환하고 싶을 때 사용되며, 데이터베이스 쿼리에서 강력하고 유용하게 쓰인다.기본 사용법: ::PostgreSQL에서 ::는 "이 데이터를 특정 데이터 타입으로 변환해라"라는 의미다. 예를 들어, 문자열 데이터를 정수로 변환하려면 아래와 같이 작성할 수 있다.SELECT '123'::INTEGER;-- 결과: 123 (정수형 데이터)::는 아래와 같은 데이터 타입으로 변환하는 데 사용할 수 있다.자주 사용하는 데이터 타입 예제1. 숫자 타입숫자와 관련된 ..
프로젝트에서 Netty 기반의 TCP 서버를 개발하던 중, 특정 상황에서 데이터 처리가 예상과 다르게 작동하는 문제를 겪었습니다. 클라이언트가 데이터를 전송했지만 서버에서 이를 처리하려고 할 때 데이터 부족 오류가 발생하거나, 패킷 단편화(Fragmentation) 문제가 원인임을 알게 되었습니다.TCP의 특성과 패킷 단편화 문제TCP는 스트림 기반 프로토콜로 데이터를 전송하기 때문에, 데이터를 송신한 단위(패킷)가 수신 측에서 동일한 단위로 도착한다고 보장하지 않습니다. 이로 인해 발생할 수 있는 두 가지 주요 현상은 다음과 같습니다:패킷 단편화 (Fragmentation):클라이언트가 한 번에 보낸 데이터가 네트워크 경로에서 여러 조각으로 나뉘어 수신될 수 있습니다.패킷 합쳐짐 (Coalescing)..

로깅은 애플리케이션 문제 해결의 오랜 역사와 관찰 가능성의 세 가지 주요 요소(메트릭, 트레이스와 함께) 중 하나입니다. 운영 환경에서 아무런 정보 없이 문제를 해결하기는 어려우며, 장애가 발생했을 때 개발자들은 로그 파일이 있는 것을 반가워합니다. 로그는 주로 사람이 읽을 수 있는 형식으로 작성됩니다. 구조화된 로깅은 로그 출력을 잘 정의된, 종종 기계가 읽을 수 있는 형식으로 작성하는 기술입니다. 이러한 형식은 로그 관리 시스템에 입력되어 강력한 검색 및 분석 기능을 가능하게 합니다. 구조화된 로깅에 가장 일반적으로 사용되는 형식 중 하나는 JSON입니다. Spring Boot 3.4에서는 기본적으로 구조화된 로깅을 지원합니다. Elastic Common Schema (ECS)와 Logstash 형식..
Kubernetes에서 애플리케이션의 안정성과 가용성을 보장하기 위해 다양한 설정이 필요합니다. 그 중 Autoscaling과 PodDisruptionBudget(PDB)은 Pod의 수를 조절하고 가용성을 유지하는 데 중요한 역할을 합니다. 이 두 설정은 겉보기에는 비슷한 기능을 제공하는 것처럼 보일 수 있지만, 실제로는 서로 다른 목적을 가지고 있습니다. 이번 글에서는 Autoscaling과 PDB의 차이점, 그리고 왜 두 설정을 함께 사용하는 것이 중요한지에 대해 알아보겠습니다.Autoscaling 설정의 역할Autoscaling은 Kubernetes에서 애플리케이션의 부하에 따라 Pod의 개수를 자동으로 조정하는 기능입니다. Horizontal Pod Autoscaler(HPA)가 이 기능을 담당하..

✅ 아래 글의 내용 및 이미지는 인프런 "쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2" 강의를 듣고 정리한 글입니다. 강사님이 정리해주신 눈에 잡히는 IT 생태계이 오픈소스들을 잘 깊이 있게 공부하는게 좋다! => 남들이 뭐가 좋다더라에 휩쓸리지말고 처음엔 여기에만 집중해도 충분하다!개발기존부터 해왔던 App 개발부터 배포까지 써야되는 기술들.오케스트레이션 /매니징마이크로 서비스로 만들 때 쓰면 좋은 오픈 소스들플랫폼과 런타임앱을 클라우드에 올릴 때 주요 사용되는 기술들 프로비저닝과 분석실제 프로젝트에서 써야되는 기술들이 있는데 만약 프로젝트에서 앱을 마이크로 서비스로 개발하고 클라우드까지 올린다? => 프로비저닝과 분석에 있는 기술들을 다 아는게 좋다.분석 / 모니터링 큰 규모의 프로..
두 명령어의 차이점은 Datadog에서 로그를 필터링하는 방식과 필터링하는 필드의 차이점에 있습니다. 각 명령어가 어떤 필드를 대상으로 하는지와 그 필드의 내용에 따라 로그 검색 결과가 달라집니다.@error.stack:*org.apache.catalina.connector.ClientAbortException*대상 필드: error.stack검색 방식: error.stack 필드의 내용에 org.apache.catalina.connector.ClientAbortException 문자열이 포함된 로그 항목을 찾습니다.용도: 이 명령어는 예외가 발생했을 때의 전체 스택 트레이스에 org.apache.catalina.connector.ClientAbortException 문자열이 포함된 로그를 검색합니다. ..
스프링부트에서 테스트 코드를 작성할 때 자주 사용하는 @Mock과 @MockBean의 차이점. 이 두 어노테이션은 모킹(Mocking)을 통해 테스트를 효율적으로 작성할 수 있게 해주지만, 용도와 환경이 다르다. 또한, 리포지토리, 서비스 레이어, 컨트롤러 테스트 시 어떤 상황에서 어떤 어노테이션을 사용하는 것이 좋을지 작성.@Mock@Mock은 Mockito 프레임워크에서 제공하는 어노테이션이다. 특정 클래스의 모킹된 객체를 생성하며, 이 객체는 스프링 컨텍스트와는 무관하게 독립적으로 동작한다.@MockBean@MockBean은 스프링 부트에서 제공하는 어노테이션이다. 스프링 애플리케이션 컨텍스트에 모킹된 빈을 추가하고, 실제 스프링 빈 대신 모킹된 빈을 주입한다. 주로 통합 테스트 환경에서 사용된다...
Java의 스트림은 왜 한 번만 읽을 수 있는가?Java의 스트림이 한 번만 읽을 수 있는 이유는 스트림의 설계 방식과 데이터 처리 방법 때문이다. 스트림은 데이터를 한 방향으로 순차적으로 읽도록 설계되어 있으며, 한 번 읽은 데이터는 메모리에 저장되지 않기 때문에 다시 읽으려면 데이터를 재전송 받아야 한다. 이 방식은 스트림의 기본적인 동작 방식으로, 데이터를 처음부터 끝까지 한 번에 읽도록 설계되어 있다.이유 1: 데이터 소비스트림은 데이터를 한 번에 한 바이트씩 읽는다. 한 번 읽은 데이터는 소비되어 더 이상 스트림에 남아 있지 않게 된다. 이를 통해 메모리 사용을 최소화하면서 데이터를 처리할 수 있다.이유 2: 메모리 효율성스트림은 대량의 데이터를 메모리에 로드하지 않고 순차적으로 처리하기 때문에..
- Total
- Today
- Yesterday
- 베리 심플
- Kotlin
- config-location
- elasticsearch
- Java
- Mac
- mybatis
- k8s
- intellij
- window
- jQuery
- Spring
- Spring Security
- docker
- LocalDateTime
- Linux
- rocky
- JavaScript
- input
- claude
- oracle
- LocalDate
- 북리뷰
- mybatis config
- 오라클
- Bash tab
- svn
- maven
- springboot
- localtime
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |