전체 글

백수를 탈출하기 위해 공부중입니다
· SQL
트랜잭션하나의 작업 단위이다. 여러 SQL 작업을 하나의 묶음으로 처리해서, 모두 성공하거나 모두 실패하도록 보장함START TRANSACTION ➡️ 트랜잭션 시작COMMIT ➡️ 트랜잭션 확정 (디스크에 반영)ROLLBACK ➡️ 트랜잭션 취소 (변경 내용 원복)세션데이터베이스에 연결된 하나의 연결(커넥션) 단위각 세션은 독립적으로 트랜잭션을 관리한다.➡️ 세션마다 별도의 트랜잭션 상태를 가짐. 단일 쿼리의 경우기본적으로 Auto Commit 모드이기 때문에 쿼리가 하나일 경우 START TRANSACTION을 명시할 필요가 없다. ➡️ 쿼리가 성공하면 자동 커밋, 실패하면 롤백 됨 ORMORM(Object Relational Mapping) 프레임워크는 내부적으로 여러개 쿼리를 실행함개발자는 직접 ..
· SQL
MySQL은 크게 MySQL Engine과 Storage Engine으로 나뉜다. MySQL Engine(CPU역할 -> 실질적인 연산 담당) : SQL 파싱, 최적화, 실행 계획 수립 및 처리 담당한다. Storage Engine: 실제 데이터 저장 및 접근 담당한다. Handler API: MySql 엔진이 스토리지 엔진에 쓰기 또는 읽기 시 요청시 사용하는 APIMySQL 쿼리 실행 과정Stoarage engine을 제외하고 모두 MySQL Engine이다. 동작과정은 아래의 순서와 같다 !Connection Handler접속되는 각각의 세션을 만들고 관리해준다. (메모리 할당해주든,, 등등 -> 메모리가 있어야 캐시가 생김)1. Query cacheClient가 SQL 요청을 보내면 제일 처음엔..
· TypeScript
📌 문제https://github.com/type-challenges/type-challenges/blob/main/questions/00011-easy-tuple-to-object/README.ko.md type-challenges/questions/00011-easy-tuple-to-object/README.ko.md at main · type-challenges/type-challengesCollection of TypeScript type challenges with online judge - type-challenges/type-challengesgithub.com🤔 풀이과정T[number] 은 요소들을 전부 유니온으로 만들어준다. T는 튜플 또는 readonly 배열 타입 이여야 한다. t..
· TypeScript
📌 문제https://github.com/type-challenges/type-challenges/blob/main/questions/00007-easy-readonly/README.ko.md type-challenges/questions/00007-easy-readonly/README.ko.md at main · type-challenges/type-challengesCollection of TypeScript type challenges with online judge - type-challenges/type-challengesgithub.com✅ 답type MyReadonly = { readonly [K in keyof T]: T[K] }; T 안의 key를 돌면서 T[k] Readonly로 바꾸..
· TypeScript
📌 문제https://github.com/type-challenges/type-challenges/blob/main/questions/00004-easy-pick/README.ko.md type-challenges/questions/00004-easy-pick/README.ko.md at main · type-challenges/type-challengesCollection of TypeScript type challenges with online judge - type-challenges/type-challengesgithub.comT에서 K 프로퍼티만 선택해 새로운 오브젝트 타입을 만드는 내장 제네릭 Pick을 이를 사용하지 않고 구현하기 !!😭 나의 실수우와 보자마자 짱 쉽다 하고 풀었는데 ....
· 기타
services: localdb: container_name: tester # 컨테이너 이름 image: mysql:8.0 # MySQL 8.0 이미지를 사용할 것 ports: - 3309:3306 # 외부(로컬) 3309번 포트 → 컨테이너 내부 3306 포트로 연결 environment: # 환경변수 설정 MYSQL_ROOT_PASSWORD: TestdbRoot MYSQL_DATABASE: testdb command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --log_bin_trust_function_creators=1..
이 질문을 이해하기 위해 논리주소, 물리주소, 가상 메모리와 페이징 개념을 먼저 알아보자 !물리 주소와 논리 주소물리 주소: 메모리 하드웨어 상의 실제 주소논리 주소: 프로세스마다 부여되는 0번지부터 시작하는 가상의 주소CPU와 프로세스는 직접 물리 주소를 사용하는 것이 아니라 논리 주소를 사용한다. 따라서 여러 프로세스가 동일한 논리 주소를 가질 수 있지만, 물리 주소는 고유하다. 하지만 논리 주소라 할지라도 실제로 정보가 저장되어 있는 하드웨어 상의 메모리와 상호작용하기 위해서는 반드시 논리 주소와 물리 주소간의 변환이 이루어져야 한다. 메모리 관리 장치(MMU) CPU와 메모리 사이에 위치한다.CPU가 사용하는 논리 주소를 실제 메모리의 물리 주소로 변환한다.➡️ CPU는 논리 주소만 다루고, 실..
· TypeScript
앞에 Type Narrowing에 대해 정리했지만 타입 가드를 들었을 때 둘이 같은거라고 생각했다. 하지만 약간의 차이가 있고 알고보면 완전히 다른 것이라는 것을 알 수 있다. 예를 들어서 설명하는 것이 쉽다. const value: unknown = "hello";if (typeof value === "string") { // 타입 가드 사용 ! console.log(value.toUpperCase()); // 이렇게 타입 가드후 타입 내로잉을 거친다. }unknown을 예로 들어 설명하면 쉽다. unknown은 any와 함께 최상위 타입에 속한다. 그 말은 즉 타입이 구체적이지 않고 추상적이라는 말이다. 여기서 최상위 타입이란?모든 타입이 할당 가능한 타입을 의미한다. ➡️ 즉 타입이 매우 추상적이..
· TypeScript
📌 클래스 메서드(멤버 함수)매개변수 타입이나 기본값을 지정하지 않으면 any타입을 기본 값으로 가진다. 메서드를 호출하려면 허용 가능한 인수가 필요, 재귀 함수가 아니라면 대부분 반환 타입 유추 가능메서드 호출시 올바른 타입의 인수가 올바른 수로 제공되는지 확인하기 위해 타입 검사 실시📌 클래스 속성(attribute)클래스의 속성을 읽거나 쓰려면 명시적으로 선언해야 한다.class FieldTrip { destination : string; // 불필요 constructor(destination : string){ // 여기서 이미 쓰였기 때문에 타입 추론을 해준다. this.destination = destination; console.log(`We're ..
· TypeScript
타입스크립트에서 리터럴 타입을 최대한 그대로 유지하면서 그 값을 readonly로 만들어주는 기능을 한다. primitive 타입의 값 뒤에 as const 연산자가 붙으면 값 자체가 타입이 된다.(Readonly)object 타입의 값 뒤에 as const 연산자가 붙으면 read-only 타입이 된다. const assertion은 enum멤버에 대한 참조 또는 string, number, boolean, array, object 리터럴에만 적용할 수 있다.const a = [1, 2, 3] as const;a는 읽기 전용이 되었기 때문에 a.push와 같은 메서드를 사용하지 못한다.타입스크립트는 let은 값이 바뀔 수 있다고 인식하여 일반적인 값인 number로 타입을 추론하게 된다. 반면에 con..
unemployedMan
백수탈출기