언어

· 언어/java
서론 JDK 21이 발표됨에 따라 관련 업데이트 내용 정리 JDK 17 이후 최신 LTS 버전 주요 업데이트 내용 Record Patterns Pattern Matching for switch Virture Thread 표준화 Sequenced Collection Unnamed Classes and Instance Main Methods Unnamed Patterns and Variables Record Patterns Record 타입에 대한 destructed가 가능해졌다. 패턴 매칭 // As of Java 16 record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p...
작성 계기 Web3를 통한 프로젝트의 경우 truffle / hardhat 등의 Smart Contract을 위한 대중성있는 블록체인 프레임워크가 존재한다. Java에서도 Web3j 모듈에서 다양하게 지원하긴 하지만, Web3 프로젝트에 비해 그 과정이 상당히 복잡하고 러닝커브가 높다. Web3에 비해 커뮤니티 풀이 생각 외로 적고, 프로젝트 전체 플로우에 대해 참조할만한 블로그도 없어서 직접 작성하게 됐다. 사용 스택 Spring Boot 2.7 & Gradle 7.0 JDK 11 Solidity 0.8.19 위 기술 스택으로 사용한 이유 Gradle 8.0 이상의 프로젝트 (JDK 17 / Spring Boot 3.0)에서는 아직 지원이 안 되는듯하여 이슈로 올라와있다. Solidity 0.8.20 ..
Solidity를 사용하면서 겪었던 스토리지 충돌 관련 이슈 정리 Proxy - delegateCall()호출 시, 스토리지 충돌 문제 컨트랙의 변경을 위해(Smart Contract는 원칙상 변경이 불가하다) Proxy를 만들 수 있는 방법을 찾다가 delegateCall() 발견 데이터 로직을 담당하는 컨트랙(A)에서 데이터 저장소를 담당하는 컨트랙(B)에 접근할 때 delegateCall() 사용 이슈 발생 delegateCall()은 현재 컨트랙의 컨텍스트에서 사용하고자 하는 컨트랙의 함수에 접근하여 사용 가능 (msg.sender가 동일하기 때문에 프록시로 사용하기 유용하다) 문제는 Solidity에서 Storage 변수를 다룰 때, Slot이라는 저장소에 변수를 선언 된 순서대로 저장하게 되는..
Gas Cost를 왜 책정해야할까? Gas 비용이 없다면, 공격자의 Ddos 공격에 취약해진다. 따라서 컨트랙트 함수를 호출할 때마다 비용을 지불하는 방식으로 공격자에게 부담을 지워지게 하는 용도가 가장 큰듯하다. Gast Cost는 어떻게 책정되는가? 1 Ether = 10^9 Gwei = 10^18 wei Gas 비용은 개발자가 어떻게 컨트랙트를 작성하냐에 따라 상대적으로 많아질수도, 적어질수도 있다. Gas 책정 방식은 EVM opcode 참고 https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash Smart Contract를 구현할 때의 유의점 EVM opcode를 하나하나 찾아보고 컨트랙의 ..
· 언어/css
rem - 루트 요소에 있는 폰트 사이즈에 따라서 크기가 결정 em - 부모 요소에 있는 폰트 사이즈에 따라서 크기가 결정 level 1 level 2 level 3 level 4 .level1 { font-size: 2em; } .level2 { font-size: 2em; } .level3 { font-size:2em; } .level4 { font-size:2em; } level1의 font가 16px이면 2배씩 증가 em을 많이 사용하게 되면, 복잡한 구조 안에서 폰트 사이즈를 즉각적으로 개산하기 어렵다. .level1 { font-size: 2rem; } .level2 { font-size: 2rem; } .level3 { font-size: 2rem; } .level4 { font-size: ..
· 언어/java
자바의 컬렉션은 기존의 배열에서 처리하기 까다로웠던 데이터 처리를 위해서 만든 자바의 데이터 처리 집합이며 Java Collection Framework는 제일 상위 인터페이스인 Collection부터 하위 인터페이스의 구현을 통해 목적에 맞는 데이터 처리를 할 수 있게 해주는 기능을 제공한다. 아래는 Collection Framework의 기본 구성도이다. Collection 인터페이스에는 Set,List,Qeue 인터페이스를 포함하고 있고, Map은 Collection을 상속하진 않지만, Collection에 포함하고있다. Collection의 상세구조는 아래 그림과 같다. 1. Set 순서가 없는 데이터 집합이고, 중복을 허용하지 않는다. set은 따로 인덱스를 제공하지 않으므로 Iterator를 ..
· 언어/java
자바 개발 환경을 셋팅하다보면, 항상 저 세가지 JDK 패키지 중에 뭐를 선택해야할지 몰라서 검색해보곤 했다. EE(Entiprise Edition) - 자바의 기업용 배포판 - 자바를 사용해서 서버를 구축하거나 응용 개발을 위한 플랫폼 SE(Standard Edition) - 자바 표준 배포판 - 우리가 흔히 사용하는.. - 데스크톱과 서버응용 개발 플랫폼 ME(Micro Edition) - Smart Phone, PDA, 셋탑박스 등 제한된 리소스를 갖는 하드웨어에서의 응용 개발을 위한 플랫폼 - 제한된 리소스, 메모리나 저장 공간에 제한이 있는 기기에 적합 - Embeded나 가전 제품을 위한 API를 가지고 있음
· 언어/java
자바를 공부하면서 당연스럽게 다운받고 사용했던, jdk와 jre에 대해서 작성해보려고한다. JDK는 무엇인가? - Java Development Kit의 약자이며, 자바 application 구축을 위한 핵심 플랫폼 구성요소이다. JRE는 무엇인가? - Java Runtime Environment의 약자이고, 자바 프로그램을 구동시키기 위한 도구들로 구성된 패키지 이 두가지의 특징만을 가지고, 이해하려 했을 때는 이해가 잘안되서 이 관계를 자바 프로그램이 동작하는 구조에 맞춰서 써보면, -자바 프로그램이 동작하기 위해서는 3가지 기술이 필요한데, 이 세가지는 jdk, jre,jvm이다. - 이 중 jvm은 자바 프로그램을 실행하는 자바 플랫폼의 구성요소이고 - jre는 jvm을 생성하는 디스크 상의 부분..
iron_jin
'언어' 카테고리의 글 목록 (2 Page)