반응형

분류 전체보기 277

클래스 로더 시스템

JVM 구조에서도 말했듯이 클래스 로더 시스템은 3개로 나누어서 볼 수 있다고 말했다. 거기에 대한 내용을 좀 더 자세하게 정리해보자. 로딩(loading) 클래스 로더가. class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 "메서드" 영역에 저장 이때 메소드 영역에 저장하는 데이터 FQCN, 클래스, 인터페이스, 이늄, 메서드와 변수가 있다 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 "힙"영역에 저장된다. 링크(Linking) 레퍼런스를 연결하는 과정이다. 링크에서도 3가지로 나눌 수가 있다. 검증 : 바이트코드 검증 기는 생성된 자바 바이트코드가 적절한지 아닌지에 대해서 검증하며 검증이 실패할 경우 검증 오류를 보낸다. 준비 : 모든 정적 변수의 메모리가 할당되며..

Language/Java 2022.05.05

JVM 구조

JVM은 자바 가상 머신(Java Virtual Machine)의 약자이다. JVM은 자바 소스코드로부터 만들어지는 자바 바이너리 파일(. class)을 실행할 수 있다. 또한 JVM은 플랫폼에 의존적이다. 즉 리눅스의 JVM과 윈도우즈의 JVM은 다르다. 단, 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있다. 클래스 로더 시스템 이란? class에서 바이트코드를 읽고 메모리에 적절하게 배치하는 것이 클래스 로더 시스템가 하는 일이다. 여기서 클래스 로더 시스템이 크게 3가지로 나누어 볼 수가 있는데 로딩, 링크, 초기화 이다. 로딩(loading) : class에서 바이트코드를 읽어오는 과정이다. 링크(Linking) : 레퍼런스를 연결하는 과정이다. 링크에서도 3가지로 나눌 수가 있다. ..

Language/Java 2022.05.05

vm과 도커의 차이

vm(virtual machine)란? 가상 머신으로 윈도우, 리눅스, 맥 os 등 새로운 os를 설치하여 새로운 가상 환경을 만든다 vm은 하나의 컴퓨터 위에, 자원을 나누어 만들어지기 때문에, 자원이 많이 필요하고, 하나의 PC에서 독립적인 IP와 독립적인 사용자, 독립적인 공간을 할당받아 독립적인 서비스를 제공할 수 있는 기능이다. 이런 가상화 기능으로 Linux , Redhat , Mac 등의 여러 가상 OS환경을 한대의 컴퓨터에 설치해 사용할 수 있습니다, 사용 이유 1. 하나의 컴퓨터로 서로 다른 두 개 이상의 운영체제를 실행하고자 할 때 2. 하나의 컴퓨터 자원을 여러 사용자에게 나누어 주는 상황에서 상호 간섭을 없애고 싶을 때 예를 들어, 클라우드 등에서 사용하는 가상 머신이 있다. 3. ..

카테고리 없음 2022.04.27

네이버 페이 (Naver Pay) 기능구현

이번에 간편결제 기능인 네이버 페이 구현을 진행했으며 작업이 모두 끝나서 이를 정리해두려 한다. 네이버페이 결제 연동 개발 네이버페이 간편결제 연동 개발은 크게 3가지로 이루어진다. 결제창 호출 -> 결제 승인 -> 결제 완료 NaverPay.html 네이버 페이는 javaScriptSDK를 제공 하고 있다. SDK를 이용하여 결제창을 쉽게 띄울 수 있다. NaverPay.html 설명 NaverPay javascript object 를 통해 프로그래밍할 수 있도록 지원한다. var oPay = Naver.Pay.create(); Naver.Pay.create({sdk parameter object}) 네이버페이 객체를 생성한다. var oPay = Naver.Pay.create({ "mode" : "d..

Language/Java 2022.04.24

카카오 페이( Kakao pay) 기능구현

이번에 간편결제 기능인 카카오 페이 구현을 진행했으며 작업이 모두 끝나서 이를 정리해두려 한다. 준비하기 관리자 모드 > 환경설정 > 전자결제 설정 > 국내 전자 결제에서 PG를 신청하면서 동시에 카카오페이를 신청할 수 있다. 이미 PG사에 가입하신 분은 간편결제 항목에서 카카오페이 신청 버튼을 눌러 안내에 따라 진행하면 된다. 카카오 페이 API 에서는 아래 항목의 기능을 제공한다. 이 중에 이번에 필요한 건 단건결제 였다. 단건결제: 일회성으로 결제를 진행합니다. 정기결제: 최초 등록 후 주기적으로 결제를 진행합니다. 정기결제 비활성화: 등록된 정기결제 키(SID)를 비활성화 하여 정기결제를 중지합니다. 정기결제 상태 조회: 등록된 정기결제 키 (SID)를 조회해 정기결제 상태를 조회합니다. 주문 조..

Language/Java 2022.04.23

생성자

생성자 인스턴스 초기화 메소드이다. 생성자는 객체가 생성될 떄 자동으로 호출(new 명령어를 만났을 때)되며 객체를 초기화한다. 클래스명과 같은 함수명이며, 리턴 타입이 없고 인스턴스 변수의 초기화 담당이다. 생성자는 기본적으로 생성되지만 여러개의 생성자를 만들시 매개변수갯수와 타입이 달라야한다. 만약 생성자를 직접 만들게 되면 기본적으로 생성되는 생성자를 같이 구현해줘야 사용이 가능하다. class Car { String color; String gearType; int door; Car(){} Car(String c,String g, int d){ color =c; gearType = g; door = d; } } class CarTest{ public static void main(String[] ..

Language/Java 2021.11.27

JpaReporitory vs EntityManager

JpaRepository란? Spring Framework에서 제공하는 JpaRepository를 제공해준다. JpaRepository는 인터페이스이다. JpaRepository는 자동으로 클래스를 만들고 Bean을 생성해준다. CRUD처리를 위한 공통 인터페이스 제공 @Repository public interface MemberRepository extends JpaRepository { } 안에는 엔티티 클래스 이름과 ID 필드 타입이 지정된다. 주의할 점은 "기본형의 경우, 래퍼 클래스를 지정한다는 점이다. 위에 코드에 보면 기본형 int가 래퍼 클래스를 지정하여 Integer로 해준걸 확인 할수가 있다. 또 하나 주의해야 할 것은 어노테이션이다. 클래스의 선언 앞에 @Repository라는 어노..

Spring 2021.11.23

엔티티 설계 주의점

연관관계 매핑 분석 1:N, N:1 양방향 관계에서는 외래키가 있는엔티티를 주인으로 정하는것이 좋다. 연관관계의 주인쪽의 값을 세팅해야 값이 변경된다. 1:N에서 일 부분에 있는 mappedBy는 단순히 읽기만 하는 역할(단순 조회용)이며, 연관관계의 주인쪽에 세팅을 해야 값이 변경된다. 외래키가 가까운 곳에 있는 것을 연관관계의 주인으로 정하는 것이 좋다. N:N 돤계에서는 @ManyToMany 사용은 권장되지 않고 1:N + N:1로 풀어내는 것을 권장한다. 엔티티 설계시 주의점 Entity에서는 가급적 Setter를 사용하지 말자. 변경포인트가 많아서 유지보수가 어렵다. 모든 연관관계는 지연로딩으로(lazy loading) 설정한다. 즉시로딩(Eager)은 예측이 어렵고, 어떤 SQL이 실행될지 추..

Spring 2021.11.21

[DataBase] 인덱스와 넌인덱스 특징 & 차이

클러스터 인덱스 클러스터 인덱스를 구성하려면 행 데이트를 해당 열로 정렬한 후에 루트 페이지를 만들게 된다. 즉 데이터페이지는 리프노드와 같은 것을 확인 할 수있다 인덱스를 생성할 때는 데이터 페이지 전체를 다시 정렬한다. 대용량의 데이터를 강제로 다시 클러스터 인덱스를 생성하는 건 조심 인덱스 자체가 데이터 페이지이다. 인덱스 자체에 데이터가 포함 비클러스형 인덱스 보다 검색 속도는 더 빠르다. 하지만 데이터의 입력/수정/삭제는 느리다. 테이블에 한 개만 생성할 수 있다. 넌 클러스터 인덱스 넌 클러스트형 인덱스는 데이터 페이지를 건들지 않고, 별도의 장소에 인덱스 페이지를 생성한다. 우선 인덱스 페이지의 리프 페이지에 인덱스로 구성한 열을 정렬하고 데이터 위치 포인트를 생성한다. 데이터의 위치 포인트..

DB 2021.11.21
반응형