본문 바로가기

이론

(58)
Java Singleton 패턴 1. Singleton이란?"애플리케이션 전체에서 딱 하나의 객체만 생성되도록 보장하는 패턴"공유 인스턴스 1개만 존재메모리 절약전역 접근 가능 (전역 변수처럼 사용됨)2. 사용 예시?설정 정보 저장 객체 (Config)DB 연결 객체로깅 시스템 (Logger)캐시 관리자전역 상태 저장 객체3. 기본 Singleton 구현 (Lazy 방식)public class Singleton { private static Singleton instance; // static: 클래스당 하나 private Singleton() { // 생성자 private → 외부에서 new 불가 } public static Singleton getInstance() { if (insta..
Java static 1. static 변수 예시 (공유됨)class Counter { static int count = 0; Counter() { count++; }}public class Main { public static void main(String[] args) { new Counter(); // count = 1 new Counter(); // count = 2 new Counter(); // count = 3 System.out.println("총 객체 수: " + Counter.count); // 👉 3 (공유됨) }}2. non-static 변수 예시 (객체마다 따로 존재) class Counter { i..
Java 배열 1. 배열이란?같은 타입의 데이터를 연속적으로 저장하는 자료구조크기 고정: 한 번 크기를 정하면 변경 불가인덱스는 0부터 시작기본형(int, double 등), 참조형(String, 객체 등) 모두 배열로 만들 수 있음2. 배열 선언 & 생성선언만int[] arr;배열 이름만 선언선언 + 생성int[] arr = new int[5];길이 5, 기본값 0선언 + 초기화int[] arr = {1, 2, 3};초기값 지정객체 배열 생성Person[] people = new Person[3];객체 3개 공간 생성 (null로 채워짐)🔹 new int[5]: [0, 0, 0, 0, 0]🔹 new Person[3]: [null, null, null]3. 배열 초기화 방식 비교 (new Type[] 생략 여부 포..
Java 형변환 1. 기본형(Primitive Type) 형변환기본형: byte, short, int, long, float, double, char, boolean 등이 중 boolean은 형변환이 불가능1-1. 자동 형변환작은 타입 → 큰 타입으로 변환할 때 자동으로 이루어짐.int i = 100; long l = i; // int → long (자동 형변환) float f = l; // long → float (자동 형변환) System.out.println(f); // 출력: 100.01-2. 강제 형변환큰 타입 → 작은 타입으로 변환할 때 (타입)을 명시해야 함.double d = 3.14; int i = (int) d; // double → int (소수점 제거됨) System.out.println(i); /..
이더리움 스마트 컨트랙트 이더리움의 두 가지 계정 유형이더리움 네트워크에서 작동하는 모든 엔티티는 외부 소유 계정(EOA) 또는 컨트랙트 계정(CA)의 형태를 가진다. EOA (Externally Owned Account):EOA는 사용자가 개인 키를 통해 제어하는 계정. EOA는 거래를 생성하고 이더를 전송하거나, 스마트 컨트랙트와 상호작용할 수 있다.EOA는 일반적인 사용자 계정으로, 트랜잭션의 서명을 통해 이더리움 네트워크와 상호작용한다. 중요한 점은, 개인 키를 통해 거래의 승인 및 실행이 이루어진다는 것이다.CA (Contract Account):CA는 스마트 컨트랙트를 배포함으로써 생성되는 계정이다. CA는 코드로 제어되며, 외부 트랜잭션이 전달될 때마다 자동으로 그 코드에 따라 실행된다.EOA와 달리 CA는 거래를 ..
Sort) Quick Sort, Merge Sort, Heap Sort 1. 퀵 정렬 (Quick Sort): O(n log n) ~ O(n²) def quick_sort(arr): if len(arr) pivot] return quick_sort(left) + middle + quick_sort(right) 2. 병합 정렬 (Merge Sort): O(n log n) def merge_sort(arr): if len(arr)  3. 힙 정렬 (Heap Sort): O(n log n)import heapqdef heap_sort(arr): heapq.heapify(arr) # 리스트를 힙으로 변환 return [heapq.heappop(arr) for _ in range(len(arr))]
Sort) Bubble Sort, Selection Sort, Insertion Sort 1. 버블 정렬 (Bubble Sort):  O(n²)def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr 2. 선택 정렬 (Selection Sort): O(n²) def selection_sort(arr): n = len(arr) for i in range(n): min_idx = i for j in range(i+1, n): if arr[j]  3. 삽입 정렬 ..
블록 크기, 포크, 오디널즈 1. 블록 크기와 확장 솔루션비트코인의 블록 크기는 한 블록에서 처리할 수 있는 거래 수를 결정하는 중요한 요소이다. 기본적으로 비트코인의 블록 크기는 1MB로 제한되어 있어, 거래가 몰릴 때는 네트워크 혼잡과 거래 처리 지연이 발생할 수 있다.1.1 블록 크기 증가이 문제를 해결하기 위해 블록 크기를 늘려 한 번에 더 많은 거래를 처리할 수 있도록 하자는 의견이 나왔다. 그중 대표적인 제안이 SegWit2x있다.SegWit2x: SegWit과 블록 크기 증가를 결합한 것이다. SegWit은 거래 서명 데이터를 별도의 공간에 저장함으로써 블록 내 공간을 효율적으로 사용하는 방식이다. "2x"는 블록 크기를 2MB로 증가시키려는 제안이지만, 커뮤니티 내에서 큰 논란을 일으켰다.확장성 문제를 해결하는 방법에..

728x90
반응형