분류 전체보기

컴퓨터 구조와 운영체제/컴퓨터 구조

[컴퓨터 구조] 고급언어와 저급언어

1. 고급언어 개발자가 이해하기 쉽게 만든 언어 고급언어가 저급언어로 변환되는 방식에 따라 아래와 같이 2가지로 나뉜다. 1) 컴파일 언어 개발자가 작성한 소스 코드를 컴파일러를 통해 컴파일하여 저급언어(목적 코드)로 변환하는 언어 컴파일 : 컴파일 언어로 작성된 소스 코드를 컴파일러에 의해 저급 언어로 변환되는 과정 목적 코드 : 컴파일의 결과로 생성된 저급 언어 2) 인터프리터 언어 인터프리터에 의해 한 줄 씩 실행되는 언어 소스 전체가 저급 언어로 변환될 때까지 기다리지 않아도 된다. 컴파일 에러가 발생하면 소스 코드 전체가 실행되지 않는 컴파일 언어와는 달리, 인터프리터 언어는 오류 발생 전까지의 코드는 실행 된다. 2. 저급언어 컴퓨터가 이해하고 실행하는 언어 1) 기계어 이진수(0과 1)로 이..

컴퓨터 구조와 운영체제/컴퓨터 구조

[컴퓨터 구조] 컴퓨터가 문자를 표현하는 방법

문자 집합(character set) 컴퓨터가 이해할 수 있는 문자의 모음 1)아스키코드(2^7 = 128개) 알파벳, 아라비아 숫자, 일부 특수문자, 제어문자를 표현하고 있는 문자 집합 7비트로 하나의 문자를 표현한다.(실제로는 8비트, 1비트는 오류 검출을 위한 parity bit) 인코딩이 매우 간단하지만, 한글을 포함한 다른 언어를 표현할 수 없다. a) 인코딩(encoding) 컴퓨터가 이해할 수 있는 언어(이진수)로 코드화 하는 과정 HI ➡️ 0x48, 0x49 b) 디코딩(decoding) 컴퓨터의 언어를 사람이 이해할 수 있는 언어로 코드를 해석하는 과정 0x48, 0x49 ➡️ HI 2) 한글 인코딩 한글은 초정, 중성, 종성의 조합으로 만들어지는 글자이므로 완성형 인코딩과 조합형 인코..

컴퓨터 구조와 운영체제/컴퓨터 구조

[컴퓨터 구조] 컴퓨터가 숫자를 표현하는 방법

컴퓨터는 0과 1로 숫자를 표현하고 이해한다. ➡️ 우리는 이를 이진법이라고 한다. 1. 이진법(binary)이란 0과 1로 수를 표현하는 방법을 말한다.(숫자가 1을 넘어가면 자리를 올린다.) 우리가 일상 생활에서 사용하는 진법은? 10진법(decimal, 숫자가 9를 넘어갈 때 자리를 올리는 방법) 코드로 표기할 때 : 0b1011라고 표기한다. 이진수 : 1, 10, 11, 100, 101, 110, 111, 1000 십진수 : 1, 2, 3, 4, 5, 6, 7, 8 2. 그렇다면 이진수의 음수는 어떻게 표현할까?? ➡️ 2의 보수 2의 보수란, 모든 0과 1을 뒤집고 1을 더한 값 1) 이진수 1011의 음수 구하기 모든 0과 1을 뒤집은 후, 1을 더한다. 1011을 예로 들었을 때, 0과 1..

컴퓨터 구조와 운영체제/컴퓨터 구조

[컴퓨터 구조] 컴퓨터 정보의 단위

1. 정보의 단위 : bit bit : 컴퓨터가 이해하는(0과 1로 표현하는) 가장 작은 정보의 단위를 말한다. 2비트로 표현할 수 있는 정보의 수 : 4개 3비트로 표현할 수 있는 정보의 수 : 8개 n비트로 표현할 수 있는 정보의 수 : 2^n개 우리가 사용하는 모든 프로그램은 수많은 비트로 구성되어 있다. 비트가 커짐에 따라 새로운 단위를 만들어서 사용을 한다. (바이트 킬로바이트, 메가바이트, 기가바이트, 테라바이트...) 2. 다른 단위들 1바이트(1byte) = 8비트 1킬로바이트(1kB) = 1000바이트 1메가바이트(1MB) = 1000킬로바이트 1기가바이트(1GB) = 1000메가바이트 1테라바이트(1TB) = 1000기가바이트 1024개씩 묶은 단위는 kiB, MiB, GiB... 이다..

디자인패턴

[디자인패턴] 구조패턴 - 프록시 패턴(Proxy Pattern)

[디자인 패턴] 디자인 패턴(Design Pattern)이란 1. 디자인 패턴(Design Pattern)이란 설계에 자주 사용하는 패턴들을 정형화 하여 유형별로 정해두고 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿을 뜻한다. 2. 디자 hyunbenny.tistory.com 1. 프록시(Proxy) 패턴이란 먼저 프록시란 대리인이라는 뜻을 가지고 있다. 이를 IT관점에서 보면 아래와 같은 그림으로 나타낼 수 있다. 보통 특정 객체에 대한 접근을 제어하거나 기능을 추가할 때 사용하는 패턴이다. 1) 프록시와 프록시 서버 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에 중..

디자인패턴

[디자인패턴] 구조패턴 - 어댑터 패턴(Adapter Pattern)

[디자인 패턴] 디자인 패턴(Design Pattern)이란 1. 디자인 패턴(Design Pattern)이란 설계에 자주 사용하는 패턴들을 정형화 하여 유형별로 정해두고 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿을 뜻한다. 2. 디자 hyunbenny.tistory.com 1. 어댑터 패턴(Adapter Pattern)이란 클래스의 인터페이스를 다른 인터페이스로 변환하는 패턴이다. 함께 동작할 수 없는 클래스들이 함께 동작할 수 있도록 해준다. 기존의 코드를 수정하지 않고 코드를 재활용할 수 있다는 장점이 있다.(SOLID 중 OCP를 따른다.) 2. 어떤 경우 사용하는가 기능적으로는 문제없이 동작하는 코드가 단지 인터페이스 차이로 인해 호환되지 않아 사용할 수 없는 경우..

디자인패턴

[디자인패턴] 생성 패턴 - 싱글톤 패턴(Singleton Pattern)

[디자인 패턴] 디자인 패턴(Design Pattern)이란 1. 디자인 패턴(Design Pattern)이란 설계에 자주 사용하는 패턴들을 정형화 하여 유형별로 정해두고 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿을 뜻한다. 2. 디자 hyunbenny.tistory.com 1. 싱글톤이란 객체의 인스턴스가 단 하나만 생성되는 패턴이다. 주로 하나의 인스턴스로 공유하여 사용할 때 사용한다. DB 커넥션 풀, TCP Socket에서의 connnect객체, 스프링 컨테이너의 빈 등이 예가 되겠다. 하나의 인스턴스를 공유해서 사용하기 때문에 메모리의 낭비를 줄일 수 있다. 하지만 반대로 하나의 인스턴스를 공유하기 때문에 데이터의 변경 등의 문제가 발생할 수 있기 때문에 주의해서 ..

Java

직렬화(Serialization)

1. 직렬화란 객체를 출력하기 위해서 필드 값들을 일렬로 늘어선 바이트로 변경하는 것을 말한다. 그렇다면 역직렬화(Deserialization)이란 직렬화된 바이트를 객체의 필드 값들로 다시 복구 시키는 것을 말한다. 2. Serializable 인터페이스 아무런 메서드와 필드가 없다 ➡️ 객체를 직렬화할 수 있다고 알려주는 역할만 한다. 자바는 Serializable을 구현한 클래스만 직렬화 할 수 있도록 제한하고 있다. 클래스의 인스턴스 필드 값들은 직렬화의 대상이다. 하지만, static 필드 값과 transient로 선언된 필드값은 직렬화에서 제외된다. 3. serialVersionUID 위에서 말했듯이 직렬화, 역직렬화를 하는데 있어서 기본 전제조건은 동일한 클래스여야 한다는 것이다. 하지만 동..

github.com/hyunbenny/study
'분류 전체보기' 카테고리의 글 목록 (6 Page)