Programming
-
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. #1Programming/Java 2021. 1. 25. 17:08
JVM이란 무엇인가? 자바 가상 머신은 시스템 메모리를 관리하고, 자바 기반 어플리케이션을 위해 이식 가능한 실행 환경을 제공합니다. JVM의 용도와 정의 JVM에는 두가지의 기본 기능이 있습니다. 자바 프로그램이 어느 기기나 운영체제에서 실행될 수 있게 하는 것 프로그램 메모리를 관리하고 최적화 하는 것 JVM에 대한 정의는 다음 두가지로 나타낼 수 있습니다. 기술적 정의 : JVM은 코드를 실행하고 해당 코드에 대해 런타임 환경을 제공하는 소프트웨어 프로그램에 대한 사양입니다. 일반적 정의 : JVM은 자바 프로그램을 실행하는 방법입니다. JVM의 설정을 구성한 후 사항에 따라 실행 중에 프로그램 리소스를 관리합니다. JVM에서의 메모리 관리 JVM 실행에 있어서 가장 일반적인 상호 작용은 힙과 스택..
-
자바스크립트 동작원리Programming/javascript 2021. 1. 22. 20:43
자바스크립트 엔진 자바스크립트 엔진에는 대표적으로 V8 엔진이 있습니다. V8 엔진은 c++로 제작되었으며 Node.js의 런타임으로도 사용됩니다. 아래는 엔진의 구조도를 간단히 나타낸 그림입니다. Memory Heap : 메모리 할당이 일어나는 곳 Call Stack : 코드 실행에 따라 호출 스택이 쌓이는 곳 런타임 대부분의 자바스크립트 개발자들이 setTimeout과 같은 브라우저 내장 API를 사용합니다. 하지만, 이 API를 자바스크립트 엔진에서 제공하지는 않습니다. 위 그림처럼, 자바스크립트 엔진 이외에도 자바스크립트에 관여하는 다른 요소들이 많습니다. DOM, Ajax, Timeout과 같이 브라우저에서 제공하는 API들을 Web API라고 합니다. Call Stack 자바스크립트는 기존적으..
-
REST API 원칙Programming/react native 2020. 11. 26. 05:20
REST API란? REST는 Representational State Transfer라는 용어의 약자로서 로이 필딩의 박사학위 논문에서 처음 등장하였다. 로이 필딩은 웹(http) 설계의 우수성에 비해 제대로 활용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다. REST API 디자인 가이드 REST API 설계 시 가장 중요한 항목은 다음 2가지로 요약할 수 있다. 1. URI는 정보의 자원을 표현할 수 있어야 한다. 2. 자원에 대한 행위는 HTTP method(GET, POST, PUT, DELETE)로 표현한다. ex1) 더보기 GET/members/delete 위와 같은 표현은 REST API 설계 규칙을 적용하지 않은 표현이다. URI는..
-
Node.js와 Mysql 연동 에러Programming/react native 2020. 11. 23. 08:33
Connection.connect를 추가 후 실행을 하면 다음과 같은 오류가 발생하였다. 더보기 Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client 해결책은 다음과 같았다. 1. Mysql installer 실행 2. server 옆에 위치한 reconfigure -> Auth 설정 3. legacy 선택
-
react native AVD로 구동 시 axios network errorProgramming/react native 2020. 11. 19. 03:41
node express로 서버 API를 구축한 후 axios로 데이터를 get 하려 했으나 계속해서 Netword Error가 발생하였다. https://github.com/axios/axios/issues/973 Axios doesn't work with Android (emulator) raising a Network Error · Issue #973 · axios/axios I'n new with React Native, and I was playing around with components and http ajax request, and all went fine with iOs emulator, until I thought to test on Android emulator. This is my ..
-
위상 정렬(Topology sort)Programming/알고리즘 2020. 11. 17. 15:36
위상 정렬은 순서가 정해져 있는 작업을 차례로 수행해야할 때 그 순서를 결정해주기 위해 사용하는 알고리즘이다. 위와 같은 경우 필요한 절차를 순서대로 밟아야 가능한 경우이며 이럴 때 사용되는 정렬이 위상 정렬이다. 위상 정렬 : 대학생 되기 -> 교수님 컨펌 -> 주제 선정 -> 개발하기 -> 졸작 완성 -> 졸작 전시 -> 졸업 ▷위상 정렬은 시작점을 알아야하기 때문에 위와 같이 사이클이 형성된 그래프에는 위상 정렬을 적용할 수 없다. 대학생의 졸업 과정을 번호를 부여하여 그래프로 나타내면 위상 정렬을 구현하는데 벡터와 큐를 사용하였다. 차수를 나타내는 배열을 선언하여 차수가 0인 것을 우선 전부 큐에 넣고 각 노드마다 인접 노드를 방문하며 차수를 1씩 감소시키며 큐가 빌 때까지 반복문을 사용하였다. ..
-
플로이드 와샬 알고리즘Programming/알고리즘 2020. 11. 16. 18:19
다익스트라 알고리즘은 한 정점에서 모든 정점으로의 최단 경로를 구하는 알고리즘인데 반해 플로이드 와샬 알고리즘은 모든 정점에서 모든 정점으로의 최단 경로를 구하는 알고리즘이다. 다익스트라 알고리즘은 최소의 비용을 가지는 간선을 선택하였다면, 플로이드 와샬 알고리즘은 특정 노드를 거쳐가는 경로에 대한 알고리즘이다. 그래프가 위와 같이 형성되었다고 가정하면 소스코드는 #include #define INF 1e9 using namespace std; int number = 4; int a[4][4] = { {0, 5, INF, 8}, {7, 0, 9, INF}, {2, INF, 0, 4}, {INF, INF, 3, 0} }; void floyd() { int result[4][4]; // 결과값을 담는 배열 ..
-
다익스트라(Dijkstra) 알고리즘Programming/알고리즘 2020. 11. 16. 02:08
다익스트라(Dijkstra) 알고리즘은 다니아닉 프로그래밍을 활용한 대표적인 최단 경로 탐색 알고리즘이다. 다익스트라 알고리즘은 특정한 하나의 정점에서 다른 모든 정점으로 가는 최단 경로를 알려준다(이때 음의 간선은 포함될 수 없다). 현실세계에서는 음의 간선이 존재하지 않기 때문에 다익스트라 알고리즘은 현실 세계에서 적용하기에 매우 적합한 알고리즘이라고 할 수 있다. 다익스트라 알고리즘이 다이나믹 프로그래밍 문제인 이유는 '최단 거리는 여러 개의 최단 거리로 이루어져있기 때문이다.' --> 현재까지 알고 있던 최단 경로를 계속해서 갱신한다! 이번 게시물에서의 그래프 예시는 위와 같이 정했다. 먼저, 배열을 사용해서 다익스트라 알고리즘을 완성해보자. #include using namespace std; ..