전체 글
-
비트코인 merkle root란?블록체인 2024. 9. 13. 06:33
비트코인의 Merkle Root는 블록 내의 모든 트랜잭션을 요약한 해시 값으로, 블록 헤더에 포함되는 중요한 요소 중 하나입니다. Merkle Root는 트랜잭션을 Merkle Tree(머클 트리)라는 구조로 정리하여 생성됩니다.Merkle Tree의 개념Merkle Tree는 트랜잭션들을 효율적으로 요약하고 검증하기 위해 사용하는 해시 트리 구조입니다. 이 트리 구조의 특징은 다음과 같습니다:각 트랜잭션은 트랜잭션 해시 값으로 변환됩니다.인접한 두 트랜잭션 해시 값을 해싱하여 상위 노드의 해시 값을 만듭니다.이 과정을 반복하여 트리의 최상단에 도달하는데, 이 최상단의 해시 값이 Merkle Root입니다.Merkle Tree 구성 예시블록 안에 여러 트랜잭션(Tx1, Tx2, Tx3, Tx4)이 있다..
-
비트코인 네트워크 통신, 비트코인 클라이언트 통신블록체인 2024. 9. 13. 05:41
비트코인 클라이언트 통신에서 RPC(Remote Procedure Call)는 올바르게 사용됩니다. 그러나 비트코인 네트워크의 통신과 비트코인 클라이언트와의 통신은 구분할 필요가 있습니다.1. 비트코인 네트워크 간 통신 (P2P 통신)비트코인 네트워크에서 노드 간의 통신은 P2P 프로토콜을 통해 이루어집니다.이 통신은 블록, 트랜잭션, 메시지 등을 교환하는 데 사용되며, TCP/IP 기반으로 동작합니다.즉, 네트워크 자체에서 이루어지는 통신은 P2P 방식이며, 여기서 RPC는 사용되지 않습니다.2. 비트코인 클라이언트와의 통신 (RPC 사용)비트코인 클라이언트(예: bitcoind 노드)와 외부 애플리케이션(지갑, 데이터 분석 도구 등)은 RPC를 통해 통신합니다.비트코인 클라이언트는 JSON-RPC 인..
-
Http1.1 vs http2.0 차이점 및 분석자바웹프로그래밍 2024. 9. 12. 22:26
HTTP/1.1과 HTTP/2.0의 주요 차이점은 웹 통신 방식과 성능 최적화에 있습니다. 간단하게 설명하자면, HTTP/2.0은 HTTP/1.1의 한계를 극복하고 더 빠르고 효율적인 웹 통신을 지원하기 위해 개발된 버전입니다. 차이점을 자세히 설명하자면:1. 전송 방식HTTP/1.1: 하나의 요청에 하나의 응답만 가능하며, 다중 요청을 처리할 때 병목 현상이 발생할 수 있습니다. 이를 해결하기 위해 여러 연결을 사용해 병렬 처리를 시도하지만, 네트워크 자원을 많이 사용하게 됩니다.HTTP/2.0: 하나의 연결로 여러 요청과 응답을 동시에 처리할 수 있습니다. 이를 **멀티플렉싱(Multiplexing)**이라고 하며, 하나의 연결을 효율적으로 사용하여 성능을 크게 향상시킵니다.2. 헤더 압축HTTP/1..
-
AOP vs OOP 차이점Spring 2024. 9. 12. 17:10
1. AOP의 목적: 횡단 관심사 분리AOP는 로깅, 보안, 트랜잭션 관리와 같은 공통 기능을 비즈니스 로직과 분리하기 위해 존재합니다. 만약 비즈니스 로직 안에서 AOP를 사용하게 된다면, 결국 AOP의 주요 이점 중 하나인 비즈니스 로직과 횡단 관심사 간의 분리가 무너지게 됩니다.예를 들어, 메서드 안에 로깅이나 트랜잭션 관리 코드를 직접 작성하는 것은 기존 방식의 절차적 프로그래밍으로 돌아가는 것과 같습니다.2. 비즈니스 로직 내에서는 이미 구체적인 작업이 수행됨비즈니스 로직 내에서는 특정한 작업(예: 결제 처리, 데이터 계산)이 수행되고 있습니다. AOP는 이 작업에 직접적으로 개입하는 것이 아니라, 이 작업 전후 혹은 에러 발생 시점에서 개입해야 합니다.비즈니스 로직 안에 Advice나 Poin..
-
[비대칭키 암호화 방식] 개인키 암호화 vs 공개키 암호화 정리블록체인 2024. 9. 11. 23:28
RSA 알고리즘에서 개인키로 암호화하고 공개키로 복호화하는 방식은 사실상 일반적인 암호화가 아닌 전자 서명에 가깝습니다. 여기서의 목적은 정보의 기밀성이 아니라 정보의 무결성과 출처 인증입니다.이런 상황을 이해하려면 RSA의 두 가지 중요한 사용 사례를 구분해야 합니다:기밀성 보장을 위한 암호화:일반적으로 기밀성을 위해서는 공개키로 암호화하고 개인키로 복호화합니다.이 방식에서는 오직 개인키를 가진 사람만이 암호화된 메시지를 복호화할 수 있어, 메시지의 기밀성을 보장합니다.전자 서명 (출처 인증 및 무결성 보장):반대로 개인키로 암호화하고 공개키로 복호화하는 방식은 전자 서명에 사용됩니다.개인키로 암호화된 데이터를 공개키로 복호화할 수 있다는 것은 그 데이터가 특정 개인(개인키 소유자)에 의해 생성되었음을..
-
HttpServletReqeust에서 getInpustStream을 한번만 사용가능한 이자바웹프로그래밍 2024. 9. 6. 18:30
1. 네트워크 소켓을 통한 데이터 전달HTTP 요청이 서버로 전달되면, 서버는 클라이언트와의 네트워크 소켓 연결을 통해 데이터를 주고받습니다. 클라이언트가 데이터를 보내면, 이 데이터는 바로 메모리에 적재되는 것이 아니라 서버의 네트워크 버퍼로 먼저 들어오게 됩니다. 이 네트워크 버퍼에서 데이터를 읽어들이기 위해 InputStream을 사용합니다.요청 본문 데이터는 네트워크 소켓을 통해 서버로 전달됩니다.getInputStream()을 호출할 때까지 요청 본문은 메모리로 읽어들이지 않습니다.getInputStream()을 호출하는 순간, 서버는 소켓을 통해 데이터를 읽어들여서 이를 처리합니다.2. InputStream을 통한 데이터 읽기getInputStream()을 호출하면, 서버는 네트워크 버퍼에서 ..
-
이진트리란?? 이진트리 데이터구조를 java로 구현하기 with 치우친 트리알고리즘 2024. 8. 22. 11:49
이진 트리(Binary Tree)는 각 노드가 최대 두 개의 자식을 가질 수 있는 트리 자료 구조입니다. 트리는 계층적인 구조로, 루트(root)라고 불리는 최상위 노드에서 시작하여 그 아래로 연결된 노드들로 이루어집니다. 이진 트리는 데이터의 효율적인 탐색과 관리에 자주 사용되는 자료 구조입니다.이진 트리의 주요 구성 요소노드(Node): 트리의 각 요소를 나타냅니다. 각 노드는 세 가지 주요 부분으로 이루어집니다:데이터: 노드가 저장하는 값왼쪽 자식: 노드의 왼쪽에 연결된 하위 노드오른쪽 자식: 노드의 오른쪽에 연결된 하위 노드루트(Root): 트리의 최상단 노드. 트리의 시작점입니다.자식(Child): 다른 노드에 의해 가리켜지는 노드. 트리의 하위 요소로, 왼쪽 자식과 오른쪽 자식으로 구분됩니다...
-
StepContribution 와 ChunkContext[Spring batch]Spring/Spring Batch 2024. 8. 7. 10:23
Spring Batch에서 StepContribution과 ChunkContext는 배치 처리에서 중요한 역할을 합니다. 이 두 객체는 배치 작업의 상태를 추적하고, 각 청크(chunk) 및 단계(step)의 실행 정보를 제공합니다.StepContributionStepContribution은 단계의 기여도를 나타내며, 특정 단계가 얼마나 많은 데이터를 읽고 처리했는지 등의 통계를 포함합니다. 이 객체는 주로 배치 작업의 진행 상황을 모니터링하고 기록하는 데 사용됩니다.ChunkContextChunkContext는 청크 수준에서의 컨텍스트 정보를 제공합니다. 청크는 읽기-처리-쓰기 작업의 단위이며, ChunkContext는 청크 처리 중에 발생하는 상태 정보를 유지합니다. 예제 시나리오실생활 예제로는 은행..