CS 89

라이브러리 vs 프레임워크

* 라이브러리(Library)? - (Component) Library = collection of related features 라이브러리 = 기능들의 집합 재 사용관점에서 api를 패키징 한 것. 말 그대로 도서관(라이브러리)에서 필요한 지식(feature)이 있는 책을 뺴서 읽고 이러는 것 처럼 프로그래머가 사용할 수 있는 프로그램이다. +) 공통으로 사용할 수 있는 기능을 모듈화한 것이다. 개발자가 만든 클래스에서 라이브러리를 호출만 하면 된다. 내가 그 라이브러리를 위해서 뭔가 코드를 써넣고 할 것은 없다. * 프레임워크(Framework)? - (Application) Framework = half done application 'IoC' 관점에서 어플리케이션을 구동하는, 말그대로 '틀'이다...

IPv6 (Internet Protocol version 6)

* IPv4의 한계 IPv4는 32비트를 이용해 주소를 표시하기 때문에 산술적으로 2^32개, 32억 정도의 주소를 표현할 수 있다. 그러나 인터넷 사용자의 증가, 무선인터넷, IoT 등의 ip 주소에 대한 수요가 증가하면서 IPv4의 주소 고갈 문제가 대두되었다. 주소의 수요가 증가된 것도 문제지만, IPv4의 주소 구조에 잠재하는 문제로 사용되지 않는 많은 주소가 존재한다는 점이 문제의 원인으로 꼽히기도 한다. IPv4는 클래스 A, B, C 이렇게 "네트워크" 단위로 주소를 할당하는 클래스 단위의 주소 할당 방식은 쓰이지 않는 많은 IP 주소를 발생 시켜 주소의 낭비를 초래하였다. * IPv6 특징 1. 확장된 주소 공간 IPv6는 128 비트의 주소 공간을 갖는다. 128 비트의 주소 공간에는 3..

CS/network 2021.04.25

위상 정렬 (Topological Sorting)

* 위상 정렬이란? 위상 정렬(topological sorting/ topological ordering)은 유향 그래프의 꼭지점들을 변의 방향을 거스르지 않도록 나열하는 것을 의미한다. 위상정렬을 하려면 반드시 그래프가 유향 비사이클 그래프(DAG : Directed Acyclic Graph)여야 한다. 그렇다면 만약 트리는 위상정렬을 할 수 있을까? 정답은 할 수 있다이다. 그러나 DAG가 트리라고 할 수 있는가? 정답은 아니다이다. 그러니까 DAG의 부분집합에 트리가 있는 것이라고 생각하면 된다. * Pseudocode L ← 정렬된 요소를 담은 빈 리스트 S ← 진입차수가 없는 노드들 while S is not empty do remove a node n from S add n to L for e..

CS/algorithm 2021.04.24

반 이중(Half Duplex) 방식 vs 전 이중(Full Duplex) 방식

* 반 이중(Half Duplex) 방식 양 방향으로 데이터가 전송될 수 있으나, 동시에 전송하는 것은 불가능한 방식이다. 즉 한 번에 한 쪽 방향으로만 데이터의 전송이 가능한 단방향 통신 방식이다. 대역폭을 절약할 수 있다는 장점이 있지만 충돌이 발생할 가능성이 있어, 충돌 감지가 필요하며 충돌로 인한 프레임 재전송 및 오류 검출로 인한 시간이 더 걸릴 수 있다. * 전 이중(Full Duplex) 방식 하나의 전송 선로에서 데이터가 동시에 양 방향으로 전송될 수 있는 방식이다. 충돌이 발생하지 않기 때문에 충돌 감지가 필요하지 않다. 그렇기 때문에 반 이중 방식보다 시간을 절약할 수 있다. 그러나 반 이중 방식에 비해 대역폭이 크게 필요하다는 단점이 있다. 둘 다 양 방향에서 데이터를 송신 + 수신이..

CS/network 2021.04.23

라우터와 스위치에 대하여

About Router and Switch * Router Routing(송신한 데이터가 수신 측에 도착하기 위해 어떤 경로를 경유해야 하는지 결정하는 것) 기능 담당 장비이다. 최단 경로를 우선 선택한다. 최적의 경로는 일반적으로는 가장 빠르게 통신이 가능한 경로이므로, 이것이 최단 거리 일수도 있지만, 돌아가는 경로라도 고속의 전송로를 통하여 전달이 되는 경로가 될 수 있다. 라우팅 정보 교환에 사용하는 프로토콜 = 라우팅 프로토콜이 된다. 라우팅 프로토콜로는 RIP v1, v2, OSPF, EIGRP 등이 있다. 라우터는 브로드캐스트 도메인을 나눈다. * Switch 소프트웨어적으로 라우팅하는 라우터에 비해 ASIC(Applicaion Specific Intergrated Circuits)칩을 이용..

CS/network 2021.04.22

Union-Find Algorithm

이걸 카테고리를 알고리즘으로 해야하는지... 자료구조로 해야하는지... * Union-Find (= disjoint-set / merge-find) 알고리즘 Union-Find 알고리즘은 2개의 기능을 가지고 있는 알고리즘이다. 1. Find : 어느 부분집합에 특정한 원소가 있는지를 찾는다. 이것은 두 원소가 같은 부분집합에 포함되어 있는지 찾는 방식으로 사용할 수 있다. 2. Union : 두 부분집합을 하나의 부분집합으로 합친다. 한국말로는 서로소 집합/상호 배타 집합이라고도 불린다. - 서로소 또는 상호배타 집합들은 서로 중복 포함된 원소가 없는 집합들이다. 교집합이 없다는 소리이다. - 집합에 속한 하나의 특정 멤버를 통해 각 집합들을 구분한다. 구분할 수 있는 이 원소를 대표자(represen..

CS/algorithm 2021.04.14

Subquery

* Subquery? 서브쿼리(Subquery)란 다른 쿼리 내부에 포함되어 있는 select문을 의미한다. 서브 쿼리를 포함하고 있는 쿼리를 외부 쿼리 또는 메인 쿼리라고 부르며 서브쿼리는 내부 쿼리라고도 부른다. 서브쿼리는 비교 연산자의 오른쪽에 기술해야 하며 반드시 괄호로 감싸져 있어야 한다. 서브쿼리는 메인쿼리가 실행되기 전에 한번씩 실행된다. 서브쿼리에서 실행된 결과는 메인 쿼리에 전달되어 최종적인 결과를 출력한다. * 서브쿼리의 종류 중첩서브쿼리(nested subquery): where 문에 작성하는 서브 쿼리 1. 단일 행 2. 복수(다중) 행 3. 다중 컬럼 인라인 뷰(inline view): from 문에 작성하는 서브 쿼리 스칼라 서브 쿼리(scalar subquery): select..

CS/database 2021.04.07

Join

* Join? 하나의 sql 명령문에 의해 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능이다. 두개 이상의 테이블을 '결합'한다는 의미이다. * Inner Join 가장 일반적인 join 종류이며 교집합이다. 동등 조인(Equi- join)이라고도 하며 n개의 테이블 조인 시 n-1개의 조인 조건이 필요하다. 연결고리가 되는 공통 칼럼은 조인 애트리뷰트라고 불리는데 이 조인 애트리뷰트는 참조 무결성 제약조건으로 정의된다. * Full Join 양쪽 테이블을 기준으로 join 조건에 일치하지 않는 데이터까지 출력한다. 그러니까 left outer join과 right outer join을 동시에 실행한 결과를 출력한다. mysql은 지원하지 않으며 oracle만 지원한다. mysql에서 ful..

CS/database 2021.04.06

MVC

Model View Controller MVC 패턴이란 어플리케이션을 Model View Controller 세 영역으로 구분하고 나눈 것이다. Model (Service, Dao, Java Beans) 로직(비니지스 & db)로직을 처리하는 모든 것이다. controller로부터 넘어온 데이터를 이용하여 이를 수행하고 그에 대한 결과를 다시 controller에 돌려준다. View (JSP) 모든 화면 처리를 담당한다. 클라이언트의 요청에 대한 결과 뿐 아니라 controller에 요청을 보내는 화면단도 jsp에서 처리한다. logic 처리를 위한 java code는 사라지고 결과 출력을 위한 코드만 존재한다. Controller (Servlet) 클라이언트의 요청을 분석하여 로직 처리를 위한 모델단을..

List 리스트

* List? 순서를 가진 데이터의 집합을 가리키는 추상자료형(abstract data type) 동일한 데이터를 가지고 있어도 상관 없다. (원소 중복 허용) 구현 방법에 따라서 1) 순차리스트ArrayList: 배열을 기반으로 구현된 리스트. 원소의 물리적 저장 순서와 원소의 논리적 순서가 같다. 2) 연결리스트Linked List: 메모리의 동적 할당(객체 생성)을 기반으로 구현된 리스트. 원소의 물리적 저장 순서와 원소의 논리적 순서는 다르다. 원소 하나하나를 객체로 만들어서 연결하는 자료구조 1. 순차 리스트(Array List) 구현 방법: 1차원 배열에 항목들을 순서대로 저장한다. 데이터의 종류와 구조에 따라 구조화된 자료 구조를 만들어 배열로 사용할 수도 있다. 데이터의 접근은 배열의 인덱..

CS/data structure 2021.03.27