목록전체 글 (157)
Rootable의 개발일기
📌 정의 Promise 기반의 HTTP 클라이언트 백엔드 또는 서드파티 API에 네트워크 요청이 필요한 애플리케이션을 개발할 때 사용하며, 네트워크에 요청을 전달하면 이행 혹은 거부할 수 있는 promise 가 반환된다. 📢 두 클라이언트 모두 비동기 🔍 Promise 비동기 작업을 수행한 후 미래에 받을 성공 또는 실패에 대한 결과값에 대한 처리기 비동기 작업은 실행 시점에는 그 결과를 알 수 없지만, 특정 시점에 완료 또는 실패에 대한 결과를 가져야 한다. 이를 위해 Promise 를 사용할 수 있으며, 마치 동기 메서드처럼 값을 반환할 수 있다. 다만, 최종 결과를 반환하는 것이 아니고 미래의 어떤 시점에 결과를 제공하겠다는 약속을 반환한다. ✔ Promise 상태 대기(pending): 이행하지도..
JSON 통신을 하는 프로젝트를 진행하면 다음과 같은 에러를 만날 수 있다. 그래서 해당 글에서는 CORS 정책과 관련된 내용을 정리해 보려고 한다. 📌 CORS란? 다른 출처 간의 자원을 공유하는 정책 🔍 출처(Origin) 우리가 어떤 사이트에 접근할 때 작성하는 URL은 아래와 같이 구성되어 있다. 여기서 Protocol, Host, Port를 합친 URL을 출처(Origin)이라고 한다. 📌 웹 보안 정책 웹은 보안을 위해 콘텐츠 보안, 연결 보안, 데이터 보안, 정보 유출, 무결성, 클릭재킹 보호, 사용자 정보 보안 등의 주제로 나눠 각 주제에 대한 보안 솔루션을 갖고 있다. 이 중에서 무결성을 위해 출처에 대한 정책을 갖고 있는데 이것에 대해 이야기하려고 한다. 🔍 Same Orig..
📌 냅색(Knapsack) 문제란 어떤 가치를 가진 물건이 여러 개 있을 때, 특정 조건을 만족하는 조합을 구하는 문제로 작은 문제의 결과로 큰 문제의 결과를 해결하는 다이나믹 프로그래밍의 대표적인 문제 여기서는 물건의 가치를 쪼갤 수 없는 0-1 Knapsack 문제를 설명한다. 📌 점화식 다이나믹 문제를 해결하기 위해서는 먼저 점화식을 세워야 한다. 아래 그림을 보자 빈 상자에 20kg을 담을 수 있다. 해당 무게만큼 담을 때, 담은 공의 가격이 가장 높은 케이스를 찾는 것이다. 즉, 특정 조건 내에서 가장 가치합이 높은 조합을 찾는 것이다. 🔎 타뷸레이션 & 메모이제이션 타뷸레이션 : 작은 문제의 정답을 이용하여 큰 문제를 해결하는 방법 메모이제이션 : 이미 계산된 값을 다시 계산해야 할 때, 이미..
📌 DP(Dynamic Programming, 동적 계획법)이란 문제를 각각의 작은 문제로 나누어 해결한 결과를 저장해뒀다가 나중에 큰 문제의 결과와 합하여 풀이하는 알고리즘 🔎 풀이 방법 ✔ 타뷸레이션(Tabulation) 작은 문제의 정답을 이용하여 큰 문제를 해결하는 방법 예제: 피보나치 수열 import java.io.IOException;public class Main { static int[] A; public static void main(String[] args) throws IOException { int N = readInt(); A = new int[N + 1]; fibonacci(N); for (int i = 1; i ..