목록전체 글 (106)
공부해봅시당

먼저 인코딩과 암호화의 개념을 헷갈려하는 이유에 대해 살펴보자보통 인코딩과 암호화의 개념을 헷갈려하는 이유는 두 개념이 가진 공통점 때문이다.둘 다 `기존의 데이터를 원하는 데이터 형식으로 변환`한다. 예를 들어 이런 것이다.`Hello, World!`가 `SGVsbG8sIFdvcmxkIQ==` 이런 식으로 인간이 알아들을 수 없는 언어로 바뀌는 것 말이다.인코딩과 암호화는 둘 다 이런 식으로 알아들을 수 없는 문자로 변경된다는 점에서 공통점을 가지기 때문에 인코딩과 암호화를 헷갈려한다. 그럼 인코딩과 암호화는 도대체 어떤 차이가 있는 걸까? 인코딩과 암호화의 차이인코딩과 암호화의 가장 결정적인 차이는 `인코딩`은 누가 못알아보게 만들려는 처리가 아니라 사용성을 좋게하기 위한 가공이라는 것이다.반대로 ..

1. 직렬화와 역직렬화란?직렬화라는 단어부터 알아보자직렬화라는 단어 자체에서 주는 생소함이 직렬화를 이해하기 어렵게 한다.따라서 직렬화라는 단어가 어떻게 나오게 되었는지부터 살펴보자. 직렬화는 Serialization이라는 영어를 한국어로 번역한 것이다.Serialization은 `Serial(연속된 무언가) + ization(~로 만들다)`이다.그래서 '어떠한 무언가'를 '연속된 무언가'로 바꿔주는 작업이 Serialization이 되는 것이다. 그렇다면 자바의 직렬화, 즉 Serializable에서는 '어떠한 무언가'와 '연속된 무언가'가 무엇일까?Java에서 사용되는 `Object나 Data`가 `어떠한 무언가`이고,`바이트 스트림(stream of bytes)`이 `연속된 무언가`이다.바이트 스트..

MAC(Media Access Control)이란?MAC의 정의는 아래와 같다.네트워크 세그먼트의 데이터 링크 계층에서 통신을 위한 네트워크 인터페이스에 할당된 고유 식별자 여기서 `고유 식별자`는 `고유한 이름, Unique한 이름`을 뜻하고, `네트워크 인터페이스`는 `NIC(Network Interface Card)`를 뜻한다. 네트워크 인터페이스, NIC란 무엇일까?(NIC에 대한 자세한 설명은 링크를 참고했다.) `NIC(Network Interface Card)`는 랜카드, 통신모듈이라고도 한다.아래 사진이 NIC, 랜카드이다. 이렇게 생긴 LAN 카드를 옆에서 보면 아래 사진처럼 생겼다.위 사진에서 왼쪽에 케이블을 꽂을 수 있는 공간이 있는데, 집에서 컴퓨터를 사용한다면 여기에 케이블을 꽂아..

역사를 통해 알아보는 Servlet의 탄생 1. [초창기] 정적 데이터만 전달하는 Web Server 정적 데이터란? 쉽게 말해 어떤 사용자가 들어와도 같은 화면이라는 뜻 아래 사이트를 들어가보면 어떤 사용자가 들어와도 모두 같은 화면만 보여주게 되는데, 대표적인 정적 페이지만 보여주는 웹사이트의 예시라고 할 수 있겠다. 어떤 문제가 있나? 위 정적페이지 만으로도 충분히 정보를 잘 전달하고 있다. 하지만 우리가 들어갈 때마다 나만의 정보를 받고 싶다면? 당장 쇼핑몰 사이트를 통해 옷을 구매하고 싶어도 로그인을 거쳐 나라는 사용자로 커스텀된 정보들을 받아야 한다. 하지만 위에서는 정해진 정보들만 주기 때문에 불가능하다. 2. [그렇다면 동적인 데이터를 줄 수 있도록 해보자!] CGI(Common Gatew..

1. FacadeFacade는 외관, 즉 건물의 출입구로 이용되는 정면 외벽 부분을 뜻하는 단어이다. 건축에서 Facade의 궁극적 목적은 `소통`이다.건물의 정면만 보더라도 건물이 어떤 목적을 하는지 단번에 알 수 있다는 것이다. 그래서 아래와 같은 특징을 가지게 된다. - 건축의 Facade는 사람들이 건물을 쉽게 인식하고 접근할 수 있도록 돕는다.- 건물의 Facade는 다양한 기능(문, 창문, 장식 등)을 통합적으로 보여주며 건물과 외부 세계 사이의 주요 접점 역할을 한다.- 건축에서 Facade는 건물의 기능과 성격을 외부에 전달하는 중요한 수단이다.- 건축의 Facade는 건물의 나머지 부분에 영향을 주지 않고도 변경할 수 있는 유연성을 제공한다. 2. Facade Pattern 등장2-1. ..

1. 데드락(Deadlock) 운영체제에서 데드락(교착상태)이란, 시스템 자원에 대한 요구가 뒤엉킨 상태이다. 즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 말한다. 2. 데드락(Deadlock)의 발생조건 데드락이 발생하기 위한 조건은 크게 4가지로 말할 수 있다. - 상호 배제 한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 사용 중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때까지 기다려야 한다. - 점유 대기 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다. - 비선점 이미 할당된 자원을 강제로 빼앗을 수 없다(비선점). - 순환 대기 대기 프로세스의 집합..

프로세스(Process) 스레드(Thread) 운영체제로부터 자원을 할당받은 작업의 단위 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 1. 프로그램과 프로세스 1-1. 정적 프로그램 (Static Program) `프로그램`은 윈도우의 *.exe 파일이나 Mac의 *.dmg 파일과 같은 컴퓨터에서 실행 할 수 있는 파일을 통칭한다. 단, 아직 파일을 실행하지 않은 상태이기 때문에 정적 프로그램(Static Program) 줄여서 프로그램(Program)이라고 부른 것이다. 어떠한 프로그램을 개발하기 위해선 자바나 C언어와 같은 언어를 이용해 코드를 작성하여 완성된다. 즉, 프로그램은 쉽게 말해서 그냥 코드 덩어리 인 것이다. 1-2. 프로세스 (Process) 프로그램이 그냥 코드 덩어리이면, ..

1. 소켓(SOCKET)이란?소켓(Socket)은 프로세스가 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써보내거나 소켓으로부터 데이터를 읽어들여야 한다. 네트워크를 경유하는 프로세스 간 통신의 종착점. OSI 7계층 중 응용 계층에 속하는 프로세스들은 데이터 송수신을 위해 반드시 소켓을 거쳐 전송 계층으로 데이터를 전달해야한다. 즉, 소켓은 전송 계층과 응용 프로그램 사이의 인터페이스 역할을 하며 떨어져 있는 두 호스트를 연결해준다.2. 소켓의 3요소2-1. 프로토콜프로토콜은 데이터 전송을 위한 표준 집합 규칙이다. 주로 TCP/IP, UDP/IP 프로토콜..