일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- isolation level
- wagon-ssh
- github
- 람다표현식
- reactive
- zipWith
- circuitbreaker
- 3-way-handshake
- springboot
- StringBuilder
- optional
- hsts
- Kotlin
- deploy
- java
- tcp
- FCM
- wagon
- 4-way-handshake
- stringbuffer
- feign
- n+1
- token
- redis
- resilience4j
- intelij
- 코딩테스트
- jetbrain
- 날짜쿼리
- webflux
- Today
- Total
목록전체 글 (61)
JuBin's personal study blog
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로 수정하고 빌드
zipWith은 Reactor의 Mono에서 사용 가능한 함수 입니다. zipWith에 대해 아주 간단히 설명하고자 합니다. 위 사진은 zipWith 함수의 flow를 보여줍니다. 사진 설명을 하자면 초록색원 A, 노란색사각형 1은 각각 Mono에서 발생되는 return값 입니다. 각 도형 오른쪽 검은 실선은 해당 Mono가 return되는 시점입니다. zipwith(A,1)로 인해 결과물 A1이 return 됩니다. 반응형 프로그래밍에서 코드를 짜는 경우 서로 다른 두 Mono가 작업이 완료되는 시점에 특정 동작을 함수가 필요한 경우가 있습니다. 이러한 상황에 zipWith을 사용하면 유용합니다. return Mono.just(req).flatMap { this.bookingConfigService.g..
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: unable to access 'https://github.com/****/***.git/' 평소와 같이 작업 도중 push를 하려고 하니 다음과 같은 에러가 발생하였다. 알아보니 비밀번호 인증은 2021년 8월 13일까지만 지원하였고, 이후 개인 엑세스 토큰..
간단한 개념부터 정리해 보자. 리액티브 프로그래밍의 필요성 리액티브 프로그래밍이 세상에 소개된지는 오래 되었지만 지금까지 왜 주류로 올라서지 못하였을까? 아마 리액티브 프로그래밍을 써야할 정도의 대규모 서비스가 많지 않았기 떄문이였던것 같다. 세상은 새로운 시대로 접어들면서 스타트업도 수백만명의 사용자에게 컨텐츠를 제공할 수 있어야 하고 전 세계의 고객을 상대해야 하므로 24시간 동안 끊임없이 운영되어야 한다. 또한 클라우드 환경에서 어플리케이션을 운영하는 것이 보편화 되고 있어서 문제가 생기면 서버를 더 투입하면 된다 라는 예전 방식은 이제 통하지 않게 되었다. 개발자들은 기존 자원을 더 효율적이고 일관성 있게 사용하는 방법을 찾고 있으며, 그 해법이 바로 리액티브 스트림이다. Spring WebFlu..