[스프링] 트랜잭션 관리
트랜잭션 관리
트랜잭션 관리
모니터링과 관찰 가능성
쿠버네티스 클러스터 내부의 서비스(Service) 오브젝트에 대한 접근을 관리하는 오브젝트인 인그레스(Ingress)는 리소스에 정의된 규칙에 따라 라우팅을 수행한다. 인그레스의 라우팅 종류에는 단일 서비스로의 라우팅, 하나 이상의 서비스로의 라우팅(간단한 팬아웃(fanout)),...
스프링 표현 언어(SpEL, Spring Expression Language)(이하 SpEL)란 런타임에 객체 그래프(object graph)를 탐색하는 표현 언어이다. 객체의 프로퍼티 조회 및 설정, 메서드 실행, 연산 수행, 표현식(expression) 실행, 빈 참조 등의 기...
객체 매핑
HTTP를 통해 전송되는 데이터의 직렬화(serialization) 및 역직렬화(deserialization)를 위한 코덱(codec)은 요청 및 응답 데이터를 특정 형태로 처리한다. HTTP 통신을 통해 바이트 배열, JSON, XML, YAML, 프로토콜 버퍼 등 다양한 형태의...
자바 애플리케이션에서 JDBC(java database connectivity) API를 사용하여 데이터베이스에 연결하기 위해서는 DataSource 인터페이스를 통한 Connection 인스턴스 생성이 필요하다. DataSource는 Connection 인스턴스를 생성하기 위한 ...
테스트 컨텍스트 프레임워크에서 트랜잭션은 테스트 클래스에 @TestExecutionListeners를 명시적으로 선언하지 않더라도 기본적으로 구성된 TransactionalTestExecutionListener에 의해 관리된다. 하지만 트랜잭션 지원을 활성화하려면 @ContextC...
문제: SQL 서버(SQL Server) 데이터베이스에서 기본키가 VARCHAR 타입인 테이블의 특정 기본키 컬럼 값에 대한 데이터 조회 시 쿼리 속도가 느리다. 원인: 기본적으로 sendStringParametersAsUnicode 연결 속성이 true이다. 내용: ...
제네릭
@SpringBootTest를 사용하여 애플리케이션 컨텍스트를 완전하게 생성한 후 애플리케이션의 모든 구성, 레이어 등을 단위 테스트하거나 통합 테스트하는 경우 실제 애플리케이션 구동을 위해 구성된 모든 빈이 스프링 컨테이너에 로드되기 때문에 애플리케이션의 규모가 커질수록 테스트 ...
하이버네이트와 JPA
엔티티 매니저 설정
필터(filter)란
쿠버네티스 환경에서 엘라스틱서치 기본 설정
스프링은 캐시 추상화(cache abstraction) 기능을 제공한다. 캐시 추상화를 통해 기존 코드에 미치는 영향을 최소화하고 다양한 캐싱 라이브러리 구현체(예: Gemfire, Caffeine, EhCache 등)를 일관된 방법으로 사용할 수 있도록 도와준다. 스프링 프레임워...
웹플럭스에서는 스프링이 제공하는 캐싱 추상화 기능을 단순히 적용하더라도 올바르게 동작하지 않으며 그 원인은 리액티브 프로그래밍의 특성과 관련이 있다. 웹플럭스의 리액터가 제공하는 Mono와 Flux(이하 데이터 스트림 객체)는 데이터를 포함하고 있는 래퍼 객체이며, 데이터 스트림 ...
멀티 스레드 환경에서 스레드 간 경합 조건(race condition)을 피하고 데이터의 일관성(consistency)을 유지하기 위해서는 동기화(synchronization)를 통해 스레드의 실행 순서를 제어하는 것이 필요하다.
JVM 스레드
WebClient
스프링의 애플리케이션 프로퍼티 설정
빈 스코프
용어 인스턴스화되어 객체가 되는 것: 클래스 = POJO 클래스 클래스를 인스턴스화한 것: 빈 인스턴스 = POJO 인스턴스 = 객체 인스턴스
프론트 컨트롤러에서 요청/응답 처리 방법
스프링 MVC
org.springframework.dao.InvalidDataAccessApiUsageException: No @NamedStoredProcedureQuery was found with that name 객체 관계 매핑 대상인 엔티티 객체에 @Entity 설정이 되어 있는...
애플리케이션 컨텍스트
리액티브 프로그래밍
레디스 클러스터
중첩 멀티 프로젝트 구조
헥사고날 아키텍처
스프링의 테스트
@Autowired
생성자 주입
@Autowired
빈 스코프는 특정 빈 정의가 주어졌을 때 해당 클래스의 인스턴스화(객체 생성)를 어떻게 할 것인지를 지정하는 역할을 한다.
ApplicationRunner와 CommandLineRunner는 스프링 애플리케이션 내에 포함될 때 자동으로 실행되어야 하는 빈을 지정하는데 사용되는 인터페이스이다. ApplicationRunner와 CommandLineRunner는 스프링 애플리케이션이 시작된 후에 자동으로 ...
스프링 클라우드 태스크
스프링 부트 플러그인
잡 중복 실행 방지와 재시작 기능
데이터베이스 접근을 위해 필요한 사항
애그리거트(Aggregate)와 명세(Specification)
DI (Dependency Injection): 의존성 주입 IoC (Inversion of Conttol): 제어의 역전 AOP (Aspect-Oriented Programming): 관점 지향 프로그래밍 비즈니스 로직으로부터 공통 관심사 로직을 ...
배치 처리의 요구 사항
스프링 배치 기본 동작 구조
Deserialization 1. Byte array(converted from JSON formatted string) to Java object with custom deserializer Object class (empty constructor is needed)
스프링 프로젝트
Kafka 설치 Kafka Binary 다운로드: https://kafka.apache.org/downloads 윈도우 환경 세팅 (WSL2와 포트 연결) netsh interface portproxy add v4tov4 listenport=9092 listenad...
build.gradle
JSON Response Body { "greetingStrArr": [ "hello", "world" ] }
트랜잭션 관리
모니터링과 관찰 가능성
쿠버네티스 클러스터 내부의 서비스(Service) 오브젝트에 대한 접근을 관리하는 오브젝트인 인그레스(Ingress)는 리소스에 정의된 규칙에 따라 라우팅을 수행한다. 인그레스의 라우팅 종류에는 단일 서비스로의 라우팅, 하나 이상의 서비스로의 라우팅(간단한 팬아웃(fanout)),...
스프링 표현 언어(SpEL, Spring Expression Language)(이하 SpEL)란 런타임에 객체 그래프(object graph)를 탐색하는 표현 언어이다. 객체의 프로퍼티 조회 및 설정, 메서드 실행, 연산 수행, 표현식(expression) 실행, 빈 참조 등의 기...
객체 매핑
HTTP를 통해 전송되는 데이터의 직렬화(serialization) 및 역직렬화(deserialization)를 위한 코덱(codec)은 요청 및 응답 데이터를 특정 형태로 처리한다. HTTP 통신을 통해 바이트 배열, JSON, XML, YAML, 프로토콜 버퍼 등 다양한 형태의...
자바 애플리케이션에서 JDBC(java database connectivity) API를 사용하여 데이터베이스에 연결하기 위해서는 DataSource 인터페이스를 통한 Connection 인스턴스 생성이 필요하다. DataSource는 Connection 인스턴스를 생성하기 위한 ...
테스트 컨텍스트 프레임워크에서 트랜잭션은 테스트 클래스에 @TestExecutionListeners를 명시적으로 선언하지 않더라도 기본적으로 구성된 TransactionalTestExecutionListener에 의해 관리된다. 하지만 트랜잭션 지원을 활성화하려면 @ContextC...
제네릭
@SpringBootTest를 사용하여 애플리케이션 컨텍스트를 완전하게 생성한 후 애플리케이션의 모든 구성, 레이어 등을 단위 테스트하거나 통합 테스트하는 경우 실제 애플리케이션 구동을 위해 구성된 모든 빈이 스프링 컨테이너에 로드되기 때문에 애플리케이션의 규모가 커질수록 테스트 ...
하이버네이트와 JPA
엔티티 매니저 설정
필터(filter)란
쿠버네티스 환경에서 엘라스틱서치 기본 설정
스프링은 캐시 추상화(cache abstraction) 기능을 제공한다. 캐시 추상화를 통해 기존 코드에 미치는 영향을 최소화하고 다양한 캐싱 라이브러리 구현체(예: Gemfire, Caffeine, EhCache 등)를 일관된 방법으로 사용할 수 있도록 도와준다. 스프링 프레임워...
웹플럭스에서는 스프링이 제공하는 캐싱 추상화 기능을 단순히 적용하더라도 올바르게 동작하지 않으며 그 원인은 리액티브 프로그래밍의 특성과 관련이 있다. 웹플럭스의 리액터가 제공하는 Mono와 Flux(이하 데이터 스트림 객체)는 데이터를 포함하고 있는 래퍼 객체이며, 데이터 스트림 ...
멀티 스레드 환경에서 스레드 간 경합 조건(race condition)을 피하고 데이터의 일관성(consistency)을 유지하기 위해서는 동기화(synchronization)를 통해 스레드의 실행 순서를 제어하는 것이 필요하다.
JVM 스레드
WebClient
스프링의 애플리케이션 프로퍼티 설정
빈 스코프
용어 인스턴스화되어 객체가 되는 것: 클래스 = POJO 클래스 클래스를 인스턴스화한 것: 빈 인스턴스 = POJO 인스턴스 = 객체 인스턴스
프론트 컨트롤러에서 요청/응답 처리 방법
스프링 MVC
org.springframework.dao.InvalidDataAccessApiUsageException: No @NamedStoredProcedureQuery was found with that name 객체 관계 매핑 대상인 엔티티 객체에 @Entity 설정이 되어 있는...
애플리케이션 컨텍스트
리액티브 프로그래밍
레디스 클러스터
중첩 멀티 프로젝트 구조
헥사고날 아키텍처
스프링의 테스트
@Autowired
생성자 주입
@Autowired
빈 스코프는 특정 빈 정의가 주어졌을 때 해당 클래스의 인스턴스화(객체 생성)를 어떻게 할 것인지를 지정하는 역할을 한다.
ApplicationRunner와 CommandLineRunner는 스프링 애플리케이션 내에 포함될 때 자동으로 실행되어야 하는 빈을 지정하는데 사용되는 인터페이스이다. ApplicationRunner와 CommandLineRunner는 스프링 애플리케이션이 시작된 후에 자동으로 ...
스프링 클라우드 태스크
스프링 부트 플러그인
잡 중복 실행 방지와 재시작 기능
애그리거트(Aggregate)와 명세(Specification)
DI (Dependency Injection): 의존성 주입 IoC (Inversion of Conttol): 제어의 역전 AOP (Aspect-Oriented Programming): 관점 지향 프로그래밍 비즈니스 로직으로부터 공통 관심사 로직을 ...
배치 처리의 요구 사항
스프링 배치 기본 동작 구조
Deserialization 1. Byte array(converted from JSON formatted string) to Java object with custom deserializer Object class (empty constructor is needed)
스프링 프로젝트
Kafka 설치 Kafka Binary 다운로드: https://kafka.apache.org/downloads 윈도우 환경 세팅 (WSL2와 포트 연결) netsh interface portproxy add v4tov4 listenport=9092 listenad...
build.gradle
JSON Response Body { "greetingStrArr": [ "hello", "world" ] }
MDC
오라클 RAC(real application cluster)란 클러스터 구조의 데이터베이스 아키텍처를 통해 여러 서버에서 단일 오라클 데이터베이스 소프트웨어를 실행함으로써 공유 스토리지(파일 시스템)에 접근에 대한 가용성을 높이고 데이터베이스 서비스의 투명한 스케일 아웃(trans...
자바의 컬렉션 프레임워크
객체의 도달 가능성
HTTP를 통해 전송되는 데이터의 직렬화(serialization) 및 역직렬화(deserialization)를 위한 코덱(codec)은 요청 및 응답 데이터를 특정 형태로 처리한다. HTTP 통신을 통해 바이트 배열, JSON, XML, YAML, 프로토콜 버퍼 등 다양한 형태의...
자바의 중첩 클래스
자바 애플리케이션에서 JDBC(java database connectivity) API를 사용하여 데이터베이스에 연결하기 위해서는 DataSource 인터페이스를 통한 Connection 인스턴스 생성이 필요하다. DataSource는 Connection 인스턴스를 생성하기 위한 ...
문제: SQL 서버(SQL Server) 데이터베이스에서 기본키가 VARCHAR 타입인 테이블의 특정 기본키 컬럼 값에 대한 데이터 조회 시 쿼리 속도가 느리다. 원인: 기본적으로 sendStringParametersAsUnicode 연결 속성이 true이다. 내용: ...
제네릭
객체 모델과 관계형 모델 간 패러다임 불일치(object–relational paradigm mismatch)와 ORM
하이버네이트와 JPA
하이네이트 통계 활성화
JPA의 매핑 어노테이션
JPA와 스토어드 프로시저
스프링은 캐시 추상화(cache abstraction) 기능을 제공한다. 캐시 추상화를 통해 기존 코드에 미치는 영향을 최소화하고 다양한 캐싱 라이브러리 구현체(예: Gemfire, Caffeine, EhCache 등)를 일관된 방법으로 사용할 수 있도록 도와준다. 스프링 프레임워...
자바 19에서 프리뷰 기능으로 도입된 프로젝트 룸(Project Loom)의 가상 스레드(virtual thread)링크는 경량(lightweight) 스레드이다. 자바 20을 거쳐 자바 21에서 최종 릴리스링크되었다. 가상 스레드는 처리량이 많은 동시성 애플리케이션의 개발, 관리...
잭슨(Jackson)은 자바 JSON 파서(parser) 라이브러리이다. 자바 객체와 JSON 문자열 간 직렬화 및 역직렬화를 수행한다. com.fasterxml.jackson.databind.ObjectMapper를 사용하여 자바 객체(엔티티 객체)와 JSON 문자열 간 직렬화 ...
웹플럭스에서는 스프링이 제공하는 캐싱 추상화 기능을 단순히 적용하더라도 올바르게 동작하지 않으며 그 원인은 리액티브 프로그래밍의 특성과 관련이 있다. 웹플럭스의 리액터가 제공하는 Mono와 Flux(이하 데이터 스트림 객체)는 데이터를 포함하고 있는 래퍼 객체이며, 데이터 스트림 ...
멀티 스레드 환경에서 스레드 간 경합 조건(race condition)을 피하고 데이터의 일관성(consistency)을 유지하기 위해서는 동기화(synchronization)를 통해 스레드의 실행 순서를 제어하는 것이 필요하다.
JVM 스레드
스프링의 예외 처리
프로그래밍에서 열거 타입(또는 열거 형)(enumeration type)이란 값의 집합을 구성하는 특별한 자료형 및 값 타입이다. 열거 타입 변수는 사전 정의된 상수 집합이며 미리 정의된 값 중 하나여야 한다. 상수인 열거 타입 변수를 열거 타입 상수(enum type consta...
클래스 로딩
동등성 비교
어노테이션
중첩 멀티 프로젝트 구조
자바 프로그램을 실행하기 위해서는 다음 두 단계가 수행되어야 한다. 컴파일: 소스 코드인 자바 파일(.java)을 바이트 코드인 클래스 파일(.class)로 변환한다. 컴파일된 파일 실행: 클래스 파일(.class)이나 클래스 파일들의 아카이브 ...
헥사고날 아키텍처
Raoul-Gabriel Urma의 Tired of Null Pointer Exceptions? Consider Using Java SE 8’s “Optional”! 기고 내용 정리입니다.
스프링 부트 플러그인
데이터베이스 접근을 위해 필요한 사항
자바에서 기본적으로 래퍼(wrapper) 클래스는 불변(immutable)이다. 래퍼 클래스를 한 번 인스턴스화 한 이후에는 값을 변경할 수 없다. 래퍼 클래스를 메서드의 파라미터나 메서드 블록의 로컬 변수로 선언하여 사용하는 경우 불변성에 대해서만 주의하면 사용에 큰 문제가 되지...
자바 메모리 관리
레이어드 아키텍쳐 패턴
Java
An ANTLR4 grammar for T-SQL https://github.com/antlr/grammars-v4/tree/master/sql/tsql
Paul Deitel의 Understanding Java 9 Modules 기고 내용 정리입니다.
Log4j는 API와 코어 두 가지가 있다. API는 애플리케이션 인터페이스를 제공한다. 코어는 컴파일 시간이 아닌 런타임에만 필요하다.
앞서 자바에서 정규표현식을 사용하기 위해 자바가 제공하는 어떤 클래스들을 사용할 수 있는지 살펴보았습니다.
자바의 정규표현식 처리
MDC
오라클 RAC(real application cluster)란 클러스터 구조의 데이터베이스 아키텍처를 통해 여러 서버에서 단일 오라클 데이터베이스 소프트웨어를 실행함으로써 공유 스토리지(파일 시스템)에 접근에 대한 가용성을 높이고 데이터베이스 서비스의 투명한 스케일 아웃(trans...
자바의 컬렉션 프레임워크
객체의 도달 가능성
HTTP를 통해 전송되는 데이터의 직렬화(serialization) 및 역직렬화(deserialization)를 위한 코덱(codec)은 요청 및 응답 데이터를 특정 형태로 처리한다. HTTP 통신을 통해 바이트 배열, JSON, XML, YAML, 프로토콜 버퍼 등 다양한 형태의...
자바의 중첩 클래스
자바 애플리케이션에서 JDBC(java database connectivity) API를 사용하여 데이터베이스에 연결하기 위해서는 DataSource 인터페이스를 통한 Connection 인스턴스 생성이 필요하다. DataSource는 Connection 인스턴스를 생성하기 위한 ...
제네릭
객체 모델과 관계형 모델 간 패러다임 불일치(object–relational paradigm mismatch)와 ORM
하이버네이트와 JPA
하이네이트 통계 활성화
JPA의 매핑 어노테이션
JPA와 스토어드 프로시저
스프링은 캐시 추상화(cache abstraction) 기능을 제공한다. 캐시 추상화를 통해 기존 코드에 미치는 영향을 최소화하고 다양한 캐싱 라이브러리 구현체(예: Gemfire, Caffeine, EhCache 등)를 일관된 방법으로 사용할 수 있도록 도와준다. 스프링 프레임워...
자바 19에서 프리뷰 기능으로 도입된 프로젝트 룸(Project Loom)의 가상 스레드(virtual thread)링크는 경량(lightweight) 스레드이다. 자바 20을 거쳐 자바 21에서 최종 릴리스링크되었다. 가상 스레드는 처리량이 많은 동시성 애플리케이션의 개발, 관리...
잭슨(Jackson)은 자바 JSON 파서(parser) 라이브러리이다. 자바 객체와 JSON 문자열 간 직렬화 및 역직렬화를 수행한다. com.fasterxml.jackson.databind.ObjectMapper를 사용하여 자바 객체(엔티티 객체)와 JSON 문자열 간 직렬화 ...
웹플럭스에서는 스프링이 제공하는 캐싱 추상화 기능을 단순히 적용하더라도 올바르게 동작하지 않으며 그 원인은 리액티브 프로그래밍의 특성과 관련이 있다. 웹플럭스의 리액터가 제공하는 Mono와 Flux(이하 데이터 스트림 객체)는 데이터를 포함하고 있는 래퍼 객체이며, 데이터 스트림 ...
멀티 스레드 환경에서 스레드 간 경합 조건(race condition)을 피하고 데이터의 일관성(consistency)을 유지하기 위해서는 동기화(synchronization)를 통해 스레드의 실행 순서를 제어하는 것이 필요하다.
JVM 스레드
스프링의 예외 처리
프로그래밍에서 열거 타입(또는 열거 형)(enumeration type)이란 값의 집합을 구성하는 특별한 자료형 및 값 타입이다. 열거 타입 변수는 사전 정의된 상수 집합이며 미리 정의된 값 중 하나여야 한다. 상수인 열거 타입 변수를 열거 타입 상수(enum type consta...
클래스 로딩
동등성 비교
어노테이션
중첩 멀티 프로젝트 구조
자바 프로그램을 실행하기 위해서는 다음 두 단계가 수행되어야 한다. 컴파일: 소스 코드인 자바 파일(.java)을 바이트 코드인 클래스 파일(.class)로 변환한다. 컴파일된 파일 실행: 클래스 파일(.class)이나 클래스 파일들의 아카이브 ...
헥사고날 아키텍처
Raoul-Gabriel Urma의 Tired of Null Pointer Exceptions? Consider Using Java SE 8’s “Optional”! 기고 내용 정리입니다.
스프링 부트 플러그인
자바에서 기본적으로 래퍼(wrapper) 클래스는 불변(immutable)이다. 래퍼 클래스를 한 번 인스턴스화 한 이후에는 값을 변경할 수 없다. 래퍼 클래스를 메서드의 파라미터나 메서드 블록의 로컬 변수로 선언하여 사용하는 경우 불변성에 대해서만 주의하면 사용에 큰 문제가 되지...
자바 메모리 관리
레이어드 아키텍쳐 패턴
Java
Paul Deitel의 Understanding Java 9 Modules 기고 내용 정리입니다.
Log4j는 API와 코어 두 가지가 있다. API는 애플리케이션 인터페이스를 제공한다. 코어는 컴파일 시간이 아닌 런타임에만 필요하다.
자바의 컬렉션 프레임워크
제네릭
프로그래밍에서 열거 타입(또는 열거 형)(enumeration type)이란 값의 집합을 구성하는 특별한 자료형 및 값 타입이다. 열거 타입 변수는 사전 정의된 상수 집합이며 미리 정의된 값 중 하나여야 한다. 상수인 열거 타입 변수를 열거 타입 상수(enum type consta...
어노테이션
리액티브 프로그래밍
레디스 클러스터
코루틴(coroutine)은 비동기적으로 실행하려는 코드를 보다 쉽게 작성할 수 있게 도와주는 동시 실행 설계 패턴이다. 코루틴은 중단 가능한(suspendable) 연산, 즉 함수가 특정 시점에 실행을 중단했다가 나중에 다시 시작할 수 있는 연산으로 구성된다. 코틀린 언어는 비동...
코틀린이란
자바의 컬렉션 프레임워크
제네릭
어노테이션
리액티브 프로그래밍
레디스 클러스터
코루틴(coroutine)은 비동기적으로 실행하려는 코드를 보다 쉽게 작성할 수 있게 도와주는 동시 실행 설계 패턴이다. 코루틴은 중단 가능한(suspendable) 연산, 즉 함수가 특정 시점에 실행을 중단했다가 나중에 다시 시작할 수 있는 연산으로 구성된다. 코틀린 언어는 비동...
코틀린이란
투 포인터(two pointers) 기법이란 배열과 리스트 같은 선형(linear) 자료 구조에서 데이터를 순차적으로 탐색하는데 사용되는 방법 중 하나이다. 투 포인터 기법은 간단한 방법으로 알고리즘의 성능을 높이는데 주로 사용된다. 문제 해결 시 브루트 포스(brute-force...
컬렉션(collection)이란 데이터(요소)를 그룹화한 것으로 추상 자료형(ADT, abstract data type)을 의미하며, 자료 구조의 구체적인 구현을 규정 짓지는 않는다. 일반적으로 컬렉션의 예로는 리스트(list), 셋(set), 큐(queue), 스택(stack),...
리스트를 단일 연결 리스트로 변환 ```kotlin class ListNode( var value: Int ) { val next: ListNode? = null
이진 트리(binary tree)란 각 노드(node)에 최대 두 개의 자식(하위) 노드가 있는(모든 노드의 차수가 2 이하인) 트리 자료 구조이다. 이진 탐색 트리(binary search tree)란 다음 두 특성을 갖는, 정렬된(ordered, sorted) 이진 트리를 말한...
```kotlin class Node( var key: Int, var left: Node? = null, var right: Node? = null ) { fun find(value: Int): Node? = when { value &l...
동적 프로그래밍
트리 순회(tree traversal)란 트리 자료 구조에서 부모 노드와 두 개의 자식 노드를 정해진 순서에 따라 한 번씩만 탐색하는 것이다. 트리 순회는 크게 세 가지로 구분된다. 전위(pre-order) 순회: 부모 노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 ...
그래프 탐색
그래프(graph)란 노드(node)와 간선(edge)의 집합으로 구성되는 추상 자료형(ADT, abstract data type)이다. 간선은 서로 다른 두 노드를 연결하는 선을 의미하며 방향성(direction)과 가중치(weight)를 가질 수 있다. 간선은 두 노드의 연결 ...
분할 정복 알고리즘
스레드 안전성과 동기화
투 포인터(two pointers) 기법이란 배열과 리스트 같은 선형(linear) 자료 구조에서 데이터를 순차적으로 탐색하는데 사용되는 방법 중 하나이다. 투 포인터 기법은 간단한 방법으로 알고리즘의 성능을 높이는데 주로 사용된다. 문제 해결 시 브루트 포스(brute-force...
컬렉션(collection)이란 데이터(요소)를 그룹화한 것으로 추상 자료형(ADT, abstract data type)을 의미하며, 자료 구조의 구체적인 구현을 규정 짓지는 않는다. 일반적으로 컬렉션의 예로는 리스트(list), 셋(set), 큐(queue), 스택(stack),...
리스트를 단일 연결 리스트로 변환 ```kotlin class ListNode( var value: Int ) { val next: ListNode? = null
이진 트리(binary tree)란 각 노드(node)에 최대 두 개의 자식(하위) 노드가 있는(모든 노드의 차수가 2 이하인) 트리 자료 구조이다. 이진 탐색 트리(binary search tree)란 다음 두 특성을 갖는, 정렬된(ordered, sorted) 이진 트리를 말한...
```kotlin class Node( var key: Int, var left: Node? = null, var right: Node? = null ) { fun find(value: Int): Node? = when { value &l...
동적 프로그래밍
트리 순회(tree traversal)란 트리 자료 구조에서 부모 노드와 두 개의 자식 노드를 정해진 순서에 따라 한 번씩만 탐색하는 것이다. 트리 순회는 크게 세 가지로 구분된다. 전위(pre-order) 순회: 부모 노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 ...
그래프 탐색
그래프(graph)란 노드(node)와 간선(edge)의 집합으로 구성되는 추상 자료형(ADT, abstract data type)이다. 간선은 서로 다른 두 노드를 연결하는 선을 의미하며 방향성(direction)과 가중치(weight)를 가질 수 있다. 간선은 두 노드의 연결 ...
분할 정복 알고리즘
스레드 안전성과 동기화
투 포인터(two pointers) 기법이란 배열과 리스트 같은 선형(linear) 자료 구조에서 데이터를 순차적으로 탐색하는데 사용되는 방법 중 하나이다. 투 포인터 기법은 간단한 방법으로 알고리즘의 성능을 높이는데 주로 사용된다. 문제 해결 시 브루트 포스(brute-force...
리스트를 단일 연결 리스트로 변환 ```kotlin class ListNode( var value: Int ) { val next: ListNode? = null
이진 트리(binary tree)란 각 노드(node)에 최대 두 개의 자식(하위) 노드가 있는(모든 노드의 차수가 2 이하인) 트리 자료 구조이다. 이진 탐색 트리(binary search tree)란 다음 두 특성을 갖는, 정렬된(ordered, sorted) 이진 트리를 말한...
```kotlin class Node( var key: Int, var left: Node? = null, var right: Node? = null ) { fun find(value: Int): Node? = when { value &l...
동적 프로그래밍
트리 순회(tree traversal)란 트리 자료 구조에서 부모 노드와 두 개의 자식 노드를 정해진 순서에 따라 한 번씩만 탐색하는 것이다. 트리 순회는 크게 세 가지로 구분된다. 전위(pre-order) 순회: 부모 노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 ...
그래프 탐색
그래프(graph)란 노드(node)와 간선(edge)의 집합으로 구성되는 추상 자료형(ADT, abstract data type)이다. 간선은 서로 다른 두 노드를 연결하는 선을 의미하며 방향성(direction)과 가중치(weight)를 가질 수 있다. 간선은 두 노드의 연결 ...
분할 정복 알고리즘
스레드 안전성과 동기화
투 포인터(two pointers) 기법이란 배열과 리스트 같은 선형(linear) 자료 구조에서 데이터를 순차적으로 탐색하는데 사용되는 방법 중 하나이다. 투 포인터 기법은 간단한 방법으로 알고리즘의 성능을 높이는데 주로 사용된다. 문제 해결 시 브루트 포스(brute-force...
리스트를 단일 연결 리스트로 변환 ```kotlin class ListNode( var value: Int ) { val next: ListNode? = null
이진 트리(binary tree)란 각 노드(node)에 최대 두 개의 자식(하위) 노드가 있는(모든 노드의 차수가 2 이하인) 트리 자료 구조이다. 이진 탐색 트리(binary search tree)란 다음 두 특성을 갖는, 정렬된(ordered, sorted) 이진 트리를 말한...
```kotlin class Node( var key: Int, var left: Node? = null, var right: Node? = null ) { fun find(value: Int): Node? = when { value &l...
동적 프로그래밍
트리 순회(tree traversal)란 트리 자료 구조에서 부모 노드와 두 개의 자식 노드를 정해진 순서에 따라 한 번씩만 탐색하는 것이다. 트리 순회는 크게 세 가지로 구분된다. 전위(pre-order) 순회: 부모 노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 ...
그래프 탐색
그래프(graph)란 노드(node)와 간선(edge)의 집합으로 구성되는 추상 자료형(ADT, abstract data type)이다. 간선은 서로 다른 두 노드를 연결하는 선을 의미하며 방향성(direction)과 가중치(weight)를 가질 수 있다. 간선은 두 노드의 연결 ...
분할 정복 알고리즘
스레드 안전성과 동기화
자바의 중첩 클래스
프로그램이 의도된 대로 동작하는지 검증 및 확인하는 것을 테스트(test)라고 한다. 테스트는 프로그램이 요구사항에 맞게 동작하는지, 동작 도중 에러가 발생하지 않는지 등 프로그램의 정상적인 실행 흐름과 동작을 확인하는 과정을 포함한다. 테스트의 목적에는 여러가지가 있겠지만 가장 ...
정적 클래스 및 멤버
자바 언어 기준
동기 요청과 비동기 요청
타임아웃
비동기 프로그래밍
프로그래밍에서 널
성능 테스트
카오스 엔지니어링
프로그램이 의도된 대로 동작하는지 검증 및 확인하는 것을 테스트(test)라고 한다. 테스트는 프로그램이 요구사항에 맞게 동작하는지, 동작 도중 에러가 발생하지 않는지 등 프로그램의 정상적인 실행 흐름과 동작을 확인하는 과정을 포함한다. 테스트의 목적에는 여러가지가 있겠지만 가장 ...
테스트 컨텍스트 프레임워크에서 트랜잭션은 테스트 클래스에 @TestExecutionListeners를 명시적으로 선언하지 않더라도 기본적으로 구성된 TransactionalTestExecutionListener에 의해 관리된다. 하지만 트랜잭션 지원을 활성화하려면 @ContextC...
스프링의 테스트
build.gradle
JSON Response Body { "greetingStrArr": [ "hello", "world" ] }
성능 테스트
카오스 엔지니어링
프로그램이 의도된 대로 동작하는지 검증 및 확인하는 것을 테스트(test)라고 한다. 테스트는 프로그램이 요구사항에 맞게 동작하는지, 동작 도중 에러가 발생하지 않는지 등 프로그램의 정상적인 실행 흐름과 동작을 확인하는 과정을 포함한다. 테스트의 목적에는 여러가지가 있겠지만 가장 ...
테스트 컨텍스트 프레임워크에서 트랜잭션은 테스트 클래스에 @TestExecutionListeners를 명시적으로 선언하지 않더라도 기본적으로 구성된 TransactionalTestExecutionListener에 의해 관리된다. 하지만 트랜잭션 지원을 활성화하려면 @ContextC...
스프링의 테스트
build.gradle
JSON Response Body { "greetingStrArr": [ "hello", "world" ] }
자바의 중첩 클래스
프로그램이 의도된 대로 동작하는지 검증 및 확인하는 것을 테스트(test)라고 한다. 테스트는 프로그램이 요구사항에 맞게 동작하는지, 동작 도중 에러가 발생하지 않는지 등 프로그램의 정상적인 실행 흐름과 동작을 확인하는 과정을 포함한다. 테스트의 목적에는 여러가지가 있겠지만 가장 ...
정적 클래스 및 멤버
자바 언어 기준
동기 요청과 비동기 요청
타임아웃
비동기 프로그래밍
@SpringBootTest를 사용하여 애플리케이션 컨텍스트를 완전하게 생성한 후 애플리케이션의 모든 구성, 레이어 등을 단위 테스트하거나 통합 테스트하는 경우 실제 애플리케이션 구동을 위해 구성된 모든 빈이 스프링 컨테이너에 로드되기 때문에 애플리케이션의 규모가 커질수록 테스트 ...
객체 모델과 관계형 모델 간 패러다임 불일치(object–relational paradigm mismatch)와 ORM
하이버네이트와 JPA
엔티티 매니저 설정
하이네이트 통계 활성화
JPA의 매핑 어노테이션
JPA와 스토어드 프로시저
org.springframework.dao.InvalidDataAccessApiUsageException: No @NamedStoredProcedureQuery was found with that name 객체 관계 매핑 대상인 엔티티 객체에 @Entity 설정이 되어 있는...
객체 참조
int() 함수 - 용도: 자연수 진법으로 표현된 수를 10진수 정수로 변환 - 문법 int(값, 밑)
컴프리헨션 (Comprehension) 리스트 컴프리헨션 [표현식 for 임시변수명 in 원본리스트명]
앞서 살펴본 시리즈와 데이터프레임은 Pandas에서 데이터를 저장하는 자료구조 객체입니다. 두 객체의 생성 및 초기화, 조작 방법에는 차이가 있으며 Numpy의 배열(ndarray 객체)와도 연관이 있습니다.
Pandas가 자료를 저장하는 구조에는 크게 두 가지가 있습니다.
Pandas의 데이터프레임에서 이상(비정상) 데이터를 제거하는 방법에는 여러 가지가 있습니다.
어노테이션
중첩 멀티 프로젝트 구조
헥사고날 아키텍처
스프링 부트 플러그인
Paul Deitel의 Understanding Java 9 Modules 기고 내용 정리입니다.
어노테이션
중첩 멀티 프로젝트 구조
헥사고날 아키텍처
스프링 부트 플러그인
Paul Deitel의 Understanding Java 9 Modules 기고 내용 정리입니다.
로컬 캐싱과 글로벌 캐싱
데이터 관련 객체
헥사고날 아키텍처
용어 애플리케이션 또는 서비스: 어떤 기능을 수행하는 소프트웨어 단위 컴포넌트: 독립적으로 배포 가능한 가장 작은 단위
레이어드 아키텍쳐 패턴
SOLID 원칙
빈 스코프는 특정 빈 정의가 주어졌을 때 해당 클래스의 인스턴스화(객체 생성)를 어떻게 할 것인지를 지정하는 역할을 한다.
스프링 클라우드 태스크
잡 중복 실행 방지와 재시작 기능
배치 처리의 요구 사항
스프링 배치 기본 동작 구조
빈 스코프는 특정 빈 정의가 주어졌을 때 해당 클래스의 인스턴스화(객체 생성)를 어떻게 할 것인지를 지정하는 역할을 한다.
스프링 클라우드 태스크
잡 중복 실행 방지와 재시작 기능
배치 처리의 요구 사항
스프링 배치 기본 동작 구조
다트 언어에서는 async와 await 키워드를 사용하여 비동기 프로그래밍을 구현할 수 있다. 비동기 방식으로 작업을 수행하는 이유는 하나의 작업이 수행되고 완료되기를 기다리는 동안 다른 작업을 동시에 수행하여 리소스를 효율적으로 사용하고 일련의 작업들을 빠르게 처리하기 위함이다....
환경 설정
빌드 및 배포
플러터의 UI 변경 및 앱 상태 관리
레이아웃 구성
Firebase CLI 설치
다트 언어에서는 async와 await 키워드를 사용하여 비동기 프로그래밍을 구현할 수 있다. 비동기 방식으로 작업을 수행하는 이유는 하나의 작업이 수행되고 완료되기를 기다리는 동안 다른 작업을 동시에 수행하여 리소스를 효율적으로 사용하고 일련의 작업들을 빠르게 처리하기 위함이다....
환경 설정
빌드 및 배포
플러터의 UI 변경 및 앱 상태 관리
레이아웃 구성
Firebase CLI 설치
성능 테스트
카오스 엔지니어링
프로그램이 의도된 대로 동작하는지 검증 및 확인하는 것을 테스트(test)라고 한다. 테스트는 프로그램이 요구사항에 맞게 동작하는지, 동작 도중 에러가 발생하지 않는지 등 프로그램의 정상적인 실행 흐름과 동작을 확인하는 과정을 포함한다. 테스트의 목적에는 여러가지가 있겠지만 가장 ...
로컬 캐싱과 글로벌 캐싱
빌더 패턴
의존성 또는 종속성이라는 용어가 많이 사용되고 있다. 의존성 주입, 의존성 역전 법칙이라는 용어가 널리 사용되는 것으로 보아 종속성 보다는 의존성이 더 많이 사용되는 듯하다. 어떤 것에 의존한다는 것, 어떤 것에 종속되었다는 표현은 두 대상이 얼마나 서로 연관되어 있냐는 관점에서 ...
어노테이션
중첩 멀티 프로젝트 구조
헥사고날 아키텍처
스프링 부트 플러그인
분산 락
데이터베이스의 락
자바 애플리케이션에서 JDBC(java database connectivity) API를 사용하여 데이터베이스에 연결하기 위해서는 DataSource 인터페이스를 통한 Connection 인스턴스 생성이 필요하다. DataSource는 Connection 인스턴스를 생성하기 위한 ...
문제: SQL 서버(SQL Server) 데이터베이스에서 기본키가 VARCHAR 타입인 테이블의 특정 기본키 컬럼 값에 대한 데이터 조회 시 쿼리 속도가 느리다. 원인: 기본적으로 sendStringParametersAsUnicode 연결 속성이 true이다. 내용: ...
데이터의 무결성과 일관성
성능 테스트
카오스 엔지니어링
프로그램이 의도된 대로 동작하는지 검증 및 확인하는 것을 테스트(test)라고 한다. 테스트는 프로그램이 요구사항에 맞게 동작하는지, 동작 도중 에러가 발생하지 않는지 등 프로그램의 정상적인 실행 흐름과 동작을 확인하는 과정을 포함한다. 테스트의 목적에는 여러가지가 있겠지만 가장 ...
로컬 캐싱과 글로벌 캐싱
빌더 패턴
네트워크 구성
최근 작업 도중 docker-compose로 구성한 이미지 파일을 실행하려고 하니 operation not permitted 오류가 발생했습니다.
Docker 명령어
현재 오라클에서는 오라클 데이터베이스를 MacOS 운영체제에 직접 설치하여 사용할 수 있는 방법을 지원하지 않습니다. 따라서 가상 머신이나 컨테이너 기반 도커(Docker)를 사용하는 방법을 사용하면 됩니다.
SpringDoc을 사용하는 경우 다음 에러 발생 ``` Description:
Spring Loaded를 사용하여 컨테이너 재시작 없이 자바 클래스를 리로드하여 클래스 변경사항을 적용할 수 있음 기존 Hot Code Replacement(HCR)가 메소드 바디 변경만 허용했다면(즉, 메서드 시그니처는 그대로 유지해야함) Spring Loaded는 메...
Kafka 설치 Kafka Binary 다운로드: https://kafka.apache.org/downloads 윈도우 환경 세팅 (WSL2와 포트 연결) netsh interface portproxy add v4tov4 listenport=9092 listenad...
분산 락
데이터베이스의 락
자바 애플리케이션에서 JDBC(java database connectivity) API를 사용하여 데이터베이스에 연결하기 위해서는 DataSource 인터페이스를 통한 Connection 인스턴스 생성이 필요하다. DataSource는 Connection 인스턴스를 생성하기 위한 ...
데이터의 무결성과 일관성
로컬 캐싱과 글로벌 캐싱
데이터 관련 객체
헥사고날 아키텍처
용어 애플리케이션 또는 서비스: 어떤 기능을 수행하는 소프트웨어 단위 컴포넌트: 독립적으로 배포 가능한 가장 작은 단위
build.gradle
JSON Response Body { "greetingStrArr": [ "hello", "world" ] }
build.gradle
JSON Response Body { "greetingStrArr": [ "hello", "world" ] }
SpringDoc을 사용하는 경우 다음 에러 발생 ``` Description:
Spring Loaded를 사용하여 컨테이너 재시작 없이 자바 클래스를 리로드하여 클래스 변경사항을 적용할 수 있음 기존 Hot Code Replacement(HCR)가 메소드 바디 변경만 허용했다면(즉, 메서드 시그니처는 그대로 유지해야함) Spring Loaded는 메...
다트 언어에서는 async와 await 키워드를 사용하여 비동기 프로그래밍을 구현할 수 있다. 비동기 방식으로 작업을 수행하는 이유는 하나의 작업이 수행되고 완료되기를 기다리는 동안 다른 작업을 동시에 수행하여 리소스를 효율적으로 사용하고 일련의 작업들을 빠르게 처리하기 위함이다....
Xcode Cloud를 사용하기 위한 요구 사항
다트에서 Null
다트 언어에서는 async와 await 키워드를 사용하여 비동기 프로그래밍을 구현할 수 있다. 비동기 방식으로 작업을 수행하는 이유는 하나의 작업이 수행되고 완료되기를 기다리는 동안 다른 작업을 동시에 수행하여 리소스를 효율적으로 사용하고 일련의 작업들을 빠르게 처리하기 위함이다....
Xcode Cloud를 사용하기 위한 요구 사항
다트에서 Null
쿠버네티스 클러스터 내부의 서비스(Service) 오브젝트에 대한 접근을 관리하는 오브젝트인 인그레스(Ingress)는 리소스에 정의된 규칙에 따라 라우팅을 수행한다. 인그레스의 라우팅 종류에는 단일 서비스로의 라우팅, 하나 이상의 서비스로의 라우팅(간단한 팬아웃(fanout)),...
도커 데몬은 컨테이너를 실행 및 관리하는 백그라운드 서비스이다. 쿠버네티스는 도커를 사용하여 클러스터 전반에 걸쳐 컨테이너들을 오케스트레이션함으로써 애플리케이션의 배포와 관리를 자동화한다. 로컬 환경에서 쿠버네티스를 통한 컨테이너 오케스트레이션 환경을 구축하기 위해 미니큐브(Min...
쿠버네티스 클러스터
중첩 멀티 프로젝트 구조
헥사고날 아키텍처
스프링 부트 플러그인
프론트 컨트롤러에서 요청/응답 처리 방법
스프링 MVC
리액티브 프로그래밍
프론트 컨트롤러에서 요청/응답 처리 방법
스프링 MVC
리액티브 프로그래밍
로컬 캐싱과 글로벌 캐싱
스프링은 캐시 추상화(cache abstraction) 기능을 제공한다. 캐시 추상화를 통해 기존 코드에 미치는 영향을 최소화하고 다양한 캐싱 라이브러리 구현체(예: Gemfire, Caffeine, EhCache 등)를 일관된 방법으로 사용할 수 있도록 도와준다. 스프링 프레임워...
웹플럭스에서는 스프링이 제공하는 캐싱 추상화 기능을 단순히 적용하더라도 올바르게 동작하지 않으며 그 원인은 리액티브 프로그래밍의 특성과 관련이 있다. 웹플럭스의 리액터가 제공하는 Mono와 Flux(이하 데이터 스트림 객체)는 데이터를 포함하고 있는 래퍼 객체이며, 데이터 스트림 ...
로컬 캐싱과 글로벌 캐싱
스프링은 캐시 추상화(cache abstraction) 기능을 제공한다. 캐시 추상화를 통해 기존 코드에 미치는 영향을 최소화하고 다양한 캐싱 라이브러리 구현체(예: Gemfire, Caffeine, EhCache 등)를 일관된 방법으로 사용할 수 있도록 도와준다. 스프링 프레임워...
웹플럭스에서는 스프링이 제공하는 캐싱 추상화 기능을 단순히 적용하더라도 올바르게 동작하지 않으며 그 원인은 리액티브 프로그래밍의 특성과 관련이 있다. 웹플럭스의 리액터가 제공하는 Mono와 Flux(이하 데이터 스트림 객체)는 데이터를 포함하고 있는 래퍼 객체이며, 데이터 스트림 ...
트랜잭션 관리
데이터베이스의 락
테스트 컨텍스트 프레임워크에서 트랜잭션은 테스트 클래스에 @TestExecutionListeners를 명시적으로 선언하지 않더라도 기본적으로 구성된 TransactionalTestExecutionListener에 의해 관리된다. 하지만 트랜잭션 지원을 활성화하려면 @ContextC...
트랜잭션 관리
데이터베이스의 락
테스트 컨텍스트 프레임워크에서 트랜잭션은 테스트 클래스에 @TestExecutionListeners를 명시적으로 선언하지 않더라도 기본적으로 구성된 TransactionalTestExecutionListener에 의해 관리된다. 하지만 트랜잭션 지원을 활성화하려면 @ContextC...
최근 작업 도중 docker-compose로 구성한 이미지 파일을 실행하려고 하니 operation not permitted 오류가 발생했습니다.
현재 오라클에서는 오라클 데이터베이스를 MacOS 운영체제에 직접 설치하여 사용할 수 있는 방법을 지원하지 않습니다. 따라서 가상 머신이나 컨테이너 기반 도커(Docker)를 사용하는 방법을 사용하면 됩니다.
1. 새로운 Django 프레임워크 프로젝트 생성
Webpack은 모듈 번들러(module bundler)입니다.
동시성과 병렬성
Deserialization 1. Byte array(converted from JSON formatted string) to Java object with custom deserializer Object class (empty constructor is needed)
Kafka 설치 Kafka Binary 다운로드: https://kafka.apache.org/downloads 윈도우 환경 세팅 (WSL2와 포트 연결) netsh interface portproxy add v4tov4 listenport=9092 listenad...
Deserialization 1. Byte array(converted from JSON formatted string) to Java object with custom deserializer Object class (empty constructor is needed)
Kafka 설치 Kafka Binary 다운로드: https://kafka.apache.org/downloads 윈도우 환경 세팅 (WSL2와 포트 연결) netsh interface portproxy add v4tov4 listenport=9092 listenad...
@Autowired
스프링 프로젝트
@Autowired
스프링 프로젝트
Serialization/Deserialization
Deserialization 1. Byte array(converted from JSON formatted string) to Java object with custom deserializer Object class (empty constructor is needed)
Serialization/Deserialization
Deserialization 1. Byte array(converted from JSON formatted string) to Java object with custom deserializer Object class (empty constructor is needed)
레이어드 아키텍쳐 패턴
SOLID 원칙
로드 밸런서
프록시 서버와 리버스 프록시 서버
GraalVM
자바 메모리 관리
가격 책정
스프링 클라우드 태스크
가격 책정
스프링 클라우드 태스크
HTTP/1.x와 HTTP/2.0
로드 밸런서
HTTP/1.x와 HTTP/2.0
로드 밸런서
어노테이션
자바 언어 기준
스레드
자바 언어 기준
스레드
엘라스틱서치에서 데이터를 저장하는 단위는 도큐먼트(document)이며, 도큐먼트는 인덱스(index)라는 논리적 단위에 저장된다. 일반적으로 데이터의 성격 별로 서로 다른 인덱스를 생성하여 데이터를 저장한다.
쿠버네티스 환경에서 엘라스틱서치 기본 설정
엘라스틱서치에서 데이터를 저장하는 단위는 도큐먼트(document)이며, 도큐먼트는 인덱스(index)라는 논리적 단위에 저장된다. 일반적으로 데이터의 성격 별로 서로 다른 인덱스를 생성하여 데이터를 저장한다.
쿠버네티스 환경에서 엘라스틱서치 기본 설정
객체 모델과 관계형 모델 간 패러다임 불일치(object–relational paradigm mismatch)와 ORM
하이버네이트와 JPA
오픈텔레메트리 API를 사용하여 수동 계측을 통해 트레이스 데이터를 생성하고 사용자화 할 수 있다. 오픈텔레메트리의 API에서 트레이스 시그널과 관련된 인터페이스는 다음과 같다. 트레이서 프로바이더 (tracer provider): API의 엔트리포인트이다. 트레이서에 대한 ...
현재 오라클에서는 오라클 데이터베이스를 MacOS 운영체제에 직접 설치하여 사용할 수 있는 방법을 지원하지 않습니다. 따라서 가상 머신이나 컨테이너 기반 도커(Docker)를 사용하는 방법을 사용하면 됩니다.
Webpack은 모듈 번들러(module bundler)입니다.
Webpack은 모듈 번들러(module bundler)입니다.
1. 새로운 Django 프레임워크 프로젝트 생성
병합 (Merge)
병합 (Merge)
병합 (Merge)
병합 (Merge)
JSON Response Body { "greetingStrArr": [ "hello", "world" ] }
JSON Response Body { "greetingStrArr": [ "hello", "world" ] }
1. 프로젝트 생성
1. 프로젝트 생성
객체 간 의존 관계
객체 간 의존 관계
객체 간 의존 관계
객체 간 의존 관계
Deserialization 1. Byte array(converted from JSON formatted string) to Java object with custom deserializer Object class (empty constructor is needed)
Deserialization 1. Byte array(converted from JSON formatted string) to Java object with custom deserializer Object class (empty constructor is needed)
Log4j는 API와 코어 두 가지가 있다. API는 애플리케이션 인터페이스를 제공한다. 코어는 컴파일 시간이 아닌 런타임에만 필요하다.
Log4j는 API와 코어 두 가지가 있다. API는 애플리케이션 인터페이스를 제공한다. 코어는 컴파일 시간이 아닌 런타임에만 필요하다.
Log4j는 API와 코어 두 가지가 있다. API는 애플리케이션 인터페이스를 제공한다. 코어는 컴파일 시간이 아닌 런타임에만 필요하다.
Spring Loaded를 사용하여 컨테이너 재시작 없이 자바 클래스를 리로드하여 클래스 변경사항을 적용할 수 있음 기존 Hot Code Replacement(HCR)가 메소드 바디 변경만 허용했다면(즉, 메서드 시그니처는 그대로 유지해야함) Spring Loaded는 메...
Spring Loaded를 사용하여 컨테이너 재시작 없이 자바 클래스를 리로드하여 클래스 변경사항을 적용할 수 있음 기존 Hot Code Replacement(HCR)가 메소드 바디 변경만 허용했다면(즉, 메서드 시그니처는 그대로 유지해야함) Spring Loaded는 메...
Paul Deitel의 Understanding Java 9 Modules 기고 내용 정리입니다.
Paul Deitel의 Understanding Java 9 Modules 기고 내용 정리입니다.
Paul Deitel의 Understanding Java 9 Modules 기고 내용 정리입니다.
Paul Deitel의 Understanding Java 9 Modules 기고 내용 정리입니다.
Serialization/Deserialization
Serialization/Deserialization
An ANTLR4 grammar for T-SQL https://github.com/antlr/grammars-v4/tree/master/sql/tsql
An ANTLR4 grammar for T-SQL https://github.com/antlr/grammars-v4/tree/master/sql/tsql
디렉터리 경로
디렉터리 경로
1. NVM 설치 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
1. NVM 설치 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
1. Riders 설치
1. Riders 설치
1. Riders 설치
Java
Java
Java
서브모듈
서브모듈
Model Binding
Model Binding
Model Binding
Model Binding
프록시 서버와 리버스 프록시 서버
프록시 서버와 리버스 프록시 서버
프록시 서버와 리버스 프록시 서버
프록시 서버와 리버스 프록시 서버
프록시 서버와 리버스 프록시 서버
디자인 패턴
디자인 패턴
레이어드 아키텍쳐 패턴
레이어드 아키텍쳐 패턴
애그리거트(Aggregate)와 명세(Specification)
애그리거트(Aggregate)와 명세(Specification)
애그리거트(Aggregate)와 명세(Specification)
자바 메모리 관리
자바 메모리 관리
데이터베이스 접근을 위해 필요한 사항
데이터베이스 접근을 위해 필요한 사항
Xcode Cloud를 사용하기 위한 요구 사항
Xcode Cloud를 사용하기 위한 요구 사항
프로그래밍에서 널
프로그래밍에서 널
쿠버네티스 클러스터
쿠버네티스 클러스터
동시성과 병렬성
동시성과 병렬성
동시성과 병렬성
동시성과 병렬성
동시성과 병렬성
잡 중복 실행 방지와 재시작 기능
잡 중복 실행 방지와 재시작 기능
잡 중복 실행 방지와 재시작 기능
잡 중복 실행 방지와 재시작 기능
잡 중복 실행 방지와 재시작 기능
스프링 클라우드 태스크
스프링 클라우드 태스크
로드 밸런서
스레드
스레드
스레드
스레드
데이터의 무결성과 일관성
타임아웃
타임아웃
Raoul-Gabriel Urma의 Tired of Null Pointer Exceptions? Consider Using Java SE 8’s “Optional”! 기고 내용 정리입니다.
태그
태그
용어 애플리케이션 또는 서비스: 어떤 기능을 수행하는 소프트웨어 단위 컴포넌트: 독립적으로 배포 가능한 가장 작은 단위
용어 애플리케이션 또는 서비스: 어떤 기능을 수행하는 소프트웨어 단위 컴포넌트: 독립적으로 배포 가능한 가장 작은 단위
헥사고날 아키텍처
헥사고날 아키텍처
의존성 또는 종속성이라는 용어가 많이 사용되고 있다. 의존성 주입, 의존성 역전 법칙이라는 용어가 널리 사용되는 것으로 보아 종속성 보다는 의존성이 더 많이 사용되는 듯하다. 어떤 것에 의존한다는 것, 어떤 것에 종속되었다는 표현은 두 대상이 얼마나 서로 연관되어 있냐는 관점에서 ...
의존성 또는 종속성이라는 용어가 많이 사용되고 있다. 의존성 주입, 의존성 역전 법칙이라는 용어가 널리 사용되는 것으로 보아 종속성 보다는 의존성이 더 많이 사용되는 듯하다. 어떤 것에 의존한다는 것, 어떤 것에 종속되었다는 표현은 두 대상이 얼마나 서로 연관되어 있냐는 관점에서 ...
코루틴(coroutine)은 비동기적으로 실행하려는 코드를 보다 쉽게 작성할 수 있게 도와주는 동시 실행 설계 패턴이다. 코루틴은 중단 가능한(suspendable) 연산, 즉 함수가 특정 시점에 실행을 중단했다가 나중에 다시 시작할 수 있는 연산으로 구성된다. 코틀린 언어는 비동...
코루틴(coroutine)은 비동기적으로 실행하려는 코드를 보다 쉽게 작성할 수 있게 도와주는 동시 실행 설계 패턴이다. 코루틴은 중단 가능한(suspendable) 연산, 즉 함수가 특정 시점에 실행을 중단했다가 나중에 다시 시작할 수 있는 연산으로 구성된다. 코틀린 언어는 비동...
레디스 클러스터
레디스 클러스터
SOP와 CORS
SOP와 CORS
SOP와 CORS
리액티브 프로그래밍
리액티브 프로그래밍
가격 책정
가격 책정
프로그래밍에서 열거 타입(또는 열거 형)(enumeration type)이란 값의 집합을 구성하는 특별한 자료형 및 값 타입이다. 열거 타입 변수는 사전 정의된 상수 집합이며 미리 정의된 값 중 하나여야 한다. 상수인 열거 타입 변수를 열거 타입 상수(enum type consta...
네트워크 구성
잭슨(Jackson)은 자바 JSON 파서(parser) 라이브러리이다. 자바 객체와 JSON 문자열 간 직렬화 및 역직렬화를 수행한다. com.fasterxml.jackson.databind.ObjectMapper를 사용하여 자바 객체(엔티티 객체)와 JSON 문자열 간 직렬화 ...
잭슨(Jackson)은 자바 JSON 파서(parser) 라이브러리이다. 자바 객체와 JSON 문자열 간 직렬화 및 역직렬화를 수행한다. com.fasterxml.jackson.databind.ObjectMapper를 사용하여 자바 객체(엔티티 객체)와 JSON 문자열 간 직렬화 ...
GraalVM
제네릭
제네릭
계약에 의한 설계(Design by Contract, DbC)(계약 프로그래밍, 계약에 의한 프로그래밍)는 컴포넌트 간 계약(contract)을 기반으로 하는 소프트웨어 설계 기법이다. 계약이란 소프트웨어를 구성하는 컴포넌트 중 클라이언트 컴포넌트와 서버 컴포넌트 간의 상호작용에 ...
HTTP는 애플리케이션 프로토콜을 위한 간단한 기능을 제공하지만 애플리케이션 시맨틱스(애플리케이션의 동작과 기능에 대한 의미 해석)를 정의하는데 불충분하다. HTTP는 클라이언트-서버 모델 기반의 단순한 상호작용 모델(interaction model)로서, 클라이언트와 서버 간 보...
HTTP는 애플리케이션 프로토콜을 위한 간단한 기능을 제공하지만 애플리케이션 시맨틱스(애플리케이션의 동작과 기능에 대한 의미 해석)를 정의하는데 불충분하다. HTTP는 클라이언트-서버 모델 기반의 단순한 상호작용 모델(interaction model)로서, 클라이언트와 서버 간 보...
HTTP/1.x와 HTTP/2.0
스프링 표현 언어(SpEL, Spring Expression Language)(이하 SpEL)란 런타임에 객체 그래프(object graph)를 탐색하는 표현 언어이다. 객체의 프로퍼티 조회 및 설정, 메서드 실행, 연산 수행, 표현식(expression) 실행, 빈 참조 등의 기...
모니터링과 관찰 가능성
모니터링과 관찰 가능성
오픈텔레메트리 API를 사용하여 수동 계측을 통해 트레이스 데이터를 생성하고 사용자화 할 수 있다. 오픈텔레메트리의 API에서 트레이스 시그널과 관련된 인터페이스는 다음과 같다. 트레이서 프로바이더 (tracer provider): API의 엔트리포인트이다. 트레이서에 대한 ...