![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/k206U/btrIc82Lhok/p9y0M4qIdrJdNzBnPtfLCK/img.jpg)
ApplicationLayer 에서 Database Layer에 접근하는 방법 3가지(Persistence Framework) 1) JDBC Template(또는 순수 jdbc) 2) Query Mapper(mybatis) 3) ORM(JPA) cf. Persistence(영속성): 데이터를 생성한 프로세스가 종료되어도 데이터가 사라지지 않게 하는 특성(생성된 데이터를 보관되어야한다는 성질을 의미함) 1. JDBC JDBC(Java Database Connectivity)는 썬 마이크로시스템즈에서 데이터베이스에 접근을 제공하는 자바 표준 API이다. 위 그림과 같이 JDBC 인터페이스는 다양한 JDBC Driver 구현체를 통해서 동일한 인터페이스로 구현이 되어 있다. 예를 들어, MySQL JDBC 드..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/F1MQc/btrIkpDp46W/wow6DUusi0Q2Jtktnm6RMK/img.png)
인터럽트(interrupt) 인터럽트란 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것을 말한다. 인터럽트가 발생하면 OS는 현재 CPU에 실행중인 기계어 코드를 중단하고 CPU가 해당 인터럽트 처리를 위한 프로그램(ISR; Interrupt Service Routine)으로 점프하여 해당 일을 수행 할 수 있도록 한다. 인터럽트의 의미는 생각보다 큰데, SW(instruction)에 의해서도 인터럽트가 발생할 수 있다. 예를 들어 DIV instruction을 실행할 때 0으로 나누어지거나, 주소 버스에서 할당되지 않는 주소공간을 액세스 한다든지 하는 경우를 예외(exception)..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/zNKGw/btstaxJmGku/QHVxa7ln1thk9rk3BTSmS1/img.jpg)
MyDATA의 오해 MyDATA 서비스는 한 회사에서 제공하는 것이 아니다. 신한은행 마이데이터 서비스, 네이버 마이데이터 서비스, 토스 마이데이터 서비스 등 여러회사가 출시할 수 있는 서비스이고 여러 회사가 경쟁을 하게 되는 구도이다. 여기서 경쟁이란 "어떻게 활용할 것인가"에 있다. MyDATA 서비스란? 본인신용정보관리업이라고 한다. 쉽게 말하면 신용정보, 은행기록, 보험정보, 쇼핑 데이터 등이 여러 곳에 흩어져 있고 이들을 MyDATA 서비스에서 묶어서 하나의 화면에 보여준다는 특징이 있다. 이를 통해 사용자에게 편리함을 제공한다. 예를 들어, 보험 정보를 알기 위해 보험 앱에 따로 들어가고, 신한은행 정보를 알기 위해 신한은행 앱을 따로 깔아 내 정보에 들어가는 등 번거로움이 없어진다.(사용자 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bxgJ2B/btrH7QuPF6g/EKIbsKaOeZyPcx8nk4VVTK/img.png)
Garbage Collection 이란?가비지 컬렉션은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기능이다. JVM에서 제공하는(JVM 중에서도 Execution Engine) 주요 기능 중 하나이다. 참고로 가비지 컬렉션은 JVM만의 기능은 아니다. Unreachable ObjectStack frame이 Stack에서 pop되면 해당 메소드가 참조하던 레퍼런스도 사라진다. 이때 heap에는 객체 데이터가 그대로 남게 되는데, 이를 unreachable object라 한다. 이러한 unreachable object는 가비지 컬렉터의 대상이 된다. 가비지 컬렉션 주요 과정가비지 컬렉터가 스택의 모든 변수를 스캔하면서 각각 어떤 객체를 참..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/xvSuy/btrH5aG96bQ/z5LYv8XdYyiP7KNVANsjX0/img.png)
Bean Scope Spring에는 6가지 bean scope이 있지만 기본적으로 Bean을 Singleton으로 관리한다. IoC 컨테이너 생성 시점에 Bean을 생성하는 이유(Bean Scope이 싱글톤일때) You can generally trust Spring to do the right thing. It detects configuration problems, such as references to non-existent beans and circular dependencies, at container load-time. Spring sets properties and resolves dependencies as late as possible, when the bean is actually cr..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/xPF61/btrIcEtQN8B/FKdO0HiWCeKTLXwwzplQh1/img.png)
Runtime Data Areas는 JVM이 운영체제로부터 할당받는 메모리 영역을 의미한다. JVM의 클래스 로더가 메모리에 바이트코드를 올리면, JVM의 Execution Engine은 JVM 메모리에 올라온 바이트코드들을 명령어 단위로 하나씩 가져와서 기계어로 변환시킨다. 변환된 기계어는 JVM의 메모리구조(Runtime Data Area)의 각 영역에 배치되며 GC와 함께 실행된다. Runtime Data Areas (5개) * 오라클(과거의 썬 마이크로시스템즈)의 HotSpot JVM 기준 모든 Thread 공유 1) Method(Static) Area Method Area, Class Area, Code Area, Static Area 라고도 불린다. JVM의 Execution Engine(실행..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/braPLl/btrIeNctxqZ/kbpKhambYpKygvbgf1ZGmK/img.png)
자바는 OS와 독립적으로 실행시킬 수 있다. 그 이유는 JVM이 OS에 의존적이기 때문인데, 즉, OS마다 다른 JVM이 존재하기 때문이다. C/C++는 링커, 로더를 포함한 운영체제 바로 위에서 직접적으로 실행되므로, 빠르고 가볍다. 하지만 개발에 있어서 그만큼 메모리 회수 등 개발자가 신경써야 할 부분이 많다. 또한 C/C++ 등의 전통적인 언어는 컴파일 플랫폼(CPU 아키텍처 16bit, 64bit 등 및 OS)에 따라 자료형형의 크기가 변한다. 그래서 윈도우에서 컴파일한 C/C++파일은 리눅스에서 안 돌갈 수도 있다. JVM은 이러한 문제를 근본적으로 해결한다. 자바 소스코드(.java)가 자바 컴파일러(javac.exe)를 거치고 나면, 자바 바이트코드(.class)를 생성하는데, 이 자바 바..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bgpmgd/btrH6HFvgl9/PmMUba4BrzAelKnthi0zV1/img.png)
스프링 프로젝트를 진행하면서 느꼈던 것은 그 목표를 분명히 알고 사용하지 않으면 그 가치를 제대로 얻기 힘들다는 것이였다. 스프링이 제공하는 기술들을 갖다 사용하면 단순히 스프링을 적용한 것 뿐이지 스프링의 장점이 활용되었다고 보기 힘들다. 따라서 스프링의 목적과 왜 만들어졌는지를 파악하고 스프링이 제공해주는 혜택을 제대로 누려서 활용해야 한다는 생각이 들었다. '스프링 프레임워크'란? Spring의 정의는 다음과 같다. 자바 엔터프라이즈급 개발을 쉽게 해주는 '애플리케이션 프레임워크' 위 스프링 정의를 보면 쉽게 와닿지 않을 것이다. 따라서 스프링의 정의에서 설명하고 있는 애플리케이션 프레임워크에 대해 알 필요가 있다. 애플리케이션 프레임워크? 애플리케이션 프레임워크를 이해하기 전에 프레임워크가 무엇인..
- Total
- Today
- Yesterday
- ci/cd
- docker
- CICD
- K8s
- Linux
- container
- GitOps
- Java
- 우분투
- github actions
- Controller
- db
- 카프카
- spring
- kafka
- argocd
- RDB
- golang
- 코틀린
- Non-Blocking
- Stream
- 쿠버네티스
- ubuntu
- rolling update
- LFCS
- go
- Kubernetes
- jvm
- helm
- 컨트롤러
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |