🟩 정의

 

응용 프로그램에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

 

프로그램과 프로그램사이에 연결해주는 다리!


🟩 특징

  • 구현과 독립적으로 사양만 정의되어 있다.

 

  • API에 따라 접근 권한이 필요할 수 있다.

 

  • Java API, Kakao API 기타 등등 있다.

✅ 예시)

  • 사용자들끼리 맛집을 공유하고 싶은 서비스를 만들고 싶다!

 

  • 서비스를 만들기 위해서 지도가 필요한데 내가 만들기는 너무 어렵…

 

  • G사의 지도 서비스를 이용해서 만들고 싶다!!

 

 

  • G사의 지도를 사용하려면 위처럼 “/map/위도&경도” 를 요청하면 내가 원하는 지도와 관련된 정보를 받을 수 있다.

 

https://console.cloud.google.com/apis/library?hl=ko

 

Google Cloud console

 

console.cloud.google.com

 

 

구글 API가 궁금하면 위 사이트를 들어가서 구경해보자

🟩 Byte Order (바이트 저장 순서)

컴퓨터는 데이터를 메모리에 저장할 때 바이트(byte) 단위로 나눠서 저장합니다.

하지만 컴퓨터가 저장하는 데이터는 32비트(4바이트) 또는 64비트(8바이트)로 구성된다.

 

따라서 이렇게 연속되는 바이트를 순서대로 저장해야 하는데, 이것을 바이트 저장 순서(Byte Order)라고 합니다.

 

✅ 두가지 방식

  • 빅 엔디안 (Big Endian)
  • 리틀 엔디안 (Little Endian) 

 

🟩 빅 엔디안 (Big Endian)

  • 우리가 왼쪽부터 읽어나가는 거랑 비슷함.
  • 낮은 주소에 데이터의 높은 바이트 부터 저장하는 방식
  • 메모리에 저장된 순서 그대로 읽을 수 있고, 이해하기 쉬운 장점

예제

0x12345678

이 정수는 각각 다음과 같이 1바이트값 4개로 구성

0x12, 0x34, 0x56, 0x78

이 4개의 1바이트 값을 빅 엔티안 방식으로 저장하면 다음 그림과 같이 저장된다.

🟩 리틀 엔디안 (Little Endian)

  • 낮은 주소에 데이터의 낮은 바이트부터 저장하는 방식
  • 대부분의 인텔 CPU 계열에서 이 방식으로 데이터 저장


❌ 물리적으로 데이터를 조작하거나 산술 연산을 수행할 때에는 리틀 엔디안 방식이 더 효율적이다.❌

 

 

❌ 데이터의 각 바이트를 배열처럼 취급할 때에는 빅 엔디안 방식이 더 적합하다.❌

 

 

❌네트워크를 통해 데이터를 전송할 때에는 빅 엔디안 방식을 사용한다.❌

카멜 표기법, 스네이크 표기법, 파스칼 표기법

  • 카멜 표기법(camelCase)
    - 소문자로 시작하고 이어지는 단어들의 시작은 대문자로 작성하여 단어 간 구분
      (단봉낙타표기법, 대문자와 소문자의 조합이 낙타의 혹처럼 솟았다가 내렸다가 하는 모양 같다고 해서
      이름이 붙여진 표기법)
    - Java 언어에서 주로 사용
    (EX) getUserName, findByUserName


  • 스네이크 표기법(snake_case)
    - 단어 사이에 underscore(_)를 활용하는 표기법
    - Python에서 주로 사용
    (EX) user_name, retention_score


  • 파스칼 표기법(PascalCase)
    - 단어의 첫 시작은 항상 대문자로 사용하는 표기법 (쌍봉낙타표기법)
    - Java에서 클래스명, 함수명 표기 시 활용
      Python에서는 클래스명 표기 시 활용
    (EX) HighQuality, HelloWorld

버퍼와 버퍼가 있는 이유

  • 버퍼란?

임시 저장 공간을 의미한다. A와 B가 서로 입출력을 수행하는데에 있어서 속도차이를 극복하기 위해 사용하는 임시 저장 공간을 의미 합니다.

  • 버퍼가 있는 이유

    프로그래밍이나 운영체제에서 사용하는 버퍼는 거의 대부분 CPU와 보조기억장치(HDD,SDD…) 사이에서 사용되는 임시 저장 공간을 의미합니다.



CPU는 1초에 100개의 데이터를 처리할 수 있지만, 보조 기억 장치는 데이터를 1초에 3개 밖에 보내주지 않는다. CPU는 일을 하고싶어도 못함. 즉 효율이 떨어짐.

버퍼라는 것은 속도차가 큰 두 대상이 입출력을 수행할 때 효율성을 위해 사용하는 임시 저장공간

 

동기화, 비동기화

프로그래밍의 실행 모델 2가지

 

  • 동기화란? 하나씩 순차적으로 실행
    여러 작업이 동시에 실행될 때 한 작업이 끝날 때까지 다른 작업이 시작되지 않는다.
    (한 자원에 동시에 접근하는 것을 제한)

    동시접근이 불가능하기 때문에 순차적으로 접근하여 작업을 진행하게 된다.
    다음에 실행될 명령은 현재 실행 중인 명령 종료까지 대기 해야 한다.(대기 버퍼링 발생) 

 

  • 비동기화란? 여러가지를 동시에 실행
    여러 작업을 동시에 처리하면서, 작업이 완료되기 전에 다른 작업을 수행할 수 있는 것을 말한다.
    현재 실행 중인 명령이 종료되지 않아도 다음 명령 실행이 가능하다.
    처리 속도를 향상 시킬 수 있다.

 

 

 

키코드(KeyCode)

  • 키코드란? 키보드 키마다 가지고 있는 고유한 값!
    키보드의 키 별로 각각 숫자로 된 값을 하나씩 가지고 있는데 이를 키코드라고 한다.
    (즉, 이것이 무슨 키인지 식별하는 번호이자 키를 대신하는 번호라고 생각할 수 있다.)

    우리가 키보드에서 키를 하나 입력하면 프로그램에서는 그 키의 키코드를 읽어 프로그램을 처리한다.
    (키마다 값을 가지고 있다는 것은 기록하고 표현하기 편하게 만들어 준다.)

문자코드, ASCII 코드, 유니코드

  • 문자코드 : 영어의 알파벳이나 한글 등과 같은 문자를 컴퓨터에서도 사용하기 위해 컴퓨터가 이해할 수 있는 형태인 이진 부호로 표시한 것.

  • ASCII 코드 : 알파벳, 숫자, 특수 문자 등에 대해 7비트의 문자 코드로 지정 하였다.

  • 유니코드 : 각 나라별 언어를 모두 표현하기 위해 나온 코드 체계.

 

+ Recent posts