컴퓨터 공학 기초 (3) 문자열과 그래픽 / 가비지 컬렉션과 캐시

young·2022년 8월 1일
0

7/21~8/18 Section 4 TIL

목록 보기
10/22

📌 문자열

유니코드

유니코드 협회가 제정하는 전 세계 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준

현존하는 문자 인코딩 방법을 모두 유니코드로 교체하는 것이 유니코드의 목적이다.

인코딩(부호화): 어떤 문자나 기호를 컴퓨터가 이용할 수 있는 신호로 만드는 것

유니코드는 아스키를 확장한 형태다.

아스키 문자: 영문 알파벳을 사용하는 대표적인 문자 인코딩으로, 7비트로 알파벳을 표현한다.

UTF

Universal Coded Character Set + Transformation Format - (number) bit

UTF-8

1byte부터 4byte까지의 가변 길이를 가지는 인코딩 방식

아스키 코드는 1byte, 영어 외 글자는 2byte 또는 3byte, 이모지와 같은 보조 글자는 4byte를 차지한다.
한글은 보통 3byte를 사용한다.
바이트 순서가 정해져있다.

UTF-16

유니코드 코드 대부분을 16bits (2byte)로 표현한다.

이진법으로 표현된 문자를 16bits 그대로 사용하며, 바이트 순서에 따라 UTF-16의 종류도 달라진다.
바이트 순서가 다양하다.

📌 그래픽

비트맵

= 레스터 그래픽(점 방식)
웹 상에서 디지털 이미지를 저장하는 데에 가장 많이 쓰이는 이미지 파일 포맷 형식

이미지의 각 점들이 픽셀로 이루어져 있다.
픽셀 하나당 모두 색상 값을 가진다. => 사이즈가 클수록 용량이 크다.
확대하면 계단 현상 또는 깨짐 현상이 발생한다.
이미지의 복잡도에 따라 벡터로 변환하는 데에 오래 걸린다.

파일 포맷: jpg, gif, png, bmp, psd 등

벡터

이미지를 shape 기반으로, 수학적인 공식으로 표현한다.

점과 점, 선과 선을 연결해 그림을 그리기 때문에 확대를 해도 계단현상 또는 깨짐 현상이 생기지 않는다.
사이즈를 키워도 용량에 변화가 없다.
레스터 이미지로 변환이 쉽다.

파일 포맷: svg, ai 등


📌 가비지 컬렉션과 캐시

가비지 컬렉션

프로그램에서 사용하지 않는 메모리를 자동으로 정리하는 것

자바, C#, 자바스크립트에는 가비지 컬렉션 기능이 있다.

1. 트레이싱 (mark and sweep)

객체에 in-use flag를 두고, 사이클마다 모든 객체를 추적해서 사용 중인지 아닌지를 mark한다.
그후 표시되지 않은 객체를 sweep하여 메모리를 해제한다.

2. 레퍼런스 카운팅

한 객체를 참조하는 변수의 수를 추적한다.
레퍼런스 카운트가 0이 되면 그 객체와 관련한 메모리를 비운다.

웹 서비스에서의 캐시

일시적인 데이터(연산 작업 결과)를 저장하기 위해 존재하는 고속의 데이터 저장 공간

이전에 검색하거나 계산한 데이터에 빠르게 접근하여 효율적으로 재사용할 수 있다.
데이터 검색의 성능을 높인다.

일반적으로 RAM과 같이 빠르게 액세스할 수 있는 하드웨어에 저장되며, 소프트웨어 구성 요소와 함께 사용될 수도 있다.

캐시의 장점

애플리케이션 성능 개선
데이터 베이스 비용 절감
백엔드 부하 감소
예측 가능한 성능
데이터 베이스 핫스팟 제거
읽기 처리량 증가 등

캐시 적용 예제

클라이언트: HTTP 캐시 헤더, 브라우저
네트워크: DNS 서버, HTTP 캐시 헤더 등


https://aws.amazon.com/ko/caching/

profile
즐겁게 공부하고 꾸준히 기록하는 나의 프론트엔드 공부일지

0개의 댓글