전체 글 55

Spring 자바, 스프링에서 객체 응답시 is로 시작하는 변수가 변경되는 문제

개발을 하다가 다음과 같은응답 객체로 응답을 받았는데내 예상과 달리 응답에 온 변수명이isSuccess → success로 변경되어 온 것을 발견할 수 있었다. 위는 내가 만든 응답 객체이다. 위는 BaseResponse를 상속해서 만든 ErrorResponse이다. 이러한 문제가 발생한 이유는자바빈 규약 때문이다. 자바빈 규약에 따르면boolean의 getter는 is변수명() 과 같이 is로 시작하고Boolean의 경우 getter는 get변수명() 과 같이 get으로 시작한다. 즉 @Getter 를 사용하여 getter를 생성한다면 자바빈 규칙에 따라boolean형 변수는 is변수명() 으로 getter를 생성한다. 여기서 변수명이 is로 시작하는 경우 중복이 되므로 자동으로 변수명을is를 제외한 ..

Spring 2024.05.25

spring jpa를 활용한 데이터 저장 성능 향상(saveAll(), bulk insert)

Spring boot를 이용하여 프로젝트 과제를 하다가,20만 건 이상의 데이터를 저장시키는 작업이 필요했다. “그냥 저장시키면 되겠지”라는 안일한 생각으로 저장로직을 작성해 저장을 시켜보니무려 40분 이라는 시간이 걸리는 게 아닌가.. 내 기준 40분이면 밥🍚 먹고 설거지까지 마칠 시간이라 도저히 용납할 수 없었다.그래서 어떻게 성능을 올릴 수 있을까 고민하는 시간을 가져봤다. 1. @Transactional 쓰기 지연을 활용할 수 없을까?어디서 가장 크게 성능 저하가 일어날까 고민해봤을 때db에 저장될 때 성능저하가 크게 일어나지 않을까 추측하였다. 왜냐하면 db에 작업을 할 때에는 매 번 db에 연결하기 위해 작업이 필요하기 때문이다.그래서 db에 연결하는 횟수를 줄이기 위한 방법을 고민하게 되었..

Spring/Spring Jpa 2024.05.16

[블록체인] 이더리움-consensus

Consensus consensus 메커니즘으로 proof-of-work, proof-of-stack, proof-of-history등이 존재고 이는 sybil attack을 막기 위한 consensus 메커니즘의 일부이다. 즉 이외에도 다른 여러 consensus 메커니즘이 존재한다. 이더리움 블록체인에서는 consensus에 도달한다는 것은 2/3의 노드가 상태에 동의했음을 의미한다. # 참고로 sybil attack이란 하나의 사용자가 여러 사람역할을 하는 것. 즉 ip를 바꿔가며 공격하기 등이다. Consensus Mechanusm 이더리움은 pos메커니즘을 사용하고, 이를 이용하여, stacker에게 validator가 입장비를 내어, 나쁜 일을 하면 돈을 slash하고 착한 일을 하면 rewo..

블록체인 2023.12.17

[블록체인] 이더리움, smart contract와 탈중앙화 애플리케이션

이더리움, smart contract와 탈중앙화 애플리케이션 스마트 컨트랙트란? 컨트랙트 계좌는 코드를 가지고 있고, 이에 대한 data storage를 가지고 있다. 참고로 컨트랙트 계좌는 누군가 ether를 옮기고 하는 것이 아니므로 private key가 필요 없다.(반대로 EOA는 private key로 인해 관리된다.) 스마트 컨트랙트란 단순히 EVM에 의하여 실행되는 컴퓨터 프로그램이다. 스마트 컨트랙트가 한번 배포되면 절대 바꿀 수 없다. 스마트 컨트랙트에 의한 실행 결과는 누구나 동일 하다. 그래서 이더리움이 wordl computer이다. 스마트 컨트랙트를 통해 펀딩을 받을 수 있다. 특정 수익 이상이면 어느 금액 돌려주겠다라고 할 수 있다. Life Cycle of a Smart Con..

블록체인 2023.12.17

[블록체인] 이더리움-트랜잭션(transaction)과 블럭(block)

Transactions 트랜잭션은 account로부터 sign된 암호화된 명령어이다. 계좌는 이더리움 네트워크의 상태를 update하기 위해 transaction을 발생시킨다. 즉 계좌이체를 하거나, 계좌로 contract account에 있는 스마트 컨트랙트를 실행하여 네트워크의 상태를 변경시키위해 transcaction을 발생시키는 데, 이는 암호화되었다는 뜻 가장 간단한 transaction은 한 계좌에서 다른 계좌로 ETH를 전송하는 것이다. 이더리움 트랜잭션은 externally-owned account(즉 컴퓨터가 아닌 사람이 관리하는 계정)에 의하여 발생한다. A가 B에게 1ETH를 보내는 트랜잭션의 경우, A에서 1ETH를 차감하고, B에게 1ETH를 증가시키는 행동은 트랜잭션 내부에서 일..

블록체인 2023.12.17

[블록체인] 이더리움-account

이더리움 이더리움에는 두가지 종류의 account가 존재한다. ETH를 저장하는 계좌 smart contracts를 보관하는 계좌smart contracts를 보관하는 계좌여기에 ETH를 보냄으로서 스마트 컨트랙트를 활성화 시킬 수 있다. 스마트 컨트랙트가 업로드되면, 그 주소에서 계속 존재하며, 사용되길 기다린다. 모든 계좌는 20byte로 구성된다. 이더리움의 message-passing framework에 의하여 서로 상호작용할 수 있는 다양한 계좌들로 구성되어 있다. 각 계좌는 상태가 존재하며 특정 주소와 연결되어 있다. externally owned accounts: 개인 키에 의해 관리되며 코드는 없다 contract accounts: contract code에 의해 관리되며 관련된 코드가 있..

블록체인 2023.12.17

[블록체인] 이더리움이란?

이더리움 기존의 비트 코인은 스크립트 언어로만 제한해 둬서 튜링 컴플리트 하지 못하며, smart contract가 존재하지만, 이 또한 매우 제한되어 있었다. 이에 이더리움은 튜링 컴플리트하며, 자유로운 smart contract를 추구하면서 나타났다. 이더리움도 비트코인과 마찬가지로 탈중앙화를 추구한다. 이더리움은 블록체인에 암호화폐와 더불어 거래 기록과 소프트웨어를 저장한다. 분산된 튜링 시스템: 합의에 이르는 네트워크에 의하여 스마트 컨트랙트가 실행된다. 블록체인의 보호 안에서 존재하는 튜링머신: 컨트랙트 상태를 블록체인에 저장하여 누구도 이를 수정, 부인할 수 없게 한다. 이더리움은 범용 컴퓨터(world computer)이다. 상태 수가 무한으로 갈 수 있으며(= state marchine),..

블록체인 2023.12.17

[블록체인] 라이트닝 네트워크와 비트코인 비교

비트코인과 라이트닝 네트워크 비교 Addresses와 Invoices, Transactions와 Payments 비트코인에서는 sender는 qr, 이메일을 통해 Bitcoin 주소를 받는 반면에 라이트닝 네트워크에서는 recipient가 invoice를 발행하여 qr, email을 통해 sender에게 전송한다. 비트코인 주소는 reusable하다. 또한 단일한 주소를 많은 payments를 받는 데에 사용할 수 있다. 또한 private 키를 잃어버리지 않는 한 언제든지 꺼내 사용할 수 있다. 반면에 라이트닝 네트워크에는 오직 특정 payment amount에 관해 사용되며, 이를 다시 사용할 수도, 이 이상을 보낼 수도 없고 invoice는 만료기간을 가지고 있다. 즉 라이트닝네트워크는 비트코인과 ..

블록체인 2023.12.17

[블록체인] 라이트닝 네트워크-pathfinding과 onion routing

pathfinding and routing source에서 destination으로 가는 경로를 찾는 것을 pathfinding이라 하며, 이렇게 찾은 경로를 통해 payment를 지불하는 과정을 routing이라고 한다. 라이트닝 네트워크는 pathfinding을 위하여 source-based protocol을 사용하며, routing을 위하여 onion-routed protocol을 사용한다. * source-based protocol이란? source-based란 sender가 의도되는 목적지까지 경로를 찾아야 함을 의미하며 source-based protocol은 sender가 경로를 찾는 데 사용되는 protocol을 의미한다. * onion-routed란 경로의 각 원소가 layered화 되어..

블록체인 2023.12.17

[블록체인] 라이트닝 네트워크- payment channels와 invoice

Payments Channels 채널 파트너들은 라이트닝 네트워크로 그들의 채널을 알릴 수 있으며, 다른 사람들에게 existence, capacity, fees of the channel을 알림으로써 남들이 사용하게 할 수 있다. routing fees: 채널 파트너들에게, channel을 사용한 댓가로 주는 금액 반대로 채널을 사람들에게 private으로 안 알릴 수도 있으며,그럼에도 이 채널의 존재를 아는 사람들에 의해서 사용될 수 있다. 새로운 노드가 들어왔을 때, 이 노드는 그의 peers들에게서 gossip protocol에 의해 발생하는 공지를 수집하여, 라이트닝 네트워크 내부 지도를 작성할 수 있다. 또한 이 내부 지도를 이용하여 특정 노드한테 가는 길을 찾고, 연결할 수 있다. Invoi..

블록체인 2023.12.17