본문 바로가기

전체 글

(71)
TIL#62(async/await, 호이스팅) 오늘 한일async/awaitJavaScript에서 비동기 코드를 더 직관적이고 간결하게 작성할 수 있게 해주는 문법이다. 프로미스 기반으로 동작하며, 비동기 함수의 결과를 처리하는데 사용된다. async함수 앞에 붙여서 그 함수를 비동기 함수로 만든다. 비동기 함수는 항상 프로미스를 반환한다. awaitasync 함수 내부에서만 사용할 수 있으며 프로미스가 처리될 때까지 함수의 실행을 일시 정지한다. 프로미스가 해결되면 await은 프로미스의 결과 값을 반환하고 프로미스가 거부되면 await은 거부된 이유를 throw한다. async/await의 장점은 비동기 코드를 동기 코드처럼 작성할 수 있어 가동성이 향상되고 에러 핸들링이 용이해진다. 호이스팅JavaScript의 변수 선언과 함수 선언이 스코프의..
TIL#61(var, let, const, Promise) 오늘 한일var, let, const (JavaScript)var함수 외부에 선언 될 때의 범위는 전역, 함수 내에서 선언 될 때의 범위는 함수 범위이다.재선언, 재할당이 가능하다. 이러한 이유 때문에 변수를 유연하게 사용할 수 있기는 하지만 기존의 선언해둔 변수와 중복되는 변수명을 사용 하는 경우 어느 부분에서 문제가 생기는지 찾기 어려우므로 ES6부터 이 점을 보안한 let과 const가 추가되었다.호이스팅이 발생하지만 값 할당은 되지 않는다. let블록 범위의 스코프를 가지며 재선언은 불가능하지만 재할당은 가능하다.호이스팅이 발생하지만, 초기화는 변수 선언 시점까지 지연되므로 선언 전에 접근하려고 하면 'ReferenceError'가 발생한다. const블록 범위의 스코프를 가지며 재선언, 재할당 ..
TIL#60(캐시/대기열 - Redis) 오늘 한일캐시/대기열 - Redisredis의 자료구조 중 sorted set을 활용하게 되면 rdb를 활용하는 것보다 성능적인 면에서 우수하고 In-memory 저장소로 높은 처리량을 가지고 있기 때문에 많은 트래픽을 잘 버틸 수 있기 때문에 캐시/대기열에 구현에 강점을 보인다. 캐시 레이어 - Redis는 한 번 조회된 데이터를 미리 특정 공간에 저장해놓고, 똑같은 요청이 발생하게 되면 미리 저장해둔 데이터를 제공하여 다시 DB를 조회하지 않고 빠르게 데이터를 가져올 수 있고 자동 만료 정책으로 설정한 시간이 지나면 자동으로 데이터를 삭제해 캐시가 최신 상태를 유지하고, 메모리 사용량을 관리할 수 있다.대기열 - Redis의 Sorted Set을 활용하여 대기열 서버를 구현 할 수 있다redis so..
TIL#59(Endian) 오늘 한일 Endian 엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 바이트 순서(Byte order)라 한다. 주요 방식으로 Big Endian과 Little Endian이 있다.Big Endian가장 최상위 바이트를 메모리의 가장 낮은 주소에 저장하는 방식이다. (주소를 오름차순으로 기록)사람이 평소에 사용하는 방식이기 때문에 보기에 직관적이다는 장점이 있다. 네트워크 프로토콜(인터넷 프로토콜)에서 주로 사용된다. Little Endian최하위 바이트를 메모리의 가장 낮은 주소에 저장하는 방식이다. (주소를 내림차순으로 기록)컴퓨터의 계산에 있어서 유리하다. (숫자 계산, 타입 변환)  8비트와의 ..
TIL#58(운영체제) 오늘 한일운영체제운영체제 또는 오퍼레이팅 시스템(operating system)은 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어이다. 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공한다. 운영체제의 종류싱글태스킹 운영체제 / 멀티태스킹 운영체제 : 싱글 태스킹 운영체제는 한번에 오직 하나의 프로그램만 실행할 수 있으나 멀티태스킹 운영체제는 하나 이상의 프로그램이 동시에 실행할 수 있게 한다.단일 사용자 운영체제 / 다중 사용자 운영체제 : 단일 사용자 운영체제는 사용자 구별이 없으나 여러 프로그램이 나란히 실행하는 것은 허용한다. 다중 사용자 운영체제는 디스크 공간과 같은 리..
TIL#57(커넥션 풀) 오늘 한일커넥션 풀(Connection Pool)연결 풀 또는 커넥션 풀(connection pool)은 소프트웨어 공학에서 데이터베이스로의 추가 요청이 필요할 때 연결을 재사용할 수 있도록 관리되는 데이터베이스 연결의 캐시이다.데이터베이스와의 연결을 미리 여러 개 생성하여 풀에 저장하여 필요할 때마다 재사용하는 것이다. 장점1. 더 많은 연결이 더 많은 처리를 동시에 할 수 있어, 동시 처리 능력이 향상된다.2. 동접자가 많은 환경에서 유리하다.3. 여러개의 연결을 유지함으로써, 갑작스러운 트래픽증가에 고가성용성을 제공한다. 단점1. 사용하지 않는 커넥션으로 자원이 낭비된다.2. 데이터베이스 서버에 과도한 부하를 줄 수 있다. = 성능저하3. 네트워크 성능에 영향을 미친다. (대역폭 사용 증가) 어려웠..
TIL#56(메모리) 오늘 한일메모리 메모리(memory)는 데이터를 저장하고 접근하는 데 사용되는 하드웨어 장치를 의미하며 기억장치라고도 한다. 메모리는 컴퓨터의 중요한 구성 요소 중 하나로, 컴퓨터의 성능과 직접적으로 연관이 있다. 메모리에는 여러 종류가 있으며, 각각의 역할과 특성이 다르다.   메모리의 종류 캐시메모리 : 캐시메모리는 컴퓨터가 전원이 꺼지면 지워지지만 제일 빠르게 조회할 수 있는 저장 공간이다.CPU 구성의 캐시메모리와 다른 메모리로 CPU의 구성 중에 있는 메모리는 L1 캐시메모리 이고 메모리 그룹에 속한 CPU와 별개로 구성 되어 있는 캐시 메모리는 L2 캐시메모리, L3 캐시메모리라고 부른다.L2, L3 캐시메모리는 메인 메모리에 있는 데이터를 캐시메모리에 불러와 놓고, CPU가 필요한 데이터를 ..
TIL#55(CPU) 오늘 한일CPU란?CPU(Central Processing Unit, 중앙처리장치)란 컴퓨터에서 기억, 해석, 연산, 제어라는 4대 주요 기능을 관할하는 장치를 말한다. CPU의 구성산술논리 연산장치(ALU) : 비교, 판단, 연산을 담당한다.제어부(CU)와 내부 버스 : 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어한다.메모리 유닛 - 레지스터 : 처리할 명령어를 저장한다.                     - 캐시 메모리(L1) : 처리 속도를 높여주는 역할을 한다.CPU의 동작1. 명령어 인출 : CU가 수행할 명령어 정보를 가지고 온다.2. 명령어 해독 : 보통 opcode라고 하는 명령어 코드를 인출하고 opcode 성격에 맞게 레지스터들을 준비 시킨다.3. 실행 : 해독 된 ..