목록# Study (21)
리루
출처: http://jusungpark.tistory.com/15 [정리정리정리] 1. 서블릿이란 무엇인가? 먼저 서블릿이라는 개념을 잘 이해하는 것이 중요하다고 생각한다. 개념을 이해하지 못한다면 뒤로 갈수록 동작 여부에만 만족하는 싸구려 개발자가 될 가능성이 크다. 하지만 이 서블릿이라는 놈은 개념 잡기가 매우 힘들었다. 자바의 어떤 한 기술을 말하는건지, 자바 클래스를 말하는건지 아니면 어떤 클래스를 상속 받아서 구현된 자바 프로그램들을 말하는건지... 즉, 어떤 기술을 서블릿이라고 부르는건지, 어떤 규칙을 지킨 하나의 웹 어플리케이션을 말하는건지 너무 햇갈렸다. 내 성격상 일단 받아들이고 천천히 이해하려는 성격은 아닌지라... 꽤 고생했다. 서블릿의 용어는 Server program + let (..
[참조] http://www.ktword.co.kr/abbr_view.php?m_temp1=1889 ------------------------------------------------------------------------------------------------- 1.UDP(User Datagram Packet) - 프로세스 대 프로세스 통신을 생성하기 위해서 포트번호를 사용한다. - 전송계층에서 제어 메커니즘을 제공 - 흐름제어는 없고 수신된 패킷에 대한 확인응답도 없다. - 초보적인 오류제어 가능은 제공(오류 발견시 폐기) - UDP 헤더의 Checksum을 통해서(옵션) 헤더와 데이터 모두 포함한 사용자 데이터그램 전체에 대한 오류를 탐지한다. 1) 송신지에서 계산되고 목적지에서 검사됨 ..
1. Flow control은 (호스트와 호스트 간의 데이터 처리를 효율적으로 하기 위한 기법, End to End) 송신측과 수신측의 데이터처리 속도 차이를 해결하기 위한 기법이다. 수신측이 송신측보다 속도가 빠른 것은 아무 문제가 되지 않는다. 송신측이 수신측보다 속도가 빠르면 문제가 발생한다. 수신측에서 수신된 데이터를 처리해서 윗 계층으로 서비스 하는 속도보다 송신측에서 보내는 데이터 속도가 더 빠르다면, 수신측에서 제한된 저장용량(일반적으로 큐)을 초과하여 이후에 도착하는 데이터의 손실을 가져올 수있다. 그렇다면 불필요하게 응답과 재전송의 데이터가 다시 송신측과 수신측간에 비번히 이동해야한다. 따라서, 이러한 위험을 줄이기 위해 강제로 송신측의 데이터 전송을 줄인다. 1-1) Stop and w..
삽입과 삭제가 빈번하게 발생하는 집합에서 가장 크거나 가장 작은 원소를 빨리 결정할 수 있는지에 의존하는 문제들이 많이 있다. 이 문제들에 접근하는 한 방법은 정렬된 집합을 유지하는 것이다. 이 방법에서 가장 크거나 가장 작은 항목을 정렬하는 순서에 따라 항상 집합의 가장 첫 원소가 된다. 그러나 매번 집합을 정렬하는 것은 비싸다. 게다가 모든 항목들이 정렬되는 것이 목표가 아니므로 실제로 필요한 것보다 더 많은 일을 하게된다. 가장 크거나 가장 작은 항목만 빨리 결정하려면 그 항목을 찾을 수 있는 위치에 유지만 시켜주면 된다. 힙(heap)과 우선순위 큐(priority queue)를 이용하면 이것을 효율적으로 할 수 있다. 힙 가장 큰(작은) 값의 노드를 빠르게 결정할 수 있도록 구조화된 트리이다. ..
정의 트리는 노드(node)라는 항목들이 계층적으로 배치되어 구성된다. 계층의 가장 상위 노드를 루트(root)라고 한다. 루트의 바로 아래 노드들은 루트의 자식들(children)이고, 보통 이 노드들도 자식이 있다. 루트를 제외한 모든 노드들은 하나의 부모(parent)를 갖는데 부보는 바로 상위 노드이다. 부모가 가질 수 있는 자식 노드의 수는 트리의 형태에 따라 다른다. 트리에서 이 숫자를 분기계수(branching factor)라고 한다. 응용 1. 이진트리 자식을 두 개까지 가질 수 있는 노드들로 이루어진 트리이다. 2. 트리 평형 주어진 수의 노드들에 대해 트리를 가능한 짧게 유지하는 데 사용되는 방법이다. 트리의 높이가 전체 성능에 영향을 미치기 때문에 필요한 부분이다. 3. 사용자 인터페..
Endian : Byte ordering Byte order의 차이는 CPU의 차이로 인해 발생한다. 엔디안이라는 단어는 "걸리버 여행기"에서 처음 나왔다. 소인국 사람들 중에 달걀을 깰때 뭉툭한 곳(Big-Endian)부터 깨는 사람들이 있는 반면, 뾰족한 곳(Little-Endian)부터 깨는 사람들이 있어서 서로 자신의 방법이 맞다고 주장하는 글에서 유래되었다. Little Endian은 그 크기만큼 무조건 거꾸로 읽는다 가 힌트입니다. -"Little Endian은 상위bit (MSB)를 상위 주소에 저장을 하고 있습니다 문자열 "wxyz"를 저장한다면 다음과 같이 표현이 가능하다. 주소Big Endian(MSB) Little Endian(LSB) 0x1003 z w 0x1002 y x 0x100..
일부 시스템이서 가상 메모리(virtual memory)를 제공하기 위해 연결 리스트를 사용한다. 가상 메모리는 프로세스가 실제 메모리에 있지 않은 상태에서도 수행될 수 있게 하는 주소 공간 매핑이다.가상 메모리의 장점 중 하나는 프로세스가 실제 메모리보다 큰 주소 공간을 사용할 수 있게 해준다는 점이다. 또 여러 프로세스들이 동시에 실행되면서 메모리를 공유할 수 있다는 점이다. 가상 메모리에서 실행되는 프로세스는 가상 주소(Virtual address)를 사용한다. 가상주소는 프로세스에게 실제 주소(physical address)처럼 보이지만 사용하기 전에 시스템이 변환해 주어야하는 것이다.주소변환은 페이지 테이블을 사용하는데 전용 하드웨어를 사용하므로 속도가 빠르다.각 프로세스는 가상 주소 공간의 페..
이전에 가상 메모리 시스템에서 프레임 할당을 관리하는데 단일 연결 리스트를 사용하는 방법을 살펴보았다.당시 논점 중 하나인 사용 가능한 프레임의 리스트가 비어 있을 때 어떻게 새로운 프레임을 할당하는가에 대한 얘기를 해보자. 이 상황을 처리하기 위해 실제 메모리의 페이지를 스왑 디스크라고 불리는 영역으로 옮겨서 한 프레임을 해제한다.어떤 순간에 어느 프레임을 해제할 것인지를 결정하는 데 페이지 교체(page-replacement) 알고리즘이 사용된다. 페이지 교체 알고리즘의 한 예가 재시도 알고리즘(second-change) 또는 클릭(click) 알고리즘이다. 이상적으로는 프로세스들의 모든 페이지가 실제 메모리에 존재하면 좋겠짐나 일반적으로 불가능하다.전형저으로 한 시스템의 많은 프로세스들이 실제 메모..
1. Array를 반환하는 함수를 오용한 서브루틴 Sub splitBadExample() Dim str As String Dim strTemp As String Dim i As Integer str = "이름 전화번호 이메일 주소" For i = 0 To 3 strTemp = Split(str)(i) Next i End Sub 2. Array를 반환하는 함수 호출을 최소화한 서브루틴 Sub splitGoodExample() Dim str As String Dim strTemp As String Dim strArr() As String Dim i As Integer str = "이름 전화번호 이메일 주소" strArr = Split(str) For i = 0 To 3 strTemp = strArr(i) N..
문자열을 Unicode로 변환한다. 아래에 구현된 코드는 2byte가 넘는 문자열의 경우에는 Little endian 형태가 적용되고(ex. 이 -> C7 74(big) -> 74 C7(little) ), 2byte가 넘지 않는 문자열의 경우에는 그대로 Big endian으로 사용된다(ex. a -> 61 -> 61 00) 왜 위에서 2byte가 넘지 않을 경우에 "00 61"이 아니라 "61 00"으로 되는지는 공부가 필요한 부분이다. '------------------------------------------------------------------------------------------------------------------------------------------------------..