Skip to the content.
osk2090@nebulix:~$ grep -i
📅 2026년 07월 17일 Database

> pg_prewarm 사용하기

데이터베이스가 재시작되면 버퍼에 유지되고 있던 데이터들은 모두 제거되며 shared buffer에 다시 채워지기 전까지 해당 데이터에 접근하면 쿼리 성능이 떨어진다. 이때 pg_prewarm을 사용하면 수동 캐싱을 하거나 환경설정을 통해 자동 캐싱을 할 수 있...

📅 2026년 07월 04일 Database

> PostgreSQL의 대량 데이터 처리: 링 버퍼(Ring Buffer)와 VACUUM 동작 분석

일시적인 배치 작업으로 대량 데이터들을 처리해야된다면 이전에 배웠던 Shared Buffer 영역을 사용하게 될것이다. 해당 데이터들은 일시적으로 사용되는 데이터들인데 Shared Buffer 영역을 차지하게 되면 정작 hit율이 많은 데이터들은 victim 버...

📅 2026년 07월 04일 Database

> PostgreSQL의 버퍼 교체 알고리즘: Clock Sweep 동작 원리

데이터베이스 시스템에서 메모리는 한정된 고비용 자원이기 때문에 효율적인 관리가 필수적입니다. PostgreSQL에서는 이를 위해 Clock Sweep 알고리즘을 사용하여 공유 버퍼를 관리합니다. 메모리에 올라와 있는 데이터가 자주 사용되지 않는다면(즉, 캐시 ...

📅 2026년 04월 19일 Database

> PostgreSQL Shared Buffer 메커니즘 분석

일단 shared buffer 영역이 존재하는 이유는 매번 쿼리를 날릴때마다 DB는 디스크에 접근해서 데이터를 가져오기엔 비용과 부하가 발생한다. 이걸 해결하려면 메모리에 데이터를 미리 캐싱해서 올려두면 매번 디스크 IO를 발생시키지않고 응답속도와 비용절감을 ...

📅 2026년 03월 22일 Database

> PostgreSQL FORK 영역

create table tab_OID(id integer); --테이블생성 -- 위에서 생성한 테이블의 oid 조회 select OID, relname from pg_class where relname ='tab_oid'; --16426,tab_oid selec...

📅 2026년 01월 17일 Kubernetes

> CNI 개념

[Kubernetes] CNI, Flannel, 그리고 Service의 차이 완벽 정리 쿠버네티스를 공부하다 보면 네트워크 부분에서 머리가 아파옵니다. CNI, Flannel, Service… 다 통신을 하게 해주는 것 같은데, 도대체 무슨 차이가 있을까요? ...

📅 2026년 01월 11일 Kubernetes

> Kubernetes 개념정리

[Kubernetes] Kind로 실습하며 정리한 핵심 개념 요약 (노드, 컨트롤러, 서비스) 로컬 쿠버네티스 학습 도구인 **Kind(Kubernetes in Docker)**를 사용하여 실습하면서 알게 된, 초심자가 헷갈리기 쉬운 핵심 개념들을 정리해 보았...

📅 2024년 12월 26일 Database

> MySQL InnoDB B+Tree 페이지 분할(Page Split)과 .ibd 파일 구조 분석

MySQL InnoDB 스토리지 엔진은 모든 테이블 데이터를 B+Tree 구조의 클러스터드 인덱스(Clustered Index) 형태로 저장하며, 실제 디스크 상의 데이터는 16KB 단위의 페이지(Page)로 구분되어 .ibd 단일 테이블스페이스 파일에 기록...

📅 2024년 11월 30일 Database

> Oracle, Postgresql, Mysql(InnoDB)

Oracle 오라클에서 트랜잭션이 커밋되면 트랜잭션 테이블의 undo 세그먼트 헤더의 state 값을 10(active) -> 9(committed) 처리 scn(system change number)에는 현재 커밋시점의 scn으로 업데이트 ...

📅 2024년 11월 23일 Database

> Postgresql에서 Transaction ID 를 통해 데이터 롤백과정 정리

예시의 데이터로 tmin=1, value=”one”데이터가 트랜잭션으로 수정이 발생하면 물리적으로 새 로우가 생성되고 tmin=2, tmax=null, value=”two” 상태로 생성 변경전의 로우에는 tmax=2로 변경이 된다.(현재 value=...

📅 2024년 10월 04일 Database

> Spring @Transactional(readOnly = true)의 성능 최적화 동작 원리 분석

스프링 프레임워크 기반 백엔드 애플리케이션 개발 시 조회 전용 서비스 메서드에 @Transactional(readOnly = true) 옵션을 부여하는 것은 보편적인 관례(Best Practice)입니다. 단순히 “조회 성능이 좋아진다”를 넘어, 계층별(스프링...

📅 2024년 06월 23일 Life & Career

> [회고] 멀티스레드 환경에서 TreeMap을 사용했을때 이슈

TreeMap의 멀티스레드 환경에서의 문제와 해결 방법 회사 프로젝트에서 멀티스레드 환경에서 TreeMap을 이용하여 기본값을 설정하고, 요청이 오면 해당 값을 확인한 후 TreeMap에 값이 없으면 해당 값을 넣고 가져오는 방식의 로직을 사용했습니다. 그러나...

📅 2023년 10월 06일 Java

> try-with-resources에 대해...

package org.example; import java.lang.ref.Cleaner; public class Room implements AutoCloseable { // 자동 자원 회수를 위한 인터페이스 구현 private static fina...

📅 2022년 11월 13일 Life & Career

> Spring 개발자의 Node.js (Express & NestJS) 기술 스택 전환 및 적응기

안녕하세요, 백엔드 개발자 버즈입니다. 최근 회사 업무와 다양한 사유로 개인 블로그와 GitHub 활동에 다소 소홀했습니다. 그동안 회사 프로젝트 개발 및 새로운 기술 스택의 도입 때문에 눈코 뜰 새 없이 바쁜 시간을 보냈기 때문인데요. 오늘은 그 과정에서 겪었...

📅 2021년 10월 21일 Kafka

> 카프카 기본 개념 설명

카프카 브로커/클러스터/주키퍼 카프카 브로커는 카프카 클라이언트와 데이터를 주고받기 위해 사용되는 주체이자 데이터를 분산 저장하여 장애가 발생하더라도 안전하게 사용할 수 있도록 도와주는 애플리케이션이다. 하나의 서버에는 한 개의 카프카 브로커 프로세스가 실행...

📅 2021년 10월 16일 Kafka

> Kafka-AWS 연동

$ https://archive.apache.org/dist/kafka/3.0.0/kafka_2.12-3.0.0.tgz//자바 설치 $ java -version $ wget https://archive.apache.org/dist/kafka/3.0.0/kafka...

📅 2021년 09월 30일 Database

> 다중 DB 모듈화

입사하자마자 Spring Batch로 이용하여 멀티데이터베이스를 제어하는 코드를 짰다. 바로 본론으로 들어가보자. 1.resources/application.yml 생성 datasource: DB 종류 이름1: first: jdbc...

📅 2021년 08월 30일 Spring Batch

> Spring-Batch:Skip/Retry

참조:https://oingdaddy.tistory.com/183 [[Spring Batch] Skip/Retry Simple Example (Springboot based) Spring Batch의 기본적인 기능들을 지난 포스팅들을 통해 알아보았다. 이번에...

📅 2021년 08월 30일 Spring Batch

> Spring-Batch:Listener

참조:https://oingdaddy.tistory.com/180 [[Spring Batch] Listener Example (Springboot based) 지난 글에서 다뤘던 Springboot Batch Chunk Example에서 소스들을 살펴 볼때 ...

📅 2021년 08월 26일 Spring Batch

> Spring-Batch 의 처리 방법

배치를 처리할 수 있는 방법은 크게 2가지가 된다. Tasklet을 사용한 Task기반 처리 배치 처리 과정이 비교적 쉬운 경우 쉽게 사용 대량 처리를 하는 경우 더욱 복잡 하나의 큰 덩어리를 여러 덩어리로 나누어 처리하기 부적합 @Bean ...

📅 2021년 08월 26일 Spring Batch

> Spring-Batch

출처:https://cheese10yun.github.io/spring-batch-basic/ 스프링 부트 배치의 장점 대용량 데이터 처리에 최적화되어 고성능을 발휘한다. 효과적인 로깅,통계처리,트랜잭션 관리 등 재사용 가능한 필수 기능을 지원한다....

📅 2021년 08월 23일 Spring Batch

> Spring-Batch

참조:https://deeplify.dev/back-end/spring/batch-tutorial 스프링 배치(Spring Batch) 배치 프로세싱은 일괄처리하는 뜻을 가지고 있다. 일괄처리의 의미는 일련의 작업을 정해진 로직으로 수행하는 것이라고 할 수...

📅 2021년 08월 18일 Etc

> JPA

참조:https://velog.io/@modsiw/JPAJava-Persistence-API%EC%9D%98-%EA%B0%9C%EB%85%90 [JPA(Java Persistence API)의 개념 자바 ORM 기술에 대한 표준 명세로, JAVA에서 제공하는...

📅 2021년 08월 12일 Spring

> AOP

참조:https://velog.io/@max9106/Spring-AOP%EB%9E%80-93k5zjsm95 AOP란 Aspect Oriented Programming의 약자로 흩어진 Aspect들을 모아서 모듈화 하는 기법이다. 서로 다른 클래스더라도 비...

📅 2021년 08월 12일 Etc

> DI

참조:https://velog.io/@wlsdud2194/what-is-di [[DI] Dependency Injection이란 무엇일까? Dependency Injection, 의존성 주입이 무엇이고 어떤 이점이 있는지 예시를 통해 정리한 글입니다. ve...

📅 2021년 08월 11일 Etc

> REST API

참조:https://velog.io/@taeha7b/api-restapi-restfulapi [API, REST API, RESTful API 개념정리 API, REST API, RESTful API 말은 많이 들었는데 무엇인지 모르는 분들, 추상적으로 ‘이...

📅 2021년 08월 11일 Design Pattern

> [Design Pattern] 전략 패턴(Strategy Pattern)의 이해와 Spring DI 활용

소프트웨어 디자인 패턴 중 가장 빈번하게 사용되고 객체지향 설계의 꽃이라 불리는 패턴이 있습니다. 바로 전략 패턴(Strategy Pattern)입니다. 전략 패턴을 적용하면 알고리즘(실제 비즈니스 로직)을 사용하는 클라이언트 코드의 수정 없이도, 런타임에 동적...

📅 2021년 08월 10일 Design Pattern

> [Design Pattern]Facade Pattern

파사드패턴이란? 건물의 정면을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미한다. 파사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고 ...

📅 2021년 08월 09일 Design Pattern

> [Design Pattern]Observer Pattern

public class User1 extends Observer{ public User1(String msg){ this.msg = msg; } } 참조:https://coding-factory.tistory.com/710 ...

📅 2021년 08월 09일 Design Pattern

> [Design Pattern]Decorator Pattern

참조:https://coding-factory.tistory.com/713?category=974095 데코레이터 패턴이란? 데코레이터 패턴은 주어진 상황 및 용도에 따라 어떤 객체에 책임(기능)을 동적으로 추가하는 패턴을 말한다. 데코레이터 말 그대로 장...

📅 2021년 08월 09일 Design Pattern

> [Design Pattern]Proxy Pattern

참조:https://coding-factory.tistory.com/711 프록시 패턴이란? 프록시는 대리인이라는 뜻으로 무엇인가를 대신 처리하는 의미이다. 일종의 비서라고 생각하면 된다.사장님한테 사소한 질문을 하기보다는 비서한테 먼저 물어보는 개념이라고...

📅 2021년 08월 08일 Design Pattern

> [Design Pattern]Adapter Pattern

참조:https://lee1535.tistory.com/72?category=819409 [Lee’s Grow Up lee1535.tistory.com](https://lee1535.tistory.com/72?category=819409) 어뎁터 패턴이란?...

📅 2021년 08월 08일 Design Pattern

> [Design Pattern]Singleton Pattern

참조:https://elfinlas.github.io/2019/09/23/java-singleton/ [Java에서 싱글톤(Singleton) 패턴을 사용하는 이유와 주의할 점 Java에서 Singleton 패턴이란?Singleton(이하 싱글톤) 패턴은 자...

📅 2021년 08월 06일 Etc

> DTO,VO.DAO에 대해서

DAO(Data Access Object) 데이터베이스의 data에 접근하기 위한 객체이며 데이터베이스 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해서 사용한다. 사용자는 자신이 필요한 interface를 DAO에게 던지고 이 interface를...

📅 2021년 08월 03일 Database

> [mysql]기본 문법

select select 열 이름(들) from 테이블명; =테이블명에서 열 이름(들)을 가지고 와라 전체출력-select * from 테이블명 응용-select 열이름1,열이름2 from 테이블명 (선택한 열이름들을 출력한다.) 1.숫자 제한 se...

📅 2021년 07월 31일 Etc

> REST 방식과 Ajax를 이용하는 댓글 처리

REST는 Representational State Transfer의 약어로 하나의 URI는 하나의 고유한 리소르를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다.예를 들어 /boards/123은 게시물 중에서 123번이라는 고유한 의미...

📅 2021년 07월 27일 Spring

> 스프링 MVC 프로젝트 - 검색처리

게시물 관리에서 마지막은 다양한 검색 처리이다. 검색 기능은 다시 검색 조건과 키워드로 나누어 생각해 볼 수 있다.검색 조건은 일반적으로 태그를 이용해서 작성하거나 를 이용하는 경우가 많다.과거에는 를 이용하는 경우가 더 많았지만 최근에는 일반 웹사이트에...

📅 2021년 07월 22일 Spring

> 스프링 MVC 프로젝트 - 페이징화면 처리

URL으니 파라미터를 이용해서 정상적으로 원하는 페이지로 이동하는 것을 확인했다면 화면 밑에 페이지 번호를 표시하고 사용자가 페이지 번호를 클릭할 수 있게 처리한다. 페이지를 보여주는 작업은 다음과 같은 과정을 통해서 진행한다. 브라우저 주소창에서 페...

📅 2021년 07월 19일 Spring

> 스프링 MVC 프로젝트 - MyBatis와 스프링에서 페이징 처리

MyBatis는 SQL을 그대로 사용할 수 있기 때문에 인라인뷰를 이용하는 SQL을 작성하고 필요한 파라미터를 지정하는 방식으로 페이징 처리를 하게 된다.여기서 신경써야 하는 점은 페이징 처리를 위해서는 SQL을 실행할 때 몇 가지 파라미터가 필요하다는 점이다...

📅 2021년 07월 18일 Spring

> 스프링 MVC 프로젝트 - 오라클 데이터베이스 페이징 처리

구현된 기능들 중 가장 미숙한 부분은 목록 페이지이다.목록 페이지는 기본적으로 페이징처리가 필요한데 상식적으로 생각해 봐도 수많은 데이터를 한 페이지에서 보여주면 처리 성능에 영향을 미친다.또한 브라우저에서도 역시 데이터의 양이나 처리 속도에 문제를 일으키게 된...

📅 2021년 07월 14일 Spring

> 스프링 MVC 프로젝트 - 화면처리

화면을 개발하기 전에는 반드시 화면의 전체 레이아웃이나 디자인이 반영된 상태에서 개발하는 것을 추천한다. 일부 개발자들은 화면을 나중에 처리한다고 생각하고 진행하는 경우가 있는데 결과적으로는 두 배의 시간을 들이는 결과가 될 가능성이 높기 때문에 권장하지는 않...

📅 2021년 07월 07일 Spring

> 스프링 MVC 프로젝트 - 프레젠테이션(웹)계층의 CRUD 구현

비즈니스 계층의 구현까지 모든 테스트가 진행되었다면 이제 남은 작업은 프레젠테이션 계층인 웹의 구현이다. Controller의 작성 스프링 MVC의 Controller는 하나의 클래스 내에서 여러 메서드를 작성하고, @ResquestMapping 등을 이용...

📅 2021년 07월 06일 Spring

> 스프링 MVC 프로젝트 (4) 비즈니스 계층(Service Tier)의 설계와 구현

비즈니스 계층 비즈니스 계층은 고객의 요구사항을 반영하는 계층으로 프레젠테이션 계층과 영속 계층의 중간 다리 역할을 하게 된다. 영속 예층은 데이터베이스를 기준으로 해서 처리하게 된다. 예컨데,’쇼핑몰에서 상품을 구매한다’고 가정해 보자.해당 쇼핑몰의 로직...

📅 2021년 07월 06일 Spring

> 스프링 MVC 프로젝트 (3) 영속 계층(Persistence Tier)의 CRUD 구현

영속/비즈니스 계층의 CRUD 구현 코드를 이용해서 데이터에 대한 CRUD 작업을 진행한다. 다음과 같은 순서로 진행한다. 테이블의 칼럼 구조를 반영하는 VO(Value Object) 클래스의 생성 MyBatis의 Mapper 인터페이스의 작성/X...

📅 2021년 07월 02일 Spring

> 스프링 MVC Controller-4

Controller의 Exception 처리 Controller를 작성할 때 예외 상황을 고려하면 처리해야 하는 작업이 엄청나게 늘어날 수 밖에 없다. 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있다. @ExceptionHand...

📅 2021년 07월 01일 Spring

> 스프링 MVC Controller-3

Controller의 리턴 타입 스프링 MVC의 구조가 기존의 상속과 인터페이스에서 어노테이션을 사용하는 방식으로 변한 이후에 가장 큰 변환 중 하나는 리턴 타입이 자유로워 졌다는 점이다. Controller의 메서드가 사용할 수 있는 리턴 타입은 주로 다...

📅 2021년 06월 30일 Spring

> 스프링 MVC Controller-2

Model이라는 데이터 전달자 Controller의 메서드를 작성할 때는 특별하게 Model이라는 타입을 파라미터로 지정할 수 있다. Model 객체는 JSP에 컨트롤러에서 생성된 데이터를 담아서 전달하는 역할을 하는 존재이다. 이를 이용해서 JSP와 같은...

📅 2021년 06월 30일 Spring

> 스프링 MVC Controller-1

@RequestMapping의 변화 @Controller 어노테이션은 추가적인 속성을 지정할 수 없지만, @RequestMapping의 경우 몇 가지의 속성을 추가할 수 있다. 이 중에서도 가장 많이 사용하는 method 속성이다.그중에서 GET방식과 PO...

📅 2021년 06월 29일 Spring

> 스프링 MVC Controller

스프링 MVC를 이용하는 경우 작성되는 컨트롤러에는 특징이 있다. HttpServletRequest/HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현 다양한 타입의 파라미터 처리,다양한 타입의 리턴 타입 사용 가능 GE...

📅 2021년 06월 25일 Spring

> MyBatis

MyBatis MyBatis는 복잡한 SQL문을 따로 정의하여 유지보수하기 편리한 장점이 있다. -spring-jdbc/spring-tx:스프링에서 데이터베이스 처리와 트랜잭션 처리 -mybatis/myBatis-spring:Mybatis와 스프링 연동용 ...

📅 2021년 06월 24일 Spring

> Lombok의 동작 원리와 @Data 사용 시 주의해야 할 점

자바(Java) 진영에서 보일러플레이트(Boilerplate) 코드를 획기적으로 줄여주는 라이브러리를 꼽으라면 단연 롬복(Lombok)일 것입니다. 개발자가 게터(Getter), 세터(Setter), 생성자(Constructor) 등을 직접 타이핑하지 않아도 어...