전체 글
-
📒 위상정렬💻 computer science/🤔 알고리즘 2024. 6. 17. 15:46
💡 위상 정렬(Topological Sort)이란?유향 그래프의 꼭짓점들(vertex)을 변의 방향을 거스르지 않도록 나열하는 것 그래프와 관련된 알고리즘 중 하나방향 그래프에서 간선으로 주어진 정점 간 선후 관계를 위배하지 않도록 나열하는 정렬 ❗선후 관계가 정의된 그래프 구조에서 정렬을 하는데 사용할 수 있다. ⚠️ 그래프내에 사이클이 존재하는 경우에는 올바른 위상 정렬이 존재할 수 없다.선후 관계에 모순이 생기기 때문 따라서, 위상 정렬은 사이클이 존재하지 않는 방향 그래프에서만 잘 정의가 된다. 사이클이 존재하지 않는 방향 그래프 = DAG(Directed Acyclic Graph) 🧑🏻💻 구현 🏃 구현 순서 1️⃣ 먼저, 위상 정렬상에서 제일 앞에 오는 정점(A, C, G)로 가능..
-
📒 Map, Set🍌 자바스크립트 2024. 5. 29. 00:49
🧩 Map메서드설명new Map()맵 생성map.set(key, value)key를 이용해 value 저장map.get(key)key에 해당하는 값 반환, key가 없다면 undefined 반환map.has(key)key가 존재하면 true, 존재하지 않는다면 false 반환map.delete(key)key에 해당하는 값을 삭제map.clear()맵 안의 모든 요소 제거map.size요소의 개수를 반환 let map = new Map();map.set('1', 'value1');map.set(1, 'value2');map.set(true, 'value3');console.log(map.get('1')); // value1console.log(map.get(1)); // value2console.log(..
-
📂 배열🍌 자바스크립트 2024. 5. 28. 21:11
💡 배열 만들기📍 배열 리터럴var arr = ["e1", "e2", "e3"]; 다양한 데이터 타입을 배열에 저장할 수 있다.var arr = ["beomsic", 26, [0, 1, 2]]; 📍 배열 생성자var arr = new Array(1, 2, 3);console.log(arr) // [ 1, 2, 3 ]var arr2 = new Array(10);console.log(arr2); // [ ]console.log(arr2.length); // 10배열 생성자에 인수를 하나만 넘겨주는 경우에는 그 인수의 값이 배열의 길이가 된다. 배열 길이length 속성을 이용해 배열의 길이를 알아낼 수 있다.var arr = ["test1", "test2"]arr.length; // 2 📒 배열 ..
-
자료형🍌 자바스크립트 2024. 5. 28. 13:48
🧩 선언JavaScript의 선언 방법은 3가지 이다. 키워드설명var변수를 선언, 동시에 값을 초기화let블록 스코프 지역 변수를 선언, 동시에 값을 초기화const블록 스코프 읽기 전용 상수를 선언 1️⃣ Var (function scope) var 문에서 변수에 초기 값을 지정하지 않는다면, 변수는 값이 설정될 때 까지 undefined 값을 가진다. 👀 함수 유효 범위어떤 함수 안에서 선언된 모든 변수는 그 함수 전체에 걸쳐 유효하다.변수가 선언되기 전에도 유효 Hoisting자바스크립트 코드는 함수 안에 모든 변수를 함수의 맨 위로 끌어올린 것처럼 동작한다.var foo = "boo";function test() { console.log(foo); // boo가 아닌 undefined을 ..
-
MySQL - 트랜잭션 격리 수준 실습💻 computer science/📦 database 2024. 5. 11. 21:24
⚙️ 실습 세팅트랜잭션 격리 수준을 실습해보기 위해서 테이블을 만들고 데이터를 넣어두었다. 👤 Member TableCREATE TABLE MEMBER ( id bigint auto_increment primary key, name varchar(255) not null, constraint UK_name unique (name)); ➕ 데이터 추가INSERT INTO MEMBER (id, name) VALUES(1, 'Beomsic');INSERT INTO MEMBER (id, name) VALUES(2, 'Beomseok');INSERT INTO MEMBER (id, name) VALUES(3, 'KO'); 💻 2개의 데이터베이스 세션 설정set autocommit = FALSE; // 현..
-
MySQL - 스토리지 엔진 수준의 락💻 computer science/📦 database 2024. 5. 11. 14:25
🔒 MySQL 의 락MySQL에서 사용되는 락은 크게 스토리지 엔진 레벨과 MySQL 엔진 레벨로 나눌 수 있다. 🧩 스토리지 엔진 레벨의 락테이블의 데이터를 다루기 위한 락 🧩 MySQL 엔진 레벨의 락테이블이나 데이터베이스 등과 같은 부분을 위한 락 🆎 스토리지 엔진 레벨의 락의 종류레코드 락 (Record Lock)갭 락 (Gap Lock)넥스트 키 락 (Next Key Lock)자동 증가 락 (Auto Increment Lock) 1️⃣ 레코드 락🎯 레코드 락은 테이블 레코드 자체를 잠그는 락을 의미한다. ❗MySQL에서 레코드 락은 테이블의 레코드가 아닌 인덱스의 레코드를 잠근다는 점이 다른 DBMS와의 차이점이다.MySQL에서는 레코드 자체를 잠그는 것이 아닌 인덱스를 잠그기 때문에..
-
📂 MySQL - 트랜잭션 격리 수준💻 computer science/📦 database 2024. 5. 11. 14:14
🔝 트랜잭션 격리 수준 🌟모든 DB 트랜잭션은 격리수준을 갖고 있어야 한다.서버 환경에서는 여러 개의 트랜잭션이 동시에 진행될 수 있다.적절하게 격리수준을 조정해 가능한 한 많은 트랜잭션을 동시에 진행시키면서도 문제가 발생하지 않게 해야 한다. 🌠 트랜잭션 격리 수준 격리 수준설명 발생하는 이상 현상SERALIZABLE트랜잭션을 순차적으로 진행- 여러 트랜잭션이 동시에 같은 행에 접근할 수 없다.- deadlock이 일어날 확률도 높고 성능이 가장 떨어짐 ❌REPEATABLE_READ특정 행을 조회시 항상 같은 데이터를 응답하는 것을 보장하는 격리 수준 하나의 트랜잭션이 수정한 행을 다른 트랜잭션이 수정할 수 없다- 새로운 행을 추가하는 것은 막지 않는다. phantom read READ_COMMI..
-
🎒 Knapsack 알고리즘 (배낭 알고리즘)💻 computer science/🤔 알고리즘 2024. 5. 9. 15:21
🎒 배낭 알고리즘DP 알고리즘 중 하나주어진 공간(배낭)에 최대 가치를 가지는 물건들을 넣도록 물건들을 선택하는 것이다. 배낭 알고리즘에는 2가지 유형이 존재한다. 1️⃣ Fraction Knapsack물건을 쪼갤 수 있는 경우이 경우는 그리디 알고리즘이 사용될 수 있다.단위 무게당 가치가 높은 물건을 차례대로 배낭에 넣는 방식 2️⃣ 0-1 Knapsack물건을 배낭에 넣을지 (1) 또는 넣지 않을지(0)을 결정하는 경우 🤔 왜 배낭 알고리즘이 Dynamic Programming 일까? 결국 최대 이익을 구하기 위해서는 물건을 배낭에 넣어야 한다.이때, 배낭에 물건을 넣는냐 마느냐 가 중요한 선택이다.2가지 선택지가 존재 만약, 배낭에 넣을 수 있는 양이 N 이고, 넣고자 하는 물건의 무게가 M 이..