Language 61

var let const

var(function - scoped) 재선언과 재할당이 가능하며 전역 변수이다. 이는 유연한 변수 선언으로 간단한 테스트에는 편리할 수 있겠으나, 코드량이 많아진다면 어디에서 어떻게 사용될지도 파악하기 힘들뿐더러 값이 바뀔 우려가 있다. // var는 function-scope이기 때문에 for문이 끝난다음에 i를 호출하면 값이 출력이 잘 된다. // 이건 var가 hoisting이 되었기 때문이다. for(var j=0; j

Language/JS 2022.05.07

callback과 Promise의 차이점

callback과 promise를 차이점을 알아보기전에 동기와 비동기에 대해서 먼저 알고 시작해야 한다. JS는 기본적으로 동기 처리이기 때문에 중간에 대량의 데이터를 응답 받거나 대량의 이미지 업로드를 실행한다면 이 실행이 다 끝날때까지 뒤의 실행들이 blocking된다. 그래서 실행이 오래 걸리는 실행문들은 비동기로 처리하여 전송을 보내놓고 응답을 받으면 실행되게 된다. 동기란? 동기는 말 그대로 동시에 일어난다는 뜻이다. 요청과 그결과가 동시에 일어난다는 약속인데, 바로 요청을 하면 시간이 얼마나 걸리든 요청한 자리에서 결과가 주어져야 한다. 비동기란? 비동기는 동시에 일어나지 않는다를 의미한다. 요청과 결과가 동시에 일어나지 않을거라는 약속이다. 동기와 비동기의 단점과 장점 동기방식은 설계가 매우..

Language/JS 2022.05.07

클래스 로더 시스템

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

네이버 페이 (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

JSP와 Thymeleaf

JSP(Java Scerver Pages) JSP는 Java Scerver Pages의 약자이며 HTML 코드에서 JAVA코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다. JSP가 실행되면 자바 서브릿(Servlet)으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행한다. 그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다. Thymeleaf(타임리프) Thymeleaf는 템플릿 엔진 동작원리로 되어있다. MVC패턴 중 View 역할을 담당하고 있다. 표현식 변수 : ${...} 선택 변수 : *{...} 메시지 : #{...} Link URL : @{...} Thymeleaf와 jsp의 차이점 Thymeleaf는 HTML, XML, JavaScript, Css 및 ..

Language/html 2021.11.20

Java String Pool

String String을 만드는데 2가지 방법이 있다. String a = "aa"; String b = "aa"; String c = new String("aa"); String d = new STring("aa"); 첫번째 방법으로는 가장 많이 알고있는 String 변수를 만들어서 사용하는것이다. 두번째 방법으로는 new 연산자를 사용하여 만드는 방법이다. String은 불변성(Immutable)이라는 성질을 가지고 있으며 같은 값의 문자열에 대해서는 단 하나의 문자열 객체만을 생성하도록 설계 되어있다. String은 Heap 메모리에 저장된다. Java String Pool new 연산자로 String 객체를 생성하지 않는 것이 좋다라는 말을 볼 수 있다. Heap 영역 내 "String Cons..

Language/Java 2021.11.20

그래프(Graph) 과 DFS, BFS 구현

그래프란? 그래프는 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 것 그래프에는 방향성이 있을수도 있고 없을수도 있다. 트리는 그래프의 한 종류이다. 모든 그래프가 트리는 아니다. 트리는 사이클이 없는 하나의 연결 그래프 그래프 종류 무방향 그래프 방향 그래프 완전 그래프 그래프에서 사용하는 용어 정점(vertice) : 노드(node)라고도 하며 정점에는 데이터가 저장된다. (0, 1, 2, 3) 간선(edge): 링크(arcs)라고도 하며 노드간의 관계를 나타낸다.. 인접 정점(adjacent vertex) : 간선에 의해 연결된 정점으로 위에서 (정점0과 정점1은 인접 정점) 단순 경로(simple-path): 경로 중 반복되는 정점이 없는것, 같은 간선을 자나가지 않는 경로 차수(degree..