일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- wagon-ssh
- try-catch-finally
- Class Loader
- optional
- 날짜쿼리
- tcp
- feign
- 코딩테스트
- circuitbreaker
- n+1
- jetbrain
- Kotlin
- intelij
- 람다표현식
- zipWith
- execution engine
- webflux
- springboot
- AutoCloseable
- 4-way-handshake
- try-catch
- resilience4j
- closeable
- Runtime data area
- java
- jvm
- 동작방식
- try-with-resources
- GC
- Hotspot VM
- Today
- Total
목록전체 글 (64)
JuBin's personal study blog

JVM 이란?Java Virtual Machine의 약자로, JVM 기반의 언어(Java, Kotlin, Scala 등)로 작성된 어플리케이션이 동작할 수 있는 환경을 제공하는 가상 머신 입니다. JVM은 어플리케이션과 OS 사이에서 중계 역할을 수행하며, 어느 운영체제 환경에서도 실행될 수 있습니다. Write Once And Run Anywhere! JVM 구성 요소클래스 로더(Class Loader)실행 엔진(Execution Engine)인터프리터(Interpreter)JIT 컴파일러(Just-In-Time)Garbage Collector런타임 데이터 영역(Runtime Data Area)메소드 영역(Method Area, Static Area, Class Area)힙 영역(Heap Area)스..
의존성 주입(Dependency Injection)이란?SpringFramework에서 지원하는 3대 핵심 프로그래밍 모델 요소(AOP, DI, IOC) 중 하나로, 객체 간의 관계(의존성)를 직접 생성해서 사용하는것이 아니라, 외부(Spring Container(DI Container))에서 관리되는 Bean을 런타임에 동적으로 주입 시켜주는 방식 입니다.의존성 주입이 필요한 이유public class Store { private Pencil pencil; public Store() { this.pencil = new Pencil(); }}문제점Store Class와 Pencil Class의 관계가 강결합 되어있다.(Pencil이 Store에 의존적이다.)두 Class가 ..
기존 try-catch-finallytry-catch-resources 이전의 try-catch-finally에서는 자원을 사용 후 finally 구문에 명시적으로 close() 메소드를 호출하여 사용한 자원을 해제 시켜줘야 했습니다. FileInputStream is = null; BufferedInputStream bis = null; try { is = new FileInputStream("test.txt"); bis = new BufferedInputStream(is); int data = -1; while((data = bis.read()) != -1){ // logic } } ..

TCP와 UDP는 모두 전송계층에서 사용되는 프로토콜 이다. 💬 전송계층은 송신자와 수신자를 연결을 제공하는 계층이다. 데이터 전달을 담당하며, 전달되는 패킷의 오류를 검사하고 재전송 등 제어를 담당한다. TCP TCP는 연속성보다 신뢰성이 있는 전송이 중요할때 사용하는 프로토콜이다. 연결 지향적 프로토콜이다. 💬 연결 지향적 프로토콜은 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜이다. 높은 신뢰성을 보장한다. 때문에 UDP보다는 속도가 느리다. 데이터를 안정적으로, 순서대로, 에러없이 교환할 수 있도록 한다. 3-way-handshaking 과정으로 연결을 설정하고, 4-way-handshaking 과정으로 연결을 해제한다. 3-way-handshaking과 4-way-handshak..

중앙 원격 저장소와 개인 원격 저장소를 나눠서 작업하는 방식인 Forking WorkFlow란? 중앙 원격 저장소의 프로젝트 참여자들은 자신의 원격 저장소(중앙 원격 저장소를 fork한 repo)와 이 fork한 저장소를 clone하여 개인 로컬 저장소를 가지고 협업을 진행하는 방식이다. 중앙 원격 저장소에 Push하는 방식이 아닌 자신의 원격 저장소에 코드를 Push하고, 이 Push된 내용은 중앙 원격 저장소에 PR 한다. 현재 회사 같은 경우에는 QA가 중앙 원격 저장소에 PR을 Merge하는 방식이다. 자신의 원격 저장소는 origin, 중앙 원격 저장소는 보통 upstream으로 정의하지만 여기서는 jpmerge로 정의한다. 작업 Flow를 정리하자면 1. 중앙 원격 저장소(jpmerge)를 f..
Isolation(고립성, 격리성)은 데이터베이스 트랜잭션에서 중요한 속성 중 하나로, 동시에 발생하는 여러 트랜잭션이 서로 간섭하지 않도록 보장하는 원칙입니다. 이것은 동시에 수행되는 여러 트랜잭션에도 불구하고 각 트랜잭션을 마치 독립적으로, 나아가 순차적으로 실행되는 것처럼 보이게 만듭니다. 고립성의 단계는 DBMS에서 설정할 수 있으며, 일반적으로 다음 네가지로 분류됩니다. 사용하는 DB마다 제공하는 Isolation Level는 다 다릅니다. 용어 정리 표준 Dirty Read : 아직 커밋되지 않은 변경 사항을 확인할 수 있습니다.(두 트랜잭션 중 하나의 트랜잭션이 롤백을 하던 안하던 발생) Non-repeatable read : 하나의 트랜잭션에서 read를 두번 수행하였는데 첫번째는 10이..
ACID는 데이터베이스 트랜잭션의 특성을 설명하는 데 사용되는 용어입니다. ACID는 Atomicity(원자성), Consistency(일관성), Isolation(고립성), Durability(지속성)의 첫 글자를 따온 약어입니다. ACID 원칙은 데이터의 정확성과 무결성을 보장합니다. Atomicity(원자성) 이 원칙은 트랜잭션이 데이터베이스에 모두 적용되거나, 전혀 적용되지 않아야 함을 의미합니다.(All or Nothingg) 즉, 트랜잭션의 모든 작업이 성공적으로 완료되거나, 아니면 어떠한 변화도 없어야 합니다. 예를 들면, 하나의 은행 계좌에서 다른 계좌로 돈을 이체하는 경우, 송금과 입금이 동시에 성공하거나 실패해야 합니다. 두 연산 중 하나만 성공하는 경우는 없어야 합니다. Consist..
데이터베이스 파티셔닝과 샤딩은 모두 대용량 데이터를 효과적으로 관리하고 검색하기 위한 데이터베이스 아키텍처 전략입니다. 이 두 기법은 비슷해 보일 수 있지만, 개념적으로 약간 다른 점이 있습니다. 데이터베이스 파티셔닝 데이터베이스 파티셔닝은 단일 데이터베이스 내에서 데이터를 여러 파티션으로 분할하는 프로세스입니다. 이 파티션은 각기 다른 테이블, 인덱스, 혹은 같은 테이블 내의 서로 다른 부분이 될 수 있습니다. 파티션의 주요 목적은 성능 향상, 관리 용이성 및 데이터의 가용성을 높이는 것입니다. 파티셔닝은 주로 큰 테이블을 관리 가능한 부분으로 나누는 데 사용되며, 파티션은 일반적으로 데이터의 특정 키값(예: 날짜, 지역 등)에 따라 생성됩니다. 예를 들어, 매일 생성되는 대량의 로그 데이터가 있는 경..
findAndModify와 update 연산자는 모두 MongoDB에서 도큐먼트를 수정하는 데 사용됩니다. 두 연산자는 목적과 사용법이 약간 다릅니다. findAndModify 쿼리 조건에 따라 단일 문서를 수정하고 반환합니다. 이 연산자는 주어진 쿼리 조건에 따라 일치하는 도큐먼트를를 검색하고, 해당 도큐먼트를 수정한 후에 수정된 도큐먼트를 반환합니다. 이 연산자는 일반적으로 단일 도큐먼트를 업데이트할 때 사용됩니다. 또한 update 된 도큐먼트를 반환합니다. 또한 DB Lock 관점에서 볼때 write 락을 사용하여 검색된 도큐먼트를 수정합니다. 이때, write 락은 해당 도큐먼트를 수정할 수 있는 권한을 가진 단일 스레드에게만 부여됩니다. 따라서, findAndModify 연산자는 도큐먼트 단위..
Build시 Error 내용 Error running 'ServiceTest.updateStatusTest': Command line is too long. Shorten command line for ServiceTest.updateStatusTestor also for JUnit default configuration? 해결방법 1. 해당 project Root경로에 .idea/workspace.xml 파일 open 2. section을 찾는다. 3. 프로퍼티 추가. 4. 재빌드 혹시 Test Class build시(Boot Test) 프로젝트 Settings > Gradle > Run tests using을 Gradle -> IntelliJ IDEA로 수정하고 빌드