본문 바로가기
반응형

Computer Science28

네트워크의 의미와 분류 네트워크란 네트워크는 그물처럼 연결된 통신망을 의미하는 net와 여러분이 제일 싫어하는 work의 합성어로, 통신망을 이용해 일을 하는 것을 의미합니다. 인터넷은 net과 net을 연결한다는 의미를 가지고 있어 네트워크보다 더 넓은 개념이라고 볼 수 있습니다. 네트워크의 분류 데이터 전송 방식에 따라 1. 회선 교환망(아날로그) + 독립적인 회선을 통해 통신하므로 보안에 강하지만 - 설치 비용이 많이 들고, 전송할 수 있는 데이터 양도 적으며 전송 효율도 떨어지는데다 눈치 없이 회선을 독점하는 놈이 있으면 네트워크 전체 효율을 낮추게 되는 단점이 있습니다. 2. 패킷 교환망(디지털) 모든 노드를 연결해 놓고 데이터만 패킷 단위로 쪼개서 전송하는 방식으로, 패킷은 마치 혈관을 타고 흐르는 지방 덩어리들처럼.. 2023. 2. 6.
[Web] Subresource Integrity 1. 개요 직역하면 '하위 자원 무결성' 이라는 의미를 가지고 있습니다. SRI 는 써드파티 서버에서 제공하는 리소스들이 변조되지 않았음을 개발자들이 확신할 수 있도록 하는 W3C 사양입니다. CDN을 피해야하는 이유에서 본 것처럼 CDN을 통해서 외부 리소스를 로드할 경우에는 Subresource Integrity(이하, SRI)를 활용하여 CDN의 취약점을 보완해줄 필요가 있습니다. 2. 사용법 먼저 integrity 속성에 넣어줄 SRI hash 값을 생성해야 합니다. 이 값은 "해시 알고리즘-해시값" 형태로 되어있습니다. 1) SRI Hash generator https://www.srihash.org/ 에서 로드할 리소스의 주소(아래의 경우 https://code.jquery.com/jquery.. 2023. 1. 30.
다이나믹 프로그래밍 Dynamic Programming 1. divide and conquer와 dynamic programming의 차이 divide and conquer(분할정복)는 하나의 문제를 해결할 수 있을 정도의 작은 부분으로 분할하여 하나하나 정복해나가는 프로그래밍 기법을 말합니다. 작게 나눌수록 복잡해 보였던 문제는 단순화되고 보다 쉽게 해결책을 도출해낼 수 있게 됩니다. dynamic programming(동적계획법)은 문제를 작은 조각들로 분해하여 한꺼번에 해결한다는 점에서 분할정복과 유사해보입니다. 하지만 분명한 차이가 있습니다. 분할정복은 하나의 문제를 작은 문제들로 나누고, 그 작은 문제들을 해결한 결과를 합쳐나가는 방식으로 문제에 대한 최종 해를 구하는 것인 반면, 다이내믹 프로그래밍은 일련의 문제들을 해결하기 위해서 문제를 작은 조.. 2022. 12. 29.
트리의 순회 - 레벨 순서 순회 1. 레벨 순서 순회란? 레벨 순서 순회는 위에서 아래로, 좌에서 우로 순차적으로 순회를 하는 것입니다. 위의 트리에서 레벨 순서 순회를 할 경우, 결과는 1 - 2 - 3 - 4 - 5 - 6 이 됩니다. 개념적으로는 가장 이해하기 쉽고 간단한 순회 방법이지만, 구현은 상대적으로 까다로운 편입니다. 2. 구현 1) 재귀 Queue q = new LinkedList(); public void levelOrder(TreeNode node) { System.out.print(node.getData() + " "); // ① q.add(node.getLeftChild()); // ② q.add(node.getRightChild()); TreeNode temp = q.remove(); // ③ if(temp !.. 2022. 10. 12.
트리의 순회 - 전위 순회, 중위 순회, 후위 순회 1. 트리의 순회 (Tree traversal) 트리 순회란 트리의 모든 노드를 방문하는 것을 말합니다. 방문 순서에 따라 다음 3가지 방법이 있습니다. 처음에는 헷갈리지만 몇 번만 연습해보면 매우 간단하다는 것을 깨닫게 되실 겁니다. 2. 전위 순회(preorder) - VLR 전위 순회는 먼저 자기 자신을 방문한 뒤, 왼쪽 자식-오른쪽 자식 순으로 방문합니다. 만약 자식에게 또 자식이 있다면 자식 노드를 방문하기 전에 자식의 왼쪽 자식 노드를 방문합니다. 즉, 자기 자신을 방문한 다음(V) 왼쪽 자식으로 이동하여 자식이 있는 지 확인하고, 있다면 자식이 없는 리프 노드(leaf node)를 만날 때까지 계속 왼쪽으로 이동합니다. 왼쪽 서브트리에 대한 방문을 모두 마친 뒤에야 (L), 오른쪽 자식에 대.. 2022. 10. 11.
스택과 (원형) 큐 Stack & Queue 만들기 1. 소개 스택과 큐는 쉽고 간단하지만, 운영체제의 시스템 스택이나 스케줄링 등 다방면으로 활용되는 중요한 자료구조입니다. 스택과 큐는 모두 원소를 하나씩 저장하고 저장된 원소를 순서대로 출력 및 삭제하는 방식으로 동작합니다. 차이점으로는, 스택은 가장 나중에 입력된 원소가 가장 먼저 출력되는 후입선출(Last In First Out, LIFO) 방식인 반면, 큐는 가장 먼저 입력된 원소가 가장 먼저 출력되는 선입선출(First In First Out, FIFO) 방식입니다. 2. 구성 스택과 큐는 기본적으로 원소들을 저장할 저장소와 현재 위치를 기억하는 포인터, 그리고 현재 상태를 체크할 2가지 메서드, 핵심 기능인 삽입과 삭제를 위한 메서드 2개가 필요합니다. 3. 구현 with Java (1) 스택.. 2022. 9. 27.
반응형